mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
165 lines
5 KiB
C++
165 lines
5 KiB
C++
/*
|
|
==============================================================================
|
|
|
|
This file is part of the JUCE library.
|
|
Copyright (c) 2022 - Raw Material Software Limited
|
|
|
|
JUCE is an open source library subject to commercial or open-source
|
|
licensing.
|
|
|
|
By using JUCE, you agree to the terms of both the JUCE 7 End-User License
|
|
Agreement and JUCE Privacy Policy.
|
|
|
|
End User License Agreement: www.juce.com/juce-7-licence
|
|
Privacy Policy: www.juce.com/juce-privacy-policy
|
|
|
|
Or: You may also use this code under the terms of the GPL v3 (see
|
|
www.gnu.org/licenses).
|
|
|
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
DISCLAIMED.
|
|
|
|
==============================================================================
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "jucer_ColouredElement.h"
|
|
#include "../Properties/jucer_FilePropertyComponent.h"
|
|
#include "jucer_ImageResourceProperty.h"
|
|
#include "jucer_PaintElementUndoableAction.h"
|
|
|
|
//==============================================================================
|
|
class PaintElementImage : public PaintElement
|
|
{
|
|
public:
|
|
PaintElementImage (PaintRoutine*);
|
|
~PaintElementImage() override;
|
|
|
|
enum StretchMode
|
|
{
|
|
stretched = 0,
|
|
proportional = 1,
|
|
proportionalReducingOnly = 2
|
|
};
|
|
|
|
const Drawable* getDrawable();
|
|
void draw (Graphics&, const ComponentLayout*, const Rectangle<int>&) override;
|
|
|
|
//==============================================================================
|
|
void getEditableProperties (Array <PropertyComponent*>&, bool) override;
|
|
void fillInGeneratedCode (GeneratedCode&, String&) override;
|
|
void applyCustomPaintSnippets (StringArray& snippets) override;
|
|
|
|
//==============================================================================
|
|
class SetResourceAction : public PaintElementUndoableAction <PaintElementImage>
|
|
{
|
|
public:
|
|
SetResourceAction (PaintElementImage* const, const String&);
|
|
|
|
bool perform() override;
|
|
bool undo() override;
|
|
|
|
private:
|
|
String newResource, oldResource;
|
|
};
|
|
|
|
void setResource (const String&, bool);
|
|
|
|
String getResource() const;
|
|
|
|
//==============================================================================
|
|
class SetOpacityAction : public PaintElementUndoableAction <PaintElementImage>
|
|
{
|
|
public:
|
|
SetOpacityAction (PaintElementImage* const, double);
|
|
|
|
bool perform() override;
|
|
bool undo() override;
|
|
|
|
private:
|
|
double newOpacity, oldOpacity;
|
|
};
|
|
|
|
void setOpacity (double, bool);
|
|
double getOpacity() const noexcept;
|
|
|
|
//==============================================================================
|
|
static const char* getTagName() noexcept;
|
|
|
|
void resetToImageSize();
|
|
|
|
//==============================================================================
|
|
class SetStretchModeAction : public PaintElementUndoableAction <PaintElementImage>
|
|
{
|
|
public:
|
|
SetStretchModeAction (PaintElementImage* const, StretchMode);
|
|
|
|
bool perform() override;
|
|
bool undo() override;
|
|
|
|
private:
|
|
StretchMode newValue, oldValue;
|
|
};
|
|
|
|
StretchMode getStretchMode() const noexcept;
|
|
|
|
void setStretchMode (StretchMode, bool);
|
|
|
|
//==============================================================================
|
|
XmlElement* createXml() const override;
|
|
|
|
bool loadFromXml (const XmlElement&) override;
|
|
|
|
private:
|
|
String resourceName;
|
|
double opacity;
|
|
StretchMode mode;
|
|
String customPaintCode;
|
|
|
|
//==============================================================================
|
|
class ImageElementResourceProperty : public ImageResourceProperty <PaintElementImage>
|
|
{
|
|
public:
|
|
ImageElementResourceProperty (PaintElementImage* const);
|
|
|
|
void setResource (const String&) override;
|
|
String getResource() const override;
|
|
};
|
|
|
|
//==============================================================================
|
|
class OpacityProperty : public SliderPropertyComponent
|
|
{
|
|
public:
|
|
OpacityProperty (PaintElementImage* const);
|
|
|
|
void setValue (double) override;
|
|
double getValue() const override;
|
|
|
|
ElementListener<PaintElementImage> listener;
|
|
};
|
|
|
|
class StretchModeProperty : public ChoicePropertyComponent
|
|
{
|
|
public:
|
|
StretchModeProperty (PaintElementImage* const);
|
|
|
|
void setIndex (int) override;
|
|
int getIndex() const override;
|
|
|
|
ElementListener<PaintElementImage> listener;
|
|
};
|
|
|
|
class ResetSizeProperty : public ButtonPropertyComponent
|
|
{
|
|
public:
|
|
ResetSizeProperty (PaintElementImage* const);
|
|
|
|
void buttonClicked() override;
|
|
String getButtonText() const override;
|
|
|
|
private:
|
|
PaintElementImage* const element;
|
|
};
|
|
};
|