|
@@ -12,6 +12,7 @@
|
|
|
#include <AK/RefCounted.h>
|
|
|
#include <AK/RefPtr.h>
|
|
|
#include <AK/Vector.h>
|
|
|
+#include <LibGfx/Bitmap.h>
|
|
|
#include <LibGfx/Color.h>
|
|
|
#include <LibGfx/Forward.h>
|
|
|
#include <LibGfx/Gradients.h>
|
|
@@ -59,6 +60,32 @@ private:
|
|
|
Color m_color;
|
|
|
};
|
|
|
|
|
|
+class BitmapPaintStyle : public PaintStyle {
|
|
|
+public:
|
|
|
+ static ErrorOr<NonnullRefPtr<BitmapPaintStyle>> create(Bitmap const& bitmap, IntPoint offset = {})
|
|
|
+ {
|
|
|
+ return adopt_nonnull_ref_or_enomem(new (nothrow) BitmapPaintStyle(bitmap, offset));
|
|
|
+ }
|
|
|
+
|
|
|
+ virtual Color sample_color(IntPoint point) const override
|
|
|
+ {
|
|
|
+ point += m_offset;
|
|
|
+ if (m_bitmap->rect().contains(point))
|
|
|
+ return m_bitmap->get_pixel(point);
|
|
|
+ return Color();
|
|
|
+ }
|
|
|
+
|
|
|
+private:
|
|
|
+ BitmapPaintStyle(Bitmap const& bitmap, IntPoint offset)
|
|
|
+ : m_bitmap(bitmap)
|
|
|
+ , m_offset(offset)
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ NonnullRefPtr<Bitmap const> m_bitmap;
|
|
|
+ IntPoint m_offset;
|
|
|
+};
|
|
|
+
|
|
|
class GradientPaintStyle : public PaintStyle {
|
|
|
public:
|
|
|
ErrorOr<void> add_color_stop(float position, Color color, Optional<float> transition_hint = {})
|