summaryrefslogtreecommitdiff
path: root/module/freetype.m
diff options
context:
space:
mode:
Diffstat (limited to 'module/freetype.m')
-rw-r--r--module/freetype.m44
1 files changed, 44 insertions, 0 deletions
diff --git a/module/freetype.m b/module/freetype.m
new file mode 100644
index 00000000..ce4d5c4b
--- /dev/null
+++ b/module/freetype.m
@@ -0,0 +1,44 @@
+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;
+};