Fill/StrokeArc support for BPicture, courtesy of Lucasz Zemczak
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19103 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -102,8 +102,10 @@ static void
|
|||||||
stroke_arc(ViewLayer *view, BPoint center, BPoint radii, float startTheta,
|
stroke_arc(ViewLayer *view, BPoint center, BPoint radii, float startTheta,
|
||||||
float arcTheta)
|
float arcTheta)
|
||||||
{
|
{
|
||||||
/*view->ConvertToScreenForDrawing(&r);
|
BRect rect(center.x - radii.x, center.y - radii.y, center.x + radii.x,
|
||||||
view->Window()->GetDrawingEngine()->DrawArc(r, angle, span, view->CurrentState(), false);*/
|
center.y + radii.y);
|
||||||
|
view->ConvertToScreenForDrawing(&rect);
|
||||||
|
view->Window()->GetDrawingEngine()->DrawArc(rect, startTheta, arcTheta, view->CurrentState(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -111,8 +113,10 @@ static void
|
|||||||
fill_arc(ViewLayer *view, BPoint center, BPoint radii, float startTheta,
|
fill_arc(ViewLayer *view, BPoint center, BPoint radii, float startTheta,
|
||||||
float arcTheta)
|
float arcTheta)
|
||||||
{
|
{
|
||||||
/*view->ConvertToScreenForDrawing(&r);
|
BRect rect(center.x - radii.x, center.y - radii.y, center.x + radii.x,
|
||||||
view->Window()->GetDrawingEngine()->DrawArc(r, angle, span, view->CurrentState(), true);*/
|
center.y + radii.y);
|
||||||
|
view->ConvertToScreenForDrawing(&rect);
|
||||||
|
view->Window()->GetDrawingEngine()->DrawArc(rect, startTheta, arcTheta, view->CurrentState(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2427,6 +2427,26 @@ ServerWindow::_DispatchPictureMessage(int32 code, BPrivate::LinkReceiver &link)
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case AS_STROKE_ARC:
|
||||||
|
case AS_FILL_ARC:
|
||||||
|
{
|
||||||
|
BRect rect;
|
||||||
|
link.Read<BRect>(&rect);
|
||||||
|
float startTheta, arcTheta;
|
||||||
|
link.Read<float>(&startTheta);
|
||||||
|
link.Read<float>(&arcTheta);
|
||||||
|
|
||||||
|
BPoint radii((rect.Width() + 1) / 2, (rect.Height() + 1) / 2);
|
||||||
|
BPoint center = rect.LeftTop() + radii;
|
||||||
|
|
||||||
|
picture->BeginOp(code == AS_FILL_ARC ? B_PIC_FILL_ARC : B_PIC_STROKE_ARC);
|
||||||
|
picture->AddCoord(center);
|
||||||
|
picture->AddCoord(radii);
|
||||||
|
picture->AddFloat(startTheta);
|
||||||
|
picture->AddFloat(arcTheta);
|
||||||
|
picture->EndOp();
|
||||||
|
break;
|
||||||
|
}
|
||||||
case AS_STROKE_LINE:
|
case AS_STROKE_LINE:
|
||||||
{
|
{
|
||||||
float x1, y1, x2, y2;
|
float x1, y1, x2, y2;
|
||||||
|
|||||||
Reference in New Issue
Block a user