X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela_ttf.lisp;h=3cb84932e975b4303fcd72dbb52cd85e69897eff;hb=4fe9bd9e78b0e3cee1133da2abcb05bc98322b31;hp=6fbe4e58c958bcffc2d9b692403455cc6760ae16;hpb=90f83164ea36dae4c0f3370f8ebbf7e30fe83297;p=gacela.git diff --git a/gacela_ttf.lisp b/gacela_ttf.lisp index 6fbe4e5..3cb8493 100644 --- a/gacela_ttf.lisp +++ b/gacela_ttf.lisp @@ -16,19 +16,23 @@ (in-package :gacela) -(defun open-font (font-file &key (size 80) (encoding ft_encoding_unicode) static) +(defun load-font (font-file &key (size 80) (encoding ft_encoding_unicode) static) (let ((key (make-resource-font :filename font-file :size size :encoding encoding))) (cond ((get-resource key) key) - (t - (let ((font (ftglCreateTextureFont font-file))) - (cond ((/= font 0) - (ftglSetFontFaceSize font size 72) - (ftglSetFontCharMap font encoding) - (set-resource key - `(:id-font ,font) - (lambda () (ftglDestroyFont font)) - :static static) - key))))))) + (t (true-load-font font-file size encoding static))))) + +(defun true-load-font (font-file size encoding static) + (let ((key (make-resource-font :filename font-file :size size :encoding encoding)) + (font (ftglCreateTextureFont font-file))) + (cond ((/= font 0) + (ftglSetFontFaceSize font size 72) + (ftglSetFontCharMap font encoding) + (set-resource key + `(:id-font ,font) + (lambda () (true-load-font font-file size encoding static)) + (lambda () (ftglDestroyFont font)) + :static static) + key)))) (defun render-text (text font) - (ftglRenderFont (getf font :id-font) text FTGL_RENDER_ALL)) + (ftglRenderFont (getf (get-resource font) :id-font) text FTGL_RENDER_ALL))