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
|
std::unique_ptr<Drawable> Project::Item::loadAsImageFile() const
|
||||||
{
|
{
|
||||||
const MessageManagerLock mml (ThreadPoolJob::getCurrentThreadPoolJob());
|
|
||||||
|
|
||||||
if (! mml.lockWasGained())
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
if (isValid())
|
if (isValid())
|
||||||
return Drawable::createFromImageFile (getFile());
|
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> Drawable::createFromImageData (const void* data, const size_t numBytes)
|
||||||
{
|
{
|
||||||
std::unique_ptr<Drawable> result;
|
|
||||||
|
|
||||||
auto image = ImageFileFormat::loadFrom (data, numBytes);
|
auto image = ImageFileFormat::loadFrom (data, numBytes);
|
||||||
|
|
||||||
if (image.isValid())
|
if (image.isValid())
|
||||||
{
|
return std::make_unique<DrawableImage> (image);
|
||||||
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 result;
|
if (auto svg = parseXMLIfTagMatches (String::createStringFromData (data, (int) numBytes), "svg"))
|
||||||
|
return Drawable::createFromSVG (*svg);
|
||||||
|
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Drawable> Drawable::createFromImageDataStream (InputStream& dataSource)
|
std::unique_ptr<Drawable> Drawable::createFromImageDataStream (InputStream& dataSource)
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,11 @@ DrawableImage::DrawableImage (const DrawableImage& other)
|
||||||
setBounds (other.getBounds());
|
setBounds (other.getBounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DrawableImage::DrawableImage (const Image& imageToUse)
|
||||||
|
{
|
||||||
|
setImageInternal (imageToUse);
|
||||||
|
}
|
||||||
|
|
||||||
DrawableImage::~DrawableImage()
|
DrawableImage::~DrawableImage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -52,13 +57,8 @@ std::unique_ptr<Drawable> DrawableImage::createCopy() const
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
void DrawableImage::setImage (const Image& imageToUse)
|
void DrawableImage::setImage (const Image& imageToUse)
|
||||||
{
|
{
|
||||||
if (image != imageToUse)
|
if (setImageInternal (imageToUse))
|
||||||
{
|
|
||||||
image = imageToUse;
|
|
||||||
setBounds (image.getBounds());
|
|
||||||
setBoundingBox (image.getBounds().toFloat());
|
|
||||||
repaint();
|
repaint();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawableImage::setOpacity (const float newOpacity)
|
void DrawableImage::setOpacity (const float newOpacity)
|
||||||
|
|
@ -133,6 +133,20 @@ Path DrawableImage::getOutlineAsPath() const
|
||||||
return {}; // not applicable for images
|
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()
|
std::unique_ptr<AccessibilityHandler> DrawableImage::createAccessibilityHandler()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,9 @@ public:
|
||||||
DrawableImage();
|
DrawableImage();
|
||||||
DrawableImage (const DrawableImage&);
|
DrawableImage (const DrawableImage&);
|
||||||
|
|
||||||
|
/** Sets the image that this drawable will render. */
|
||||||
|
explicit DrawableImage (const Image& imageToUse);
|
||||||
|
|
||||||
/** Destructor. */
|
/** Destructor. */
|
||||||
~DrawableImage() override;
|
~DrawableImage() override;
|
||||||
|
|
||||||
|
|
@ -98,6 +101,9 @@ public:
|
||||||
std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override;
|
std::unique_ptr<AccessibilityHandler> createAccessibilityHandler() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
//==============================================================================
|
||||||
|
bool setImageInternal (const Image&);
|
||||||
|
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
Image image;
|
Image image;
|
||||||
float opacity = 1.0f;
|
float opacity = 1.0f;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue