]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Reve/GLTextNS.h
Dummy methods DefineParticle required by the interface added.
[u/mrichter/AliRoot.git] / EVE / Reve / GLTextNS.h
CommitLineData
b6b64776 1
2#ifndef Reve_GLTextNS_H
3#define Reve_GLTextNS_H
4
5// The following implementation is based on TexFont API,
6// implementation and accompanying programs by Mark J. Kilgard.
7// Original license:
8
9/* Copyright (c) Mark J. Kilgard, 1997. */
10/* This program is freely distributable without licensing fees and is
11 provided without guarantee or warrantee expressed or implied. This
12 program is -not- in the public domain. */
13
14#ifndef __CINT__
15
16#include <TObject.h>
17#include <TGLIncludes.h>
18
19class TString;
20
21namespace GLTextNS {
22
23#define TXF_FORMAT_BYTE 0
24#define TXF_FORMAT_BITMAP 1
25
26struct TexGlyphInfo {
27 unsigned short c; /* Potentially support 16-bit glyphs. */
28 unsigned char width;
29 unsigned char height;
30 signed char xoffset;
31 signed char yoffset;
32 signed char advance;
33 char dummy; /* Space holder for alignment reasons. */
34 short x;
35 short y;
36};
37
38struct TexGlyphVertexInfo {
39 GLfloat t0[2];
40 GLshort v0[2];
41 GLfloat t1[2];
42 GLshort v1[2];
43 GLfloat t2[2];
44 GLshort v2[2];
45 GLfloat t3[2];
46 GLshort v3[2];
47 GLfloat advance;
48};
49
50class TexFont : public TObject {
51public:
52 GLuint texobj;
53 int tex_width;
54 int tex_height;
55 int max_ascent;
56 int max_descent;
57 int max_width; // max glyph width (MT)
58 int num_glyphs;
59 int min_glyph;
60 int range;
61 unsigned char *teximage;
62 TexGlyphInfo *tgi;
63 TexGlyphVertexInfo *tgvi;
64 TexGlyphVertexInfo **lut;
65
66 int max_height() { return max_ascent + max_descent; }
67};
68
69
70extern char *txfErrorString(void);
71
72extern TexFont *txfLoadFont(const char *filename);
73
74extern void txfUnloadFont(TexFont* txf);
75
76extern GLuint txfEstablishTexture(TexFont* txf, GLuint texobj,
77 GLboolean setupMipmaps);
78
79extern void txfBindFontTexture(TexFont* txf);
80
81extern void txfGetStringMetrics(TexFont* txf, const char *TString, int len,
82 int &width, int &max_ascent, int &max_descent);
83
84extern void txfRenderGlyph(TexFont* txf, int c);
85extern void txfRenderString(TexFont* txf, const char *TString, int len,
86 bool keep_pos=true);
87extern void txfRenderString(TexFont* txf, const char *TString, int len,
88 GLfloat maxx, GLfloat fadew,
89 bool keep_pos=true);
90
91extern void txfRenderGlyphZW(TexFont* txf, int c, float z, float w);
92extern void txfRenderStringZW(TexFont* txf, const char *TString, int len,
93 float z, float w, bool keep_pos=true);
94
95extern void txfRenderFancyString(TexFont* txf, char *TString, int len);
96
97
98bool LoadDefaultFont(TString font_file);
99
100extern TexFont* fgDefaultFont;
101
102/**************************************************************************/
103// Here starts MT higher-level interface
104/**************************************************************************/
105/*
106 struct BoxSpecs {
107 int lm, rm, tm, bm;
108 int lineskip;
109 char align;
110 TString pos;
111
112 void _init() { align = 'l'; lineskip = 0; }
113
114 BoxSpecs()
115 { lm = rm = 3; tm = 0; bm = 2; _init(); }
116
117 BoxSpecs(int lr, int tb)
118 { lm = rm = lr; tm = bm = tb; _init(); }
119
120 BoxSpecs(int l, int r, int t, int b)
121 { lm = l; rm = r; tm = t; bm = b; _init(); }
122 };
123 struct TextLineData {
124 int width, ascent, descent, hfull;
125 TString text;
126
127 TextLineData(TexFont *txf, TString line);
128 };
129
130 extern void RnrTextBar(RnrDriver* rd, const TString& text);
131
132 extern void RnrTextBar(RnrDriver* rd, const TString& text,
133 BoxSpecs& bs, float zoffset=0);
134
135 extern void RnrTextPoly(RnrDriver* rd, const TString& text);
136
137 extern void RnrText(RnrDriver* rd, const TString& text,
138 int x, int y, float z,
139 const ZColor* front_col, const ZColor* back_col=0);
140
141 extern void RnrTextAt(RnrDriver* rd, const TString& text,
142 int x, int yrow, float z,
143 const ZColor* front_col, const ZColor* back_col=0);
144*/
145
146} // namescape GLTextNS
147
148#endif // cint
149#endif // Reve_GLTextNS_H