diff --git a/src/servers/app/ServerPicture.cpp b/src/servers/app/ServerPicture.cpp index 867a923378..837be92ceb 100644 --- a/src/servers/app/ServerPicture.cpp +++ b/src/servers/app/ServerPicture.cpp @@ -119,16 +119,20 @@ fill_arc(ViewLayer *view, BPoint center, BPoint radii, float startTheta, static void stroke_ellipse(ViewLayer *view, BPoint center, BPoint radii) { - /*view->ConvertToScreenForDrawing(&rect); - view->Window()->GetDrawingEngine()->DrawEllipse(rect, view->CurrentState(), false);*/ + BRect rect(center.x - radii.x, center.y - radii.y, center.x + radii.x, + center.y + radii.y); + view->ConvertToScreenForDrawing(&rect); + view->Window()->GetDrawingEngine()->DrawEllipse(rect, view->CurrentState(), false); } static void fill_ellipse(ViewLayer *view, BPoint center, BPoint radii) { - /*view->ConvertToScreenForDrawing(&rect); - view->Window()->GetDrawingEngine()->DrawEllipse(rect, view->CurrentState(), true);*/ + BRect rect(center.x - radii.x, center.y - radii.y, center.x + radii.x, + center.y + radii.y); + view->ConvertToScreenForDrawing(&rect); + view->Window()->GetDrawingEngine()->DrawEllipse(rect, view->CurrentState(), true); } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 6e216babf2..168ea80de8 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -2415,7 +2415,18 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link) picture->EndOp(); break; } - + case AS_STROKE_ELLIPSE: + case AS_FILL_ELLIPSE: + { + BRect rect; + link.Read(&rect); + picture->BeginOp(code == AS_FILL_ELLIPSE ? B_PIC_FILL_ELLIPSE : + B_PIC_STROKE_ELLIPSE); + picture->AddRect(rect); + picture->EndOp(); + + break; + } case AS_STROKE_LINE: { float x1, y1, x2, y2;