mirror of
https://github.com/RGBCube/serenity
synced 2025-07-14 07:57:35 +00:00

This adds support for the Tools in PixelPaint to use different cursors within ImageEditor. For now most of them get the crosshair cursor since it's the most fitting, but in the future we will want to add custom cursors.
38 lines
1 KiB
C++
38 lines
1 KiB
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Tool.h"
|
|
#include <LibCore/Timer.h>
|
|
#include <LibGUI/ActionGroup.h>
|
|
#include <LibGUI/Painter.h>
|
|
|
|
namespace PixelPaint {
|
|
|
|
class SprayTool final : public Tool {
|
|
public:
|
|
SprayTool();
|
|
virtual ~SprayTool() override;
|
|
|
|
virtual void on_mousedown(Layer&, GUI::MouseEvent& layer_event, GUI::MouseEvent& image_event) override;
|
|
virtual void on_mouseup(Layer&, GUI::MouseEvent& layer_event, GUI::MouseEvent& image_event) override;
|
|
virtual void on_mousemove(Layer&, GUI::MouseEvent& layer_event, GUI::MouseEvent& image_event) override;
|
|
virtual GUI::Widget* get_properties_widget() override;
|
|
virtual Gfx::StandardCursor cursor() override { return Gfx::StandardCursor::Crosshair; }
|
|
|
|
private:
|
|
void paint_it();
|
|
|
|
RefPtr<GUI::Widget> m_properties_widget;
|
|
RefPtr<Core::Timer> m_timer;
|
|
Gfx::IntPoint m_last_pos;
|
|
Color m_color;
|
|
int m_thickness { 10 };
|
|
int m_density { 40 };
|
|
};
|
|
|
|
}
|