1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-14 08:52:07 +00:00
Commit graph

10 commits

Author SHA1 Message Date
Andreas Kling
1c0669f010 LibDraw: Introduce (formerly known as SharedGraphics.)
Instead of LibGUI and WindowServer building their own copies of the drawing
and graphics code, let's it in a separate LibDraw library.

This avoids building the code twice, and will encourage better separation
of concerns. :^)
2019-07-18 10:18:16 +02:00
Andreas Kling
8247dad540 PaintBrush: Allow RGBA32 to use the bucket and spray tools.
Eventually I'd like to do some kind of bitmap layers, and we definitely want
alpha channel support then, so let's just not paint ourselves into an
uncomfortable corner early on. :^)
2019-06-25 20:33:44 +02:00
Robin Burchell
502c54e39a Add a simple spray fill tool
Could do with some more tweaking no doubt, and it'd be nice to have a
circular spray, but this is better than nothing.
2019-06-17 05:54:32 +02:00
Andreas Kling
264890bfc3 PaintBrush: Flood filling with the same color is a no-op. 2019-06-16 06:34:29 +02:00
Andreas Kling
dcbddb4f8c GraphicsBitmap: Provide templated versions of get_pixel() and set_pixel().
If we already know the bitmap format used, we can use these functions to
bypass the format checks and go straight to pixel manipulation.
2019-06-15 11:06:02 +02:00
Andreas Kling
150b3cf378 PaintBrush: Fix some silly logic typos in flood fill. 2019-06-15 10:48:20 +02:00
Andreas Kling
a8b2b96f38 PaintBrush: Use a Queue<Point> for the flood fill. 2019-06-15 10:39:45 +02:00
Andreas Kling
9443957c14 PaintBrush: Speed up the bucket tool with smarter use of Vector.
Put together a pretty well-performing queue using a Vector and an offset.
By using the new Vector::shift_left(int) instead of Vector::take_first()
we can avoid shifting the vector contents every time and instead only
do it every so often.

Maybe this could be generalized into a separate class, I'm not sure if it's
the best algorithm though, it's just what I came up with right now. :^)
2019-06-14 21:50:28 +02:00
Andreas Kling
e9c021de92 PaintBrush: Implement a naive but working bucket fill tool.
I've used a SinglyLinkedList<Point> for the flood fill queue, since Vector
was death slow. This could definitely be made faster with a better algorithm
and/or data structure. :^)
2019-06-14 19:11:22 +02:00
Andreas Kling
56cbe15033 PaintBrush: Factor out the pen tool into an actual PenTool class.
Also add a Tool base class, and an empty BucketTool subclass which is the
next thing to implement.
2019-06-14 18:51:57 +02:00