mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 12:08:14 +00:00
PixelPaint: Make outline ellipse the same size as other ellipses
The non-AA outline ellipse was drawn outside the bounding rectangle unlike all other ellipses. This commit now scales it to match the size of the other ellipse drawing modes (AA, filled, etc).
This commit is contained in:
parent
18abba2c4d
commit
973771f8f4
1 changed files with 8 additions and 2 deletions
|
@ -37,10 +37,16 @@ void EllipseTool::draw_using(GUI::Painter& painter, Gfx::IntPoint const& start_p
|
|||
|
||||
switch (m_fill_mode) {
|
||||
case FillMode::Outline:
|
||||
if (m_antialias_enabled)
|
||||
if (m_antialias_enabled) {
|
||||
aa_painter.draw_ellipse(ellipse_intersecting_rect, m_editor->color_for(m_drawing_button), thickness);
|
||||
else
|
||||
} else {
|
||||
// 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.
|
||||
auto shrink_width = ellipse_intersecting_rect.width() * (1 - 1 / 1.41);
|
||||
auto shrink_height = ellipse_intersecting_rect.height() * (1 - 1 / 1.41);
|
||||
ellipse_intersecting_rect.shrink(shrink_width, shrink_height);
|
||||
painter.draw_ellipse_intersecting(ellipse_intersecting_rect, m_editor->color_for(m_drawing_button), thickness);
|
||||
}
|
||||
break;
|
||||
case FillMode::Fill:
|
||||
if (m_antialias_enabled)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue