File: ttf.h

package info (click to toggle)
scummvm 2.7.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 363,784 kB
  • sloc: cpp: 3,622,060; asm: 27,410; python: 10,528; sh: 10,241; xml: 6,752; java: 5,579; perl: 2,570; yacc: 1,635; javascript: 1,016; lex: 539; makefile: 398; ansic: 378; awk: 275; objc: 82; sed: 11; php: 1
file content (148 lines) | stat: -rw-r--r-- 5,808 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
/* ScummVM - Graphic Adventure Engine
 *
 * ScummVM is the legal property of its developers, whose names
 * are too numerous to list here. Please refer to the COPYRIGHT
 * file distributed with this source distribution.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#ifndef GRAPHICS_FONTS_TTF_H
#define GRAPHICS_FONTS_TTF_H

#include "common/scummsys.h"

#ifdef USE_FREETYPE2

#include "common/array.h"
#include "common/stream.h"
#include "common/ustr.h"

namespace Graphics {

class Font;

/**
 * This specifies the mode in which TTF glyphs are rendered. This, for example,
 * allows to render glyphs fully monochrome, i.e. without any anti-aliasing.
 */
enum TTFRenderMode {
	/**
	 * Standard render mode. Equivalent of FreeType2's FT_RENDER_MODE_NORMAL.
	 */
	kTTFRenderModeNormal,

	/**
	 * Use lighter hinting. Equivalent of FreeType2's FT_RENDER_MODE_LIGHT.
	 */
	kTTFRenderModeLight,

	/**
	 * Render fully monochrome. This makes glyph pixels either be fully opaque
	 * or fully transparent.
	 */
	kTTFRenderModeMonochrome
};

/**
 * This specifies how the font size is defined.
 */
enum TTFSizeMode {
	/**
	 * Character height only.
	 *
	 * This matches rendering obtained when calling
	 * CreateFont in Windows with negative height values.
	 */
	kTTFSizeModeCharacter,

	/**
	 * Full cell height.
	 *
	 * This matches rendering obtained when calling
	 * CreateFont in Windows with positive height values.
	 */
	kTTFSizeModeCell
};

/**
 * Loads a TTF font file from a given data stream object.
 *
 * @param stream     Stream object to load font data from.
 * @param size       The point size to load.
 * @param sizeMode   The point size definition used for the size parameter.
 * @param dpi        The dpi to use for size calculations, by default 72dpi
 *                   are used.
 * @param renderMode FreeType2 mode used to render glyphs. @see TTFRenderMode
 * @param mapping    A mapping from code points 0-255 into UTF-32 code points.
 *                   This can be used to support various 8bit character sets.
 *                   In case the msb of the UTF-32 code point is set the font
 *                   loading fails in case no glyph for it is found. When this
 *                   is non-null only characters given in the mapping are
 *                   supported.
 * @return 0 in case loading fails, otherwise a pointer to the Font object.
 */
Font *loadTTFFont(Common::SeekableReadStream &stream, int size, TTFSizeMode sizeMode = kTTFSizeModeCharacter, uint dpi = 0, TTFRenderMode renderMode = kTTFRenderModeLight, const uint32 *mapping = 0, bool stemDarkening = false);

/**
 * Loads a TTF font file from the common fonts archive.
 *
 * @param filename   The name of the font to load.
 * @param size       The point size to load.
 * @param sizeMode   The point size definition used for the size parameter.
 * @param dpi        The dpi to use for size calculations, by default 72dpi
 *                   are used.
 * @param renderMode FreeType2 mode used to render glyphs. @see TTFRenderMode
 * @param mapping    A mapping from code points 0-255 into UTF-32 code points.
 *                   This can be used to support various 8bit character sets.
 *                   In case the msb of the UTF-32 code point is set the font
 *                   loading fails in case no glyph for it is found. When this
 *                   is non-null only characters given in the mapping are
 *                   supported.
 * @return 0 in case loading fails, otherwise a pointer to the Font object.
 */
Font *loadTTFFontFromArchive(const Common::String &filename, int size, TTFSizeMode sizeMode = kTTFSizeModeCharacter, uint dpi = 0, TTFRenderMode renderMode = kTTFRenderModeLight, const uint32 *mapping = 0);

/**
 * Finds the specified face in a collection of TTF/TTC font files.
 * This functions kinds of mimic CreateFont from Windows API.
 *
 * @param files      List of files where to find specified face.
 * @param faceName   The face name to search for.
 * @param bold       The weight of the desired face.
 * @param italic     The slant of the desired face.
 * @param size       The point size to load.
 * @param sizeMode   The point size definition used for the size parameter.
 * @param dpi        The dpi to use for size calculations, by default 96dpi
 *                   are used. Like in Windows.
 * @param renderMode FreeType2 mode used to render glyphs. @see TTFRenderMode
 * @param mapping    A mapping from code points 0-255 into UTF-32 code points.
 *                   This can be used to support various 8bit character sets.
 *                   In case the msb of the UTF-32 code point is set the font
 *                   loading fails in case no glyph for it is found. When this
 *                   is non-null only characters given in the mapping are
 *                   supported.
 * @return 0 in case loading fails, otherwise a pointer to the Font object.
 */
Font *findTTFace(const Common::Array<Common::String> &files, const Common::U32String &faceName, bool bold, bool italic, int size, uint dpi = 0, TTFRenderMode renderMode = kTTFRenderModeLight, const uint32 *mapping = 0);

void shutdownTTF();

} // End of namespace Graphics

#endif

#endif