static void MVInline(MetricsView *mv, real width, real inset) { StrokeInfo si; SplineSet *temp, *spl, *temp2; int i, changed; memset(&si,0,sizeof(si)); si.removeexternal = true; /* si.removeoverlapifneeded = true;*/ for ( i=mv->glyphcnt-1; i>=0; --i ) if ( mv->perchar[i].selected ) break; if ( i!=-1 ) { SplineChar *sc = mv->glyphs[i].sc; SCPreserveLayer(sc,mv->layer,false); si.radius = width; temp = SplineSetStroke(sc->layers[mv->layer].splines,&si,sc->layers[mv->layer].order2); si.radius = width+inset; temp2 = SplineSetStroke(sc->layers[mv->layer].splines,&si,sc->layers[mv->layer].order2); for ( spl=sc->layers[mv->layer].splines; spl->next!=NULL; spl=spl->next ); spl->next = temp; for ( ; spl->next!=NULL; spl=spl->next ); spl->next = temp2; SplineSetsCorrect(sc->layers[mv->layer].splines,&changed); SCCharChangedUpdate(sc,mv->layer); } }
void FVOutline(FontViewBase * fv, real width) { StrokeInfo si; SplineSet *temp, *spl; int i, cnt=0, changed, gid; SplineChar *sc; int layer=fv->active_layer; for (i=0; i < fv->map->enccount; ++i) if ((gid=fv->map->map[i]) != -1 && (sc=fv->sf->glyphs[gid]) != NULL && fv->selected[i] && sc->layers[layer].splines) ++cnt; memset(&si, 0, sizeof(si)); si.removeexternal=true; si.radius=width; /*si.removeoverlapifneeded=true; */ SFUntickAll(fv->sf); for (i=0; i < fv->map->enccount; ++i) if ((gid=fv->map->map[i]) != -1 && (sc=fv->sf->glyphs[gid]) != NULL && fv->selected[i] && sc->layers[layer].splines && !sc->ticked) { sc->ticked=true; SCPreserveLayer(sc, layer, false); temp = SplineSetStroke(sc->layers[layer].splines, &si, sc->layers[layer].order2); for (spl=sc->layers[layer].splines; spl->next != NULL; spl=spl->next); spl->next=temp; SplineSetsCorrect(sc->layers[layer].splines, &changed); SCCharChangedUpdate(sc, layer, true); } }
static void CVInline(CharView *cv, real width, real inset) { StrokeInfo si; SplineSet *temp, *spl, *temp2; int changed; memset(&si,0,sizeof(si)); si.removeexternal = true; /* si.removeoverlapifneeded = true;*/ CVPreserveState((CharViewBase *) cv); si.radius = width; temp = SplineSetStroke(cv->b.layerheads[cv->b.drawmode]->splines,&si,cv->b.layerheads[cv->b.drawmode]->order2); si.radius = width+inset; temp2 = SplineSetStroke(cv->b.layerheads[cv->b.drawmode]->splines,&si,cv->b.layerheads[cv->b.drawmode]->order2); for ( spl=cv->b.layerheads[cv->b.drawmode]->splines; spl->next!=NULL; spl=spl->next ); spl->next = temp; for ( ; spl->next!=NULL; spl=spl->next ); spl->next = temp2; SplineSetsCorrect(cv->b.layerheads[cv->b.drawmode]->splines,&changed); CVCharChangedUpdate(&cv->b); }
void FVInline(FontViewBase *fv, real width, real inset) { StrokeInfo si; SplineSet *temp, *spl, *temp2; int i, cnt=0, changed, gid; SplineChar *sc; int layer = fv->active_layer; for ( i=0; i<fv->map->enccount; ++i ) if ( (gid=fv->map->map[i])!=-1 && (sc=fv->sf->glyphs[gid])!=NULL && fv->selected[i] && sc->layers[layer].splines ) ++cnt; ff_progress_start_indicator(10,_("Inlining glyphs"),_("Inlining glyphs"),0,cnt,1); memset(&si,0,sizeof(si)); si.removeexternal = true; /*si.removeoverlapifneeded = true;*/ SFUntickAll(fv->sf); for ( i=0; i<fv->map->enccount; ++i ) if ( (gid=fv->map->map[i])!=-1 && (sc=fv->sf->glyphs[gid])!=NULL && fv->selected[i] && sc->layers[layer].splines && !sc->ticked ) { sc->ticked = true; SCPreserveLayer(sc,layer,false); si.radius = width; temp = SplineSetStroke(sc->layers[layer].splines,&si,sc->layers[layer].order2); si.radius = width+inset; temp2 = SplineSetStroke(sc->layers[layer].splines,&si,sc->layers[layer].order2); for ( spl=sc->layers[layer].splines; spl->next!=NULL; spl=spl->next ); spl->next = temp; for ( ; spl->next!=NULL; spl=spl->next ); spl->next = temp2; SplineSetsCorrect(sc->layers[layer].splines,&changed); SCCharChangedUpdate(sc,layer); if ( !ff_progress_next()) break; } ff_progress_end_indicator(); }