Andreas Kling
f1d44da422
LibGfx: Simplify draw_anti_aliased_line() by avoiding transform callback
...
Instead of taking a callback that performs the coordinate transformation
we now just take a bool template parameter.
Thanks to Idan for suggesting this! :^)
2022-04-10 22:06:46 +02:00
Andreas Kling
c6e79124c7
LibGfx: Slap an -O3 optimization #pragma on Gfx::AntiAliasingPainter
...
We're already doing this for Gfx::Painter, so let's do it here as well.
2022-04-10 21:35:55 +02:00
Andreas Kling
908d42d0ba
LibGfx: Add fast path to AA line drawing with simple 2D transform
...
If the effective 2D transform is just a basic translation, we now simply
translate the underlying painter before & after drawing AA lines.
This avoids all the extra math that otherwise has to happen when mapping
points through an affine transform.
This noticeably increase "mousing around" performance on Wikipedia. :^)
2022-04-10 21:35:55 +02:00
Idan Horowitz
086969277e
Everywhere: Run clang-format
2022-04-01 21:24:45 +01:00
MacDue
3c0e17f29f
LibGfx: Support scaling in AntiAliasingPainter::draw_circle()
...
Previously the painter would crash if scaling was enabled.
2022-03-26 18:24:11 +00:00
Andreas Kling
6b5f0d11ce
LibGfx: Fix draw_anti_aliased_line() for steep lines with "OnlyEnds"
...
Regression from ab794a199b
.
2022-03-19 22:32:38 +01:00
Andreas Kling
ab794a199b
LibGfx: Transcribe "Xiaolin Wu's line algorithm" more accurately
...
This improves the appearance of anti-aliased lines significantly.
2022-03-19 22:04:43 +01:00
MacDue
51e54ab1ba
LibGfx: AntiAliasingPainter::draw_circle/fill_rect_with_rounded_corners
...
Follows the efficient algorithm from this paper:
https://cs.uwaterloo.ca/research/tr/1984/CS-84-38.pdf
Can be extended ellipses in future.
2022-03-18 11:31:33 +01:00
Ali Mohammad Pur
433725fef2
LibGfx: Implement cubic bezier curves by splitting them to subcurves
...
This makes them significantly more nicer-looking, and fixes a FIXME :^)
2021-09-18 02:12:38 +04:30
Ali Mohammad Pur
5a2e7d30ce
LibWeb: Use Gfx::AntiAliasingPainter to draw SVG paths
...
This is still quite bad, but it's much more pleasing to look at when
drawing random SVGs :^)
2021-09-18 02:12:38 +04:30
Ali Mohammad Pur
e2cd558101
LibGfx: Start a very basic anti-aliased Painter implementation
...
This can currently draw AA lines (and by proxy, AA paths), and passes
all its output through a 2D affine transform to an underlying
Gfx::Painter.
2021-09-18 02:12:38 +04:30