diff --git a/modules/juce_gui_basics/drawables/juce_Drawable.cpp b/modules/juce_gui_basics/drawables/juce_Drawable.cpp index 91d322e000..f82a5c98a6 100644 --- a/modules/juce_gui_basics/drawables/juce_Drawable.cpp +++ b/modules/juce_gui_basics/drawables/juce_Drawable.cpp @@ -31,6 +31,9 @@ Drawable::Drawable() Drawable::Drawable (const Drawable& other) : Component (other.getName()) { + setInterceptsMouseClicks (false, false); + setPaintingIsUnclipped (true); + setComponentID (other.getComponentID()); setTransform (other.getTransform()); } @@ -74,7 +77,7 @@ void Drawable::drawAt (Graphics& g, float x, float y, float opacity) const draw (g, opacity, AffineTransform::translation (x, y)); } -void Drawable::drawWithin (Graphics& g, const Rectangle& destArea, +void Drawable::drawWithin (Graphics& g, Rectangle destArea, RectanglePlacement placement, float opacity) const { draw (g, opacity, placement.getTransformToFit (getDrawableBounds(), destArea)); @@ -96,14 +99,14 @@ void Drawable::parentHierarchyChanged() setBoundsToEnclose (getDrawableBounds()); } -void Drawable::setBoundsToEnclose (const Rectangle& area) +void Drawable::setBoundsToEnclose (Rectangle area) { - Drawable* const parent = getParent(); Point parentOrigin; - if (parent != nullptr) + + if (auto* parent = getParent()) parentOrigin = parent->originRelativeToComponent; - const Rectangle newBounds (area.getSmallestIntegerContainer() + parentOrigin); + auto newBounds = area.getSmallestIntegerContainer() + parentOrigin; originRelativeToComponent = parentOrigin - newBounds.getPosition(); setBounds (newBounds); } @@ -114,7 +117,7 @@ bool Drawable::replaceColour (Colour original, Colour replacement) bool changed = false; for (int i = getNumChildComponents(); --i >= 0;) - if (Drawable* d = dynamic_cast (getChildComponent(i))) + if (auto* d = dynamic_cast (getChildComponent(i))) changed = d->replaceColour (original, replacement) || changed; return changed; @@ -137,17 +140,17 @@ Drawable* Drawable::createFromImageData (const void* data, const size_t numBytes { Drawable* result = nullptr; - Image image (ImageFileFormat::loadFrom (data, numBytes)); + auto image = ImageFileFormat::loadFrom (data, numBytes); if (image.isValid()) { - DrawableImage* const di = new DrawableImage(); + auto* di = new DrawableImage(); di->setImage (image); result = di; } else { - const String asString (String::createStringFromData (data, (int) numBytes)); + auto asString = String::createStringFromData (data, (int) numBytes); XmlDocument doc (asString); ScopedPointer outer (doc.getDocumentElement (true)); @@ -181,17 +184,15 @@ Drawable* Drawable::createFromImageFile (const File& file) //============================================================================== template -class DrawableTypeHandler : public ComponentBuilder::TypeHandler +struct DrawableTypeHandler : public ComponentBuilder::TypeHandler { -public: - DrawableTypeHandler() - : ComponentBuilder::TypeHandler (DrawableClass::valueTreeType) + DrawableTypeHandler() : ComponentBuilder::TypeHandler (DrawableClass::valueTreeType) { } Component* addNewComponentFromState (const ValueTree& state, Component* parent) { - DrawableClass* const d = new DrawableClass(); + auto* d = new DrawableClass(); if (parent != nullptr) parent->addAndMakeVisible (d); @@ -202,19 +203,20 @@ public: void updateComponentFromState (Component* component, const ValueTree& state) { - DrawableClass* const d = dynamic_cast (component); - jassert (d != nullptr); - d->refreshFromValueTree (state, *this->getBuilder()); + if (auto* d = dynamic_cast (component)) + d->refreshFromValueTree (state, *this->getBuilder()); + else + jassertfalse; } }; void Drawable::registerDrawableTypeHandlers (ComponentBuilder& builder) { - builder.registerTypeHandler (new DrawableTypeHandler ()); - builder.registerTypeHandler (new DrawableTypeHandler ()); - builder.registerTypeHandler (new DrawableTypeHandler ()); - builder.registerTypeHandler (new DrawableTypeHandler ()); - builder.registerTypeHandler (new DrawableTypeHandler ()); + builder.registerTypeHandler (new DrawableTypeHandler()); + builder.registerTypeHandler (new DrawableTypeHandler()); + builder.registerTypeHandler (new DrawableTypeHandler()); + builder.registerTypeHandler (new DrawableTypeHandler()); + builder.registerTypeHandler (new DrawableTypeHandler()); } Drawable* Drawable::createFromValueTree (const ValueTree& tree, ComponentBuilder::ImageProvider* imageProvider) @@ -224,7 +226,7 @@ Drawable* Drawable::createFromValueTree (const ValueTree& tree, ComponentBuilder registerDrawableTypeHandlers (builder); ScopedPointer comp (builder.createComponent()); - Drawable* const d = dynamic_cast (static_cast (comp)); + auto* d = dynamic_cast (static_cast (comp)); if (d != nullptr) comp.release(); @@ -233,8 +235,7 @@ Drawable* Drawable::createFromValueTree (const ValueTree& tree, ComponentBuilder } //============================================================================== -Drawable::ValueTreeWrapperBase::ValueTreeWrapperBase (const ValueTree& state_) - : state (state_) +Drawable::ValueTreeWrapperBase::ValueTreeWrapperBase (const ValueTree& s) : state (s) { } diff --git a/modules/juce_gui_basics/drawables/juce_Drawable.h b/modules/juce_gui_basics/drawables/juce_Drawable.h index 7c4f4f02bb..4dc9cfed75 100644 --- a/modules/juce_gui_basics/drawables/juce_Drawable.h +++ b/modules/juce_gui_basics/drawables/juce_Drawable.h @@ -61,8 +61,7 @@ public: @see drawWithin */ - void draw (Graphics& g, float opacity, - const AffineTransform& transform = AffineTransform()) const; + void draw (Graphics& g, float opacity, const AffineTransform& transform = {}) const; /** Renders the Drawable at a given offset within the Graphics context. @@ -96,7 +95,7 @@ public: @param opacity the opacity to use, in the range 0 to 1.0 */ void drawWithin (Graphics& g, - const Rectangle& destArea, + Rectangle destArea, RectanglePlacement placement, float opacity) const; @@ -211,7 +210,7 @@ protected: /** @internal */ void parentHierarchyChanged() override; /** @internal */ - void setBoundsToEnclose (const Rectangle&); + void setBoundsToEnclose (Rectangle); Point originRelativeToComponent;