1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 03:47:35 +00:00

PixelPaint: Use Sqrt1_2 constant in EllipseTool instead of 1/1.41

This also demotes the constant to floats instead of doubles, because we
truncate it to int anyways and don't need the extra accuracy.
This commit is contained in:
Hendiadyoin1 2022-08-21 20:08:34 +02:00 committed by Linus Groh
parent a0820b205c
commit 4e9313fa73

View file

@ -42,8 +42,9 @@ void EllipseTool::draw_using(GUI::Painter& painter, Gfx::IntPoint const& start_p
} else { } else {
// For some reason for non-AA draw_ellipse() the ellipse is outside of the rect (unlike all other ellipse drawing functions). // For some reason for non-AA draw_ellipse() the ellipse is outside of the rect (unlike all other ellipse drawing functions).
// Scale the ellipse rect by sqrt(2) to get an ellipse arc that appears as if it was inside of the rect. // Scale the ellipse rect by sqrt(2) to get an ellipse arc that appears as if it was inside of the rect.
auto shrink_width = ellipse_intersecting_rect.width() * (1 - 1 / 1.41); // Ie. reduce the size by a factor of 1 - sqrt(1/2)
auto shrink_height = ellipse_intersecting_rect.height() * (1 - 1 / 1.41); auto shrink_width = ellipse_intersecting_rect.width() * (1 - AK::Sqrt1_2<float>);
auto shrink_height = ellipse_intersecting_rect.height() * (1 - AK::Sqrt1_2<float>);
ellipse_intersecting_rect.shrink(shrink_width, shrink_height); ellipse_intersecting_rect.shrink(shrink_width, shrink_height);
painter.draw_ellipse_intersecting(ellipse_intersecting_rect, m_editor->color_for(m_drawing_button), thickness); painter.draw_ellipse_intersecting(ellipse_intersecting_rect, m_editor->color_for(m_drawing_button), thickness);
} }