Browse Source

Introjucer: some code-gen updates.

tags/2021-05-28
jules 13 years ago
parent
commit
82976c2ac7
17 changed files with 108 additions and 161 deletions
  1. +6
    -10
      extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp
  2. +5
    -15
      extras/Introjucer/Source/ComponentEditor/jucer_GeneratedCode.cpp
  3. +11
    -10
      extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementImage.h
  4. +4
    -7
      extras/JuceDemo/Source/demos/AudioDemoLatencyPage.cpp
  5. +3
    -3
      extras/JuceDemo/Source/demos/AudioDemoLatencyPage.h
  6. +8
    -14
      extras/JuceDemo/Source/demos/AudioDemoPlaybackPage.cpp
  7. +6
    -6
      extras/JuceDemo/Source/demos/AudioDemoPlaybackPage.h
  8. +4
    -7
      extras/JuceDemo/Source/demos/AudioDemoRecordPage.cpp
  9. +3
    -3
      extras/JuceDemo/Source/demos/AudioDemoRecordPage.h
  10. +2
    -3
      extras/JuceDemo/Source/demos/AudioDemoSetupPage.cpp
  11. +1
    -1
      extras/JuceDemo/Source/demos/AudioDemoSetupPage.h
  12. +5
    -9
      extras/JuceDemo/Source/demos/AudioDemoSynthPage.cpp
  13. +4
    -4
      extras/JuceDemo/Source/demos/AudioDemoSynthPage.h
  14. +1
    -2
      extras/JuceDemo/Source/demos/AudioDemoTabComponent.cpp
  15. +1
    -1
      extras/JuceDemo/Source/demos/AudioDemoTabComponent.h
  16. +22
    -44
      extras/JuceDemo/Source/demos/RenderingTestComponent.cpp
  17. +22
    -22
      extras/JuceDemo/Source/demos/RenderingTestComponent.h

+ 6
- 10
extras/Introjucer/Source/ComponentEditor/components/jucer_ComponentTypeHandler.cpp View File

@@ -496,19 +496,15 @@ void ComponentTypeHandler::fillInGeneratedCode (Component* component, GeneratedC
void ComponentTypeHandler::fillInMemberVariableDeclarations (GeneratedCode& code, Component* component, const String& memberVariableName) void ComponentTypeHandler::fillInMemberVariableDeclarations (GeneratedCode& code, Component* component, const String& memberVariableName)
{ {
const String virtualName (component->getProperties() ["virtualName"].toString());
String clsName (component->getProperties() ["virtualName"].toString());
if (virtualName.isNotEmpty())
code.privateMemberDeclarations
<< CodeHelpers::makeValidIdentifier (virtualName, false, false, true);
if (clsName.isNotEmpty())
clsName = CodeHelpers::makeValidIdentifier (clsName, false, false, true);
else else
code.privateMemberDeclarations
<< getClassName (component);
clsName = getClassName (component);
code.privateMemberDeclarations code.privateMemberDeclarations
<< "* " << memberVariableName << ";\n";
code.initialisers.add (memberVariableName + " (0)");
<< "ScopedPointer<" << clsName << "> " << memberVariableName << ";\n";
} }
void ComponentTypeHandler::fillInResizeCode (GeneratedCode& code, Component* component, const String& memberVariableName) void ComponentTypeHandler::fillInResizeCode (GeneratedCode& code, Component* component, const String& memberVariableName)
@@ -579,5 +575,5 @@ void ComponentTypeHandler::fillInDeletionCode (GeneratedCode& code, Component*,
const String& memberVariableName) const String& memberVariableName)
{ {
code.destructorCode code.destructorCode
<< "deleteAndZero (" << memberVariableName << ");\n";
<< memberVariableName << " = nullptr;\n";
} }

+ 5
- 15
extras/Introjucer/Source/ComponentEditor/jucer_GeneratedCode.cpp View File

