diff --git a/extras/Projucer/Source/Project/jucer_Project.cpp b/extras/Projucer/Source/Project/jucer_Project.cpp index 95e625f446..af546fae0b 100644 --- a/extras/Projucer/Source/Project/jucer_Project.cpp +++ b/extras/Projucer/Source/Project/jucer_Project.cpp @@ -1514,11 +1514,6 @@ void Project::Item::setID (const String& newID) { state.setProperty (Ids::ID, std::unique_ptr Project::Item::loadAsImageFile() const { - const MessageManagerLock mml (ThreadPoolJob::getCurrentThreadPoolJob()); - - if (! mml.lockWasGained()) - return nullptr; - if (isValid()) return Drawable::createFromImageFile (getFile()); diff --git a/modules/juce_gui_basics/drawables/juce_Drawable.cpp b/modules/juce_gui_basics/drawables/juce_Drawable.cpp index 59df9fdd93..14ad1d65d4 100644 --- a/modules/juce_gui_basics/drawables/juce_Drawable.cpp +++ b/modules/juce_gui_basics/drawables/juce_Drawable.cpp @@ -167,23 +167,15 @@ void Drawable::setTransformToFit (const Rectangle& area, RectanglePlaceme //============================================================================== std::unique_ptr Drawable::createFromImageData (const void* data, const size_t numBytes) { - std::unique_ptr result; - auto image = ImageFileFormat::loadFrom (data, numBytes); if (image.isValid()) - { - auto* di = new DrawableImage(); - di->setImage (image); - result.reset (di); - } - else - { - if (auto svg = parseXMLIfTagMatches (String::createStringFromData (data, (int) numBytes), "svg")) - result = Drawable::createFromSVG (*svg); - } + return std::make_unique (image); - return result; + if (auto svg = parseXMLIfTagMatches (String::createStringFromData (data, (int) numBytes), "svg")) + return Drawable::createFromSVG (*svg); + + return {}; } std::unique_ptr Drawable::createFromImageDataStream (InputStream& dataSource) diff --git a/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp b/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp index 4bd229a30b..be590249a4 100644 --- a/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp +++ b/modules/juce_gui_basics/drawables/juce_DrawableImage.cpp @@ -40,6 +40,11 @@ DrawableImage::DrawableImage (const DrawableImage& other) setBounds (other.getBounds()); } +DrawableImage::DrawableImage (const Image& imageToUse) +{ + setImageInternal (imageToUse); +} + DrawableImage::~DrawableImage() { } @@ -52,13 +57,8 @@ std::unique_ptr DrawableImage::createCopy() const //============================================================================== void DrawableImage::setImage (const Image& imageToUse) { - if (image != imageToUse) - { - image = imageToUse; - setBounds (image.getBounds()); - setBoundingBox (image.getBounds().toFloat()); + if (setImageInternal (imageToUse)) repaint(); - } } void DrawableImage::setOpacity (const float newOpacity) @@ -133,6 +133,20 @@ Path DrawableImage::getOutlineAsPath() const return {}; // not applicable for images } +//============================================================================== +bool DrawableImage::setImageInternal (const Image& imageToUse) +{ + if (image != imageToUse) + { + image = imageToUse; + setBounds (image.getBounds()); + setBoundingBox (image.getBounds().toFloat()); + return true; + } + + return false; +} + //============================================================================== std::unique_ptr DrawableImage::createAccessibilityHandler() { diff --git a/modules/juce_gui_basics/drawables/juce_DrawableImage.h b/modules/juce_gui_basics/drawables/juce_DrawableImage.h index 4f73490701..49baafd69f 100644 --- a/modules/juce_gui_basics/drawables/juce_DrawableImage.h +++ b/modules/juce_gui_basics/drawables/juce_DrawableImage.h @@ -41,6 +41,9 @@ public: DrawableImage(); DrawableImage (const DrawableImage&); + /** Sets the image that this drawable will render. */ + explicit DrawableImage (const Image& imageToUse); + /** Destructor. */ ~DrawableImage() override; @@ -98,6 +101,9 @@ public: std::unique_ptr createAccessibilityHandler() override; private: + //============================================================================== + bool setImageInternal (const Image&); + //============================================================================== Image image; float opacity = 1.0f;