mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 09:48:11 +00:00

Now the user can hold primary and/or secondary mouse buttons and move the mouse around while previewing the color on the statusbar and fine tune their selection. The color will update live so the color selected when mouse is released is the final color used.
34 lines
962 B
C++
34 lines
962 B
C++
/*
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
* Copyright (c) 2021, Mustafa Quraish <mustafa@serenityos.org>
|
|
* Copyright (c) 2022, the SerenityOS developers.
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Tool.h"
|
|
|
|
namespace PixelPaint {
|
|
|
|
class PickerTool final : public Tool {
|
|
public:
|
|
PickerTool() = default;
|
|
virtual ~PickerTool() override = default;
|
|
|
|
virtual void on_mousedown(Layer*, MouseEvent&) override;
|
|
virtual void on_mouseup(Layer*, MouseEvent&) override;
|
|
virtual void on_mousemove(Layer*, MouseEvent&) override;
|
|
|
|
virtual GUI::Widget* get_properties_widget() override;
|
|
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Eyedropper; }
|
|
|
|
private:
|
|
virtual StringView tool_name() const override { return "Picker Tool"sv; }
|
|
|
|
RefPtr<GUI::Widget> m_properties_widget;
|
|
bool m_sample_all_layers { false };
|
|
};
|
|
|
|
}
|