source: git/src/glbitmapfont.h@ 9fcc81a

RELEASE/1.2 debug-ci debug-ci-sanitisers faster-cavernlog log-select main stereo-2025 walls-data walls-data-hanging-as-warning warn-only-for-hanging-survey
Last change on this file since 9fcc81a was 0273042, checked in by Olly Betts <olly@…>, 8 years ago

Eliminate use of gluErrorString

Fixes deprecation warning on macOS.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1//
2// glbitmapfont.h
3//
4// Draw text using glBitmap.
5//
6// Copyright (C) 2011,2013,2014 Olly Betts
7//
8// This program is free software; you can redistribute it and/or modify
9// it under the terms of the GNU General Public License as published by
10// the Free Software Foundation; either version 2 of the License, or
11// (at your option) any later version.
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
20// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21//
22
23#ifndef GLBITMAPFONT_H_INCLUDED
24#define GLBITMAPFONT_H_INCLUDED
25
26#include "wx.h"
27
28#ifdef HAVE_GL_GL_H
29# include <GL/gl.h>
30#elif defined HAVE_OPENGL_GL_H
31# include <OpenGL/gl.h>
32#endif
33
34class BitmapFont {
35 enum {
36 // The highest character point to generate an OpenGL list for.
37 //
38 // We can't generate a GL list for every Unicode character, so we
39 // generate them for the first BITMAPFONT_MAX_CHAR characters and then
40 // use glBitmap directly to draw other characters if they are needed.
41 //
42 // FIXME: We could perhaps even store strings consisting of only the
43 // first 256 points as ISO8859-1.
44 BITMAPFONT_MAX_CHAR = 256
45 };
46
47 int gllist_base;
48
49 mutable const unsigned char * extra_data;
50
51 mutable int * extra_chars;
52
53 unsigned char char_width[BITMAPFONT_MAX_CHAR];
54
55 void init_extra_chars() const;
56
57 int glyph_width(wxChar ch) const;
58
59 void write_glyph(wxChar ch) const;
60
61 wxString font_file;
62
63 public:
64
65 BitmapFont() : gllist_base(0), extra_data(0), extra_chars(0) { }
66
67 ~BitmapFont();
68
69 bool load(const wxString & font_file);
70
71 // Hard-code for now.
72 int get_font_size() const { return 16; }
73
74 void get_text_extent(const wxChar *s, size_t len, int *width, int *height) const {
75 if (width) {
76 int total_width = 0;
77 while (len--) {
78 int ch = *s++;
79 if (ch < BITMAPFONT_MAX_CHAR)
80 total_width += char_width[ch];
81 else
82 total_width += glyph_width(ch);
83 }
84 *width = total_width;
85 }
86 if (height) {
87 *height = get_font_size() + 1;
88 }
89 }
90
91 void write_string(const wxChar *s, size_t len) const;
92};
93
94#endif
Note: See TracBrowser for help on using the repository browser.