diff options
Diffstat (limited to 'Userland/Applications/PixelPaint/Tools/CloneTool.h')
-rw-r--r-- | Userland/Applications/PixelPaint/Tools/CloneTool.h | 41 |
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 }; +}; + +} |