mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
DrawableImage: Remove a message thread dependency
This commit is contained in:
parent
efd0373525
commit
8ce68447bb
4 changed files with 31 additions and 24 deletions
|
|
@ -1514,11 +1514,6 @@ void Project::Item::setID (const String& newID) { state.setProperty (Ids::ID,
|
|||
|
||||
std::unique_ptr<Drawable> Project::Item::loadAsImageFile() const
|
||||
{
|
||||
const MessageManagerLock mml (ThreadPoolJob::getCurrentThreadPoolJob());
|
||||
|
||||
if (! mml.lockWasGained())
|
||||
return nullptr;
|
||||
|
||||
if (isValid())
|
||||
return Drawable::createFromImageFile (getFile());
|
||||
|
||||
|
|
|
|||
|
|
@ -167,23 +167,15 @@ void Drawable::setTransformToFit (const Rectangle<float>& area, RectanglePlaceme
|
|||
//==============================================================================
|
||||
std::unique_ptr<Drawable> Drawable::createFromImageData (const void* data, const size_t numBytes)
|
||||
{
|
||||
std::unique_ptr<Drawable> 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<DrawableImage> (image);
|
||||
|
||||
return result;
|
||||
if (auto svg = parseXMLIfTagMatches (String::createStringFromData (data, (int) numBytes), "svg"))
|
||||
return Drawable::createFromSVG (*svg);
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
std::unique_ptr<Drawable> Drawable::createFromImageDataStream (InputStream& dataSource)
|
||||
|
|
|
|||
|
|
@ -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<Drawable> 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<AccessibilityHandler> DrawableImage::createAccessibilityHandler()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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<AccessibilityHandler> createAccessibilityHandler() override;
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
bool setImageInternal (const Image&);
|
||||
|
||||
//==============================================================================
|
||||
Image image;
|
||||
float opacity = 1.0f;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue