PixelPaint: Support using a bitmap as a tool's cursor

This commit is contained in:
Marco Cutecchia 2021-10-17 21:07:12 +02:00 committed by Andreas Kling
parent 116bb4888f
commit 0f24678eaf
14 changed files with 16 additions and 14 deletions

View file

@ -11,6 +11,7 @@
#include "Guide.h"
#include "Image.h"
#include "Selection.h"
#include <AK/Variant.h>
#include <LibGUI/Frame.h>
#include <LibGUI/UndoStack.h>
#include <LibGfx/Point.h>
@ -163,7 +164,7 @@ private:
float m_pixel_grid_threshold { 15.0f };
Gfx::StandardCursor m_active_cursor { Gfx::StandardCursor::None };
Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> m_active_cursor { Gfx::StandardCursor::None };
Selection m_selection;
};

View file

@ -20,7 +20,7 @@ public:
virtual void on_mousemove(Layer*, MouseEvent&) override;
virtual void on_mouseup(Layer*, MouseEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
void set_size(int size) { m_size = size; }
int size() const { return m_size; }

View file

@ -52,7 +52,7 @@ void CloneTool::draw_line(Gfx::Bitmap& bitmap, Gfx::Color const& color, Gfx::Int
BrushTool::draw_line(bitmap, color, start, end);
}
Gfx::StandardCursor CloneTool::cursor()
Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> CloneTool::cursor()
{
if (m_is_selecting_location)
return Gfx::StandardCursor::Eyedropper;

View file

@ -16,7 +16,7 @@ public:
virtual ~CloneTool() override = default;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override;
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override;
protected:
virtual void draw_point(Gfx::Bitmap& bitmap, Gfx::Color const& color, Gfx::IntPoint const& point) override;

View file

@ -24,7 +24,7 @@ public:
virtual void on_second_paint(Layer const*, GUI::PaintEvent&) override;
virtual void on_keydown(GUI::KeyEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
enum class FillMode {

View file

@ -26,7 +26,7 @@ public:
virtual void on_tool_activation() override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
RefPtr<Guide> closest_guide(Gfx::IntPoint const&);

View file

@ -23,7 +23,7 @@ public:
virtual void on_second_paint(Layer const*, GUI::PaintEvent&) override;
virtual void on_keydown(GUI::KeyEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
RefPtr<GUI::Widget> m_properties_widget;

View file

@ -19,7 +19,7 @@ public:
virtual void on_mousemove(Layer*, MouseEvent&) override;
virtual void on_mouseup(Layer*, MouseEvent&) override;
virtual void on_keydown(GUI::KeyEvent&) override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Move; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Move; }
private:
RefPtr<Layer> m_layer_being_moved;

View file

@ -19,7 +19,7 @@ public:
virtual void on_mousedown(Layer*, MouseEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Eyedropper; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Eyedropper; }
private:
RefPtr<GUI::Widget> m_properties_widget;

View file

@ -26,7 +26,7 @@ public:
virtual void on_keyup(GUI::KeyEvent&) override;
virtual void on_second_paint(Layer const*, GUI::PaintEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
enum class MovingMode {

View file

@ -24,7 +24,7 @@ public:
virtual void on_second_paint(Layer const*, GUI::PaintEvent&) override;
virtual void on_keydown(GUI::KeyEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
enum class FillMode {

View file

@ -22,7 +22,7 @@ public:
virtual void on_mouseup(Layer*, MouseEvent&) override;
virtual void on_mousemove(Layer*, MouseEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
void paint_it();

View file

@ -7,6 +7,7 @@
#pragma once
#include <AK/Variant.h>
#include <LibGUI/Event.h>
#include <LibGUI/Forward.h>
#include <LibGUI/ValueSlider.h>
@ -60,7 +61,7 @@ public:
virtual void on_keyup(GUI::KeyEvent&) { }
virtual void on_tool_activation() { }
virtual GUI::Widget* get_properties_widget() { return nullptr; }
virtual Gfx::StandardCursor cursor() { return Gfx::StandardCursor::None; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() { return Gfx::StandardCursor::None; }
void clear() { m_editor = nullptr; }
void setup(ImageEditor&);

View file

@ -19,7 +19,7 @@ public:
virtual void on_mousedown(Layer*, MouseEvent&) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Zoom; }
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Zoom; }
private:
RefPtr<GUI::Widget> m_properties_widget;