@@ -90,22 +90,12 @@ void GeneratedCode::removeCallback (const String& returnType, const String& prot
void GeneratedCode::addImageResourceLoader (const String& imageMemberName, const String& resourceName) void GeneratedCode::addImageResourceLoader (const String& imageMemberName, const String& resourceName)
{ {
const String initialiser (imageMemberName + " (0)");
privateMemberDeclarations
<< "Image " << imageMemberName << ";\n";
if (! initialisers.contains (initialiser, false))
{
initialisers.add (initialiser);
privateMemberDeclarations
<< "Image " << imageMemberName << ";\n";
if (resourceName.isNotEmpty())
{
constructorCode
<< imageMemberName << " = ImageCache::getFromMemory ("
<< resourceName << ", " << resourceName << "Size);\n";
}
}
if (resourceName.isNotEmpty())
constructorCode << imageMemberName << " = ImageCache::getFromMemory ("
<< resourceName << ", " << resourceName << "Size);\n";
} }
StringArray GeneratedCode::getExtraParentClasses() const StringArray GeneratedCode::getExtraParentClasses() const


+ 11
- 10
extras/Introjucer/Source/ComponentEditor/paintelements/jucer_PaintElementImage.h View File

@@ -144,14 +144,14 @@ public:
const String imageVariable ("drawable" + String (code.getUniqueSuffix())); const String imageVariable ("drawable" + String (code.getUniqueSuffix()));
code.privateMemberDeclarations code.privateMemberDeclarations
<< "Drawable* " << imageVariable << ";\n";
<< "ScopedPointer<Drawable> " << imageVariable << ";\n";
code.constructorCode code.constructorCode
<< imageVariable << " = Drawable::createFromImageData (" << imageVariable << " = Drawable::createFromImageData ("
<< resourceName << ", " << resourceName << "Size);\n"; << resourceName << ", " << resourceName << "Size);\n";
code.destructorCode code.destructorCode
<< "deleteAndZero (" << imageVariable << ");\n";
<< imageVariable << " = nullptr;\n";
if (opacity >= 254.0 / 255.0) if (opacity >= 254.0 / 255.0)
r << "g.setColour (Colours::black);\n"; r << "g.setColour (Colours::black);\n";
@@ -291,18 +291,19 @@ public:
void resetToImageSize() void resetToImageSize()
{ {
const Drawable* const image = getDrawable();
if (image != nullptr && getParentComponent() != nullptr)
if (const Drawable* const image = getDrawable())
{ {
const Rectangle<int> parentArea (((PaintRoutineEditor*) getParentComponent())->getComponentArea());
if (PaintRoutineEditor* ed = dynamic_cast <PaintRoutineEditor*> (getParentComponent()))
{
const Rectangle<int> parentArea (ed->getComponentArea());
Rectangle<int> r (getCurrentBounds (parentArea));
Rectangle<float> bounds (image->getDrawableBounds());
Rectangle<int> r (getCurrentBounds (parentArea));
Rectangle<float> bounds (image->getDrawableBounds());
r.setSize ((int) (bounds.getWidth() + 0.999f), (int) (bounds.getHeight() + 0.999f));
r.setSize ((int) (bounds.getWidth() + 0.999f), (int) (bounds.getHeight() + 0.999f));
setCurrentBounds (r, parentArea, true);
setCurrentBounds (r, parentArea, true);
}
} }
} }


+ 4
- 7
extras/JuceDemo/Source/demos/AudioDemoLatencyPage.cpp View File

@@ -279,10 +279,7 @@ private:
//============================================================================== //==============================================================================
AudioDemoLatencyPage::AudioDemoLatencyPage (AudioDeviceManager& deviceManager_) AudioDemoLatencyPage::AudioDemoLatencyPage (AudioDeviceManager& deviceManager_)
: deviceManager (deviceManager_),
liveAudioDisplayComp (0),
startTestButton (0),
testResultsBox (0)
: deviceManager (deviceManager_)
{ {
addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp());
@@ -325,9 +322,9 @@ AudioDemoLatencyPage::~AudioDemoLatencyPage()
deviceManager.removeAudioCallback (latencyTester); deviceManager.removeAudioCallback (latencyTester);
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (liveAudioDisplayComp);
deleteAndZero (startTestButton);
deleteAndZero (testResultsBox);
liveAudioDisplayComp = nullptr;
startTestButton = nullptr;
testResultsBox = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 3
- 3
extras/JuceDemo/Source/demos/AudioDemoLatencyPage.h View File

@@ -61,9 +61,9 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
LiveAudioInputDisplayComp* liveAudioDisplayComp;
TextButton* startTestButton;
TextEditor* testResultsBox;
ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp;
ScopedPointer<TextButton> startTestButton;
ScopedPointer<TextEditor> testResultsBox;
//============================================================================== //==============================================================================


+ 8
- 14
extras/JuceDemo/Source/demos/AudioDemoPlaybackPage.cpp View File

@@ -173,13 +173,7 @@ private:
AudioDemoPlaybackPage::AudioDemoPlaybackPage (AudioDeviceManager& deviceManager_) AudioDemoPlaybackPage::AudioDemoPlaybackPage (AudioDeviceManager& deviceManager_)
: deviceManager (deviceManager_), : deviceManager (deviceManager_),
thread ("audio file preview"), thread ("audio file preview"),
directoryList (0, thread),
zoomLabel (0),
explanation (0),
zoomSlider (0),
thumbnail (0),
startStopButton (0),
fileTreeComp (0)
directoryList (nullptr, thread)
{ {
addAndMakeVisible (zoomLabel = new Label (String::empty, addAndMakeVisible (zoomLabel = new Label (String::empty,
"zoom:")); "zoom:"));
@@ -244,12 +238,12 @@ AudioDemoPlaybackPage::~AudioDemoPlaybackPage()
fileTreeComp->removeListener (this); fileTreeComp->removeListener (this);
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (zoomLabel);
deleteAndZero (explanation);
deleteAndZero (zoomSlider);
deleteAndZero (thumbnail);
deleteAndZero (startStopButton);
deleteAndZero (fileTreeComp);
zoomLabel = nullptr;
explanation = nullptr;
zoomSlider = nullptr;
thumbnail = nullptr;
startStopButton = nullptr;
fileTreeComp = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..
@@ -379,7 +373,7 @@ BEGIN_JUCER_METADATA
<JUCER_COMPONENT documentType="Component" className="AudioDemoPlaybackPage" componentName="" <JUCER_COMPONENT documentType="Component" className="AudioDemoPlaybackPage" componentName=""
parentClasses="public Component, public FileBrowserListener" parentClasses="public Component, public FileBrowserListener"
constructorParams="AudioDeviceManager&amp; deviceManager_" variableInitialisers="deviceManager (deviceManager_),&#10;thread (&quot;audio file preview&quot;),&#10;directoryList (0, thread)"
constructorParams="AudioDeviceManager&amp; deviceManager_" variableInitialisers="deviceManager (deviceManager_),&#10;thread (&quot;audio file preview&quot;),&#10;directoryList (nullptr, thread)"
snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.330000013" snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.330000013"
fixedSize="0" initialWidth="600" initialHeight="400"> fixedSize="0" initialWidth="600" initialHeight="400">
<BACKGROUND backgroundColour="ffd3d3d3"/> <BACKGROUND backgroundColour="ffd3d3d3"/>


+ 6
- 6
extras/JuceDemo/Source/demos/AudioDemoPlaybackPage.h View File

@@ -78,12 +78,12 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
Label* zoomLabel;
Label* explanation;
Slider* zoomSlider;
DemoThumbnailComp* thumbnail;
TextButton* startStopButton;
FileTreeComponent* fileTreeComp;
ScopedPointer<Label> zoomLabel;
ScopedPointer<Label> explanation;
ScopedPointer<Slider> zoomSlider;
ScopedPointer<DemoThumbnailComp> thumbnail;
ScopedPointer<TextButton> startStopButton;
ScopedPointer<FileTreeComponent> fileTreeComp;
//============================================================================== //==============================================================================


+ 4
- 7
extras/JuceDemo/Source/demos/AudioDemoRecordPage.cpp View File

@@ -136,10 +136,7 @@ private:
//============================================================================== //==============================================================================
AudioDemoRecordPage::AudioDemoRecordPage (AudioDeviceManager& deviceManager_) AudioDemoRecordPage::AudioDemoRecordPage (AudioDeviceManager& deviceManager_)
: deviceManager (deviceManager_),
liveAudioDisplayComp (0),
explanationLabel (0),
recordButton (0)
: deviceManager (deviceManager_)
{ {
addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp());
@@ -179,9 +176,9 @@ AudioDemoRecordPage::~AudioDemoRecordPage()
recorder = 0; recorder = 0;
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (liveAudioDisplayComp);
deleteAndZero (explanationLabel);
deleteAndZero (recordButton);
liveAudioDisplayComp = nullptr;
explanationLabel = nullptr;
recordButton = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 3
- 3
extras/JuceDemo/Source/demos/AudioDemoRecordPage.h View File

@@ -62,9 +62,9 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
LiveAudioInputDisplayComp* liveAudioDisplayComp;
Label* explanationLabel;
TextButton* recordButton;
ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp;
ScopedPointer<Label> explanationLabel;
ScopedPointer<TextButton> recordButton;
//============================================================================== //==============================================================================


+ 2
- 3
extras/JuceDemo/Source/demos/AudioDemoSetupPage.cpp View File

@@ -28,8 +28,7 @@
//============================================================================== //==============================================================================
AudioDemoSetupPage::AudioDemoSetupPage (AudioDeviceManager& deviceManager_) AudioDemoSetupPage::AudioDemoSetupPage (AudioDeviceManager& deviceManager_)
: deviceManager (deviceManager_),
deviceSelector (0)
: deviceManager (deviceManager_)
{ {
addAndMakeVisible (deviceSelector = new AudioDeviceSelectorComponent (deviceManager, 0, 2, 0, 2, true, true, true, false)); addAndMakeVisible (deviceSelector = new AudioDeviceSelectorComponent (deviceManager, 0, 2, 0, 2, true, true, true, false));
@@ -49,7 +48,7 @@ AudioDemoSetupPage::~AudioDemoSetupPage()
//[Destructor_pre]. You can add your own custom destruction code here.. //[Destructor_pre]. You can add your own custom destruction code here..
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (deviceSelector);
deviceSelector = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 1
- 1
extras/JuceDemo/Source/demos/AudioDemoSetupPage.h View File

@@ -56,7 +56,7 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
AudioDeviceSelectorComponent* deviceSelector;
ScopedPointer<AudioDeviceSelectorComponent> deviceSelector;
//============================================================================== //==============================================================================


+ 5
- 9
extras/JuceDemo/Source/demos/AudioDemoSynthPage.cpp View File

@@ -246,11 +246,7 @@ public:
//============================================================================== //==============================================================================
AudioDemoSynthPage::AudioDemoSynthPage (AudioDeviceManager& deviceManager_) AudioDemoSynthPage::AudioDemoSynthPage (AudioDeviceManager& deviceManager_)
: deviceManager (deviceManager_),
keyboardComponent (0),
sineButton (0),
sampledButton (0),
liveAudioDisplayComp (0)
: deviceManager (deviceManager_)
{ {
addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard)); addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard));
@@ -294,10 +290,10 @@ AudioDemoSynthPage::~AudioDemoSynthPage()
deviceManager.removeAudioCallback (liveAudioDisplayComp); deviceManager.removeAudioCallback (liveAudioDisplayComp);
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (keyboardComponent);
deleteAndZero (sineButton);
deleteAndZero (sampledButton);
deleteAndZero (liveAudioDisplayComp);
keyboardComponent = nullptr;
sineButton = nullptr;
sampledButton = nullptr;
liveAudioDisplayComp = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 4
- 4
extras/JuceDemo/Source/demos/AudioDemoSynthPage.h View File

@@ -63,10 +63,10 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
MidiKeyboardComponent* keyboardComponent;
ToggleButton* sineButton;
ToggleButton* sampledButton;
LiveAudioInputDisplayComp* liveAudioDisplayComp;
ScopedPointer<MidiKeyboardComponent> keyboardComponent;
ScopedPointer<ToggleButton> sineButton;
ScopedPointer<ToggleButton> sampledButton;
ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp;
//============================================================================== //==============================================================================


+ 1
- 2
extras/JuceDemo/Source/demos/AudioDemoTabComponent.cpp View File

@@ -110,7 +110,6 @@ void LiveAudioInputDisplayComp::audioDeviceIOCallback (const float** inputChanne
//============================================================================== //==============================================================================
AudioDemoTabComponent::AudioDemoTabComponent () AudioDemoTabComponent::AudioDemoTabComponent ()
: tabbedComponent (0)
{ {
addAndMakeVisible (tabbedComponent = new TabbedComponent (TabbedButtonBar::TabsAtTop)); addAndMakeVisible (tabbedComponent = new TabbedComponent (TabbedButtonBar::TabsAtTop));
tabbedComponent->setTabBarDepth (30); tabbedComponent->setTabBarDepth (30);
@@ -138,7 +137,7 @@ AudioDemoTabComponent::~AudioDemoTabComponent()
//[Destructor_pre]. You can add your own custom destruction code here.. //[Destructor_pre]. You can add your own custom destruction code here..
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (tabbedComponent);
tabbedComponent = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 1
- 1
extras/JuceDemo/Source/demos/AudioDemoTabComponent.h View File

@@ -86,7 +86,7 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
TabbedComponent* tabbedComponent;
ScopedPointer<TabbedComponent> tabbedComponent;
//============================================================================== //==============================================================================


+ 22
- 44
extras/JuceDemo/Source/demos/RenderingTestComponent.cpp View File

@@ -377,28 +377,6 @@ Component* createRenderingDemo()
//============================================================================== //==============================================================================
RenderingTestComponent::RenderingTestComponent () RenderingTestComponent::RenderingTestComponent ()
: testTypeComboBox (0),
testTypeLabel (0),
speedLabel (0),
testCanvas (0),
opacitySlider (0),
highQualityToggle (0),
animateSizeToggle (0),
animateRotationToggle (0),
animatePositionToggle (0),
animateFillToggle (0),
opacityLabel (0),
xSlider (0),
ySlider (0),
sizeSlider (0),
angleSlider (0),
xSliderLabel (0),
ySliderLabel (0),
sizeSliderLabel (0),
angleSliderLabel (0),
clipToRectangleToggle (0),
clipToPathToggle (0),
clipToImageToggle (0)
{ {
addAndMakeVisible (testTypeComboBox = new ComboBox (String::empty)); addAndMakeVisible (testTypeComboBox = new ComboBox (String::empty));
testTypeComboBox->setEditableText (false); testTypeComboBox->setEditableText (false);
@@ -551,28 +529,28 @@ RenderingTestComponent::~RenderingTestComponent()
//[Destructor_pre]. You can add your own custom destruction code here.. //[Destructor_pre]. You can add your own custom destruction code here..
//[/Destructor_pre] //[/Destructor_pre]
deleteAndZero (testTypeComboBox);
deleteAndZero (testTypeLabel);
deleteAndZero (speedLabel);
deleteAndZero (testCanvas);
deleteAndZero (opacitySlider);
deleteAndZero (highQualityToggle);
deleteAndZero (animateSizeToggle);
deleteAndZero (animateRotationToggle);
deleteAndZero (animatePositionToggle);
deleteAndZero (animateFillToggle);
deleteAndZero (opacityLabel);
deleteAndZero (xSlider);
deleteAndZero (ySlider);
deleteAndZero (sizeSlider);
deleteAndZero (angleSlider);
deleteAndZero (xSliderLabel);
deleteAndZero (ySliderLabel);
deleteAndZero (sizeSliderLabel);
deleteAndZero (angleSliderLabel);
deleteAndZero (clipToRectangleToggle);
deleteAndZero (clipToPathToggle);
deleteAndZero (clipToImageToggle);
testTypeComboBox = nullptr;
testTypeLabel = nullptr;
speedLabel = nullptr;
testCanvas = nullptr;
opacitySlider = nullptr;
highQualityToggle = nullptr;
animateSizeToggle = nullptr;
animateRotationToggle = nullptr;
animatePositionToggle = nullptr;
animateFillToggle = nullptr;
opacityLabel = nullptr;
xSlider = nullptr;
ySlider = nullptr;
sizeSlider = nullptr;
angleSlider = nullptr;
xSliderLabel = nullptr;
ySliderLabel = nullptr;
sizeSliderLabel = nullptr;
angleSliderLabel = nullptr;
clipToRectangleToggle = nullptr;
clipToPathToggle = nullptr;
clipToImageToggle = nullptr;
//[Destructor]. You can add your own custom destruction code here.. //[Destructor]. You can add your own custom destruction code here..


+ 22
- 22
extras/JuceDemo/Source/demos/RenderingTestComponent.h View File

@@ -66,28 +66,28 @@ private:
//[/UserVariables] //[/UserVariables]
//============================================================================== //==============================================================================
ComboBox* testTypeComboBox;
Label* testTypeLabel;
Label* speedLabel;
RenderingTestCanvas* testCanvas;
Slider* opacitySlider;
ToggleButton* highQualityToggle;
ToggleButton* animateSizeToggle;
ToggleButton* animateRotationToggle;
ToggleButton* animatePositionToggle;
ToggleButton* animateFillToggle;
Label* opacityLabel;
Slider* xSlider;
Slider* ySlider;
Slider* sizeSlider;
Slider* angleSlider;
Label* xSliderLabel;
Label* ySliderLabel;
Label* sizeSliderLabel;
Label* angleSliderLabel;
ToggleButton* clipToRectangleToggle;
ToggleButton* clipToPathToggle;
ToggleButton* clipToImageToggle;
ScopedPointer<ComboBox> testTypeComboBox;
ScopedPointer<Label> testTypeLabel;
ScopedPointer<Label> speedLabel;
ScopedPointer<RenderingTestCanvas> testCanvas;
ScopedPointer<Slider> opacitySlider;
ScopedPointer<ToggleButton> highQualityToggle;
ScopedPointer<ToggleButton> animateSizeToggle;
ScopedPointer<ToggleButton> animateRotationToggle;
ScopedPointer<ToggleButton> animatePositionToggle;
ScopedPointer<ToggleButton> animateFillToggle;
ScopedPointer<Label> opacityLabel;
ScopedPointer<Slider> xSlider;
ScopedPointer<Slider> ySlider;
ScopedPointer<Slider> sizeSlider;
ScopedPointer<Slider> angleSlider;
ScopedPointer<Label> xSliderLabel;
ScopedPointer<Label> ySliderLabel;
ScopedPointer<Label> sizeSliderLabel;
ScopedPointer<Label> angleSliderLabel;
ScopedPointer<ToggleButton> clipToRectangleToggle;
ScopedPointer<ToggleButton> clipToPathToggle;
ScopedPointer<ToggleButton> clipToImageToggle;
//============================================================================== //==============================================================================


Loading…
Cancel
Save