diff --git a/modules/juce_graphics/native/juce_RenderingHelpers.h b/modules/juce_graphics/native/juce_RenderingHelpers.h index 2b5284b415..3190c5fd66 100644 --- a/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -1681,28 +1681,12 @@ namespace ClipRegions void fillRectWithColour (SavedStateType& state, Rectangle area, PixelARGB colour, bool replaceContents) const override { - auto totalClip = edgeTable.getMaximumBounds(); - auto clipped = totalClip.getIntersection (area); - - if (! clipped.isEmpty()) - { - EdgeTableRegion et (clipped); - et.edgeTable.clipToEdgeTable (edgeTable); - state.fillWithSolidColour (et.edgeTable, colour, replaceContents); - } + fillRectWithColourImpl (state, area, colour, replaceContents); } void fillRectWithColour (SavedStateType& state, Rectangle area, PixelARGB colour) const override { - auto totalClip = edgeTable.getMaximumBounds().toFloat(); - auto clipped = totalClip.getIntersection (area); - - if (! clipped.isEmpty()) - { - EdgeTableRegion et (clipped); - et.edgeTable.clipToEdgeTable (edgeTable); - state.fillWithSolidColour (et.edgeTable, colour, false); - } + fillRectWithColourImpl (state, area, colour, false); } void fillAllWithColour (SavedStateType& state, PixelARGB colour, bool replaceContents) const override @@ -1728,6 +1712,20 @@ namespace ClipRegions EdgeTable edgeTable; private: + template + void fillRectWithColourImpl (SavedStateType& state, Rectangle area, PixelARGB colour, bool replace) const + { + auto totalClip = edgeTable.getMaximumBounds().template toType(); + auto clipped = totalClip.getIntersection (area); + + if (clipped.isEmpty()) + return; + + EdgeTableRegion et (clipped); + et.edgeTable.clipToEdgeTable (edgeTable); + state.fillWithSolidColour (et.edgeTable, colour, replace); + } + template void transformedClipImage (const Image::BitmapData& srcData, const AffineTransform& transform, Graphics::ResamplingQuality quality, const SrcPixelType*) {