mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 03:57:35 +00:00
LibGfx: Implement nicer antialiased lines
This is not any 'proper' algorithm, this was just a shower thought idea. There probably is a better algorithm to achieve the same effect out there, if someone knows of one please replace this code :^). This works by rendering the line a scanline at a time, which avoids repainting over any pixel on the line (so opacity now works with AA lines). This generally seems to achieve a much nicer looking line. I've not done any proper benchmarking of this, but some little messing around showed that this new implementation was a little faster than the old one too, so that's a nice little bonus. With the inclusion of a few minor hacks this also goes a surprisingly far way in improving our SVG rendering too (for both filled and stroked paths). :^)
This commit is contained in:
parent
ce6dacbc46
commit
f7a680f30a
2 changed files with 134 additions and 151 deletions
|
@ -82,7 +82,7 @@ private:
|
|||
Full,
|
||||
};
|
||||
template<AntiAliasPolicy policy>
|
||||
void draw_anti_aliased_line(FloatPoint const&, FloatPoint const&, Color, float thickness, Painter::LineStyle style, Color alternate_color);
|
||||
void draw_anti_aliased_line(FloatPoint, FloatPoint, Color, float thickness, Painter::LineStyle style, Color alternate_color);
|
||||
void stroke_segment_intersection(FloatPoint const& current_line_a, FloatPoint const& current_line_b, FloatLine const& previous_line, Color, float thickness);
|
||||
FloatQuad build_rotated_rectangle(FloatPoint const& direction, float width);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue