File: ftgloadr.h

package info (click to toggle)
scummvm 2.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 450,580 kB
  • sloc: cpp: 4,299,825; asm: 28,322; python: 12,901; sh: 11,302; java: 9,289; xml: 7,895; perl: 2,639; ansic: 2,465; yacc: 1,670; javascript: 1,020; makefile: 933; lex: 578; awk: 275; objc: 82; sed: 11; php: 1
file content (137 lines) | stat: -rw-r--r-- 4,941 bytes parent folder | download | duplicates (2)
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
/* 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/>.
 *
 */

/***************************************************************************/
/*                                                                         */
/*  ftgloadr.h                                                             */
/*                                                                         */
/*    The FreeType glyph loader (specification).                           */
/*                                                                         */
/*  Copyright 2002 by                                                      */
/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/


#ifndef AGS_LIB_FREETYPE_FTGLOADR_H
#define AGS_LIB_FREETYPE_FTGLOADR_H


#include "graphics/fonts/freetype.h"

namespace AGS3 {
namespace FreeType213 {


typedef struct FT_GlyphLoaderRec_ *FT_GlyphLoader;

#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS          1
#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES      2
#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID        4
#define FT_SUBGLYPH_FLAG_SCALE                   8
#define FT_SUBGLYPH_FLAG_XY_SCALE             0x40
#define FT_SUBGLYPH_FLAG_2X2                  0x80
#define FT_SUBGLYPH_FLAG_USE_MY_METRICS      0x200


enum {
	FT_GLYPH_OWN_BITMAP = 1
};


typedef struct  FT_SubGlyphRec_ {
	FT_Int     index;
	FT_UShort  flags;
	FT_Int     arg1;
	FT_Int     arg2;
	FT_Matrix  transform;

} FT_SubGlyphRec;

typedef FT_SubGlyphRec *FT_SubGlyph;

typedef struct  FT_GlyphLoadRec_ {
	FT_Outline   outline;        /* outline             */
	FT_Vector    *extra_points;  /* extra points table  */
	FT_UInt      num_subglyphs;  /* number of subglyphs */
	FT_SubGlyph  subglyphs;      /* subglyphs           */

} FT_GlyphLoadRec, *FT_GlyphLoad;


typedef struct  FT_GlyphLoaderRec_ {
	FT_Memory        memory;
	FT_UInt          max_points;
	FT_UInt          max_contours;
	FT_UInt          max_subglyphs;
	FT_Bool          use_extra;

	FT_GlyphLoadRec  base;
	FT_GlyphLoadRec  current;

	void*            other;            /* for possible future extension? */

} FT_GlyphLoaderRec;


/* create new empty glyph loader */
FT_Error FT_GlyphLoader_New(FT_Memory memory, FT_GlyphLoader *aloader);

/* add an extra points table to a glyph loader */
FT_Error FT_GlyphLoader_CreateExtra(FT_GlyphLoader loader);

/* destroy a glyph loader */
void FT_GlyphLoader_Done(FT_GlyphLoader loader);

/* reset a glyph loader (frees everything int it) */
void FT_GlyphLoader_Reset(FT_GlyphLoader loader);

/* rewind a glyph loader */
void FT_GlyphLoader_Rewind(FT_GlyphLoader loader);

/* check that there is enough room to add 'n_points' and 'n_contours' */
/* to the glyph loader                                                */
FT_Error FT_GlyphLoader_CheckPoints(FT_GlyphLoader loader, FT_UInt n_points, FT_UInt n_contours);

/* check that there is enough room to add 'n_subs' sub-glyphs to */
/* a glyph loader                                                */
FT_Error FT_GlyphLoader_CheckSubGlyphs(FT_GlyphLoader loader, FT_UInt n_subs);

/* prepare a glyph loader, i.e. empty the current glyph */
void FT_GlyphLoader_Prepare(FT_GlyphLoader loader);

/* add the current glyph to the base glyph */
void FT_GlyphLoader_Add(FT_GlyphLoader loader);

/* copy points from one glyph loader to another */
FT_Error FT_GlyphLoader_CopyPoints(FT_GlyphLoader target, FT_GlyphLoader source);


} // End of namespace FreeType213
} // End of namespace AGS3

#endif /* AGS_LIB_FREETYPE_FTGLOADR_H */