summaryrefslogtreecommitdiff
path: root/Userland/Applications/PixelPaint/Tools/CloneTool.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Applications/PixelPaint/Tools/CloneTool.h')
-rw-r--r--Userland/Applications/PixelPaint/Tools/CloneTool.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/Userland/Applications/PixelPaint/Tools/CloneTool.h b/Userland/Applications/PixelPaint/Tools/CloneTool.h
new file mode 100644
index 0000000000..100ac1aec9
--- /dev/null
+++ b/Userland/Applications/PixelPaint/Tools/CloneTool.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2021, Mustafa Quraish <mustafa@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include "BrushTool.h"
+
+namespace PixelPaint {
+
+class CloneTool : public BrushTool {
+public:
+ CloneTool() = default;
+ virtual ~CloneTool() override = default;
+
+ virtual GUI::Widget* get_properties_widget() override;
+ virtual Gfx::StandardCursor cursor() override;
+
+protected:
+ virtual void draw_point(Gfx::Bitmap& bitmap, Gfx::Color const& color, Gfx::IntPoint const& point) override;
+ virtual void draw_line(Gfx::Bitmap& bitmap, Gfx::Color const& color, Gfx::IntPoint const& start, Gfx::IntPoint const& end) override;
+
+ virtual void on_mousedown(Layer*, MouseEvent&) override;
+ virtual void on_mousemove(Layer*, MouseEvent&) override;
+ virtual void on_second_paint(Layer const*, GUI::PaintEvent&) override;
+ virtual void on_keydown(GUI::KeyEvent&) override;
+ virtual void on_keyup(GUI::KeyEvent&) override;
+
+private:
+ RefPtr<GUI::Widget> m_properties_widget;
+
+ Optional<Gfx::IntPoint> m_sample_location;
+ Optional<Gfx::IntPoint> m_cursor_offset;
+ bool m_is_selecting_location { false };
+
+ Gfx::Color m_marker_color { Gfx::Color::Green };
+};
+
+}