|
OpenCPN Partial API docs
|
Scalable Screen Font renderer in a single ANSI C/C++ header. More...
Go to the source code of this file.
Classes | |
| struct | ssfn_font_t |
| struct | ssfn_glyph_t |
| struct | ssfn_t |
Macros | |
| #define | SSFN_MAGIC "SSFN" |
| #define | SSFN_COLLECTION "SFNC" |
| #define | SSFN_ENDMAGIC "NFSS" |
| #define | SSFN_FAMILY_SERIF 0 |
| #define | SSFN_FAMILY_SANS 1 |
| #define | SSFN_FAMILY_DECOR 2 |
| #define | SSFN_FAMILY_MONOSPACE 3 |
| #define | SSFN_FAMILY_HAND 4 |
| #define | SSFN_STYLE_REGULAR 0 |
| #define | SSFN_STYLE_BOLD 1 |
| #define | SSFN_STYLE_ITALIC 2 |
| #define | SSFN_FEAT_HASBMAP 1 /* there's at least one bitmap fragment */ |
| #define | SSFN_FEAT_HASCMAP |
| #define | SSFN_FEAT_HASHINT 4 /* there's at least one hinting fragment */ |
| #define | SSFN_FEAT_KBIGLKP 8 /* big offsets in kerning look up table */ |
| #define | SSFN_FEAT_KBIGCHR 16 /* big characters in kerning look up tables */ |
| #define | SSFN_FEAT_KBIGCRD 32 /* big coordinates in kerning groups */ |
| #define | SSFN_FEAT_HBIGCRD 64 /* bit coordinates in autohinting fragments */ |
| #define | SSFN_CONTOUR_MOVE 0 |
| #define | SSFN_CONTOUR_LINE 1 |
| #define | SSFN_CONTOUR_QUAD 2 |
| #define | SSFN_CONTOUR_CUBIC 3 |
| #define | SSFN_CONTOUR_COLOR 4 |
| #define | SSFN_FRAG_BITMAP 0 |
| #define | SSFN_FRAG_LBITMAP 1 |
| #define | SSFN_FRAG_PIXMAP 2 |
| #define | SSFN_FRAG_HINTING 3 |
| #define | SSFN_VARIANT_DEFAULT 0 /* default, also isolated glyphs */ |
| #define | SSFN_VARIANT_LOCAL0 0 |
| #define | SSFN_VARIANT_INITIAL |
| #define | SSFN_VARIANT_LOCAL1 1 /* so its only purpose is to store Serbian / Macedonian B D G P T */ |
| #define | SSFN_VARIANT_MEDIAL 2 |
| #define | SSFN_VARIANT_LOCAL2 2 |
| #define | SSFN_VARIANT_FINAL 3 |
| #define | SSFN_VARIANT_LOCAL3 3 |
| #define | SSFN_VARIANT_LOCAL4 4 |
| #define | SSFN_VARIANT_LOCAL5 5 |
| #define | SSFN_VARIANT_LOCAL6 6 |
| #define | SSFN_NUMVARIANTS 7 |
| #define | SSFN_FAMILY_ANY 0xff /* select the first loaded font */ |
| #define | SSFN_FAMILY_BYNAME 0xfe /* select font by its unique name */ |
| #define | SSFN_STYLE_UNDERLINE 4 /* under line glyph */ |
| #define | SSFN_STYLE_STHROUGH 8 /* strike through glyph */ |
| #define | SSFN_STYLE_NOHINTING 0x40 /* no auto hinting grid */ |
| #define | SSFN_STYLE_ABS_SIZE 0x80 /* use absolute size value */ |
| #define | SSFN_FRAG_CONTOUR 255 |
| #define | SSFN_OK 0 /* success */ |
| #define | SSFN_ERR_ALLOC 1 /* allocation error */ |
| #define | SSFN_ERR_NOFACE 2 /* no font face selected */ |
| #define | SSFN_ERR_INVINP 3 /* invalid input */ |
| #define | SSFN_ERR_BADFILE 4 /* bad SSFN file format */ |
| #define | SSFN_ERR_BADSTYLE 5 /* bad style */ |
| #define | SSFN_ERR_BADSIZE 6 /* bad size */ |
| #define | SSFN_ERR_BADMODE 7 /* bad mode */ |
| #define | SSFN_ERR_NOGLYPH 8 /* glyph (or kerning info) not found */ |
| #define | SSFN_ERR_NOVARIANT 9 /* no such glyph variant */ |
| #define | SSFN_MODE_NONE 0 /* just select the font to get the glyph (for kerning) */ |
| #define | SSFN_MODE_OUTLINE 1 /* return the glyph's outlines */ |
| #define | SSFN_MODE_BITMAP 2 /* render into bitmap */ |
| #define | SSFN_MODE_ALPHA 3 /* render into alpha channel */ |
| #define | SSFN_MODE_CMAP 4 /* render into color map indexed buffer */ |
| #define | SSFN_HINTING_THRESHOLD 16 /* don't change unless you really know what you're doing */ |
| #define | SSFN_DATA_MAX 65536 |
| #define | ssfn_lasterr(ctx) ((ssfn_t *)ctx)->err /* return last error code */ |
| #define | ssfn_error(err) |
| #define | NULL (void *)0 |
| #define | ssfn_private |
| #define | SSFN_memcmp memcmp |
| #define | SSFN_memset memset |
| #define | SSFN_realloc realloc |
| #define | SSFN_free free |
| #define | _ssfn_i2g(x) ((x) ? (((x) << 16) - (1 << 15)) / ctx->m : 0) |
| #define | _ssfn_g2o(x) (((x) * ctx->m + (1 << 7)) >> 8) |
| #define | _ssfn_g2i(x) (((x) * ctx->m + (1 << 15)) >> 16) |
| #define | _ssfn_g2ic(x) (((x) * ctx->m + (1 << 16) - 1) >> 16) |
| #define | _ssfn_f2i(x) ((((x) << s) * ctx->m + (1 << 15)) >> 16) |
| #define | _ssfn_o2i(x) (((x) + (1 << 7)) >> 8) |
| #define | _ssfn_o2ic(x) ((x + (1 << 8) - 1) >> 8) |
| #define | _ssfn_g2ox(x) ((x) >= (4095 << 4) ? _ssfn_g2o(x) : ctx->h[((x) >> 4)]) |
| #define | _ssfn_g2ix(x) ((x) >= (4095 << 4) ? _ssfn_g2i(x) : _ssfn_o2i(ctx->h[((x) >> 4)])) |
| #define | _ssfn_g2ixc(x) ((x) >= (4095 << 4) ? _ssfn_g2ic(x) : _ssfn_o2ic(ctx->h[((x) >> 4)])) |
| #define | _ssfn_g2oy(y) (_ssfn_g2o(y)) |
| #define | _ssfn_g2iy(y) (_ssfn_g2i(y)) |
| #define | _ssfn_g2iyc(y) (_ssfn_g2ic(y)) |
| #define | _ssfn_igg(y) (((4096 << 4) - (y)) >> (2)) |
| #define | _ssfn_igi(y) ((((4096 << 4) - (y)) * ctx->m + (1 << (15 + 3))) >> (16 + 3)) |
| #define | SSFN_CMAP_TO_ARGB(p, c, fg) (p >= 0xF0 ? (uint32_t)((p << 28) | ((p & 0xF) << 24) | fg) : c[p]) |
| Decode a color map pixel into ARGB. | |
Typedefs | |
| typedef unsigned char | uint8_t |
| typedef unsigned short int | uint16_t |
| typedef unsigned int | uint32_t |
Functions | |
| int | ssfn_load (ssfn_t *ctx, const ssfn_font_t *font) |
| Load a font or font collection into renderer context. | |
| int | ssfn_select (ssfn_t *ctx, int family, char *name, int style, int size, int mode) |
| Set up rendering parameters. | |
| int | ssfn_variant (ssfn_t *ctx, int variant) |
| Set glyph variant. | |
| uint32_t | ssfn_utf8 (char **s) |
| Decode an UTF-8 multibyte, advance string pointer and return UNICODE. | |
| ssfn_glyph_t * | ssfn_render (ssfn_t *ctx, uint32_t unicode) |
| Glyph renderer. | |
| int | ssfn_kern (ssfn_t *ctx, uint32_t unicode, uint32_t nextunicode, int *x, int *y) |
| Return kerning information. | |
| int | ssfn_bbox (ssfn_t *ctx, char *str, int usekern, int *w, int *h) |
| Returns the bounding box of the rendered text. | |
| int | ssfn_mem (ssfn_t *ctx) |
| Returns how much memory a context consumes. | |
| void | ssfn_free (ssfn_t *ctx) |
| Free renderer context. | |
| int | ssfn_putc (uint32_t unicode) |
| ssfn_private uint8_t * | _ssfn_c (const ssfn_font_t *font, uint32_t unicode, int v) |
| ssfn_private void | _ssfn_l (ssfn_t *ctx, int x, int y, int l) |
| void | _ssfn_b (ssfn_t *ctx, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int l) |
| ssfn_private void | _ssfn_r (ssfn_t *ctx) |
| ssfn_private void | _ssfn_a (ssfn_t *ctx) |
| ssfn_private void | _ssfn_g (ssfn_t *ctx, uint8_t *rg, int render) |
Variables | |
| const char * | ssfn_errstr [] |
| Error code strings. | |
Scalable Screen Font renderer in a single ANSI C/C++ header.
Definition in file ssfn.h.
| #define _ssfn_f2i | ( | x | ) | ((((x) << s) * ctx->m + (1 << 15)) >> 16) |
| #define _ssfn_g2ic | ( | x | ) | (((x) * ctx->m + (1 << 16) - 1) >> 16) |
| #define _ssfn_g2ix | ( | x | ) | ((x) >= (4095 << 4) ? _ssfn_g2i(x) : _ssfn_o2i(ctx->h[((x) >> 4)])) |
| #define _ssfn_g2ixc | ( | x | ) | ((x) >= (4095 << 4) ? _ssfn_g2ic(x) : _ssfn_o2ic(ctx->h[((x) >> 4)])) |
| #define _ssfn_g2ox | ( | x | ) | ((x) >= (4095 << 4) ? _ssfn_g2o(x) : ctx->h[((x) >> 4)]) |
| #define _ssfn_i2g | ( | x | ) | ((x) ? (((x) << 16) - (1 << 15)) / ctx->m : 0) |
| #define _ssfn_igi | ( | y | ) | ((((4096 << 4) - (y)) * ctx->m + (1 << (15 + 3))) >> (16 + 3)) |
| #define SSFN_CMAP_TO_ARGB | ( | p, | |
| c, | |||
| fg | |||
| ) | (p >= 0xF0 ? (uint32_t)((p << 28) | ((p & 0xF) << 24) | fg) : c[p]) |
| #define SSFN_ERR_NOGLYPH 8 /* glyph (or kerning info) not found */ |
| #define ssfn_error | ( | err | ) |
| #define SSFN_FAMILY_ANY 0xff /* select the first loaded font */ |
| #define SSFN_FAMILY_BYNAME 0xfe /* select font by its unique name */ |
| #define SSFN_FEAT_HASBMAP 1 /* there's at least one bitmap fragment */ |
| #define SSFN_FEAT_HASCMAP |
| #define SSFN_FEAT_HASHINT 4 /* there's at least one hinting fragment */ |
| #define SSFN_FEAT_HBIGCRD 64 /* bit coordinates in autohinting fragments */ |
| #define SSFN_FEAT_KBIGCHR 16 /* big characters in kerning look up tables */ |
| #define SSFN_FEAT_KBIGCRD 32 /* big coordinates in kerning groups */ |
| #define SSFN_FEAT_KBIGLKP 8 /* big offsets in kerning look up table */ |
| #define SSFN_HINTING_THRESHOLD 16 /* don't change unless you really know what you're doing */ |
| #define ssfn_lasterr | ( | ctx | ) | ((ssfn_t *)ctx)->err /* return last error code */ |
| #define SSFN_MODE_CMAP 4 /* render into color map indexed buffer */ |
| #define SSFN_MODE_NONE 0 /* just select the font to get the glyph (for kerning) */ |
| #define SSFN_MODE_OUTLINE 1 /* return the glyph's outlines */ |
| #define SSFN_STYLE_ABS_SIZE 0x80 /* use absolute size value */ |
| #define SSFN_VARIANT_DEFAULT 0 /* default, also isolated glyphs */ |
| #define SSFN_VARIANT_INITIAL |
| #define SSFN_VARIANT_LOCAL1 1 /* so its only purpose is to store Serbian / Macedonian B D G P T */ |
| void _ssfn_b | ( | ssfn_t * | ctx, |
| int | x0, | ||
| int | y0, | ||
| int | x1, | ||
| int | y1, | ||
| int | x2, | ||
| int | y2, | ||
| int | x3, | ||
| int | y3, | ||
| int | l | ||
| ) |
| ssfn_private uint8_t * _ssfn_c | ( | const ssfn_font_t * | font, |
| uint32_t | unicode, | ||
| int | v | ||
| ) |
| ssfn_private void _ssfn_g | ( | ssfn_t * | ctx, |
| uint8_t * | rg, | ||
| int | render | ||
| ) |
| ssfn_private void _ssfn_l | ( | ssfn_t * | ctx, |
| int | x, | ||
| int | y, | ||
| int | l | ||
| ) |
| int ssfn_bbox | ( | ssfn_t * | ctx, |
| char * | str, | ||
| int | usekern, | ||
| int * | w, | ||
| int * | h | ||
| ) |
Returns the bounding box of the rendered text.
| ctx | rendering context |
| *str | string |
| usekern | use kerning when calculating size |
| *w | pointer to an integer, returned width |
| *h | pointer to an integer, returned height |
| void ssfn_free | ( | ssfn_t * | ctx | ) |
| int ssfn_kern | ( | ssfn_t * | ctx, |
| uint32_t | unicode, | ||
| uint32_t | nextunicode, | ||
| int * | x, | ||
| int * | y | ||
| ) |
| int ssfn_load | ( | ssfn_t * | ctx, |
| const ssfn_font_t * | font | ||
| ) |
| int ssfn_mem | ( | ssfn_t * | ctx | ) |
| ssfn_glyph_t * ssfn_render | ( | ssfn_t * | ctx, |
| uint32_t | unicode | ||
| ) |
| int ssfn_select | ( | ssfn_t * | ctx, |
| int | family, | ||
| char * | name, | ||
| int | style, | ||
| int | size, | ||
| int | mode | ||
| ) |
Set up rendering parameters.
| ctx | rendering context |
| family | one of SSFN_FAMILY_* |
| name | NULL or UTF-8 string if family is SSFN_FAMILY_BYNAME |
| style | OR'd values of SSFN_STYLE_* |
| size | how big glyph it should render, 8 - 255 |
| mode | rendering mode, one of SSFN_MODE_* |
| uint32_t ssfn_utf8 | ( | char ** | s | ) |
| int ssfn_variant | ( | ssfn_t * | ctx, |
| int | variant | ||
| ) |