Artifact
5899dab62843ee15d82b97dcc952a5cf0b7ff6e3:
- File
sdl2/ttf.sls
— part of check-in
[31b4446932]
at
2018-01-08 17:10:49
on branch trunk
— Initial SDL_ttf support
(user:
ovenpasta@users.noreply.github.com
size: 1906)
0000: 23 21 72 36 72 73 0a 0a 28 6c 69 62 72 61 72 79 #!r6rs..(library
0010: 0a 20 20 20 20 28 73 64 6c 32 20 74 74 66 29 0a . (sdl2 ttf).
0020: 20 20 28 65 78 70 6f 72 74 0a 20 20 20 3b 3b 3b (export. ;;;
0030: 69 6e 69 74 0a 20 20 20 74 74 66 2d 69 6e 69 74 init. ttf-init
0040: 0a 20 20 20 74 74 66 2d 77 61 73 2d 69 6e 69 74 . ttf-was-init
0050: 0a 20 20 20 74 74 66 2d 71 75 69 74 0a 0a 20 20 . ttf-quit..
0060: 20 3b 3b 3b 69 6e 66 6f 0a 20 20 20 74 74 66 2d ;;;info. ttf-
0070: 6c 69 6e 6b 65 64 2d 76 65 72 73 69 6f 6e 0a 0a linked-version..
0080: 20 20 20 3b 3b 3b 6c 6f 61 64 69 6e 67 0a 20 20 ;;;loading.
0090: 20 74 74 66 2d 6f 70 65 6e 2d 66 6f 6e 74 0a 20 ttf-open-font.
00a0: 20 20 74 74 66 2d 6f 70 65 6e 2d 66 6f 6e 74 2d ttf-open-font-
00b0: 72 77 0a 20 20 20 74 74 66 2d 6f 70 65 6e 2d 66 rw. ttf-open-f
00c0: 6f 6e 74 2d 69 6e 64 65 78 0a 20 20 20 74 74 66 ont-index. ttf
00d0: 2d 6f 70 65 6e 2d 66 6f 6e 74 2d 69 6e 64 65 78 -open-font-index
00e0: 2d 72 77 0a 0a 20 20 20 3b 3b 3b 66 72 65 65 69 -rw.. ;;;freei
00f0: 6e 67 0a 20 20 20 74 74 66 2d 63 6c 6f 73 65 2d ng. ttf-close-
0100: 66 6f 6e 74 0a 0a 20 20 20 3b 3b 3b 67 6c 6f 62 font.. ;;;glob
0110: 61 6c 20 61 74 74 72 69 62 75 74 65 73 0a 20 20 al attributes.
0120: 20 74 74 66 2d 62 79 74 65 2d 73 77 61 70 70 65 ttf-byte-swappe
0130: 64 2d 75 6e 69 63 6f 64 65 0a 0a 20 20 20 3b 3b d-unicode.. ;;
0140: 3b 66 6f 6e 74 20 73 74 79 6c 65 0a 20 20 20 74 ;font style. t
0150: 74 66 2d 67 65 74 2d 66 6f 6e 74 2d 73 74 79 6c tf-get-font-styl
0160: 65 0a 20 20 20 74 74 66 2d 73 65 74 2d 66 6f 6e e. ttf-set-fon
0170: 74 2d 73 74 79 6c 65 0a 20 20 20 74 74 66 2d 67 t-style. ttf-g
0180: 65 74 2d 66 6f 6e 74 2d 6f 75 74 6c 69 6e 65 0a et-font-outline.
0190: 20 20 20 74 74 66 2d 73 65 74 2d 66 6f 6e 74 2d ttf-set-font-
01a0: 6f 75 74 6c 69 6e 65 0a 0a 20 20 20 3b 3b 3b 66 outline.. ;;;f
01b0: 6f 6e 74 20 73 65 74 74 69 6e 67 73 0a 20 20 20 ont settings.
01c0: 74 74 66 2d 67 65 74 2d 66 6f 6e 74 2d 68 69 6e ttf-get-font-hin
01d0: 74 69 6e 67 0a 20 20 20 74 74 66 2d 73 65 74 2d ting. ttf-set-
01e0: 66 6f 6e 74 2d 68 69 6e 74 69 6e 67 0a 20 20 20 font-hinting.
01f0: 74 74 66 2d 67 65 74 2d 66 6f 6e 74 2d 6b 65 72 ttf-get-font-ker
0200: 6e 69 6e 67 0a 20 20 20 74 74 66 2d 73 65 74 2d ning. ttf-set-
0210: 66 6f 6e 74 2d 6b 65 72 6e 69 6e 67 0a 0a 20 20 font-kerning..
0220: 20 3b 3b 3b 66 6f 6e 74 20 6d 65 74 72 69 63 73 ;;;font metrics
0230: 0a 20 20 20 74 74 66 2d 66 6f 6e 74 2d 68 65 69 . ttf-font-hei
0240: 67 68 74 0a 20 20 20 74 74 66 2d 66 6f 6e 74 2d ght. ttf-font-
0250: 61 73 63 65 6e 74 0a 20 20 20 74 74 66 2d 66 6f ascent. ttf-fo
0260: 6e 74 2d 64 65 73 63 65 6e 74 0a 20 20 20 74 74 nt-descent. tt
0270: 66 2d 66 6f 6e 74 2d 6c 69 6e 65 2d 73 6b 69 70 f-font-line-skip
0280: 0a 0a 20 20 20 3b 3b 3b 66 6f 6e 74 20 61 74 74 .. ;;;font att
0290: 72 69 62 75 74 65 73 0a 20 20 20 74 74 66 2d 66 ributes. ttf-f
02a0: 6f 6e 74 2d 66 61 63 65 73 0a 20 20 20 74 74 66 ont-faces. ttf
02b0: 2d 66 6f 6e 74 2d 66 61 63 65 2d 69 73 2d 66 69 -font-face-is-fi
02c0: 78 65 64 2d 77 69 64 74 68 0a 20 20 20 74 74 66 xed-width. ttf
02d0: 2d 66 6f 6e 74 2d 66 61 63 65 2d 66 61 6d 69 6c -font-face-famil
02e0: 79 2d 6e 61 6d 65 0a 20 20 20 74 74 66 2d 66 6f y-name. ttf-fo
02f0: 6e 74 2d 66 61 63 65 2d 73 74 79 6c 65 2d 6e 61 nt-face-style-na
0300: 6d 65 0a 0a 20 20 20 3b 3b 3b 67 6c 79 70 68 73 me.. ;;;glyphs
0310: 0a 20 20 20 74 74 66 2d 67 6c 79 70 68 2d 69 73 . ttf-glyph-is
0320: 2d 70 72 6f 76 69 64 65 64 0a 20 20 20 74 74 66 -provided. ttf
0330: 2d 67 6c 79 70 68 2d 6d 65 74 72 69 63 73 0a 0a -glyph-metrics..
0340: 20 20 20 3b 3b 3b 74 65 78 74 20 6d 65 74 72 69 ;;;text metri
0350: 63 73 0a 20 20 20 74 74 66 2d 73 69 7a 65 2d 74 cs. ttf-size-t
0360: 65 78 74 0a 20 20 20 74 74 66 2d 73 69 7a 65 2d ext. ttf-size-
0370: 75 74 2d 66 38 0a 20 20 20 74 74 66 2d 73 69 7a ut-f8. ttf-siz
0380: 65 2d 75 6e 69 63 6f 64 65 0a 0a 20 20 20 3b 3b e-unicode.. ;;
0390: 3b 72 65 6e 64 65 72 20 73 6f 6c 69 64 0a 20 20 ;render solid.
03a0: 20 73 74 74 66 2d 72 65 6e 64 65 72 2d 74 65 78 sttf-render-tex
03b0: 74 2d 73 6f 6c 69 64 0a 20 20 20 73 74 74 66 2d t-solid. sttf-
03c0: 72 65 6e 64 65 72 2d 75 74 2d 66 38 2d 73 6f 6c render-ut-f8-sol
03d0: 69 64 0a 20 20 20 73 74 74 66 2d 72 65 6e 64 65 id. sttf-rende
03e0: 72 2d 75 6e 69 63 6f 64 65 2d 73 6f 6c 69 64 0a r-unicode-solid.
03f0: 20 20 20 73 74 74 66 2d 72 65 6e 64 65 72 2d 67 sttf-render-g
0400: 6c 79 70 68 2d 73 6f 6c 69 64 0a 0a 20 20 20 3b lyph-solid.. ;
0410: 3b 3b 72 65 6e 64 65 72 20 73 68 61 64 65 64 0a ;;render shaded.
0420: 20 20 20 73 74 74 66 2d 72 65 6e 64 65 72 2d 74 sttf-render-t
0430: 65 78 74 2d 73 68 61 64 65 64 0a 20 20 20 73 74 ext-shaded. st
0440: 74 66 2d 72 65 6e 64 65 72 2d 75 74 2d 66 38 2d tf-render-ut-f8-
0450: 73 68 61 64 65 64 0a 20 20 20 73 74 74 66 2d 72 shaded. sttf-r
0460: 65 6e 64 65 72 2d 75 6e 69 63 6f 64 65 2d 73 68 ender-unicode-sh
0470: 61 64 65 64 0a 20 20 20 73 74 74 66 2d 72 65 6e aded. sttf-ren
0480: 64 65 72 2d 67 6c 79 70 68 2d 73 68 61 64 65 64 der-glyph-shaded
0490: 0a 0a 20 20 20 3b 3b 3b 72 65 6e 64 65 72 20 62 .. ;;;render b
04a0: 6c 65 6e 64 65 64 0a 20 20 20 73 74 74 66 2d 72 lended. sttf-r
04b0: 65 6e 64 65 72 2d 74 65 78 74 2d 62 6c 65 6e 64 ender-text-blend
04c0: 65 64 0a 20 20 20 73 74 74 66 2d 72 65 6e 64 65 ed. sttf-rende
04d0: 72 2d 75 74 2d 66 38 2d 62 6c 65 6e 64 65 64 0a r-ut-f8-blended.
04e0: 20 20 20 73 74 74 66 2d 72 65 6e 64 65 72 2d 75 sttf-render-u
04f0: 6e 69 63 6f 64 65 2d 62 6c 65 6e 64 65 64 0a 20 nicode-blended.
0500: 20 20 73 74 74 66 2d 72 65 6e 64 65 72 2d 67 6c sttf-render-gl
0510: 79 70 68 2d 62 6c 65 6e 64 65 64 0a 0a 20 20 20 yph-blended..
0520: 3b 3b 3b 6c 69 62 72 61 72 79 20 69 6e 69 74 0a ;;;library init.
0530: 20 20 20 73 64 6c 2d 74 74 66 2d 6c 69 62 72 61 sdl-ttf-libra
0540: 72 79 2d 69 6e 69 74 0a 20 20 20 73 64 6c 2d 73 ry-init. sdl-s
0550: 68 69 6d 2d 74 74 66 2d 69 6e 69 74 20 29 0a 20 him-ttf-init ).
0560: 20 0a 20 20 28 69 6d 70 6f 72 74 20 28 63 68 65 . (import (che
0570: 7a 73 63 68 65 6d 65 29 20 0a 09 20 20 28 66 66 zscheme) .. (ff
0580: 69 2d 75 74 69 6c 73 29 0a 09 20 20 28 73 64 6c i-utils).. (sdl
0590: 32 29 0a 09 20 20 28 6f 6e 6c 79 20 28 73 72 66 2).. (only (srf
05a0: 69 20 73 31 20 6c 69 73 74 73 29 20 66 6f 6c 64 i s1 lists) fold
05b0: 29 0a 09 20 20 28 6f 6e 6c 79 20 28 74 68 75 6e ).. (only (thun
05c0: 64 65 72 2d 75 74 69 6c 73 29 20 73 74 72 69 6e der-utils) strin
05d0: 67 2d 72 65 70 6c 61 63 65 20 73 74 72 69 6e 67 g-replace string
05e0: 2d 73 70 6c 69 74 29 20 0a 09 20 20 28 6f 6e 6c -split) .. (onl
05f0: 79 20 28 73 72 66 69 20 73 31 33 20 73 74 72 69 y (srfi s13 stri
0600: 6e 67 73 29 20 73 74 72 69 6e 67 2d 64 65 6c 65 ngs) string-dele
0610: 74 65 20 73 74 72 69 6e 67 2d 73 75 66 66 69 78 te string-suffix
0620: 3f 20 73 74 72 69 6e 67 2d 70 72 65 66 69 78 3f ? string-prefix?
0630: 29 0a 09 20 20 28 73 72 66 69 20 73 31 34 20 63 ).. (srfi s14 c
0640: 68 61 72 2d 73 65 74 73 29 29 0a 20 20 0a 20 20 har-sets)). .
0650: 28 69 6e 63 6c 75 64 65 20 22 74 74 66 2d 74 79 (include "ttf-ty
0660: 70 65 73 2e 73 73 22 29 0a 20 20 28 69 6e 63 6c pes.ss"). (incl
0670: 75 64 65 20 22 74 74 66 2d 73 68 69 6d 2d 66 75 ude "ttf-shim-fu
0680: 6e 63 74 69 6f 6e 73 2e 73 73 22 29 0a 20 20 28 nctions.ss"). (
0690: 69 6e 63 6c 75 64 65 20 22 74 74 66 2d 66 75 6e include "ttf-fun
06a0: 63 74 69 6f 6e 73 2e 73 73 22 29 0a 0a 20 20 28 ctions.ss").. (
06b0: 64 65 66 69 6e 65 20 28 73 64 6c 2d 74 74 66 2d define (sdl-ttf-
06c0: 6c 69 62 72 61 72 79 2d 69 6e 69 74 20 2e 20 6c library-init . l
06d0: 29 0a 20 20 20 20 28 6c 6f 61 64 2d 73 68 61 72 ). (load-shar
06e0: 65 64 2d 6f 62 6a 65 63 74 20 28 69 66 20 28 6e ed-object (if (n
06f0: 75 6c 6c 3f 20 6c 29 20 22 6c 69 62 53 44 4c 32 ull? l) "libSDL2
0700: 5f 74 74 66 2e 73 6f 22 20 6c 29 29 29 0a 20 20 _ttf.so" l))).
0710: 28 64 65 66 69 6e 65 20 28 73 64 6c 2d 73 68 69 (define (sdl-shi
0720: 6d 2d 74 74 66 2d 69 6e 69 74 20 2e 20 6c 29 0a m-ttf-init . l).
0730: 20 20 20 20 28 6c 6f 61 64 2d 73 68 61 72 65 64 (load-shared
0740: 2d 6f 62 6a 65 63 74 20 28 69 66 20 28 6e 75 6c -object (if (nul
0750: 6c 3f 20 6c 29 20 22 74 74 66 2d 73 68 69 6d 2f l? l) "ttf-shim/
0760: 74 74 66 73 68 69 6d 2e 73 6f 22 20 6c 29 29 29 ttfshim.so" l)))
0770: 29 0a ).