Draw a list of spans
int PgDrawSpan( PgSpan_t const *ptr, int num, PhPoint_t const *pos, int flags ); int PgDrawSpanmx( PgSpan_t const *ptr, int num, PhPoint_t const *pos, int flags );
These low-level draw primitives let you render complex shapes not supported by the Photon graphics drivers.
The functions draw a list of spans. The spans are defined as a list of PgSpan_t records. Here are the members of PgSpan_t:
The number of spans is defined by the num parameter. The location of the spans is offset by the pos parameter.
You can set flags to one of the following:
If you call the "mx" form of this function, the data isn't physically copied into the draw buffer. Instead, a pointer to the list of spans is stored until the draw buffer is flushed. Make sure you call PgFlush() before you modify the list. |
The following example:
void DrawSpan() { PgSpan_t spans[152]; PgSpan_t *sp = spans; PhPoint_t p = { 12, 10 }; int i, v, n=0; for (i=0; i<=100; i++) { sp->x1 = (i*i)>>6; v = 100 - i; sp->x2 = 160 - ((v*v)>>6); sp->y = i; sp++; n++; } for (i=0; i<=50; i++) { sp->x1 = 100 - ((i*i)>>6); v = 50 - i; sp->x2 = 60 + ((v*v)>>6); sp->y = i+25; sp++; n++; } PgSetFillColor( Pg_WHITE ); PgDrawSpan( spans, n, &p, Pg_DRAW_FILL ); }
will draw:
Photon
Safety: | |
---|---|
Interrupt handler | No |
Signal handler | No |
Thread | No |
PgDrawPolygon(), PgSetFillColor(), PgSetStrokeColor(), PgSetTextColor(), PgFlush()