Is there way that juce can render svg’s with masks?
My button should look like:
,but instead it looks like:
lol
Is there way that juce can render svg’s with masks?
My button should look like:
,but instead it looks like:
lol
There is support for a clipping path the Drawable
class and this is parsed from a “clipPath” in SVGs. The derived Drawable
class needs to call applyDrawableClipPath()
during its paint()
function. Maybe this call to applyDrawableClipPath()
just needs adding to DrawableImage::paint()
?
Wow, thank you - I will see if this works I would be overjoyed to discover that it did after spending a little too long on dozens of images (I should have checked if it was working first ofc).
So currently I have a little cache of svgs which I call from inside a class which is derived from the DrawableButton
class. The svgs are fetched from the cache inside the buttons setImages
method like so
setImages
(
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonNormal_svg, BinaryData::ButtonNormal_svgSize),
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonOver_svg, BinaryData::ButtonOver_svgSize),
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonDown_svg, BinaryData::ButtonDown_svgSize),
nullptr,
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonOnRed_svg, BinaryData::ButtonOnRed_svgSize),
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonOnOverRed_svg, BinaryData::ButtonOnOverRed_svgSize),
svgCache->GetOrUpdateDrawableFromCache((void*)BinaryData::ButtonOnDownRed_svg, BinaryData::ButtonOnDownRed_svgSize)
);
So the call to the DrawableImage::paint
is not made inside my class explicitly. So to try this out would I need to override paint
in button class? Or did you mean go into the juce_DrawableImage.cpp
and add the applyDrawableClipPath()
call there?
UPDATE:
I added applyDrawableClipPath(g)
inside the DrawableImage::paint
call and the result was this:
. It looks like the outline of the mask is there but has been displaced. I have no idea what this means.