PgDrawSpanCx, PgDrawSpanCxv
![]()  | 
![]()  | 
![]()  | 
![]()  | 
![]()  | 
This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs. | 
Draw a list of spans
int PgDrawSpan( PgSpan_t const *ptr,
                int num,
                PhPoint_t const *pos,
                int flags );
int PgDrawSpanv( PgSpan_t const *ptr,
                 int num,
                 PhPoint_t const *pos,
                 int flags );
int PgDrawSpanCx( void *dc,
                  PgSpan_t const *ptr,
                  int num,
                  PhPoint_t const *pos,
                  int flags );
int PgDrawSpanCxv( void *dc,
                   PgSpan_t const *ptr,
                   int num,
                   PhPoint_t const *pos,
                   int flags );
ph
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 "v" forms 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() or PgFlushCx() before you modify the list. | 
PgDrawSpan() and PgDrawSpanv() work on the current draw context, while you can specify the draw context dc for PgDrawSpanCx() and PgDrawSpanCxv().
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*(), PhPoint_t
"Arcs, ellipses, polygons, and rectangles" in the Raw Drawing and Animation chapter of the Photon Programmer's Guide
![]()  | 
![]()  | 
![]()  | 
![]()  |