1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:27:43 +00:00

PixelPaint: Use the ValueSlider widget for Tool properties

Use the new ValueSlider and get rid of the temporary solution with
tooltips :^)
This commit is contained in:
Marcus Nilsson 2021-08-05 19:36:38 +02:00 committed by Andreas Kling
parent 07ad64da8c
commit 868be680c2
10 changed files with 23 additions and 57 deletions

View file

@ -11,7 +11,7 @@
#include <LibGUI/BoxLayout.h>
#include <LibGUI/Label.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
#include <LibGfx/Color.h>
#include <LibGfx/Rect.h>
@ -126,15 +126,12 @@ GUI::Widget* BrushTool::get_properties_widget()
size_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
size_label.set_fixed_size(80, 20);
auto& size_slider = size_container.add<GUI::HorizontalSlider>();
size_slider.set_fixed_height(20);
auto& size_slider = size_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
size_slider.set_range(1, 100);
size_slider.set_value(m_size);
size_slider.set_tooltip(String::formatted("{}px", m_size));
size_slider.on_change = [&](int value) {
m_size = value;
size_slider.set_tooltip(String::formatted("{}px", value));
};
auto& hardness_container = m_properties_widget->add<GUI::Widget>();
@ -145,15 +142,12 @@ GUI::Widget* BrushTool::get_properties_widget()
hardness_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
hardness_label.set_fixed_size(80, 20);
auto& hardness_slider = hardness_container.add<GUI::HorizontalSlider>();
hardness_slider.set_fixed_height(20);
auto& hardness_slider = hardness_container.add<GUI::ValueSlider>(Orientation::Horizontal, "%");
hardness_slider.set_range(1, 99);
hardness_slider.set_value(m_hardness);
hardness_slider.set_tooltip(String::formatted("{}%", m_hardness));
hardness_slider.on_change = [&](int value) {
m_hardness = value;
hardness_slider.set_tooltip(String::formatted("{}%", value));
};
}

View file

@ -11,7 +11,7 @@
#include <LibGUI/BoxLayout.h>
#include <LibGUI/Label.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
#include <LibGfx/Bitmap.h>
#include <LibGfx/Rect.h>
@ -98,15 +98,12 @@ GUI::Widget* BucketTool::get_properties_widget()
threshold_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
threshold_label.set_fixed_size(80, 20);
auto& threshold_slider = threshold_container.add<GUI::HorizontalSlider>();
threshold_slider.set_fixed_height(20);
auto& threshold_slider = threshold_container.add<GUI::ValueSlider>(Orientation::Horizontal, "%");
threshold_slider.set_range(0, 100);
threshold_slider.set_value(m_threshold);
threshold_slider.set_tooltip(String::formatted("{}%", m_threshold));
threshold_slider.on_change = [&](int value) {
m_threshold = value;
threshold_slider.set_tooltip(String::formatted("{}%", value));
};
}

View file

