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 ).