Graphiteng
Main Page
Classes
Files
File List
File Members
All
Classes
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
include
graphite2
Segment.h
Go to the documentation of this file.
1
/* GRAPHITE2 LICENSING
2
3
Copyright 2010, SIL International
4
All rights reserved.
5
6
This library is free software; you can redistribute it and/or modify
7
it under the terms of the GNU Lesser General Public License as published
8
by the Free Software Foundation; either version 2.1 of License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
Lesser General Public License for more details.
15
16
You should also have received a copy of the GNU Lesser General Public
17
License along with this library in the file named "LICENSE".
18
If not, write to the Free Software Foundation, 51 Franklin Street,
19
Suite 500, Boston, MA 02110-1335, USA or visit their web page on the
20
internet at http://www.fsf.org/licenses/lgpl.html.
21
22
Alternatively, the contents of this file may be used under the terms
23
of the Mozilla Public License (http://mozilla.org/MPL) or the GNU
24
General Public License, as published by the Free Software Foundation,
25
either version 2 of the License or (at your option) any later version.
26
*/
27
#pragma once
28
29
#include "
graphite2/Types.h
"
30
#include "
graphite2/Font.h
"
31
32
#ifdef __cplusplus
33
extern
"C"
34
{
35
#endif
36
37
enum
gr_break_weight
{
38
gr_breakNone
= 0,
39
/* after break weights */
40
gr_breakWhitespace
= 10,
41
gr_breakWord
= 15,
42
gr_breakIntra
= 20,
43
gr_breakLetter
= 30,
44
gr_breakClip
= 40,
45
/* before break weights */
46
gr_breakBeforeWhitespace
= -10,
47
gr_breakBeforeWord
= -15,
48
gr_breakBeforeIntra
= -20,
49
gr_breakBeforeLetter
= -30,
50
gr_breakBeforeClip
= -40
51
};
52
53
enum
gr_justFlags
{
55
gr_justCompleteLine
= 0,
57
gr_justStartInline
= 1,
59
gr_justEndInline
= 2
60
};
61
63
enum
gr_attrCode
{
65
gr_slatAdvX
= 0,
67
gr_slatAdvY
,
69
gr_slatAttTo
,
71
gr_slatAttX
,
73
gr_slatAttY
,
75
gr_slatAttGpt
,
77
gr_slatAttXOff
,
79
gr_slatAttYOff
,
81
gr_slatAttWithX
,
83
gr_slatAttWithY
,
85
gr_slatWithGpt
,
87
gr_slatAttWithXOff
,
89
gr_slatAttWithYOff
,
91
gr_slatAttLevel
,
93
gr_slatBreak
,
95
gr_slatCompRef
,
97
gr_slatDir
,
99
gr_slatInsert
,
101
gr_slatPosX
,
103
gr_slatPosY
,
105
gr_slatShiftX
,
107
gr_slatShiftY
,
109
gr_slatUserDefnV1
,
111
gr_slatMeasureSol
,
113
gr_slatMeasureEol
,
115
gr_slatJStretch
,
117
gr_slatJShrink
,
119
gr_slatJStep
,
121
gr_slatJWeight
,
123
gr_slatJWidth
= 29,
125
gr_slatSegSplit
=
gr_slatJStretch
+ 29,
127
gr_slatUserDefn
,
129
gr_slatBidiLevel
= 56,
131
gr_slatColFlags
,
133
gr_slatColLimitblx
,
135
gr_slatColLimitbly
,
137
gr_slatColLimittrx
,
139
gr_slatColLimittry
,
141
gr_slatColShiftx
,
143
gr_slatColShifty
,
145
gr_slatColMargin
,
147
gr_slatColMarginWt
,
148
// Additional glyph that excludes movement near this one:
149
gr_slatColExclGlyph
,
150
gr_slatColExclOffx
,
151
gr_slatColExclOffy
,
152
// Collision sequence enforcing attributes:
153
gr_slatSeqClass
,
154
gr_slatSeqProxClass
,
155
gr_slatSeqOrder
,
156
gr_slatSeqAboveXoff
,
157
gr_slatSeqAboveWt
,
158
gr_slatSeqBelowXlim
,
159
gr_slatSeqBelowWt
,
160
gr_slatSeqValignHt
,
161
gr_slatSeqValignWt
,
162
164
gr_slatMax
,
166
gr_slatNoEffect
=
gr_slatMax
+ 1
167
};
168
169
enum
gr_bidirtl
{
171
gr_rtl
= 1,
175
gr_nobidi
= 2,
177
gr_nomirror
= 4
178
};
179
180
typedef
struct
gr_char_info
gr_char_info
;
181
typedef
struct
gr_segment
gr_segment
;
182
typedef
struct
gr_slot
gr_slot
;
183
188
GR2_API
unsigned
int
gr_cinfo_unicode_char
(
const
gr_char_info
* p
/*not NULL*/
);
189
202
GR2_API
int
gr_cinfo_break_weight
(
const
gr_char_info
* p
/*not NULL*/
);
203
212
GR2_API
int
gr_cinfo_after
(
const
gr_char_info
* p
/*not NULL*/
);
213
222
GR2_API
int
gr_cinfo_before
(
const
gr_char_info
* p
/*not NULL*/
);
223
229
GR2_API
size_t
gr_cinfo_base
(
const
gr_char_info
* p
/*not NULL*/
);
230
242
GR2_API
size_t
gr_count_unicode_characters
(
enum
gr_encform
enc,
const
void
* buffer_begin,
const
void
* buffer_end,
const
void
** pError);
243
269
GR2_API
gr_segment
*
gr_make_seg
(
const
gr_font
* font,
const
gr_face
* face,
gr_uint32
script,
const
gr_feature_val
* pFeats,
enum
gr_encform
enc,
const
void
* pStart,
size_t
nChars,
int
dir);
270
275
GR2_API
void
gr_seg_destroy
(
gr_segment
* p);
276
281
GR2_API
float
gr_seg_advance_X
(
const
gr_segment
* pSeg
/*not NULL*/
);
282
284
GR2_API
float
gr_seg_advance_Y
(
const
gr_segment
* pSeg
/*not NULL*/
);
285
287
GR2_API
unsigned
int
gr_seg_n_cinfo
(
const
gr_segment
* pSeg
/*not NULL*/
);
288
290
GR2_API
const
gr_char_info
*
gr_seg_cinfo
(
const
gr_segment
* pSeg
/*not NULL*/
,
unsigned
int
index
/*must be <number_of_CharInfo*/
);
291
293
GR2_API
unsigned
int
gr_seg_n_slots
(
const
gr_segment
* pSeg
/*not NULL*/
);
//one slot per glyph
294
300
GR2_API
const
gr_slot
*
gr_seg_first_slot
(
gr_segment
* pSeg
/*not NULL*/
);
//may give a base slot or a slot which is attached to another
301
306
GR2_API
const
gr_slot
*
gr_seg_last_slot
(
gr_segment
* pSeg
/*not NULL*/
);
//may give a base slot or a slot which is attached to another
307
327
GR2_API
float
gr_seg_justify
(
gr_segment
* pSeg
/*not NULL*/
,
const
gr_slot
* pStart
/*not NULL*/
,
const
gr_font
*pFont,
double
width,
enum
gr_justFlags
flags,
const
gr_slot
* pFirst,
const
gr_slot
* pLast);
328
334
GR2_API
const
gr_slot
*
gr_slot_next_in_segment
(
const
gr_slot
* p);
335
342
GR2_API
const
gr_slot
*
gr_slot_prev_in_segment
(
const
gr_slot
* p);
343
349
GR2_API
const
gr_slot
*
gr_slot_attached_to
(
const
gr_slot
* p);
350
359
GR2_API
const
gr_slot
*
gr_slot_first_attachment
(
const
gr_slot
* p);
360
370
GR2_API
const
gr_slot
*
gr_slot_next_sibling_attachment
(
const
gr_slot
* p);
371
372
378
GR2_API
unsigned
short
gr_slot_gid
(
const
gr_slot
* p);
379
381
GR2_API
float
gr_slot_origin_X
(
const
gr_slot
* p);
382
384
GR2_API
float
gr_slot_origin_Y
(
const
gr_slot
* p);
385
395
GR2_API
float
gr_slot_advance_X
(
const
gr_slot
* p,
const
gr_face
* face,
const
gr_font
*font);
396
402
GR2_API
float
gr_slot_advance_Y
(
const
gr_slot
* p,
const
gr_face
* face,
const
gr_font
*font);
403
411
GR2_API
int
gr_slot_before
(
const
gr_slot
* p
/*not NULL*/
);
412
420
GR2_API
int
gr_slot_after
(
const
gr_slot
* p
/*not NULL*/
);
421
427
GR2_API
unsigned
int
gr_slot_index
(
const
gr_slot
* p
/*not NULL*/
);
428
434
GR2_API
int
gr_slot_attr
(
const
gr_slot
* p
/*not NULL*/
,
const
gr_segment
* pSeg
/*not NULL*/
,
enum
gr_attrCode
index,
gr_uint8
subindex);
//tbd - do we need to expose this?
435
443
GR2_API
int
gr_slot_can_insert_before
(
const
gr_slot
* p);
444
450
GR2_API
int
gr_slot_original
(
const
gr_slot
* p
/*not NULL*/
);
451
457
GR2_API
void
gr_slot_linebreak_before
(
gr_slot
*p
/*not NULL*/
);
458
459
#ifdef __cplusplus
460
}
461
#endif
Generated on Mon Feb 15 2016 10:35:28 for Graphiteng by
1.8.1.2