1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

Component: Use Context appropriate ImageType for temporary images

Co-authored-by: Matt Gonzalez <matt@echoaudio.com>
This commit is contained in:
Oli 2025-04-15 13:37:50 +01:00
parent 250abe9cf4
commit 4ba01a80a0
3 changed files with 16 additions and 6 deletions

View file

@ -216,7 +216,12 @@ public:
if (effectImage.getBounds() != scaledBounds) if (effectImage.getBounds() != scaledBounds)
{ {
effectImage = Image { c.isOpaque() ? Image::RGB : Image::ARGB, scaledBounds.getWidth(), scaledBounds.getHeight(), false }; auto tempImageType = g.getInternalContext().getPreferredImageTypeForTemporaryImages();
effectImage = Image { c.isOpaque() ? Image::RGB : Image::ARGB,
scaledBounds.getWidth(),
scaledBounds.getHeight(),
false,
*tempImageType };
effectImage.setBackupEnabled (false); effectImage.setBackupEnabled (false);
} }
@ -1814,7 +1819,9 @@ bool Component::isPaintingUnclipped() const noexcept
//============================================================================== //==============================================================================
Image Component::createComponentSnapshot (Rectangle<int> areaToGrab, Image Component::createComponentSnapshot (Rectangle<int> areaToGrab,
bool clipImageToComponentBounds, float scaleFactor) bool clipImageToComponentBounds,
float scaleFactor,
const ImageType& imageType)
{ {
auto r = areaToGrab; auto r = areaToGrab;
@ -1827,7 +1834,7 @@ Image Component::createComponentSnapshot (Rectangle<int> areaToGrab,
auto w = roundToInt (scaleFactor * (float) r.getWidth()); auto w = roundToInt (scaleFactor * (float) r.getWidth());
auto h = roundToInt (scaleFactor * (float) r.getHeight()); auto h = roundToInt (scaleFactor * (float) r.getHeight());
Image image (flags.opaqueFlag ? Image::RGB : Image::ARGB, w, h, true); Image image (flags.opaqueFlag ? Image::RGB : Image::ARGB, w, h, true, imageType);
Graphics g (image); Graphics g (image);

View file

@ -1147,7 +1147,7 @@ public:
/** Generates a snapshot of part of this component. /** Generates a snapshot of part of this component.
This will return a new Image, the size of the rectangle specified, This will return a new Image of type imageType, the size of the rectangle specified,
containing a snapshot of the specified area of the component and all containing a snapshot of the specified area of the component and all
its children. its children.
@ -1162,7 +1162,8 @@ public:
*/ */
Image createComponentSnapshot (Rectangle<int> areaToGrab, Image createComponentSnapshot (Rectangle<int> areaToGrab,
bool clipImageToComponentBounds = true, bool clipImageToComponentBounds = true,
float scaleFactor = 1.0f); float scaleFactor = 1.0f,
const ImageType& imageType = NativeImageType{});
/** Draws this component and all its subcomponents onto the specified graphics /** Draws this component and all its subcomponents onto the specified graphics
context. context.

View file

@ -50,11 +50,13 @@ struct StandardCachedComponentImage : public CachedComponentImage
if (image.isNull() || image.getBounds() != imageBounds) if (image.isNull() || image.getBounds() != imageBounds)
{ {
auto tempImageType = g.getInternalContext().getPreferredImageTypeForTemporaryImages();
image = Image (owner.isOpaque() ? Image::RGB image = Image (owner.isOpaque() ? Image::RGB
: Image::ARGB, : Image::ARGB,
jmax (1, imageBounds.getWidth()), jmax (1, imageBounds.getWidth()),
jmax (1, imageBounds.getHeight()), jmax (1, imageBounds.getHeight()),
! owner.isOpaque()); ! owner.isOpaque(),
*tempImageType);
image.setBackupEnabled (false); image.setBackupEnabled (false);
validArea.clear(); validArea.clear();
} }