summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h')
-rw-r--r--Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h1087
1 files changed, 1087 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h
new file mode 100644
index 00000000000..a3a02cb6314
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luafontloader/fontforge/fontforge/views.h
@@ -0,0 +1,1087 @@
+/* Copyright (C) 2000-2008 by George Williams */
+/*
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+
+ * The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _VIEWS_H
+#define _VIEWS_H
+
+#include "baseviews.h"
+
+#include <ggadget.h>
+
+struct gfi_data;
+struct contextchaindlg;
+struct statemachinedlg;
+
+extern struct cvshows {
+ int showfore, showback, showgrids, showhhints, showvhints, showdhints;
+ int showpoints, showfilled;
+ int showrulers;
+ int showrounds; /* 0=>no, 1=>auto, 2=>always */
+ int showmdx, showmdy; /* minimum distances x,y */
+ int showhmetrics, showvmetrics; /* show advance width, baseline, etc. */
+ int markextrema;
+ int markpoi; /* Points of inflection */
+ int showblues, showfamilyblues;
+ int showanchor;
+ int showcpinfo;
+ int showtabs; /* with the names of former glyphs */
+ int showsidebearings;
+ int showrefnames;
+ int snapoutlines;
+ int showalmosthvlines;
+ int showalmosthvcurves;
+ int hvoffset;
+} CVShows;
+
+extern struct bvshows {
+ int showfore, showoutline, showgrid;
+ int lastpixelsize;
+} BVShows;
+
+enum debug_wins { dw_registers=0x1, dw_stack=0x2, dw_storage=0x4, dw_points=0x8,
+ dw_cvt=0x10, dw_raster=0x20, dw_gloss=0x40 };
+
+struct instrinfo {
+ int isel_pos;
+ int16 lheight,lpos;
+ char *scroll, *offset;
+ GWindow v;
+ GGadget *vsb;
+ int16 sbw;
+ int16 vheight, vwidth;
+ int16 lstopped;
+ int16 as, fh;
+ struct instrdata *instrdata;
+ GFont *gfont;
+ unsigned int showaddr: 1;
+ unsigned int showhex: 1;
+ unsigned int mousedown: 1;
+ void *userdata;
+ void (*selection_callback)(struct instrinfo *,int ip);
+ int (*bpcheck)(struct instrinfo *,int ip);
+ int (*handle_char)(struct instrinfo *,GEvent *e);
+};
+
+typedef struct debugview {
+ struct debugger_context *dc; /* Local to freetype.c */
+ GWindow dv, v;
+ /* Windows for twilight points, cvt, registers, stack, storage, stack gloss */
+ GWindow regs, stack, storage, points, cvt, raster, gloss; /* order matters */
+ GWindow points_v;
+ GGadget *cvtsb;
+ GGadget *pts_vsb;
+ GGadget *glosssb;
+ GGadget *storagesb;
+ GGadget *regsb;
+ GGadget *stacksb;
+ struct instrdata id;
+ struct instrinfo ii;
+ int dwidth, toph;
+ struct charview *cv;
+ double scalex, scaley;
+ int pts_head, cvt_offtop, gloss_offtop, storage_offtop, stack_offtop, reg_offtop;
+ int points_offtop;
+
+ int codeSize;
+ uint8 initialbytes[4];
+ struct reflist { RefChar *ref; struct reflist *parent; } *active_refs;
+ int last_npoints;
+ int layer;
+} DebugView;
+
+enum dv_coderange { cr_none=0, cr_fpgm, cr_prep, cr_glyph }; /* cleverly chosen to match ttobjs.h */
+
+typedef struct charview {
+ CharViewBase b;
+ uint32 showback[BACK_LAYER_MAX/32];
+ unsigned int showfore:1;
+ unsigned int showgrids:1;
+ unsigned int showhhints:1;
+ unsigned int showvhints:1;
+ unsigned int showdhints:1;
+ unsigned int showpoints:1;
+ unsigned int showfilled:1;
+ unsigned int showrulers:1;
+ unsigned int showrounds:2; /* 0=>no, 1=>auto, 2=>always */
+ unsigned int showmdx:1;
+ unsigned int showmdy:1;
+ unsigned int showhmetrics:1;
+ unsigned int showvmetrics:1;
+ unsigned int showblues:1; /* 16 */
+ unsigned int showfamilyblues:1;
+ unsigned int showanchor:1;
+ unsigned int showpointnumbers:1;
+ unsigned int markextrema:1;
+ unsigned int markpoi:1;
+ unsigned int needsrasterize:1; /* Rasterization (of fill or fontview) needed on mouse up */
+ unsigned int recentchange:1; /* a change happened in the grids or background. don't need to rasterize */
+ unsigned int info_within: 1; /* cursor is within main window */
+ unsigned int back_img_out_of_date: 1; /* Force redraw of back image pixmap */
+ unsigned int cntrldown:1;
+ unsigned int joinvalid:1;
+ unsigned int widthsel:1;
+ unsigned int vwidthsel:1;
+ unsigned int icsel:1;
+ unsigned int tah_sel:1;
+ unsigned int inactive:1; /* When in a search view */
+ unsigned int show_ft_results: 1; /* 32 */
+ unsigned int coderange: 2; /* For the debugger */
+ unsigned int autonomous_ruler_w: 1;
+ unsigned int showcpinfo: 1;
+ unsigned int showtabs: 1;
+ unsigned int showsidebearings: 1;
+ unsigned int showing_spiro_pt_menu: 1;
+ unsigned int ruler_pressed: 1;
+ unsigned int ruler_pressedv: 1;
+ unsigned int showrefnames: 1;
+ unsigned int snapoutlines: 1;
+ unsigned int showalmosthvlines: 1;
+ unsigned int showalmosthvcurves: 1;
+ int hvoffset; /* for showalmosthvlines */
+ int layers_off_top;
+ real scale;
+ GWindow gw, v;
+ GGadget *vsb, *hsb, *mb, *tabs;
+ GFont *small, *normal;
+ GWindow icon;
+ GWindow ruler_w;
+ GFont *rfont;
+ GTimer *pressed;
+ GWindow backimgs;
+ GIC *gic;
+ GIC *gwgic;
+ int width, height;
+ int xoff, yoff;
+ int mbh, infoh, rulerh;
+ int16 sas, sfh, sdh, nas, nfh;
+ BasePoint info;
+ SplinePoint *info_sp;
+ Spline *info_spline;
+ real info_t;
+ GPoint e; /* mouse location */
+ GPoint olde;
+ BasePoint last_c;
+ BDFChar *filled;
+ GImage gi; /* used for fill bitmap only */
+ int enc;
+ EncMap *map_of_enc; /* Only use for comparison against fontview's map to see if our enc be valid */
+ /* Will not be updated when fontview is reencoded */
+ SplinePoint *lastselpt;
+ /*GWindow tools, layers;*/
+ int8 b1_tool, cb1_tool, b2_tool, cb2_tool; /* Button 3 does a popup */
+ int8 s1_tool, s2_tool, er_tool; /* Bindings for wacom stylus and eraser */
+ int8 showing_tool, pressed_tool, pressed_display, had_control, active_tool;
+ SplinePointList *active_spl;
+ SplinePoint *active_sp;
+ IPoint handscroll_base;
+ uint16 rfh, ras;
+ BasePoint lastknife;
+ struct freehand {
+ struct tracedata *head, *last; /* for the freehand tool */
+ SplinePointList *current_trace;
+ int ignore_wobble; /* Ignore wiggles smaller than this */
+ int skip_cnt;
+ } freehand;
+ enum expandedge { ee_none, ee_nw, ee_up, ee_ne, ee_right, ee_se, ee_down,
+ ee_sw, ee_left, ee_max } expandedge;
+ BasePoint expandorigin;
+ real expandwidth, expandheight;
+ SplinePointList *active_shape;
+ SplinePoint joinpos;
+ SplineChar *template1, *template2;
+#if HANYANG
+ struct jamodisplay *jamodisplay;
+#endif
+ real oldwidth, oldvwidth;
+ int16 oldic, oldtah;
+#if _ModKeysAutoRepeat
+ GTimer *autorpt;
+ int keysym, oldstate;
+ int oldkeyx, oldkeyy;
+ GWindow oldkeyw;
+#endif
+ PST *lcarets;
+ int16 nearcaret;
+ /* freetype results display */
+ int16 ft_dpi, ft_ppemy, ft_ppemx, ft_depth;
+ real ft_pointsizey, ft_pointsizex;
+ struct freetype_raster *raster, *oldraster;
+ DebugView *dv;
+ uint32 mmvisible;
+ char *former_names[FORMER_MAX];
+ int former_cnt;
+ AnchorPoint *apmine, *apmatch;
+ SplineChar *apsc;
+ int guide_pos;
+} CharView;
+
+typedef struct bitmapview {
+ BDFChar *bc;
+ BDFFont *bdf;
+ struct fontview *fv;
+ EncMap *map_of_enc;
+ int enc;
+ GWindow gw, v;
+ GGadget *vsb, *hsb, *mb;
+ GGadget *recalc;
+ GFont *small;
+ int xoff, yoff;
+ int width, height;
+ int infoh, mbh;
+ int scale;
+ real scscale;
+ struct bitmapview *next;
+ unsigned int showfore:1;
+ unsigned int showoutline:1;
+ unsigned int showgrid:1;
+ unsigned int cntrldown:1;
+ unsigned int recentchange:1;
+ unsigned int clearing:1;
+ unsigned int shades_hidden:1;
+ unsigned int shades_down:1;
+ /*GWindow tools, layers;*/
+ int8 b1_tool, cb1_tool, b2_tool, cb2_tool; /* Button 3 does a popup */
+ int8 s1_tool, s2_tool, er_tool; /* Bindings for wacom stylus and eraser */
+ int8 showing_tool, pressed_tool, pressed_display, had_control, active_tool;
+ int pressed_x, pressed_y;
+ int info_x, info_y;
+ int event_x, event_y;
+ int16 sas, sfh;
+#if _ModKeysAutoRepeat
+ GTimer *autorpt;
+ int keysym, oldstate;
+#endif
+ int color; /* for greyscale fonts (between 0,255) */
+ int color_under_cursor;
+} BitmapView;
+
+struct aplist { AnchorPoint *ap; int connected_to, selected; struct aplist *next; };
+
+enum mv_grids { mv_hidegrid, mv_showgrid, mv_partialgrid, mv_hidemovinggrid };
+enum mv_type { mv_kernonly, mv_widthonly, mv_kernwidth };
+typedef struct metricsview {
+ struct fontview *fv;
+ SplineFont *sf;
+ int pixelsize;
+ BDFFont *bdf; /* We can also see metric info on a bitmap font */
+ BDFFont *show; /* Or the rasterized version of the outline font */
+ GWindow gw, v;
+ GFont *font;
+ GGadget *hsb, *vsb, *mb, *text, *script, *features, *subtable_list;
+ GGadget *namelab, *widthlab, *lbearinglab, *rbearinglab, *kernlab;
+ int16 xstart;
+ int16 width, height, dwidth;
+ int16 vwidth, vheight;
+ int16 mbh,sbh;
+ int16 topend; /* y value of the end of the region containing the text field */
+ int16 displayend; /* y value of the end of the region showing filled characters */
+ int16 fh, as;
+ int16 cmax, clen;
+ SplineChar **chars; /* Character input stream */
+ struct opentype_str *glyphs;/* after going through the various gsub/gpos transformations */
+ struct metricchar { /* One for each glyph above */
+ int16 dx, dwidth; /* position and width of the displayed char */
+ int16 dy, dheight; /* displayed info for vertical metrics */
+ int xoff, yoff;
+ int16 mx, mwidth; /* position and width of the text underneath */
+ int16 kernafter;
+ unsigned int selected: 1;
+ GGadget *width, *lbearing, *rbearing, *kern, *name;
+ } *perchar;
+ SplineChar **sstr; /* Character input stream */
+ int16 mwidth, mbase;
+ int16 glyphcnt, max;
+ int16 pressed_x, pressed_y;
+ int16 activeoff;
+ int xoff, coff, yoff;
+ struct metricsview *next;
+ unsigned int right_to_left: 1;
+ unsigned int pressed: 1;
+ unsigned int pressedwidth: 1;
+ unsigned int pressedkern: 1;
+ unsigned int showgrid: 2;
+ unsigned int antialias: 1;
+ unsigned int vertical: 1;
+ unsigned int type: 2; /* enum mv_type */
+ int xp, yp, ap_owner;
+ BasePoint ap_start;
+ int cursor;
+ int scale_index;
+ struct lookup_subtable *cur_subtable;
+ GTextInfo *scriptlangs;
+ int word_index;
+ int layer;
+ int fake_unicode_base;
+ GIC *gwgic;
+} MetricsView;
+
+enum fv_metrics { fvm_baseline=1, fvm_origin=2, fvm_advanceat=4, fvm_advanceto=8 };
+typedef struct fontview {
+ FontViewBase b;
+ BDFFont *show, *filled;
+ GWindow gw, v;
+ GFont **fontset;
+ GGadget *vsb, *mb;
+ GTimer *pressed;
+ GTimer *resize;
+ GEvent resize_event;
+ GIC *gic;
+ GIC *gwgic;
+ int width, height; /* of v */
+ int16 infoh,mbh;
+ int16 lab_height, lab_as;
+ int16 colcnt, rowcnt; /* of display window */
+ int32 rowoff, rowltot; /* Can be really big in full unicode */
+ int16 cbw,cbh; /* width/height of a character box */
+ int pressed_pos, end_pos;
+ unsigned int antialias:1;
+ unsigned int bbsized:1; /* displayed bitmap should be scaled by bounding box rather than emsize */
+ unsigned int wasonlybitmaps:1;
+ /*unsigned int refstate: 3;*/ /* 0x1 => paste orig of all non exist refs, 0x2=>don't, 0x3 => don't warn about non-exist refs with no source font */
+ unsigned int touched: 1;
+ unsigned int showhmetrics: 4;
+ unsigned int showvmetrics: 4;
+ unsigned int drag_and_drop: 1;
+ unsigned int has_dd_no_cursor: 1;
+ unsigned int any_dd_events_sent: 1;
+ unsigned int resize_expected: 1;
+ /* Some window managers do not honour my resize requests (if window is*/
+ /* maximized for example), but we depend on the resize request to */
+ /* fix up the window. We do get a configure notify, but the window */
+ /* stays the same size, so kludge things */
+ unsigned int glyphlabel: 2;
+ int16 magnify;
+ int16 user_requested_magnify;
+ struct searchview *sv;
+ SplineChar *sc_near_top;
+ int sel_index;
+ struct lookup_subtable *cur_subtable;
+} FontView;
+
+typedef struct findsel {
+ GEvent *e;
+ real fudge; /* One pixel fudge factor */
+ real xl,xh, yl, yh; /* One pixel fudge factor */
+ real c_xl,c_xh, c_yl, c_yh; /* fudge rectangle for control points, larger than above if alt is depressed */
+ unsigned int select_controls: 1; /* notice control points */
+ unsigned int seek_controls: 1; /* notice control points before base points */
+ unsigned int all_controls: 1; /* notice control points even if the base points aren't selected (in truetype point numbering mode where all cps are visible) */
+ real scale;
+} FindSel;
+
+typedef struct searchview {
+ struct cvcontainer base;
+ FontView dummy_fv;
+ SplineFont dummy_sf;
+ LayerInfo layerinfo[2];
+ SplineChar *chars[2];
+ EncMap dummy_map;
+ int32 map[2], backmap[2];
+ uint8 sel[2];
+ CharView cv_srch, cv_rpl;
+ CharView *lastcv;
+/* ****** */
+ GWindow gw;
+ GGadget *mb;
+ GFont *plain, *bold;
+ int mbh;
+ int fh, as;
+ int rpl_x, cv_y;
+ int cv_width, cv_height;
+ short button_height, button_width;
+/* ****** */
+ SearchData sd;
+ unsigned int showsfindnext: 1;
+ unsigned int findenabled: 1;
+ unsigned int rplallenabled: 1;
+ unsigned int rplenabled: 1;
+ unsigned int isvisible: 1;
+} SearchView;
+
+typedef struct mathkernview {
+ struct cvcontainer base;
+ FontView dummy_fv;
+ SplineFont dummy_sf;
+ LayerInfo layerinfo[2];
+ SplineChar sc_topright, sc_topleft, sc_bottomright, sc_bottomleft;
+ SplineChar *chars[4];
+ EncMap dummy_map;
+ int32 map[4], backmap[4];
+ uint8 sel[4];
+ CharView cv_topright, cv_topleft, cv_bottomright, cv_bottomleft;
+ CharView *lastcv;
+/* ****** */
+ GWindow gw;
+ GWindow cvparent_w;
+ GGadget *mb;
+ GFont *plain, *bold;
+ int mbh;
+ int fh, as;
+ int mid_space, cv_y;
+ int cv_width, cv_height;
+ short button_height, button_width;
+/* ****** */
+ SplineChar *cursc;
+ int def_layer;
+ struct mathkern *orig_mathkern;
+ uint8 saved_mathkern; /* Can't just check if orig is non-NULL, because NULL is a perfectly valid initial state */
+ uint8 last_aspect;
+ uint8 done;
+} MathKernDlg;
+
+# ifdef FONTFORGE_CONFIG_TILEPATH
+
+typedef struct tilepathdlg {
+ struct cvcontainer base;
+ FontView dummy_fv;
+ SplineFont dummy_sf;
+ LayerInfo layerinfo[2];
+ SplineChar sc_first, sc_medial, sc_final, sc_isolated;
+ SplineChar *chars[4];
+ EncMap dummy_map;
+ int32 map[4], backmap[4];
+ uint8 sel[4];
+ CharView cv_first, cv_medial, cv_final, cv_isolated;
+ CharView *lastcv;
+/* ****** */
+ GWindow gw;
+ GGadget *mb;
+ GFont *plain, *bold;
+ int mbh;
+ int fh, as;
+ int mid_space, cv_y;
+ int cv_width, cv_height;
+/* ****** */
+ struct tiledata *td;
+ SplineFont *base_sf;
+ uint8 done, oked;
+} TilePathDlg;
+extern void TPDChar(TilePathDlg *tpd, GEvent *event);
+extern void TPDCharViewInits(TilePathDlg *tpd, int cid);
+extern void PTDChar(TilePathDlg *tpd, GEvent *event);
+extern void PTDCharViewInits(TilePathDlg *tpd, int cid);
+#endif /* Tile Path */
+
+# ifdef FONTFORGE_CONFIG_TYPE3
+
+typedef struct gradientdlg {
+ struct cvcontainer base;
+ FontView dummy_fv;
+ SplineFont dummy_sf;
+ LayerInfo layerinfo[2];
+ SplineChar sc_grad;
+ SplineChar *chars[1];
+ EncMap dummy_map;
+ int32 map[1], backmap[1];
+ uint8 sel[1];
+ CharView cv_grad;
+/* ****** */
+ GWindow gw;
+ GGadget *mb;
+ GFont *plain, *bold;
+ int mbh;
+ int fh, as;
+ int mid_space, cv_y;
+ int cv_width, cv_height;
+/* ****** */
+ uint8 done, oked;
+ struct gradient *active;
+} GradientDlg;
+extern void GDDChar(GradientDlg *tpd, GEvent *event);
+extern void GDDCharViewInits(GradientDlg *gdd,int cid);
+#endif /* Tile Path */
+
+struct lkdata {
+ int cnt, max;
+ int off_top, off_left;
+ struct lkinfo {
+ OTLookup *lookup;
+ unsigned int open: 1;
+ unsigned int deleted: 1;
+ unsigned int new: 1;
+ unsigned int selected: 1;
+ unsigned int moved: 1;
+ int16 subtable_cnt, subtable_max;
+ struct lksubinfo {
+ struct lookup_subtable *subtable;
+ unsigned int deleted: 1;
+ unsigned int new: 1;
+ unsigned int selected: 1;
+ unsigned int moved: 1;
+ } *subtables;
+ } *all;
+};
+
+struct gfi_data { /* FontInfo */
+ SplineFont *sf;
+ int def_layer;
+ GWindow gw;
+ int tn_active;
+ int private_aspect, ttfv_aspect, tn_aspect, tx_aspect, unicode_aspect;
+ int old_sel, old_aspect, old_lang, old_strid;
+ int ttf_set, names_set, tex_set;
+ struct psdict *private;
+ int langlocalecode; /* MS code for the current locale */
+ unsigned int family_untitled: 1;
+ unsigned int human_untitled: 1;
+ unsigned int done: 1;
+ unsigned int mpdone: 1;
+ unsigned int lk_drag_and_drop: 1;
+ unsigned int lk_dropablecursor: 1;
+ struct anchor_shows { CharView *cv; SplineChar *sc; int restart; } anchor_shows[2];
+ struct texdata texdata;
+ struct contextchaindlg *ccd;
+ struct statemachinedlg *smd;
+/* For GDEF Mark Attachment Class -- used in lookup flags */
+/* As usual, class 0 is unused */
+ int mark_class_cnt;
+ char **mark_classes; /* glyph name list */
+ char **mark_class_names; /* used within ff */
+ struct markclassdlg *mcd;
+ GFont *font;
+ int as, fh;
+ struct lkdata tables[2];
+ int lkwidth, lkheight;
+ int first_sel_lookup, first_sel_subtable;
+};
+
+
+extern void FVMarkHintsOutOfDate(SplineChar *sc);
+extern void FVRefreshChar(FontView *fv,int gid);
+extern int _FVMenuSave(FontView *fv);
+extern int _FVMenuSaveAs(FontView *fv);
+extern int _FVMenuGenerate(FontView *fv,int family);
+extern void _FVCloseWindows(FontView *fv);
+extern char *GetPostscriptFontName(char *defdir,int mult);
+extern void MergeKernInfo(SplineFont *sf,EncMap *map);
+#ifdef FONTFORGE_CONFIG_WRITE_PFM
+extern int WritePfmFile(char *filename,SplineFont *sf, int type0, EncMap *map);
+#endif
+extern int SFGenerateFont(SplineFont *sf,int layer, int family,EncMap *map);
+
+extern void NonLinearDlg(FontView *fv,struct charview *cv);
+extern void FVChangeChar(FontView *fv,int encoding);
+extern void FVMergeFonts(FontView *fv);
+extern void FVInterpolateFonts(FontView *fv);
+
+extern void FVDeselectAll(FontView *fv);
+
+extern void FVAutoKern(FontView *fv);
+extern void FVAutoWidth(FontView *fv);
+
+extern void SC_MarkInstrDlgAsChanged(SplineChar *sc);
+
+extern void PythonUI_Init(void);
+
+extern void SCStroke(SplineChar *sc);
+
+extern void PfaEditSetFallback(void);
+extern void RecentFilesRemember(char *filename);
+
+
+struct debugger_context;
+extern void DebuggerTerminate(struct debugger_context *dc);
+extern void DebuggerReset(struct debugger_context *dc,real pointsizey, real pointsizex,int dpi,int dbg_fpgm, int is_bitmap);
+extern struct debugger_context *DebuggerCreate(SplineChar *sc,int layer,real pointsizey,real pointsizex,int dpi,int dbg_fpgm, int is_bitmap);
+enum debug_gotype { dgt_continue, dgt_step, dgt_next, dgt_stepout };
+extern void DebuggerGo(struct debugger_context *dc,enum debug_gotype,DebugView *dv);
+extern struct TT_ExecContextRec_ *DebuggerGetEContext(struct debugger_context *dc);
+extern void DebuggerToggleBp(struct debugger_context *dc,int range,int ip);
+extern int DebuggerBpCheck(struct debugger_context *dc,int range,int ip);
+extern void DebuggerSetWatches(struct debugger_context *dc,int n, uint8 *w);
+extern uint8 *DebuggerGetWatches(struct debugger_context *dc, int *n);
+extern void DebuggerSetWatchStores(struct debugger_context *dc,int n, uint8 *w);
+extern uint8 *DebuggerGetWatchStores(struct debugger_context *dc, int *n);
+extern int DebuggerIsStorageSet(struct debugger_context *dc, int index);
+extern void DebuggerSetWatchCvts(struct debugger_context *dc,int n, uint8 *w);
+extern uint8 *DebuggerGetWatchCvts(struct debugger_context *dc, int *n);
+extern int DebuggingFpgm(struct debugger_context *dc);
+
+extern void PrintWindowClose(void);
+extern void InsertTextDlg(CharView *cv);
+
+extern char *Kern2Text(SplineChar *other,KernPair *kp,int isv);
+extern char *PST2Text(PST *pst,SplineFont *sf);
+
+
+
+void EmboldenDlg(FontView *fv, CharView *cv);
+void CondenseExtendDlg(FontView *fv, CharView *cv);
+void AddSmallCapsDlg(FontView *fv);
+void AddSubSupDlg(FontView *fv);
+void ObliqueDlg(FontView *fv, CharView *cv);
+void GlyphChangeDlg(FontView *fv, CharView *cv, enum glyphchange_type gc);
+void ItalicDlg(FontView *fv, CharView *cv);
+void ChangeXHeightDlg(FontView *fv,CharView *cv);
+
+extern int FVParseSelectByPST(FontView *fv,struct lookup_subtable *sub,
+ int search_type);
+extern void DropChars2Text(GWindow gw, GGadget *glyphs,GEvent *event);
+
+
+extern void FVReplaceOutlineWithReference( FontView *fv, double fudge );
+extern void SVDestroy(struct searchview *sv);
+
+
+
+extern int SLICount(SplineFont *sf);
+extern unichar_t *ClassName(const char *name,uint32 feature_tag,
+ uint16 flags, int script_lang_index, int merge_with, int act_type,
+ int macfeature,SplineFont *sf);
+extern unichar_t *DecomposeClassName(const unichar_t *clsnm, unichar_t **name,
+ uint32 *feature_tag, int *macfeature,
+ uint16 *flags, uint16 *script_lang_index,int *merge_with,int *act_type,
+ SplineFont *sf);
+extern PST *AddSubs(PST *last,uint32 tag,char *name,uint16 flags,
+ uint16 sli,SplineChar *sc);
+
+
+extern void FVScrollToChar(FontView *fv,int i);
+extern void FVRegenChar(FontView *fv,SplineChar *sc);
+extern FontView *FontNew(void);
+extern void _MenuWarnings(GWindow gw,struct gmenuitem *mi,GEvent *e);
+extern void MenuPrefs(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuSaveAll(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuExit(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuOpen(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuHelp(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuIndex(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuAbout(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuLicense(GWindow base,struct gmenuitem *mi,GEvent *e);
+extern void MenuNew(GWindow gw,struct gmenuitem *mi,GEvent *e);
+extern void WindowMenuBuild(GWindow base,struct gmenuitem *mi,GEvent *);
+extern void MenuRecentBuild(GWindow base,struct gmenuitem *mi,GEvent *);
+extern void MenuScriptsBuild(GWindow base,struct gmenuitem *mi,GEvent *);
+extern void mb2DoGetText(GMenuItem2 *mb);
+extern void mbDoGetText(GMenuItem *mb);
+extern void OFLibBrowse(void);
+extern int RecentFilesAny(void);
+extern void _aplistbuild(struct gmenuitem *mi,SplineFont *sf,
+ void (*func)(GWindow,struct gmenuitem *,GEvent *));
+extern int32 *ParseBitmapSizes(GGadget *g,char *msg,int *err);
+extern GTextInfo *AddMacFeatures(GTextInfo *opentype,enum possub_type type,SplineFont *sf);
+extern unichar_t *AskNameTag(char *title,unichar_t *def,uint32 def_tag,uint16 flags,
+ int script_lang_index, enum possub_type type, SplineFont *sf, SplineChar *default_script,
+ int merge_with,int act_type);
+extern unichar_t *ShowScripts(unichar_t *usedef);
+extern GTextInfo *SFLangList(SplineFont *sf,int addfinal,SplineChar *default_script);
+extern GTextInfo **SFLangArray(SplineFont *sf,int addfinal);
+extern int ScriptLangList(SplineFont *sf,GGadget *list,int sli);
+extern void GListDelSelected(GGadget *list);
+extern void GListMoveSelected(GGadget *list,int offset);
+extern GTextInfo *GListChangeLine(GGadget *list,int pos, const unichar_t *line);
+extern GTextInfo *GListAppendLine(GGadget *list,const unichar_t *line,int select);
+extern GTextInfo *GListChangeLine8(GGadget *list,int pos, const char *line);
+extern GTextInfo *GListAppendLine8(GGadget *list,const char *line,int select);
+extern void CharInfoInit(void);
+extern void SCLigCaretCheck(SplineChar *sc,int clean);
+extern char *DevTab_Dlg(GGadget *g, int r, int c);
+extern int DeviceTableOK(char *dvstr, int *_low, int *_high);
+extern void VRDevTabParse(struct vr *vr,struct matrix_data *md);
+#ifdef FONTFORGE_CONFIG_DEVICETABLES
+extern DeviceTable *DeviceTableParse(DeviceTable *dv,char *dvstr);
+extern void DevTabToString(char **str,DeviceTable *adjust);
+extern void ValDevTabToStrings(struct matrix_data *mds,int first_offset,ValDevTab *adjust);
+#endif
+extern void KpMDParse(SplineFont *sf,SplineChar *sc,struct lookup_subtable *sub,
+ struct matrix_data *possub,int rows,int cols,int i);
+extern void GFI_LookupEnableButtons(struct gfi_data *gfi, int isgpos);
+extern void GFI_LookupScrollbars(struct gfi_data *gfi, int isgpos, int refresh);
+extern void FontInfo(SplineFont *sf,int layer,int aspect,int sync);
+extern void FontInfoDestroy(SplineFont *sf);
+extern void FontMenuFontInfo(void *fv);
+extern void GFI_CCDEnd(struct gfi_data *d);
+extern struct enc *MakeEncoding(SplineFont *sf, EncMap *map);
+extern void LoadEncodingFile(void);
+extern void RemoveEncoding(void);
+extern void SFPrivateInfo(SplineFont *sf);
+extern void FVDelay(FontView *fv,void (*func)(FontView *));
+extern void GFI_FinishContextNew(struct gfi_data *d,FPST *fpst, int success);
+extern void SCPreparePopup(GWindow gw,SplineChar *sc, struct remap *remap, int enc, int actualuni);
+extern void CVDrawSplineSet(CharView *cv, GWindow pixmap, SplinePointList *set,
+ Color fg, int dopoints, DRect *clip );
+extern GWindow CVMakeTools(CharView *cv);
+extern GWindow CVMakeLayers(CharView *cv);
+extern GWindow BVMakeTools(BitmapView *bv);
+extern GWindow BVMakeLayers(BitmapView *bv);
+extern void CVSetLayer(CharView *cv,int layer);
+extern int CVPaletteMnemonicCheck(GEvent *event);
+extern int TrueCharState(GEvent *event);
+extern void CVToolsPopup(CharView *cv, GEvent *event);
+extern void BVToolsPopup(BitmapView *bv, GEvent *event);
+extern real CVRoundRectRadius(void);
+extern int CVRectElipseCenter(void);
+extern void CVRectEllipsePosDlg(CharView *cv);
+extern real CVStarRatio(void);
+extern int CVPolyStarPoints(void);
+extern StrokeInfo *CVFreeHandInfo(void);
+extern void BVToolsSetCursor(BitmapView *bv, int state,char *device);
+extern void CVToolsSetCursor(CharView *cv, int state,char *device);
+extern int CVPaletteIsVisible(CharView *cv,int which);
+extern void CVPaletteSetVisible(CharView *cv,int which,int visible);
+extern void CVPalettesRaise(CharView *cv);
+extern void CVLayersSet(CharView *cv);
+extern void _CVPaletteActivate(CharView *cv,int force);
+extern void CVPaletteActivate(CharView *cv);
+extern void CV_LayerPaletteCheck(SplineFont *sf);
+extern void CVPalettesHideIfMine(CharView *cv);
+extern int BVPaletteIsVisible(BitmapView *bv,int which);
+extern void BVPaletteSetVisible(BitmapView *bv,int which,int visible);
+extern void BVPaletteActivate(BitmapView *bv);
+extern void BVPalettesHideIfMine(BitmapView *bv);
+extern void BVPaletteColorChange(BitmapView *bv);
+extern void BVPaletteColorUnderChange(BitmapView *bv,int color);
+extern void BVPaletteChangedChar(BitmapView *bv);
+extern void CVPaletteDeactivate(void);
+extern void PalettesChangeDocking(void);
+extern int CVPalettesWidth(void);
+extern int BVPalettesWidth(void);
+
+extern void CVDoTransform(CharView *cv, enum cvtools cvt );
+extern void CVTransFunc(CharView *cv,real transform[6],enum fvtrans_flags);
+extern void TransformDlgCreate(void *data,void (*transfunc)(void *,real *,int,BVTFunc *,enum fvtrans_flags),
+ int (*getorigin)(void *,BasePoint *,int), int enableback,
+ enum cvtools cvt);
+extern void BitmapDlg(FontView *fv,SplineChar *sc, int isavail);
+extern int SimplifyDlg(SplineFont *sf,struct simplifyinfo *smpl);
+extern void CVReviewHints(CharView *cv);
+extern void CVCreateHint(CharView *cv,int ishstem,int preserveundoes);
+extern void SCRemoveSelectedMinimumDistances(SplineChar *sc,int inx);
+extern int CVExport(CharView *cv);
+extern int BVExport(BitmapView *bv);
+
+extern void DrawAnchorPoint(GWindow pixmap,int x, int y,int selected);
+extern void DefaultY(GRect *pos);
+extern void CVDrawRubberRect(GWindow pixmap, CharView *cv);
+extern void CVInfoDraw(CharView *cv, GWindow pixmap );
+extern void CVChar(CharView *cv, GEvent *event );
+extern void PI_ShowHints(SplineChar *sc, GGadget *list, int set);
+extern GTextInfo *SCHintList(SplineChar *sc,HintMask *);
+extern void CVResize(CharView *cv );
+extern CharView *CharViewCreate(SplineChar *sc,FontView *fv,int enc);
+extern void CharViewFree(CharView *cv);
+extern int CVValid(SplineFont *sf, SplineChar *sc, CharView *cv);
+extern void CVSetCharChanged(CharView *cv,int changed);
+extern int CVAnySel(CharView *cv, int *anyp, int *anyr, int *anyi, int *anya);
+extern int CVAnySelPoints(CharView *cv);
+extern void CVSelectPointAt(CharView *cv);
+extern int CVClearSel(CharView *cv);
+extern int CVSetSel(CharView *cv,int mask);
+extern void CVInvertSel(CharView *cv);
+extern int CVAllSelected(CharView *cv);
+extern SplinePointList *CVAnySelPointList(CharView *cv);
+extern int CVOneContourSel(CharView *cv, SplinePointList **_spl,
+ RefChar **ref, ImageList **img);
+extern void CVImport(CharView *cv);
+extern void BVImport(BitmapView *bv);
+extern void FVImport(FontView *bv);
+extern void CVFindCenter(CharView *cv, BasePoint *bp, int nosel);
+extern void CVStroke(CharView *cv);
+extern void FVStroke(FontView *fv);
+extern void FreeHandStrokeDlg(StrokeInfo *si);
+extern void OutlineDlg(FontView *fv, CharView *cv,MetricsView *mv,int isinline);
+extern void ShadowDlg(FontView *fv, CharView *cv,MetricsView *mv,int wireframe);
+extern void CVTile(CharView *cv);
+extern void FVTile(FontView *fv);
+extern void CVPatternTile(CharView *cv);
+extern void FVPatternTile(FontView *fv);
+extern void SCCharInfo(SplineChar *sc,int deflayer,EncMap *map,int enc);
+extern void CharInfoDestroy(struct charinfo *ci);
+extern SplineChar *SuffixCheck(SplineChar *sc,char *suffix);
+extern void SCSubtableDefaultSubsCheck(SplineChar *sc, struct lookup_subtable *sub, struct matrix_data *possub, int col_cnt, int r);
+extern GImage *PST_GetImage(GGadget *pstk,SplineFont *sf,int def_layer,
+ struct lookup_subtable *sub,int popup_r, SplineChar *sc );
+extern GImage *NameList_GetImage(SplineFont *sf,SplineChar *sc,int def_layer,
+ char *namelist, int isliga );
+extern GImage *GV_GetConstructedImage(SplineChar *sc,int def_layer, struct glyphvariants *gv,
+ int is_horiz);
+extern GImage *SC_GetLinedImage(SplineChar *sc, int def_layer, int pos, int is_italic_cor);
+extern struct glyphvariants *GV_ParseConstruction(struct glyphvariants *gv,
+ struct matrix_data *stuff, int rows, int cols);
+extern void GV_ToMD(GGadget *g, struct glyphvariants *gv);
+extern void CVGetInfo(CharView *cv);
+extern void CVPGetInfo(CharView *cv);
+extern int SCUsedBySubs(SplineChar *sc);
+extern void SCSubBy(SplineChar *sc);
+extern void SCRefBy(SplineChar *sc);
+extern void ApGetInfo(CharView *cv, AnchorPoint *ap);
+extern void CVMakeClipPath(CharView *cv);
+extern void CVAddAnchor(CharView *cv);
+extern AnchorClass *AnchorClassUnused(SplineChar *sc,int *waslig);
+extern void FVSetWidth(FontView *fv,enum widthtype wtype);
+extern void CVSetWidth(CharView *cv,enum widthtype wtype);
+extern void CVChangeSC(CharView *cv, SplineChar *sc );
+extern Undoes *CVPreserveTState(CharView *cv);
+extern void CVRestoreTOriginalState(CharView *cv);
+extern void CVUndoCleanup(CharView *cv);
+
+extern void CVAdjustPoint(CharView *cv, SplinePoint *sp);
+extern void CVMergeSplineSets(CharView *cv, SplinePoint *active, SplineSet *activess,
+ SplinePoint *merge, SplineSet *mergess);
+extern void CVAdjustControl(CharView *cv,BasePoint *cp, BasePoint *to);
+extern int CVMoveSelection(CharView *cv, real dx, real dy, uint32 input_state);
+extern int CVTestSelectFromEvent(CharView *cv,GEvent *event);
+extern void CVMouseUpPoint(CharView *cv,GEvent *event);
+extern int CVMouseMovePointer(CharView *cv, GEvent *event);
+extern void CVMouseDownPointer(CharView *cv, FindSel *fs, GEvent *event);
+extern void CVMouseDownRuler(CharView *cv, GEvent *event);
+extern void CVMouseMoveRuler(CharView *cv, GEvent *event);
+extern int CVMouseAtSpline(CharView *cv,GEvent *event);
+extern void CVMouseUpRuler(CharView *cv, GEvent *event);
+extern void CVMouseMoveHand(CharView *cv, GEvent *event);
+extern void CVMouseDownFreeHand(CharView *cv, GEvent *event);
+extern void CVMouseMoveFreeHand(CharView *cv, GEvent *event);
+extern void CVMouseUpFreeHand(CharView *cv, GEvent *event);
+extern void CVMouseDownShape(CharView *cv,GEvent *event);
+extern void CPStartInfo(CharView *cv, GEvent *event);
+extern void CPUpdateInfo(CharView *cv, GEvent *event);
+extern void CPEndInfo(CharView *cv);
+extern void BVChar(BitmapView *cv, GEvent *event );
+extern void CVMouseDownPoint(CharView *cv,GEvent *event);
+extern void CVMouseUpPointer(CharView *cv );
+extern void CVCheckResizeCursors(CharView *cv);
+extern void CVMouseDownHand(CharView *cv);
+extern void CVMouseUpHand(CharView *cv);
+extern void CVMouseDownTransform(CharView *cv);
+extern void CVMouseMoveTransform(CharView *cv);
+extern void CVMouseUpTransform(CharView *cv);
+extern void CVMouseDownKnife(CharView *cv);
+extern void CVMouseUpKnife(CharView *cv,GEvent *event);
+extern void CVMouseMoveShape(CharView *cv);
+extern void CVMouseUpShape(CharView *cv);
+extern void LogoExpose(GWindow pixmap,GEvent *event, GRect *r,enum drawmode dm);
+extern void CVDebugPointPopup(CharView *cv);
+
+extern int GotoChar(SplineFont *sf,EncMap *map);
+
+extern void CVShowPoint(CharView *cv, BasePoint *me);
+
+extern BitmapView *BitmapViewCreate(BDFChar *bc, BDFFont *bdf, FontView *fv,int enc);
+extern BitmapView *BitmapViewCreatePick(int enc, FontView *fv);
+extern void BitmapViewFree(BitmapView *bv);
+extern void BVMenuRotateInvoked(GWindow gw,struct gmenuitem *mi, GEvent *e);
+extern void BVRotateBitmap(BitmapView *bv,enum bvtools type );
+extern int BVColor(BitmapView *bv);
+extern void BCGeneralFunction(BitmapView *bv,
+ void (*SetPoint)(BitmapView *,int x, int y, void *data),void *data);
+extern char *BVFlipNames[];
+extern void BVChangeBC(BitmapView *bv, BDFChar *bc, int fitit );
+
+extern void MVSetSCs(MetricsView *mv, SplineChar **scs);
+extern void MVRefreshChar(MetricsView *mv, SplineChar *sc);
+extern void MVRegenChar(MetricsView *mv, SplineChar *sc);
+extern void MVReKern(MetricsView *mv);
+extern MetricsView *MetricsViewCreate(FontView *fv,SplineChar *sc,BDFFont *bdf);
+extern void MetricsViewFree(MetricsView *mv);
+extern void MVRefreshAll(MetricsView *mv);
+extern void MV_FriendlyFeatures(GGadget *g, int pos);
+extern GTextInfo *SLOfFont(SplineFont *sf);
+
+extern void DoPrefs(void);
+extern void GListAddStr(GGadget *list,unichar_t *str, void *ud);
+extern void GListReplaceStr(GGadget *list,int index, unichar_t *str, void *ud);
+extern struct macname *NameGadgetsGetNames( GWindow gw );
+extern void NameGadgetsSetEnabled( GWindow gw, int enable );
+extern int GCDBuildNames(GGadgetCreateData *gcd,GTextInfo *label,int pos,struct macname *names);
+extern void GCDFillMacFeat(GGadgetCreateData *mfgcd,GTextInfo *mflabels, int width,
+ MacFeat *all, int fromprefs, GGadgetCreateData *boxes,
+ GGadgetCreateData **array);
+extern void Prefs_ReplaceMacFeatures(GGadget *list);
+
+extern unichar_t *FVOpenFont(char *title, const char *defaultfile, int mult);
+
+
+
+
+extern void ShowAboutScreen(void);
+extern void DelayEvent(void (*func)(void *), void *data);
+
+extern void FindProblems(FontView *fv,CharView *cv,SplineChar *sc);
+extern void CVConstrainSelection(CharView *cv,int type);
+extern void CVMakeParallel(CharView *cv);
+
+extern void ScriptDlg(FontView *fv,CharView *cv);
+
+# if HANYANG
+extern void MenuNewComposition(GWindow gw, struct gmenuitem *, GEvent *);
+extern void CVDisplayCompositions(GWindow gw, struct gmenuitem *, GEvent *);
+extern void Disp_DoFinish(struct jamodisplay *d, int cancel);
+extern void Disp_RefreshChar(SplineFont *sf,SplineChar *sc);
+extern void Disp_DefaultTemplate(CharView *cv);
+# endif
+
+extern SearchView *SVCreate(FontView *fv);
+extern void SVCharViewInits(SearchView *sv);
+extern void SV_DoClose(struct cvcontainer *cvc);
+extern void SVChar(SearchView *sv, GEvent *event);
+extern void SVMakeActive(SearchView *sv,CharView *cv);
+extern int SVAttachFV(FontView *fv,int ask_if_difficult);
+extern void SVDetachFV(FontView *fv);
+
+extern void MKDMakeActive(MathKernDlg *mkd,CharView *cv);
+extern void MKDChar(MathKernDlg *mkd, GEvent *event);
+extern void MKD_DoClose(struct cvcontainer *cvc);
+extern void MKDCharViewInits(MathKernDlg *mkd);
+extern void MathKernDialog(SplineChar *sc,int def_layer);
+
+extern void ShowAtt(SplineFont *sf,int def_layer);
+extern void FontCompareDlg(FontView *fv);
+extern void SFShowKernPairs(SplineFont *sf,SplineChar *sc,AnchorClass *ac,int layer);
+extern void SFShowLigatures(SplineFont *sf,SplineChar *sc);
+
+extern void SCEditInstructions(SplineChar *sc);
+extern void SFEditTable(SplineFont *sf, uint32 tag);
+extern void IIScrollTo(struct instrinfo *ii,int ip,int mark_stop);
+extern void IIReinit(struct instrinfo *ii,int ip);
+extern int ii_v_e_h(GWindow gw, GEvent *event);
+extern void instr_scroll(struct instrinfo *ii,struct sbevent *sb);
+
+extern void CVGridFitChar(CharView *cv);
+extern void CVFtPpemDlg(CharView *cv,int debug);
+extern void SCDeGridFit(SplineChar *sc);
+extern void SCReGridFit(SplineChar *sc,int layer);
+
+extern void CVDebugReInit(CharView *cv,int restart_debug,int dbg_fpgm);
+extern void CVDebugFree(DebugView *dv);
+extern int DVChar(DebugView *dv, GEvent *e);
+
+extern void KernClassD(KernClass *kc, SplineFont *sf, int layer, int isv);
+extern void ShowKernClasses(SplineFont *sf,MetricsView *mv,int layer,int isv);
+extern void KCLD_End(struct kernclasslistdlg *kcld);
+extern void KCLD_MvDetach(struct kernclasslistdlg *kcld,MetricsView *mv);
+extern void KernPairD(SplineFont *sf,SplineChar *sc1,SplineChar *sc2,int layer, int isv);
+extern void KCD_DrawGlyph(GWindow pixmap,int x,int baseline,BDFChar *bdfc,int mag);
+extern GTextInfo *BuildFontList(FontView *except);
+extern void TFFree(GTextInfo *tf);
+
+extern void AnchorControl(SplineChar *sc,AnchorPoint *ap,int layer);
+extern void AnchorControlClass(SplineFont *_sf,AnchorClass *ac,int layer);
+
+extern void FVSelectByPST(FontView *fv);
+
+enum hist_type { hist_hstem, hist_vstem, hist_blues };
+struct psdict;
+extern void SFHistogram(SplineFont *sf,int layer, struct psdict *private,uint8 *selected,
+ EncMap *map, enum hist_type which);
+
+extern void CCD_Close(struct contextchaindlg *ccd);
+extern int CCD_NameListCheck(SplineFont *sf,const char *ret,int empty_bad,char *title);
+extern struct contextchaindlg *ContextChainEdit(SplineFont *sf,FPST *fpst,
+ struct gfi_data *gfi,unichar_t *newname);
+extern int CCD_InvalidClassList(char *ret,GGadget *list,int wasedit);
+extern char *cu_copybetween(const unichar_t *start, const unichar_t *end);
+
+extern struct statemachinedlg *StateMachineEdit(SplineFont *sf,ASM *sm,struct gfi_data *d);
+extern void SMD_Close(struct statemachinedlg *smd);
+extern void GFI_FinishSMNew(struct gfi_data *d,ASM *sm, int success,int isnew);
+extern void GFI_SMDEnd(struct gfi_data *d);
+
+extern void MMChangeBlend(MMSet *mm,FontView *fv,int tonew);
+extern void MMWizard(MMSet *mm);
+
+extern int LayerDialog(Layer *layer,SplineFont *sf);
+extern void CVLayerChange(CharView *cv);
+
+extern int PointOfViewDlg(struct pov_data *pov,SplineFont *sf,int flags);
+
+extern SplineChar *FVMakeChar(FontView *fv,int i);
+
+extern void CVPointOfView(CharView *cv,struct pov_data *);
+
+extern void DVCreateGloss(DebugView *dv);
+extern int CVXPos(DebugView *dv,int offset,int width);
+
+extern GMenuItem *GetEncodingMenu(void (*func)(GWindow,GMenuItem *,GEvent *),
+ Encoding *current);
+
+extern GTextInfo *TIFromName(const char *name);
+
+enum subtable_data_flags {
+ /* I have flags for each alternative because I want "unspecified" to be */
+ /* an option */
+ sdf_kernclass = 0x01,
+ sdf_kernpair = 0x02,
+ sdf_verticalkern = 0x04,
+ sdf_horizontalkern = 0x08,
+ sdf_dontedit = 0x10
+};
+struct subtable_data {
+ int flags;
+ SplineChar *sc;
+};
+
+extern GTextInfo **SFLookupListFromType(SplineFont *sf, int lookup_type );
+extern GTextInfo **SFSubtablesOfType(SplineFont *sf, int lookup_type, int kernclass, int add_none);
+extern GTextInfo *SFSubtableListOfType(SplineFont *sf, int lookup_type, int kernclass, int add_none);
+extern struct lookup_subtable *SFNewLookupSubtableOfType(SplineFont *sf, int lookup_type, struct subtable_data *sd, int def_layer );
+extern int EditLookup(OTLookup *otl,int isgpos,SplineFont *sf);
+extern int EditSubtable(struct lookup_subtable *sub,int isgpos,SplineFont *sf,
+ struct subtable_data *sd,int def_layer);
+extern void _LookupSubtableContents(SplineFont *sf, struct lookup_subtable *sub,
+ struct subtable_data *sd,int def_layer);
+extern unichar_t **SFGlyphNameCompletion(SplineFont *sf,GGadget *t,int from_tab,
+ int new_name_after_space);
+extern void AddRmLang(SplineFont *sf, struct lkdata *lk,int add_lang);
+extern void FVMassGlyphRename(FontView *fv);
+
+extern void SFBdfProperties(SplineFont *sf, EncMap *map, BDFFont *thisone);
+
+
+
+extern GMenuItem2 helplist[];
+extern BasePoint last_ruler_offset[];
+
+extern void CVCopyLayerToLayer(CharView *cv);
+extern void FVCopyLayerToLayer(FontView *fv);
+extern void CVCompareLayerToLayer(CharView *cv);
+extern void FVCompareLayerToLayer(FontView *fv);
+
+extern void MathInit(void);
+extern void SFMathDlg(SplineFont *sf,int def_layer);
+
+extern GMenuItem2 *cvpy_menu, *fvpy_menu;
+extern void cvpy_tllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e);
+extern void fvpy_tllistcheck(GWindow gw,struct gmenuitem *mi,GEvent *e);
+
+extern void SFValidationWindow(SplineFont *sf,int layer, enum fontformat format);
+extern void ValidationDestroy(SplineFont *sf);
+
+
+
+extern const char *UI_TTFNameIds(int id);
+extern const char *UI_MSLangString(int language);
+extern void FontInfoInit(void);
+extern void LookupUIInit(void);
+extern enum psstrokeflags Ps_StrokeFlagsDlg(void);
+extern struct cidmap *AskUserForCIDMap(void);
+
+extern void DefineGroups(struct fontview *fv);
+extern void DisplayGroups(struct fontview *fv);
+
+extern struct Base *SFBaselines(SplineFont *sf,struct Base *old,int is_vertical);
+
+extern struct hslrgb *SFFontCols(SplineFont *sf,struct hslrgb fontcols[6]);
+#endif /* _VIEWS_H */