Modified interface texture font support, which should work nicely with the freshly...
[blender.git] / source / blender / ftfont / intern / FTF_TTFont.h
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
37 #ifndef __FTF_TRUETYPE_FONT_H
38 #define __FTF_TRUETYPE_FONT_H
39
40 #include "FTGLPixmapFont.h"
41 #include "FTGLTextureFont.h"
42
43 #include <stdio.h>
44 //#include <iconv.h>
45
46
47 /**
48  * Base class for Using FTGL, iconv and gettext Library.
49  */
50 class FTF_TTFont
51 {
52 public:
53         /**
54          * Default constructor.
55          */
56         FTF_TTFont(void);
57
58         /**
59          * Destructor.
60          */
61         virtual ~FTF_TTFont(void);
62
63
64         void SetSize(int size);
65         int GetSize(void);
66
67 //      int Ascender(void);
68 //      int Descender(void);
69
70         int TransConvString(char* str, char* ustr, unsigned int flag);
71
72         /**
73          * Draws a string at the current raster position in current opengl color.
74          * @param str   The string to draw.
75          * @param flag  Whether use gettext and UTF8 or system encoding.
76          */
77         float DrawString(char* str, unsigned int flag);
78
79         float GetStringWidth(char* str, unsigned int flag);
80
81         void GetBoundingBox(char* str, float *llx, float *lly, float *llz, float *urx, float *ury, float *urz, unsigned int flag);
82
83         /**
84          * added by phase, ton
85          * functions to communicate with the preference menu
86          */
87         void SetFontSize(char size);
88
89         int SetFont(const unsigned char* str, int datasize, int fontsize);
90
91         void SetLanguage(char* str);
92
93         void SetEncoding(char* str);
94
95         /**
96          * functions to communicate with blender ui rasterpos
97          */
98         void SetPosition(float x, float y);
99         void SetMode(int mode);
100         void SetScale(float fsize);
101
102 protected:
103         char messagepath[1024];
104
105         char language[32];
106         char encoding_name[32];
107         char font_name[128];
108         int font_size;
109
110         int     mode;                   // 0 = pixmap, 1 = texture
111         float pen_x, pen_y; //rasterpos
112         float fsize;
113
114         /** FTGL's */
115         FTFont* font;   /* active */
116         
117         FTFont* fonts;  /* opened, small medium and large */
118         FTFont* fontm;
119         FTFont* fontl;
120
121         /** from system encoding in .locale to UNICODE */
122 //      iconv_t cd;
123
124         /** from UTF-8 to UNICODE */
125 //      iconv_t ucd;
126 };
127
128 #endif // __FTF_TRUETYPE_FONT_H