nuclear@0: #ifndef TEXT_IMPL_H_ nuclear@0: #define TEXT_IMPL_H_ nuclear@0: nuclear@0: struct glyph { nuclear@0: int code; nuclear@0: float x, y, width, height; nuclear@0: /* normalized coords [0, 1] */ nuclear@0: float nx, ny, nwidth, nheight; nuclear@0: float orig_x, orig_y; nuclear@0: float advance; nuclear@0: struct glyph *next; nuclear@0: }; nuclear@0: nuclear@0: struct dtx_glyphmap { nuclear@0: int ptsize; nuclear@0: nuclear@0: int xsz, ysz; nuclear@0: unsigned char *pixels; nuclear@0: unsigned int tex; nuclear@0: nuclear@0: int cstart, cend; /* character range */ nuclear@0: int crange; nuclear@0: nuclear@0: float line_advance; nuclear@0: nuclear@0: struct glyph *glyphs; nuclear@0: struct dtx_glyphmap *next; nuclear@0: }; nuclear@0: nuclear@0: struct dtx_font { nuclear@0: /* freetype FT_Face */ nuclear@0: void *face; nuclear@0: nuclear@0: /* list of glyphmaps */ nuclear@0: struct dtx_glyphmap *gmaps; nuclear@0: nuclear@0: /* last returned glyphmap (cache) */ nuclear@0: struct dtx_glyphmap *last_gmap; nuclear@0: }; nuclear@0: nuclear@0: nuclear@0: #define fperror(str) \ nuclear@0: fprintf(stderr, "%s: %s: %s\n", __func__, (str), strerror(errno)) nuclear@0: nuclear@0: #endif /* TEXT_IMPL_H_ */