static int SCPointCount(SplineChar *sc) { int ptcnt=0; RefChar *r; ptcnt = SSTtfNumberPoints(sc->layers[ly_fore].splines); for ( r=sc->layers[ly_fore].refs; r!=NULL ; r=r->next ) ++ptcnt; return( ptcnt ); }
int SCNumberPoints(SplineChar *sc,int layer) { int pnum=0; SplineSet *ss; SplinePoint *sp; RefChar *ref; if ( layer<0 || layer>=sc->layer_cnt ) return( pnum ); if ( sc->layers[layer].order2 ) { /* TrueType and its complexities. I ignore svg here */ if ( sc->layers[layer].refs!=NULL ) { /* if there are references there can't be splines. So if we've got*/ /* splines mark all point numbers on them as meaningless */ for ( ss = sc->layers[layer].splines; ss!=NULL; ss=ss->next ) { for ( sp=ss->first; ; ) { sp->ttfindex = 0xfffe; if ( !sp->nonextcp ) sp->nextcpindex = 0xfffe; if ( sp->next==NULL ) break; sp = sp->next->to; if ( sp==ss->first ) break; } } for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) pnum = SCRefNumberPoints2(ref,pnum,layer); } else { pnum = SSTtfNumberPoints(sc->layers[layer].splines); } } else { /* cubic (PostScript/SVG) splines */ int first, last; if ( sc->parent->multilayer ) { first = ly_fore; last = sc->layer_cnt-1; } else first = last = layer; for ( layer=first; layer<=last; ++layer ) { for ( ref = sc->layers[layer].refs; ref!=NULL; ref=ref->next ) pnum = SSPsNumberPoints(sc,ref->layers[0].splines,pnum); pnum = SSPsNumberPoints(sc,sc->layers[layer].splines,pnum); } } return( pnum ); }