static void DrawSegment( AcGiWorldDraw* mode, const AcGePoint3d& spt, const AcGeVector3d& v, double length, double width, double lineWidth ) { AcGePoint3d ept = spt + v * length; DrawPolyLine( mode, spt, ept, lineWidth ); AcGeVector3d vv = v; vv.rotateBy( PI / 2, AcGeVector3d::kZAxis ); AcGePoint3d spt1, spt2; spt1 = spt + vv * width * 0.5; vv.rotateBy( PI, AcGeVector3d::kZAxis ); spt2 = spt + vv * width * 0.5; DrawPolyLine( mode, spt1, spt2, lineWidth ); AcGePoint3d ept1, ept2; ept1 = ept + vv * width * 0.5; vv.rotateBy( PI, AcGeVector3d::kZAxis ); ept2 = ept + vv * width * 0.5; DrawPolyLine( mode, ept1, ept2, lineWidth ); }
void RageDisplay::DrawLineStripInternal( const RageSpriteVertex v[], int iNumVerts, float LineWidth ) { ASSERT( iNumVerts >= 2 ); /* Draw a line strip with rounded corners using polys. This is used on * cards that have strange allergic reactions to antialiased points and * lines. */ for( int i = 0; i < iNumVerts-1; ++i ) DrawPolyLine(v[i], v[i+1], LineWidth); // Join the lines with circles so we get rounded corners. for( int i = 0; i < iNumVerts; ++i ) DrawCircle( v[i], LineWidth/2 ); }
void RenderVector(int frameNumber) { CanvasT *canvas = R_("Canvas"); PointT *toDraw = R_("TriangleToDraw"); MatrixStack2D *ms = R_("ms2d"); float s = sin(frameNumber * 3.14159265f / 22.5f); float c = cos(frameNumber * 3.14159265f / 45.0f); StackReset(ms); PushTranslation2D(ms, -1.5f, -1.5f); PushScaling2D(ms, 20.0f + 10.0f * s, 20.0f + 10.0f * s); PushRotation2D(ms, (float)(frameNumber * -3)); PushTranslation2D(ms, (float)(WIDTH/2) + c * (WIDTH/4), (float)(HEIGHT/2)); Transform2D(R_("CrossToDraw"), R_("Cross"), 12, GetMatrix2D(ms, 0)); if (effect == 0) { CanvasFill(canvas, 0); DrawPolyLine(canvas, R_("CrossToDraw"), 12, TRUE); } StackReset(ms); PushTranslation2D(ms, 5.0f, 10.0f); PushScaling2D(ms, 2.5f, 2.5f); PushRotation2D(ms, (float)(frameNumber*5*c)); PushTranslation2D(ms, WIDTH/2 + c * 50, HEIGHT/2 + s * 20); Transform2D(R_("TriangleToDraw"), R_("Triangle"), 3, GetMatrix2D(ms, 0)); frameNumber &= 255; if (frameNumber < 128) canvas->fg_col = frameNumber * 2; else canvas->fg_col = (255 - frameNumber) * 2; if (effect == 1) { DrawTriangle(canvas, toDraw[0].x, toDraw[0].y, toDraw[1].x, toDraw[1].y, toDraw[2].x, toDraw[2].y); } if (effect == 2) { DrawEllipse(canvas, toDraw[1].x, toDraw[1].y, 30 + c * 15, 30 + s * 15); } }
static void Render(int frameNumber) { PointT *toDraw = triangleToDraw; float s = sin(frameNumber * 3.14159265f / 22.5f); float c = cos(frameNumber * 3.14159265f / 45.0f); StackReset(ms); PushTranslation2D(ms, -1.5f, -1.5f); PushScaling2D(ms, 20.0f + 10.0f * s, 20.0f + 10.0f * s); PushRotation2D(ms, (float)(frameNumber * -3)); PushTranslation2D(ms, (float)(WIDTH/2) + c * (WIDTH/4), (float)(HEIGHT/2)); Transform2D(crossToDraw, cross, 12, GetMatrix2D(ms, 0)); if (effect == 0) { PixBufClear(canvas); DrawPolyLine(canvas, crossToDraw, 12, TRUE); } StackReset(ms); PushTranslation2D(ms, 5.0f, 10.0f); PushScaling2D(ms, 2.5f, 2.5f); PushRotation2D(ms, (float)(frameNumber*5*c)); PushTranslation2D(ms, WIDTH/2 + c * 50, HEIGHT/2 + s * 20); Transform2D(triangleToDraw, triangle, 3, GetMatrix2D(ms, 0)); frameNumber &= 255; if (frameNumber < 128) canvas->fgColor = frameNumber * 2; else canvas->fgColor = (255 - frameNumber) * 2; if (effect == 1) { TriPoint p1 = { toDraw[0].x, toDraw[0].y }; TriPoint p2 = { toDraw[1].x, toDraw[1].y }; TriPoint p3 = { toDraw[2].x, toDraw[2].y }; DrawTriangle(canvas, &p1, &p2, &p3); } if (effect == 2) { DrawEllipse(canvas, toDraw[1].x, toDraw[1].y, 30 + c * 15, 30 + s * 15); } c2p1x1_8_c5_bm(canvas->data, GetCurrentBitMap(), WIDTH, HEIGHT, 0, 0); }