From 0c40a6370efd02d482c50ae7a73856697ad6dc18 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 23 Oct 2006 09:50:22 +0000 Subject: [PATCH] added part of a patch by Lukasz Zemczak which adds ellipse filling/stroking support to BPictures. Thank you!" git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19102 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/ServerPicture.cpp | 12 ++++++++---- src/servers/app/ServerWindow.cpp | 13 ++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) 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;