@ -13,7 +13,7 @@
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
#include <LibGUI/RadioButton.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
#include <LibGfx/Rect.h>
namespace PixelPaint {
@ -109,15 +109,12 @@ GUI::Widget* EllipseTool::get_properties_widget()
thickness_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
thickness_label.set_fixed_size(80, 20);
auto& thickness_slider = thickness_container.add<GUI::HorizontalSlider>();
thickness_slider.set_fixed_height(20);
auto& thickness_slider = thickness_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
thickness_slider.set_range(1, 10);
thickness_slider.set_value(m_thickness);
thickness_slider.set_tooltip(String::formatted("{}px", m_thickness));
thickness_slider.on_change = [&](int value) {
m_thickness = value;
thickness_slider.set_tooltip(String::formatted("{}px", value));
};
auto& mode_container = m_properties_widget->add<GUI::Widget>();

View file

@ -13,7 +13,7 @@
#include <LibGUI/Label.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
#include <LibGfx/Bitmap.h>
namespace PixelPaint {
@ -28,7 +28,7 @@ EraseTool::~EraseTool()
Gfx::IntRect EraseTool::build_rect(Gfx::IntPoint const& pos, Gfx::IntRect const& widget_rect)
{
const int eraser_size = (m_base_eraser_size * m_thickness);
const int eraser_size = m_thickness;
const int eraser_radius = eraser_size / 2;
const auto ex = pos.x();
const auto ey = pos.y();
@ -83,15 +83,12 @@ GUI::Widget* EraseTool::get_properties_widget()
thickness_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
thickness_label.set_fixed_size(80, 20);
auto& thickness_slider = thickness_container.add<GUI::HorizontalSlider>();
thickness_slider.set_fixed_height(20);
thickness_slider.set_range(1, 5);
auto& thickness_slider = thickness_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
thickness_slider.set_range(1, 50);
thickness_slider.set_value(m_thickness);
thickness_slider.set_tooltip(String::formatted("{}px", m_base_eraser_size * m_thickness));
thickness_slider.on_change = [&](int value) {
m_thickness = value;
thickness_slider.set_tooltip(String::formatted("{}px", m_base_eraser_size * value));
};
auto& checkbox_container = m_properties_widget->add<GUI::Widget>();

View file

@ -30,7 +30,6 @@ private:
bool m_use_secondary_color { false };
int m_thickness { 1 };
const int m_base_eraser_size { 10 };
};
}

View file

@ -13,7 +13,7 @@
#include <LibGUI/Label.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
namespace PixelPaint {
@ -114,15 +114,12 @@ GUI::Widget* LineTool::get_properties_widget()
thickness_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
thickness_label.set_fixed_size(80, 20);
auto& thickness_slider = thickness_container.add<GUI::HorizontalSlider>();
thickness_slider.set_fixed_height(20);
auto& thickness_slider = thickness_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
thickness_slider.set_range(1, 10);
thickness_slider.set_value(m_thickness);
thickness_slider.set_tooltip(String::formatted("{}px", m_thickness));
thickness_slider.on_change = [&](int value) {
m_thickness = value;
thickness_slider.set_tooltip(String::formatted("{}px", value));
};
}

View file

@ -12,7 +12,7 @@
#include <LibGUI/Label.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
namespace PixelPaint {
@ -77,15 +77,12 @@ GUI::Widget* PenTool::get_properties_widget()
thickness_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
thickness_label.set_fixed_size(80, 20);
auto& thickness_slider = thickness_container.add<GUI::HorizontalSlider>();
thickness_slider.set_fixed_height(20);
auto& thickness_slider = thickness_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
thickness_slider.set_range(1, 20);
thickness_slider.set_value(m_thickness);
thickness_slider.set_tooltip(String::formatted("{}px", m_thickness));
thickness_slider.on_change = [&](int value) {
m_thickness = value;
thickness_slider.set_tooltip(String::formatted("{}px", value));
};
}

View file

@ -14,7 +14,7 @@
#include <LibGUI/Label.h>
#include <LibGUI/Model.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
namespace PixelPaint {
@ -153,16 +153,13 @@ GUI::Widget* RectangleSelectTool::get_properties_widget()
feather_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
feather_label.set_fixed_size(80, 20);
const int feather_slider_max = 10000;
auto& feather_slider = feather_container.add<GUI::HorizontalSlider>();
feather_slider.set_fixed_height(20);
const int feather_slider_max = 100;
auto& feather_slider = feather_container.add<GUI::ValueSlider>(Orientation::Horizontal, "%");
feather_slider.set_range(0, feather_slider_max);
feather_slider.set_value((int)floorf(m_edge_feathering * (float)feather_slider_max));
feather_slider.set_tooltip(String::formatted("{:.2}", (float)m_edge_feathering / (float)feather_slider_max));
feather_slider.on_change = [&](int value) {
m_edge_feathering = (float)value / (float)feather_slider_max;
feather_slider.set_tooltip(String::formatted("{:.2}", (float)value / (float)feather_slider_max));
};
auto& mode_container = m_properties_widget->add<GUI::Widget>();

View file

@ -14,7 +14,7 @@
#include <LibGUI/Label.h>
#include <LibGUI/Menu.h>
#include <LibGUI/Painter.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
#include <LibGfx/Bitmap.h>
namespace PixelPaint {
@ -102,15 +102,12 @@ GUI::Widget* SprayTool::get_properties_widget()
size_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
size_label.set_fixed_size(80, 20);
auto& size_slider = size_container.add<GUI::HorizontalSlider>();
size_slider.set_fixed_height(20);
auto& size_slider = size_container.add<GUI::ValueSlider>(Orientation::Horizontal, "px");
size_slider.set_range(1, 20);
size_slider.set_value(m_thickness);
size_slider.set_tooltip(String::formatted("{}", m_thickness));
size_slider.on_change = [&](int value) {
m_thickness = value;
size_slider.set_tooltip(String::formatted("{}", value));
};
auto& density_container = m_properties_widget->add<GUI::Widget>();
@ -121,15 +118,12 @@ GUI::Widget* SprayTool::get_properties_widget()
density_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
density_label.set_fixed_size(80, 20);
auto& density_slider = density_container.add<GUI::HorizontalSlider>();
density_slider.set_fixed_height(30);
auto& density_slider = density_container.add<GUI::ValueSlider>(Orientation::Horizontal, "%");
density_slider.set_range(1, 100);
density_slider.set_value(m_density);
density_slider.set_tooltip(String::formatted("{}%", m_density));
density_slider.on_change = [&](int value) {
m_density = value;
density_slider.set_tooltip(String::formatted("{}%", value));
};
}

View file

@ -8,7 +8,7 @@
#include "ImageEditor.h"
#include <LibGUI/BoxLayout.h>
#include <LibGUI/Label.h>
#include <LibGUI/Slider.h>
#include <LibGUI/ValueSlider.h>
namespace PixelPaint {
@ -43,15 +43,12 @@ GUI::Widget* ZoomTool::get_properties_widget()
sensitivity_label.set_text_alignment(Gfx::TextAlignment::CenterLeft);
sensitivity_label.set_fixed_size(80, 20);
auto& sensitivity_slider = sensitivity_container.add<GUI::HorizontalSlider>();
sensitivity_slider.set_fixed_height(20);
auto& sensitivity_slider = sensitivity_container.add<GUI::ValueSlider>(Orientation::Horizontal, "%");
sensitivity_slider.set_range(1, 100);
sensitivity_slider.set_value(100 * m_sensitivity);
sensitivity_slider.set_tooltip(String::formatted("{:.2}", (double)m_sensitivity / 100.0));
sensitivity_slider.on_change = [&](int value) {
m_sensitivity = (double)value / 100.0;
sensitivity_slider.set_tooltip(String::formatted("{:.2}", (double)value / 100.0));
};
}