1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-22 00:05:07 +00:00
serenity/Userland/Applications/PixelPaint/Tools/WandSelectTool.h
Timothy Slater fcf86b07a5 PixelPaint: Add Wand Select Tool
Wand Selection tool uses similar logic to the Bucket Tool. Flood filling
and threshold calculations to determine the affected area just in this
case we do not set the pixels of the selected area, instead we use
those pixels to alter the selection mask.

In the future we can probably abstract out the shared flood logic so
both tools can share the code.
2022-08-31 16:30:23 +02:00

37 lines
1,022 B
C++

/*
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, the SerenityOS developers.
* Copyright (c) 2022, Timothy Slater <tslater2006@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include "../Selection.h"
#include "Tool.h"
#include <AK/Vector.h>
#include <LibGUI/Widget.h>
namespace PixelPaint {
class WandSelectTool final : public Tool {
public:
WandSelectTool() = default;
virtual ~WandSelectTool() = default;
virtual void on_mousedown(Layer*, MouseEvent& event) override;
virtual GUI::Widget* get_properties_widget() override;
virtual Variant<Gfx::StandardCursor, NonnullRefPtr<Gfx::Bitmap>> cursor() override { return Gfx::StandardCursor::Crosshair; }
private:
virtual StringView tool_name() const override { return "Wand Select Tool"sv; }
int m_threshold { 0 };
RefPtr<GUI::Widget> m_properties_widget;
Vector<String> m_merge_mode_names {};
Selection::MergeMode m_merge_mode { Selection::MergeMode::Set };
};
}