ref: 94443daf8e248e65afc8d3f17f26efea22748b51
dir: /module/freetype.m/
Freetype: module {
PATH: con "$Freetype";
Matrix: adt {
a, b: int; # 16.16 fixed-point coefficients
c, d: int;
};
Vector: adt {
dx: int; # 26.6 fixed-point deltas
dy: int;
};
STYLE_ITALIC,
STYLE_BOLD: con 1 << iota;
Face: adt {
nfaces: int;
index: int;
style: int; # STYLE_xxx
height: int;
ascent: int;
familyname: string;
stylename: string;
# pts - point size as a 26.6 fixed-point value
setcharsize: fn(face: self ref Face, pts, hdpi, vdpi: int): string;
settransform: fn(face: self ref Face, m: ref Matrix, v: ref Vector): string;
haschar: fn(face: self ref Face, c: int): int;
loadglyph: fn(face: self ref Face, c: int): ref Glyph;
};
Glyph: adt {
top: int;
left: int;
height: int;
width: int;
advance: Draw->Point; # 26.6 fixed-point
bitmap: array of byte; # (width*height) 8-bit greyscale
};
newface: fn(path: string, index: int): ref Face;
newmemface: fn(data: array of byte, index: int): ref Face;
};