From 722ff41d660798369b7eb2b66a3116a504fa1bc2 Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 5 Mar 2024 12:54:48 +0000 Subject: [PATCH] RenderingHelpers: Individually template ClipRegion types --- .../native/juce_RenderingHelpers.h | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/modules/juce_graphics/native/juce_RenderingHelpers.h b/modules/juce_graphics/native/juce_RenderingHelpers.h index 06147cd3a9..bd54981eed 100644 --- a/modules/juce_graphics/native/juce_RenderingHelpers.h +++ b/modules/juce_graphics/native/juce_RenderingHelpers.h @@ -1552,9 +1552,9 @@ namespace EdgeTableFillers } //============================================================================== -template -struct ClipRegions +namespace ClipRegions { + template struct Base : public SingleThreadedReferenceCountedObject { Base() = default; @@ -1585,7 +1585,8 @@ struct ClipRegions }; //============================================================================== - struct EdgeTableRegion : public Base + template + struct EdgeTableRegion : public Base { EdgeTableRegion (const EdgeTable& e) : edgeTable (e) {} EdgeTableRegion (Rectangle r) : edgeTable (r) {} @@ -1594,10 +1595,10 @@ struct ClipRegions EdgeTableRegion (const RectangleList& r) : edgeTable (r) {} EdgeTableRegion (Rectangle bounds, const Path& p, const AffineTransform& t) : edgeTable (bounds, p, t) {} - EdgeTableRegion (const EdgeTableRegion& other) : Base(), edgeTable (other.edgeTable) {} + EdgeTableRegion (const EdgeTableRegion& other) : edgeTable (other.edgeTable) {} EdgeTableRegion& operator= (const EdgeTableRegion&) = delete; - using Ptr = typename Base::Ptr; + using Ptr = typename Base::Ptr; Ptr clone() const override { return *new EdgeTableRegion (*this); } Ptr applyClipTo (const Ptr& target) const override { return target->clipToEdgeTable (edgeTable); } @@ -1771,14 +1772,15 @@ struct ClipRegions }; //============================================================================== - class RectangleListRegion : public Base + template + class RectangleListRegion : public Base { public: RectangleListRegion (Rectangle r) : clip (r) {} RectangleListRegion (const RectangleList& r) : clip (r) {} - RectangleListRegion (const RectangleListRegion& other) : Base(), clip (other.clip) {} + RectangleListRegion (const RectangleListRegion& other) : clip (other.clip) {} - using Ptr = typename Base::Ptr; + using Ptr = typename Base::Ptr; Ptr clone() const override { return *new RectangleListRegion (*this); } Ptr applyClipTo (const Ptr& target) const override { return target->clipToRectangleList (clip); } @@ -1997,20 +1999,20 @@ struct ClipRegions JUCE_DECLARE_NON_COPYABLE (SubRectangleIteratorFloat) }; - Ptr toEdgeTable() const { return *new EdgeTableRegion (clip); } + Ptr toEdgeTable() const { return *new EdgeTableRegion (clip); } RectangleListRegion& operator= (const RectangleListRegion&) = delete; }; -}; +} //============================================================================== template class SavedStateBase { public: - using BaseRegionType = typename ClipRegions::Base; - using EdgeTableRegionType = typename ClipRegions::EdgeTableRegion; - using RectangleListRegionType = typename ClipRegions::RectangleListRegion; + using BaseRegionType = typename ClipRegions::Base; + using EdgeTableRegionType = typename ClipRegions::EdgeTableRegion; + using RectangleListRegionType = typename ClipRegions::RectangleListRegion; SavedStateBase (Rectangle initialClip) : clip (new RectangleListRegionType (initialClip)),