static void SearchViewFree(SearchView *sv) { SplinePointListsFree(sv->sd.sc_srch.layers[ly_fore].splines); SplinePointListsFree(sv->sd.sc_rpl.layers[ly_fore].splines); RefCharsFree(sv->sd.sc_srch.layers[ly_fore].refs); RefCharsFree(sv->sd.sc_rpl.layers[ly_fore].refs); free(sv); }
void CVGridFitChar(CharView *cv) { void *single_glyph_context; SplineFont *sf = cv->b.sc->parent; int layer = CVLayer((CharViewBase *) cv); SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; single_glyph_context = _FreeTypeFontContext(sf,cv->b.sc,NULL,layer, sf->layers[layer].order2?ff_ttf:ff_otf,0,NULL); if ( single_glyph_context==NULL ) { LogError(_("Freetype rasterization failed.\n") ); return; } if ( cv->b.sc->layers[layer].refs!=NULL ) SCNumberPoints(cv->b.sc,layer); cv->raster = FreeType_GetRaster(single_glyph_context,cv->b.sc->orig_pos, cv->ft_pointsizey, cv->ft_pointsizex, cv->ft_dpi, cv->ft_depth ); cv->b.gridfit = FreeType_GridFitChar(single_glyph_context,cv->b.sc->orig_pos, cv->ft_pointsizey, cv->ft_pointsizex, cv->ft_dpi, &cv->b.ft_gridfitwidth, cv->b.sc, cv->ft_depth, true ); FreeTypeFreeContext(single_glyph_context); GDrawRequestExpose(cv->v,NULL,false); if ( cv->b.sc->instructions_out_of_date && cv->b.sc->ttf_instrs_len!=0 ) ff_post_notice(_("Instructions out of date"), _("The points have been changed. This may mean that the truetype instructions now refer to the wrong points and they may cause unexpected results.")); }
void SCDeGridFit(SplineChar *sc) { CharView *cv; for ( cv=(CharView *) (sc->views); cv!=NULL; cv=(CharView *) (cv->b.next) ) if ( cv->show_ft_results ) { SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; cv->show_ft_results = false; GDrawRequestExpose(cv->v,NULL,false); } }
void SCReGridFit(SplineChar *sc,int layer) { CharView *cv; for ( cv=(CharView *) (sc->views); cv!=NULL; cv=(CharView *) (cv->b.next) ) if ( cv->show_ft_results ) { if ( cv->show_ft_results && CVLayer((CharViewBase *) cv)==layer ) { SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; CVGridFitChar(cv); } } }
void SCClearLayer(SplineChar *sc,int layer) { RefChar *refs, *next; SplinePointListsFree(sc->layers[layer].splines); sc->layers[layer].splines = NULL; for ( refs=sc->layers[layer].refs; refs!=NULL; refs = next ) { next = refs->next; SCRemoveDependent(sc,refs,layer); } sc->layers[layer].refs = NULL; ImageListsFree(sc->layers[layer].images); sc->layers[layer].images = NULL; }
static void SCFindQuestionablePoints(struct qg_data *data) { uint16 width; SplineSet *gridfit = FreeType_GridFitChar(data->freetype_context, data->sc->orig_pos, data->cur_size, data->cur_size, data->dpi, &width, data->sc, data->depth, false); SplineSet *spl; Spline *s, *first; data->glyph_start = data->cur; for ( spl = gridfit; spl!=NULL; spl=spl->next ) { first = NULL; for ( s=spl->first->next; s!=first && s!=NULL; s = s->to->next ) { if ( first==NULL ) first = s; SplineFindQuestionablePoints(data,s); } } SplinePointListsFree(gridfit); }
static int FtPpem_OK(GGadget *g, GEvent *e) { if ( e->type==et_controlevent && e->u.control.subtype == et_buttonactivate ) { FtSizeData *fsd = GDrawGetUserData(GGadgetGetWindow(g)); int _dpi, _depth; real ptsize, ptsizex; int err = 0; CharView *cv = fsd->cv; ptsize = GetReal8(fsd->gw,CID_PointSize,_("Pointsize Y"),&err); if ( GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_SameAs)) ) ptsizex = ptsize; else ptsizex = GetReal8(fsd->gw,CID_PointSizeX,_("Pointsize X"),&err); _dpi = GetInt8(fsd->gw,CID_DPI,_("DPI"),&err); _depth = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_BW)) ? 1 : 8; if ( err ) return(true); last_fpgm = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_Debugfpgm)); cv->ft_pointsizey = ptsize; cv->ft_dpi = _dpi; cv->ft_depth = _depth; cv->ft_pointsizex = ptsizex; cv->ft_ppemy = rint(cv->ft_pointsizey*cv->ft_dpi/72.0); cv->ft_ppemx = rint(cv->ft_pointsizex*cv->ft_dpi/72.0); gridfit_dpi = _dpi; gridfit_pointsizey = ptsize; gridfit_depth = _depth; gridfit_pointsizex = ptsizex; gridfit_x_sameas_y = GGadgetIsChecked(GWidgetGetControl(fsd->gw,CID_SameAs)); SavePrefs(true); SplinePointListsFree(cv->b.gridfit); cv->b.gridfit = NULL; FreeType_FreeRaster(cv->raster); cv->raster = NULL; if ( fsd->debug ) CVDebugReInit(cv,true,last_fpgm); else { cv->show_ft_results = true; CVGridFitChar(cv); } CVLayersSet(cv); fsd->done = true; SCRefreshTitles(cv->b.sc); } return( true ); }