1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-21 23:15:08 +00:00
serenity/Userland/Applications/PixelPaint/Tools/LineTool.h
Andreas Kling 101eb53de5 PixelPaint: Add Tool::tool_name() as a single-point-of-truth
Let the tools know what their names are.
2022-08-21 20:33:01 +02:00

44 lines
1.4 KiB
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, the SerenityOS developers.
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "Tool.h"
#include <LibGUI/ActionGroup.h>
#include <LibGfx/Point.h>
namespace PixelPaint {
class LineTool final : public Tool {
public:
LineTool() = default;
virtual ~LineTool() override = default;
virtual void on_mousedown(Layer*, MouseEvent&) override;
virtual void on_mousemove(Layer*, MouseEvent&) override;
virtual void on_mouseup(Layer*, MouseEvent&) override;
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 Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
void draw_using(GUI::Painter&, Gfx::IntPoint const& start_position, Gfx::IntPoint const& end_position, Color color, int thickness);
private:
virtual StringView tool_name() const override { return "Line Tool"sv; }
RefPtr<GUI::Widget> m_properties_widget;
GUI::MouseButton m_drawing_button { GUI::MouseButton::None };
Gfx::IntPoint m_drag_start_position;
Gfx::IntPoint m_line_start_position;
Gfx::IntPoint m_line_end_position;
int m_thickness { 1 };
bool m_antialias_enabled { false };
};
}