From fc2584672c096ae63469cce9ede9abaa4a95ece7 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sun, 16 Feb 2014 10:44:24 -0500 Subject: Rewrite font module. FTGL has been dropped in favor of SDL_ttf. * 2d/font: Rewrite everything! * 2d/wrappers/ftgl.scm: Delete it. * configure.ac: Check for SDL_ttf. * data/Makefile.am (shaders_DATA): Add font shaders. * data/shaders/font-fragment.glsl: New shader. * data/shaders/font-vertex.glsl: New shader. * examples/font.scm: Rewrite font example. * examples/fonts/AUTHORS: Delete it. * examples/fonts/Boxy-Bold.ttf: Delete it. --- 2d/wrappers/ftgl.scm | 204 --------------------------------------------------- 1 file changed, 204 deletions(-) delete mode 100644 2d/wrappers/ftgl.scm (limited to '2d/wrappers/ftgl.scm') diff --git a/2d/wrappers/ftgl.scm b/2d/wrappers/ftgl.scm deleted file mode 100644 index 1ff42d7..0000000 --- a/2d/wrappers/ftgl.scm +++ /dev/null @@ -1,204 +0,0 @@ -;;; guile-2d -;;; Copyright (C) 2013 David Thompson -;;; -;;; 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 -;;; . - -;;; Commentary: -;; -;; Quick and dirty wrapper for the FTGL library. -;; -;;; Code: - -(define-module (2d wrappers ftgl) - #:use-module (system foreign) - #:use-module (2d wrappers util) - #:use-module (ice-9 format)) - -(define libftgl (dynamic-link "libftgl")) - -(define-syntax-rule (define-foreign name ret string-name args) - (define name - (pointer->procedure ret (dynamic-func string-name libftgl) args))) - -;;; -;;; Enums -;;; - -(define-enumeration ftgl-render-mode - (front #x0001) - (back #x0002) - (side #x0004) - (all #xffff)) - -(define-enumeration ftgl-text-alignment - (left 0) - (center 1) - (right 2) - (justify 3)) - -(export ftgl-render-mode - ftgl-text-alignment) - -;;; -;;; Fonts -;;; - -(define-wrapped-pointer-type - ftgl-font? - wrap-ftgl-font unwrap-ftgl-font - (lambda (r port) - (let ((font (unwrap-ftgl-font r))) - (format port - "" - (pointer-address font))))) - -(define-foreign %ftgl-create-texture-font - '* "ftglCreateTextureFont" '(*)) - -(define-foreign %ftgl-set-font-face-size - void "ftglSetFontFaceSize" (list '* unsigned-int unsigned-int)) - -(define-foreign %ftgl-render-font - void "ftglRenderFont" (list '* '* unsigned-int)) - -(define-foreign %ftgl-get-font-descender - float "ftglGetFontDescender" '(*)) - -(define-foreign %ftgl-get-font-ascender - float "ftglGetFontAscender" '(*)) - -(define (ftgl-create-texture-font filename) - (unless (file-exists? filename) - (throw 'font-not-found filename)) - (let ((font (%ftgl-create-texture-font (string->pointer filename)))) - (when (null-pointer? font) - (throw 'font-load-failure filename)) - (wrap-ftgl-font font))) - -(define (ftgl-set-font-face-size font size res) - (%ftgl-set-font-face-size (unwrap-ftgl-font font) size res)) - -(define (ftgl-render-font font text render-mode) - (%ftgl-render-font (unwrap-ftgl-font font) - (string->pointer text) - render-mode)) - -(define (ftgl-get-font-descender font) - (%ftgl-get-font-descender (unwrap-ftgl-font font))) - -(define (ftgl-get-font-ascender font) - (%ftgl-get-font-ascender (unwrap-ftgl-font font))) - -(export ftgl-create-texture-font - ftgl-set-font-face-size - ftgl-render-font - ftgl-get-font-descender - ftgl-get-font-ascender) - -;;; -;;; SimpleLayout -;;; - -(define-wrapped-pointer-type - ftgl-simple-layout? - wrap-ftgl-simple-layout unwrap-ftgl-simple-layout - (lambda (r port) - (let ((simple-layout (unwrap-ftgl-simple-layout r))) - (format port - "" - (pointer-address simple-layout))))) - -(define-foreign %ftgl-create-simple-layout - '* "ftglCreateSimpleLayout" '()) - -(define-foreign %ftgl-destroy-layout - void "ftglDestroyLayout" '(*)) - -(define-foreign %ftgl-set-layout-font - void "ftglSetLayoutFont" '(* *)) - -(define-foreign %ftgl-get-layout-font - '* "ftglGetLayoutFont" '(*)) - -(define-foreign %ftgl-set-layout-line-length - void "ftglSetLayoutLineLength" (list '* float)) - -(define-foreign %ftgl-get-layout-line-length - float "ftglGetLayoutLineLength" '(*)) - -(define-foreign %ftgl-set-layout-alignment - void "ftglSetLayoutAlignment" (list '* int)) - -(define-foreign %ftgl-get-layout-alignment - int "ftglGetLayoutAlignement" '(*)) - -(define-foreign %ftgl-set-layout-line-spacing - void "ftglSetLayoutLineSpacing" (list '* float)) - -;; For some reason this symbol is not found. -;; (define-foreign %ftgl-get-layout-line-spacing -;; float "ftglGetLayoutLineSpacing" '(*)) - -(define-foreign %ftgl-render-layout - void "ftglRenderLayout" (list '* '* int)) - -(define (ftgl-create-layout) - (wrap-ftgl-simple-layout - (%ftgl-create-simple-layout))) - -(define (ftgl-destroy-layout layout) - (%ftgl-destroy-layout (unwrap-ftgl-simple-layout layout))) - -(define (ftgl-set-layout-font layout font) - (%ftgl-set-layout-font (unwrap-ftgl-simple-layout layout) - (unwrap-ftgl-font font))) - -(define (ftgl-get-layout-font layout) - (wrap-ftgl-font - (%ftgl-get-layout-font (unwrap-ftgl-simple-layout layout)))) - -(define (ftgl-set-layout-line-length layout line-length) - (%ftgl-set-layout-line-length (unwrap-ftgl-simple-layout layout) - line-length)) - -(define (ftgl-get-layout-line-length layout) - (%ftgl-get-layout-line-length (unwrap-ftgl-simple-layout layout))) - -(define (ftgl-set-layout-alignment layout alignment) - (%ftgl-set-layout-alignment (unwrap-ftgl-simple-layout layout) - alignment)) - -(define (ftgl-get-layout-alignment layout) - (%ftgl-get-layout-alignment (unwrap-ftgl-simple-layout layout))) - -(define (ftgl-set-layout-line-spacing layout spacing) - (%ftgl-set-layout-line-spacing (unwrap-ftgl-simple-layout layout) - spacing)) - -(define (ftgl-render-layout layout text mode) - (%ftgl-render-layout (unwrap-ftgl-simple-layout layout) - (string->pointer text) - mode)) - -(export ftgl-create-layout - ftgl-destroy-layout - ftgl-set-layout-font - ftgl-get-layout-font - ftgl-set-layout-line-length - ftgl-get-layout-line-length - ftgl-set-layout-alignment - ftgl-get-layout-alignment - ftgl-set-layout-line-spacing - ftgl-render-layout) -- cgit v1.2.3