| @@ -496,19 +496,15 @@ void ComponentTypeHandler::fillInGeneratedCode (Component* component, GeneratedC | |||
| 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 | |||
| code.privateMemberDeclarations | |||
| << getClassName (component); | |||
| clsName = getClassName (component); | |||
| code.privateMemberDeclarations | |||
| << "* " << memberVariableName << ";\n"; | |||
| code.initialisers.add (memberVariableName + " (0)"); | |||
| << "ScopedPointer<" << clsName << "> " << memberVariableName << ";\n"; | |||
| } | |||
| void ComponentTypeHandler::fillInResizeCode (GeneratedCode& code, Component* component, const String& memberVariableName) | |||
| @@ -579,5 +575,5 @@ void ComponentTypeHandler::fillInDeletionCode (GeneratedCode& code, Component*, | |||
| const String& memberVariableName) | |||
| { | |||
| code.destructorCode | |||
| << "deleteAndZero (" << memberVariableName << ");\n"; | |||
| << memberVariableName << " = nullptr;\n"; | |||
| } | |||
| @@ -90,22 +90,12 @@ void GeneratedCode::removeCallback (const String& returnType, const String& prot | |||
| 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 | |||
| @@ -144,14 +144,14 @@ public: | |||
| const String imageVariable ("drawable" + String (code.getUniqueSuffix())); | |||
| code.privateMemberDeclarations | |||
| << "Drawable* " << imageVariable << ";\n"; | |||
| << "ScopedPointer<Drawable> " << imageVariable << ";\n"; | |||
| code.constructorCode | |||
| << imageVariable << " = Drawable::createFromImageData (" | |||
| << resourceName << ", " << resourceName << "Size);\n"; | |||
| code.destructorCode | |||
| << "deleteAndZero (" << imageVariable << ");\n"; | |||
| << imageVariable << " = nullptr;\n"; | |||
| if (opacity >= 254.0 / 255.0) | |||
| r << "g.setColour (Colours::black);\n"; | |||
| @@ -291,18 +291,19 @@ public: | |||
| 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); | |||
| } | |||
| } | |||
| } | |||
| @@ -279,10 +279,7 @@ private: | |||
| //============================================================================== | |||
| AudioDemoLatencyPage::AudioDemoLatencyPage (AudioDeviceManager& deviceManager_) | |||
| : deviceManager (deviceManager_), | |||
| liveAudioDisplayComp (0), | |||
| startTestButton (0), | |||
| testResultsBox (0) | |||
| : deviceManager (deviceManager_) | |||
| { | |||
| addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); | |||
| @@ -325,9 +322,9 @@ AudioDemoLatencyPage::~AudioDemoLatencyPage() | |||
| deviceManager.removeAudioCallback (latencyTester); | |||
| //[/Destructor_pre] | |||
| deleteAndZero (liveAudioDisplayComp); | |||
| deleteAndZero (startTestButton); | |||
| deleteAndZero (testResultsBox); | |||
| liveAudioDisplayComp = nullptr; | |||
| startTestButton = nullptr; | |||
| testResultsBox = nullptr; | |||
| //[Destructor]. You can add your own custom destruction code here.. | |||
| @@ -61,9 +61,9 @@ private: | |||
| //[/UserVariables] | |||
| //============================================================================== | |||
| LiveAudioInputDisplayComp* liveAudioDisplayComp; | |||
| TextButton* startTestButton; | |||
| TextEditor* testResultsBox; | |||
| ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp; | |||
| ScopedPointer<TextButton> startTestButton; | |||
| ScopedPointer<TextEditor> testResultsBox; | |||
| //============================================================================== | |||
| @@ -173,13 +173,7 @@ private: | |||
| AudioDemoPlaybackPage::AudioDemoPlaybackPage (AudioDeviceManager& deviceManager_) | |||
| : deviceManager (deviceManager_), | |||
| 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, | |||
| "zoom:")); | |||
| @@ -244,12 +238,12 @@ AudioDemoPlaybackPage::~AudioDemoPlaybackPage() | |||
| fileTreeComp->removeListener (this); | |||
| //[/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.. | |||
| @@ -379,7 +373,7 @@ BEGIN_JUCER_METADATA | |||
| <JUCER_COMPONENT documentType="Component" className="AudioDemoPlaybackPage" componentName="" | |||
| parentClasses="public Component, public FileBrowserListener" | |||
| constructorParams="AudioDeviceManager& deviceManager_" variableInitialisers="deviceManager (deviceManager_), thread ("audio file preview"), directoryList (0, thread)" | |||
| constructorParams="AudioDeviceManager& deviceManager_" variableInitialisers="deviceManager (deviceManager_), thread ("audio file preview"), directoryList (nullptr, thread)" | |||
| snapPixels="8" snapActive="1" snapShown="1" overlayOpacity="0.330000013" | |||
| fixedSize="0" initialWidth="600" initialHeight="400"> | |||
| <BACKGROUND backgroundColour="ffd3d3d3"/> | |||
| @@ -78,12 +78,12 @@ private: | |||
| //[/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; | |||
| //============================================================================== | |||
| @@ -136,10 +136,7 @@ private: | |||
| //============================================================================== | |||
| AudioDemoRecordPage::AudioDemoRecordPage (AudioDeviceManager& deviceManager_) | |||
| : deviceManager (deviceManager_), | |||
| liveAudioDisplayComp (0), | |||
| explanationLabel (0), | |||
| recordButton (0) | |||
| : deviceManager (deviceManager_) | |||
| { | |||
| addAndMakeVisible (liveAudioDisplayComp = new LiveAudioInputDisplayComp()); | |||
| @@ -179,9 +176,9 @@ AudioDemoRecordPage::~AudioDemoRecordPage() | |||
| recorder = 0; | |||
| //[/Destructor_pre] | |||
| deleteAndZero (liveAudioDisplayComp); | |||
| deleteAndZero (explanationLabel); | |||
| deleteAndZero (recordButton); | |||
| liveAudioDisplayComp = nullptr; | |||
| explanationLabel = nullptr; | |||
| recordButton = nullptr; | |||
| //[Destructor]. You can add your own custom destruction code here.. | |||
| @@ -62,9 +62,9 @@ private: | |||
| //[/UserVariables] | |||
| //============================================================================== | |||
| LiveAudioInputDisplayComp* liveAudioDisplayComp; | |||
| Label* explanationLabel; | |||
| TextButton* recordButton; | |||
| ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp; | |||
| ScopedPointer<Label> explanationLabel; | |||
| ScopedPointer<TextButton> recordButton; | |||
| //============================================================================== | |||
| @@ -28,8 +28,7 @@ | |||
| //============================================================================== | |||
| AudioDemoSetupPage::AudioDemoSetupPage (AudioDeviceManager& deviceManager_) | |||
| : deviceManager (deviceManager_), | |||
| deviceSelector (0) | |||
| : deviceManager (deviceManager_) | |||
| { | |||
| 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] | |||
| deleteAndZero (deviceSelector); | |||
| deviceSelector = nullptr; | |||
| //[Destructor]. You can add your own custom destruction code here.. | |||
| @@ -56,7 +56,7 @@ private: | |||
| //[/UserVariables] | |||
| //============================================================================== | |||
| AudioDeviceSelectorComponent* deviceSelector; | |||
| ScopedPointer<AudioDeviceSelectorComponent> deviceSelector; | |||
| //============================================================================== | |||
| @@ -246,11 +246,7 @@ public: | |||
| //============================================================================== | |||
| AudioDemoSynthPage::AudioDemoSynthPage (AudioDeviceManager& deviceManager_) | |||
| : deviceManager (deviceManager_), | |||
| keyboardComponent (0), | |||
| sineButton (0), | |||
| sampledButton (0), | |||
| liveAudioDisplayComp (0) | |||
| : deviceManager (deviceManager_) | |||
| { | |||
| addAndMakeVisible (keyboardComponent = new MidiKeyboardComponent (keyboardState, MidiKeyboardComponent::horizontalKeyboard)); | |||
| @@ -294,10 +290,10 @@ AudioDemoSynthPage::~AudioDemoSynthPage() | |||
| deviceManager.removeAudioCallback (liveAudioDisplayComp); | |||
| //[/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.. | |||
| @@ -63,10 +63,10 @@ private: | |||
| //[/UserVariables] | |||
| //============================================================================== | |||
| MidiKeyboardComponent* keyboardComponent; | |||
| ToggleButton* sineButton; | |||
| ToggleButton* sampledButton; | |||
| LiveAudioInputDisplayComp* liveAudioDisplayComp; | |||
| ScopedPointer<MidiKeyboardComponent> keyboardComponent; | |||
| ScopedPointer<ToggleButton> sineButton; | |||
| ScopedPointer<ToggleButton> sampledButton; | |||
| ScopedPointer<LiveAudioInputDisplayComp> liveAudioDisplayComp; | |||
| //============================================================================== | |||
| @@ -110,7 +110,6 @@ void LiveAudioInputDisplayComp::audioDeviceIOCallback (const float** inputChanne | |||
| //============================================================================== | |||
| AudioDemoTabComponent::AudioDemoTabComponent () | |||
| : tabbedComponent (0) | |||
| { | |||
| addAndMakeVisible (tabbedComponent = new TabbedComponent (TabbedButtonBar::TabsAtTop)); | |||
| tabbedComponent->setTabBarDepth (30); | |||
| @@ -138,7 +137,7 @@ AudioDemoTabComponent::~AudioDemoTabComponent() | |||
| //[Destructor_pre]. You can add your own custom destruction code here.. | |||
| //[/Destructor_pre] | |||
| deleteAndZero (tabbedComponent); | |||
| tabbedComponent = nullptr; | |||
| //[Destructor]. You can add your own custom destruction code here.. | |||
| @@ -86,7 +86,7 @@ private: | |||
| //[/UserVariables] | |||
| //============================================================================== | |||
| TabbedComponent* tabbedComponent; | |||
| ScopedPointer<TabbedComponent> tabbedComponent; | |||
| //============================================================================== | |||
| @@ -377,28 +377,6 @@ Component* createRenderingDemo() | |||
| //============================================================================== | |||
| 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)); | |||
| testTypeComboBox->setEditableText (false); | |||
| @@ -551,28 +529,28 @@ RenderingTestComponent::~RenderingTestComponent() | |||
| //[Destructor_pre]. You can add your own custom destruction code here.. | |||
| //[/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.. | |||
| @@ -66,28 +66,28 @@ private: | |||
| //[/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; | |||
| //============================================================================== | |||