SprayTool.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2022, the SerenityOS developers.
  4. *
  5. * SPDX-License-Identifier: BSD-2-Clause
  6. */
  7. #pragma once
  8. #include "Tool.h"
  9. #include <LibCore/Timer.h>
  10. #include <LibGUI/ActionGroup.h>
  11. #include <LibGUI/Painter.h>
  12. namespace PixelPaint {
  13. class SprayTool final : public Tool {
  14. public:
  15. SprayTool();
  16. virtual ~SprayTool() override = default;
  17. virtual void on_mousedown(Layer*, MouseEvent&) override;
  18. virtual void on_mouseup(Layer*, MouseEvent&) override;
  19. virtual void on_mousemove(Layer*, MouseEvent&) override;
  20. virtual ErrorOr<GUI::Widget*> get_properties_widget() override;
  21. virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
  22. private:
  23. virtual StringView tool_name() const override { return "Spray Tool"sv; }
  24. void paint_it();
  25. RefPtr<GUI::Widget> m_properties_widget;
  26. RefPtr<Core::Timer> m_timer;
  27. Gfx::IntPoint m_last_pos;
  28. Color m_color;
  29. int m_thickness { 10 };
  30. int m_density { 40 };
  31. };
  32. }