mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 11:47:34 +00:00
PixelPaint: Inherit from AbstractZoomPanWidget
This commit is contained in:
parent
b21d128075
commit
7974fee800
12 changed files with 69 additions and 244 deletions
|
@ -102,7 +102,7 @@ void CloneTool::on_second_paint(Layer const*, GUI::PaintEvent& event)
|
|||
GUI::Painter painter(*m_editor);
|
||||
painter.add_clip_rect(event.rect());
|
||||
|
||||
auto sample_pos = m_editor->image_position_to_editor_position(m_sample_location.value());
|
||||
auto sample_pos = m_editor->content_to_frame_position(m_sample_location.value());
|
||||
// We don't want the marker to be a single pixel and hide the color.
|
||||
auto offset = AK::max(2, size() / 2);
|
||||
Gfx::IntRect rect = {
|
||||
|
|
|
@ -107,8 +107,8 @@ void EllipseTool::on_second_paint(Layer const* layer, GUI::PaintEvent& event)
|
|||
|
||||
GUI::Painter painter(*m_editor);
|
||||
painter.add_clip_rect(event.rect());
|
||||
auto preview_start = m_editor->layer_position_to_editor_position(*layer, m_ellipse_start_position).to_type<int>();
|
||||
auto preview_end = m_editor->layer_position_to_editor_position(*layer, m_ellipse_end_position).to_type<int>();
|
||||
auto preview_start = m_editor->content_to_frame_position(m_ellipse_start_position).to_type<int>();
|
||||
auto preview_end = m_editor->content_to_frame_position(m_ellipse_end_position).to_type<int>();
|
||||
draw_using(painter, preview_start, preview_end, AK::max(m_thickness * m_editor->scale(), 1));
|
||||
}
|
||||
|
||||
|
|
|
@ -171,7 +171,7 @@ void GuideTool::on_context_menu(Layer*, GUI::ContextMenuEvent& event)
|
|||
editor()));
|
||||
}
|
||||
|
||||
auto image_position = editor()->editor_position_to_image_position(event.position());
|
||||
auto image_position = editor()->frame_to_content_position(event.position());
|
||||
m_context_menu_guide = closest_guide({ (int)image_position.x(), (int)image_position.y() });
|
||||
if (m_context_menu_guide)
|
||||
m_context_menu->popup(event.screen_position());
|
||||
|
|
|
@ -24,11 +24,8 @@ MoveTool::~MoveTool()
|
|||
|
||||
void MoveTool::on_mousedown(Layer* layer, MouseEvent& event)
|
||||
{
|
||||
if (event.image_event().button() == GUI::MouseButton::Secondary && !m_is_panning) {
|
||||
m_is_panning = true;
|
||||
m_event_origin = event.raw_event().position();
|
||||
m_saved_pan_origin = m_editor->pan_origin();
|
||||
m_editor->set_override_cursor(Gfx::StandardCursor::Drag);
|
||||
if (event.image_event().button() == GUI::MouseButton::Secondary) {
|
||||
m_editor->start_panning(event.raw_event().position());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -48,12 +45,8 @@ void MoveTool::on_mousedown(Layer* layer, MouseEvent& event)
|
|||
|
||||
void MoveTool::on_mousemove(Layer* layer, MouseEvent& event)
|
||||
{
|
||||
if (m_is_panning) {
|
||||
auto& raw_event = event.raw_event();
|
||||
auto delta = raw_event.position() - m_event_origin;
|
||||
m_editor->set_pan_origin(m_saved_pan_origin.translated(
|
||||
-delta.x(),
|
||||
-delta.y()));
|
||||
if (m_editor->is_panning()) {
|
||||
m_editor->pan_to(event.raw_event().position());
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -70,8 +63,8 @@ void MoveTool::on_mousemove(Layer* layer, MouseEvent& event)
|
|||
|
||||
void MoveTool::on_mouseup(Layer* layer, MouseEvent& event)
|
||||
{
|
||||
if (event.image_event().button() == GUI::MouseButton::Secondary && m_is_panning) {
|
||||
m_is_panning = false;
|
||||
if (event.image_event().button() == GUI::MouseButton::Secondary) {
|
||||
m_editor->stop_panning();
|
||||
m_editor->set_override_cursor(cursor());
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -25,9 +25,6 @@ private:
|
|||
RefPtr<Layer> m_layer_being_moved;
|
||||
Gfx::IntPoint m_event_origin;
|
||||
Gfx::IntPoint m_layer_origin;
|
||||
|
||||
bool m_is_panning { false };
|
||||
Gfx::FloatPoint m_saved_pan_origin;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -134,7 +134,7 @@ void RectangleSelectTool::on_second_paint(Layer const*, GUI::PaintEvent& event)
|
|||
painter.add_clip_rect(event.rect());
|
||||
|
||||
auto rect_in_image = Gfx::IntRect::from_two_points(m_selection_start, m_selection_end);
|
||||
auto rect_in_editor = m_editor->image_rect_to_editor_rect(rect_in_image);
|
||||
auto rect_in_editor = m_editor->content_to_frame_rect(rect_in_image);
|
||||
|
||||
m_editor->selection().draw_marching_ants(painter, rect_in_editor.to_type<int>());
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ void Tool::on_keydown(GUI::KeyEvent& event)
|
|||
|
||||
Gfx::IntPoint Tool::editor_stroke_position(Gfx::IntPoint const& pixel_coords, int stroke_thickness) const
|
||||
{
|
||||
auto position = m_editor->image_position_to_editor_position(pixel_coords);
|
||||
auto position = m_editor->content_to_frame_position(pixel_coords);
|
||||
auto offset = (stroke_thickness % 2 == 0) ? 0 : m_editor->scale() / 2;
|
||||
position = position.translated(offset, offset);
|
||||
return position.to_type<int>();
|
||||
|
|
|
@ -27,7 +27,8 @@ void ZoomTool::on_mousedown(Layer*, MouseEvent& event)
|
|||
return;
|
||||
|
||||
auto scale_factor = (raw_event.button() == GUI::MouseButton::Primary) ? m_sensitivity : -m_sensitivity;
|
||||
m_editor->scale_centered_on_position(raw_event.position(), scale_factor);
|
||||
auto new_scale = AK::exp2(scale_factor);
|
||||
m_editor->scale_centered(new_scale, raw_event.position());
|
||||
}
|
||||
|
||||
GUI::Widget* ZoomTool::get_properties_widget()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue