mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:57:34 +00:00
Magnifier: Add option to choose grid color
This commit is contained in:
parent
2b635b5330
commit
808eafcf1e
3 changed files with 23 additions and 4 deletions
|
@ -40,6 +40,14 @@ void MagnifierWidget::show_grid(bool new_value)
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MagnifierWidget::set_grid_color(Gfx::Color new_color)
|
||||||
|
{
|
||||||
|
if (m_grid_color == new_color)
|
||||||
|
return;
|
||||||
|
m_grid_color = new_color;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void MagnifierWidget::set_color_filter(OwnPtr<Gfx::ColorBlindnessFilter> color_filter)
|
void MagnifierWidget::set_color_filter(OwnPtr<Gfx::ColorBlindnessFilter> color_filter)
|
||||||
{
|
{
|
||||||
m_color_filter = move(color_filter);
|
m_color_filter = move(color_filter);
|
||||||
|
@ -92,8 +100,6 @@ void MagnifierWidget::paint_event(GUI::PaintEvent& event)
|
||||||
painter.draw_scaled_bitmap(frame_inner_rect(), *m_grabbed_bitmap, m_grabbed_bitmap->rect(), 1.0, Gfx::Painter::ScalingMode::NearestFractional);
|
painter.draw_scaled_bitmap(frame_inner_rect(), *m_grabbed_bitmap, m_grabbed_bitmap->rect(), 1.0, Gfx::Painter::ScalingMode::NearestFractional);
|
||||||
|
|
||||||
if (m_show_grid) {
|
if (m_show_grid) {
|
||||||
auto line_color = Color(Color::NamedColor::Magenta);
|
|
||||||
line_color.set_alpha(100);
|
|
||||||
|
|
||||||
auto grid_rect = frame_inner_rect();
|
auto grid_rect = frame_inner_rect();
|
||||||
if (m_grabbed_bitmap)
|
if (m_grabbed_bitmap)
|
||||||
|
@ -109,10 +115,10 @@ void MagnifierWidget::paint_event(GUI::PaintEvent& event)
|
||||||
end_x = grid_rect.right();
|
end_x = grid_rect.right();
|
||||||
|
|
||||||
for (int current_y = start_y; current_y <= end_y; current_y += m_scale_factor)
|
for (int current_y = start_y; current_y <= end_y; current_y += m_scale_factor)
|
||||||
painter.draw_line({ start_x, current_y }, { end_x, current_y }, line_color);
|
painter.draw_line({ start_x, current_y }, { end_x, current_y }, m_grid_color);
|
||||||
|
|
||||||
for (int current_x = start_y; current_x <= end_x; current_x += m_scale_factor)
|
for (int current_x = start_y; current_x <= end_x; current_x += m_scale_factor)
|
||||||
painter.draw_line({ current_x, start_y }, { current_x, end_y }, line_color);
|
painter.draw_line({ current_x, start_y }, { current_x, end_y }, m_grid_color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,8 @@ public:
|
||||||
void set_scale_factor(int scale_factor);
|
void set_scale_factor(int scale_factor);
|
||||||
virtual void set_color_filter(OwnPtr<Gfx::ColorBlindnessFilter>) override;
|
virtual void set_color_filter(OwnPtr<Gfx::ColorBlindnessFilter>) override;
|
||||||
void show_grid(bool);
|
void show_grid(bool);
|
||||||
|
Gfx::Color grid_color() { return m_grid_color; }
|
||||||
|
void set_grid_color(Gfx::Color);
|
||||||
|
|
||||||
void pause_capture(bool pause)
|
void pause_capture(bool pause)
|
||||||
{
|
{
|
||||||
|
@ -50,4 +52,5 @@ private:
|
||||||
bool m_pause_capture { false };
|
bool m_pause_capture { false };
|
||||||
Optional<Gfx::IntPoint> m_locked_location {};
|
Optional<Gfx::IntPoint> m_locked_location {};
|
||||||
bool m_show_grid { false };
|
bool m_show_grid { false };
|
||||||
|
Gfx::Color m_grid_color { 255, 0, 255, 100 };
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <LibFileSystemAccessClient/Client.h>
|
#include <LibFileSystemAccessClient/Client.h>
|
||||||
#include <LibGUI/ActionGroup.h>
|
#include <LibGUI/ActionGroup.h>
|
||||||
#include <LibGUI/Application.h>
|
#include <LibGUI/Application.h>
|
||||||
|
#include <LibGUI/ColorPicker.h>
|
||||||
#include <LibGUI/Icon.h>
|
#include <LibGUI/Icon.h>
|
||||||
#include <LibGUI/Menu.h>
|
#include <LibGUI/Menu.h>
|
||||||
#include <LibGUI/Menubar.h>
|
#include <LibGUI/Menubar.h>
|
||||||
|
@ -121,6 +122,14 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
magnifier->show_grid(action.is_checked());
|
magnifier->show_grid(action.is_checked());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
auto choose_grid_color_action = GUI::Action::create(
|
||||||
|
"Choose Grid &Color", [&](auto& action [[maybe_unused]]) {
|
||||||
|
auto dialog = GUI::ColorPicker::construct(magnifier->grid_color(), window, "Magnifier: choose grid color");
|
||||||
|
dialog->set_color_has_alpha_channel(true);
|
||||||
|
if (dialog->exec() == GUI::Dialog::ExecResult::OK)
|
||||||
|
magnifier->set_grid_color(dialog->color());
|
||||||
|
});
|
||||||
|
|
||||||
size_action_group->add_action(two_x_action);
|
size_action_group->add_action(two_x_action);
|
||||||
size_action_group->add_action(four_x_action);
|
size_action_group->add_action(four_x_action);
|
||||||
size_action_group->add_action(eight_x_action);
|
size_action_group->add_action(eight_x_action);
|
||||||
|
@ -136,6 +145,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
TRY(view_menu->try_add_action(pause_action));
|
TRY(view_menu->try_add_action(pause_action));
|
||||||
TRY(view_menu->try_add_action(lock_location_action));
|
TRY(view_menu->try_add_action(lock_location_action));
|
||||||
TRY(view_menu->try_add_action(show_grid_action));
|
TRY(view_menu->try_add_action(show_grid_action));
|
||||||
|
TRY(view_menu->try_add_action(choose_grid_color_action));
|
||||||
|
|
||||||
auto timeline_menu = TRY(window->try_add_menu("&Timeline"));
|
auto timeline_menu = TRY(window->try_add_menu("&Timeline"));
|
||||||
auto previous_frame_action = GUI::Action::create(
|
auto previous_frame_action = GUI::Action::create(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue