diff options
author | David Thompson <dthompson@member.fsf.org> | 2013-08-17 23:27:39 -0400 |
---|---|---|
committer | David Thompson <dthompson@member.fsf.org> | 2013-08-17 23:27:39 -0400 |
commit | 94d2259dda50adec350b80931d2afdcb72156fc5 (patch) | |
tree | 482066da3f6e75dafcd9ec161dc7bf2901742737 | |
parent | 075dbfca506afcc8de2b48b47bcc8b47423cdbab (diff) |
Create basic font module.
-rw-r--r-- | 2d/font.scm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/2d/font.scm b/2d/font.scm new file mode 100644 index 0000000..f65e08a --- /dev/null +++ b/2d/font.scm @@ -0,0 +1,54 @@ +;;; guile-2d +;;; Copyright (C) 2013 David Thompson <dthompson2@worcester.edu> +;;; +;;; Guile-2d is free software: you can redistribute it and/or modify it +;;; under the terms of the GNU Lesser General Public License as +;;; published by the Free Software Foundation, either version 3 of the +;;; License, or (at your option) any later version. +;;; +;;; Guile-2d is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with this program. If not, see +;;; <http://www.gnu.org/licenses/>. + +;;; Commentary: +;; +;; Font rendering. +;; +;;; Code: + +(define-module (2d font) + #:use-module (figl gl) + #:use-module (srfi srfi-9) + #:use-module (system foreign) + #:use-module (2d wrappers ftgl) + #:export (<font> + make-font + font? + font-ftgl-font + font-size + load-font + render-font)) + +;; Font objects represent an FTGL texture font at a given size. +(define-record-type <font> + (make-font ftgl-font size) + font? + (ftgl-font font-ftgl-font) + (size font-size)) + +(define (load-font filename size) + (let ((ftgl-font (ftgl-create-texture-font filename))) + ;; Hardcoded 72 dpi for now. + (ftgl-set-font-face-size ftgl-font size 72) + (make-font ftgl-font size))) + +(define (render-font font text color alignment) + (gl-color 1 1 1) + (ftgl-render-font (font-ftgl-font font) + text + (ftgl-render-mode all))) |