LibGfx: Move Gfx::Painter::WindingRule => Gfx::WindingRule

This commit is contained in:
Andreas Kling
2024-06-05 10:21:28 +02:00
committed by Andreas Kling
parent 254d040ff4
commit 57906a4e1b
Notes: sideshowbarker 2024-07-17 01:53:23 +09:00
16 changed files with 68 additions and 55 deletions

View File

@@ -145,8 +145,8 @@ class EdgeFlagPathRasterizer {
public:
EdgeFlagPathRasterizer(IntSize);
void fill(Painter&, Path const&, Color, Painter::WindingRule, FloatPoint offset = {});
void fill(Painter&, Path const&, PaintStyle const&, float opacity, Painter::WindingRule, FloatPoint offset = {});
void fill(Painter&, Path const&, Color, WindingRule, FloatPoint offset = {});
void fill(Painter&, Path const&, PaintStyle const&, float opacity, WindingRule, FloatPoint offset = {});
private:
using SubpixelSample = Detail::Sample<SamplesPerPixel>;
@@ -172,16 +172,16 @@ private:
}
};
void fill_internal(Painter&, Path const&, auto color_or_function, Painter::WindingRule, FloatPoint offset);
void fill_internal(Painter&, Path const&, auto color_or_function, WindingRule, FloatPoint offset);
Detail::Edge* plot_edges_for_scanline(int scanline, auto plot_edge, EdgeExtent&, Detail::Edge* active_edges = nullptr);
template<Painter::WindingRule>
template<WindingRule>
FLATTEN void write_scanline(Painter&, int scanline, EdgeExtent, auto& color_or_function);
Color scanline_color(int scanline, int offset, u8 alpha, auto& color_or_function);
void write_pixel(BitmapFormat format, ARGB32* scanline_ptr, int scanline, int offset, SampleType sample, auto& color_or_function);
void fast_fill_solid_color_span(ARGB32* scanline_ptr, int start, int end, Color color);
template<Painter::WindingRule, typename Callback>
template<WindingRule, typename Callback>
auto accumulate_scanline(EdgeExtent, auto, Callback);
auto accumulate_even_odd_scanline(EdgeExtent, auto, auto sample_callback);
auto accumulate_non_zero_scanline(EdgeExtent, auto, auto sample_callback);
@@ -196,10 +196,10 @@ private:
WindingCounts winding;
};
template<Painter::WindingRule WindingRule>
template<WindingRule WindingRule>
constexpr auto initial_acc() const
{
if constexpr (WindingRule == Painter::WindingRule::EvenOdd)
if constexpr (WindingRule == WindingRule::EvenOdd)
return SampleType {};
else
return NonZeroAcc {};