Modified interface texture font support, which should work nicely with the freshly...
[blender.git] / source / blender / ftfont / intern / FTF_Api.cpp
1 /**
2  * $Id$
3  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version. The Blender
9  * Foundation also sells licenses for use in proprietary software under
10  * the Blender License.  See http://www.blender.org/BL/ for information
11  * about this.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  *
22  * Copyright (C) 2002 Blender Foundation. All Rights Reserved.
23  *
24  * The Original Code is: all of this file.
25  *
26  * Contributor(s): none yet.
27  *
28  * ***** END GPL/BL DUAL LICENSE BLOCK *****
29  */
30
31 /**
32
33  * $Id$
34  * Copyright (C) 2001 NaN Technologies B.V.
35  *
36  * Implementation of the API of FTGL library.
37  */
38
39 #ifdef HAVE_CONFIG_H
40 #include <config.h>
41 #endif
42
43 #include "../FTF_Api.h"
44 #include "FTF_TTFont.h"
45
46 #define FTF_EXPORT
47
48 static FTF_TTFont *_FTF_GetFont(void) { 
49         static FTF_TTFont *theFont = NULL; 
50         
51         if (!theFont) { 
52                 theFont = new FTF_TTFont(); 
53         } 
54         
55         return theFont; 
56 }
57
58 FTF_EXPORT void FTF_End(void) { 
59         delete _FTF_GetFont(); 
60 }
61
62 FTF_EXPORT void FTF_SetSize(int size)
63 {
64         _FTF_GetFont()->SetSize(size);
65 }
66
67 FTF_EXPORT int FTF_GetSize(void)
68 {
69         return _FTF_GetFont()->GetSize();
70 }
71
72 /*
73 FTF_EXPORT int FTF_Ascender(void)
74 {
75         return _FTF_GetFont()->Ascender();
76 }
77
78 FTF_EXPORT int FTF_Descender(void)
79 {
80         return _FTF_GetFont()->Descender();
81 }
82 */
83
84 FTF_EXPORT void FTF_TransConvString(char* str, char* ustr, unsigned int flag)
85 {
86         _FTF_GetFont()->TransConvString(str, ustr, flag);
87 }
88
89 /*
90 FTF_EXPORT float FTF_DrawCharacter(char c, unsigned int flag)
91 {
92         char str[2] = {c, '\0'};
93         return FTF_DrawString(str, flag);
94 }
95 */
96
97
98 /* does color too, using glGet */
99 FTF_EXPORT float FTF_DrawString(char* str, unsigned int flag)
100 {
101         return _FTF_GetFont()->DrawString(str, flag);
102 }
103
104
105 /**
106   * not implemente yet.
107   */
108 FTF_EXPORT float FTF_GetCharacterWidth(char c, unsigned int flag)
109 {
110   char str[2] = {c, '\0'};
111   return FTF_GetStringWidth(str, flag);
112 }
113
114
115 /**
116   * not implemente yet.
117   */
118 FTF_EXPORT float FTF_GetStringWidth(char* str, unsigned int flag)
119 {
120   return _FTF_GetFont()->GetStringWidth(str, flag);
121 }
122
123
124 /**
125   * not implemente yet.
126   * ## This return string box!! ##
127   */
128 FTF_EXPORT void FTF_GetBoundingBox(char* str, float *llx, float *lly, float *llz, float *urx, float *ury, float *urz, unsigned int flag)
129 {
130   _FTF_GetFont()->GetBoundingBox(str, llx, lly, llz, urx, ury, urz, flag);
131 }
132
133 /**
134   * added by phase
135   * changed by ton; to allow both file load as memory load (datasize!=0)
136   */
137 FTF_EXPORT int FTF_SetFont(const unsigned char* str, int datasize, int fontsize)
138 {
139   return _FTF_GetFont()->SetFont(str, datasize, fontsize);
140 }
141
142 /* added by ton */
143
144 FTF_EXPORT void FTF_SetFontSize(char size)
145 {
146   _FTF_GetFont()->SetFontSize( size);
147 }
148
149 /**
150   * added by phase
151   *
152   */
153 FTF_EXPORT void FTF_SetLanguage(char* str)
154 {
155   _FTF_GetFont()->SetLanguage(str);
156 }
157
158 FTF_EXPORT void FTF_SetEncoding(char* str)
159 {
160   _FTF_GetFont()->SetEncoding(str);
161 }
162
163 FTF_EXPORT void FTF_SetPosition(float x, float y)
164 {
165   _FTF_GetFont()->SetPosition(x, y);
166 }
167
168 FTF_EXPORT void FTF_SetMode(int mode)
169 {
170   _FTF_GetFont()->SetMode(mode);
171 }
172
173 FTF_EXPORT void FTF_SetScale(float fsize)
174 {
175   _FTF_GetFont()->SetScale(fsize);
176 }