Graphiteng
Main Page
Files
File List
File Members
All
Files
Functions
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_justStartInline
= 1,
57
gr_justEndInline
= 2
58
};
59
61
enum
gr_attrCode
{
63
gr_slatAdvX
= 0,
65
gr_slatAdvY
,
67
gr_slatAttTo
,
69
gr_slatAttX
,
71
gr_slatAttY
,
73
gr_slatAttGpt
,
75
gr_slatAttXOff
,
77
gr_slatAttYOff
,
79
gr_slatAttWithX
,
81
gr_slatAttWithY
,
83
gr_slatWithGpt
,
85
gr_slatAttWithXOff
,
87
gr_slatAttWithYOff
,
89
gr_slatAttLevel
,
91
gr_slatBreak
,
93
gr_slatCompRef
,
95
gr_slatDir
,
97
gr_slatInsert
,
99
gr_slatPosX
,
101
gr_slatPosY
,
103
gr_slatShiftX
,
105
gr_slatShiftY
,
107
gr_slatUserDefnV1
,
109
gr_slatMeasureSol
,
111
gr_slatMeasureEol
,
113
gr_slatJStretch
,
115
gr_slatJShrink
,
117
gr_slatJStep
,
119
gr_slatJWeight
,
121
gr_slatJWidth
,
123
gr_slatSegSplit
=
gr_slatJStretch
+ 29,
125
gr_slatUserDefn
,
126
128
gr_slatMax
,
130
gr_slatNoEffect
=
gr_slatMax
+ 1
131
};
132
133
enum
gr_bidirtl
{
135
gr_rtl
= 1,
138
gr_nobidi
= 2,
140
gr_nomirror
= 4
141
};
142
143
typedef
struct
gr_char_info
gr_char_info
;
144
typedef
struct
gr_segment
gr_segment
;
145
typedef
struct
gr_slot
gr_slot
;
146
151
GR2_API
unsigned
int
gr_cinfo_unicode_char
(
const
gr_char_info
* p
/*not NULL*/
);
152
159
GR2_API
int
gr_cinfo_break_weight
(
const
gr_char_info
* p
/*not NULL*/
);
160
166
GR2_API
int
gr_cinfo_after
(
const
gr_char_info
* p
/*not NULL*/
);
167
173
GR2_API
int
gr_cinfo_before
(
const
gr_char_info
* p
/*not NULL*/
);
174
180
GR2_API
size_t
gr_cinfo_base
(
const
gr_char_info
* p
/*not NULL*/
);
181
193
GR2_API
size_t
gr_count_unicode_characters
(
enum
gr_encform
enc,
const
void
* buffer_begin,
const
void
* buffer_end,
const
void
** pError);
194
220
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);
221
226
GR2_API
void
gr_seg_destroy
(
gr_segment
* p);
227
232
GR2_API
float
gr_seg_advance_X
(
const
gr_segment
* pSeg
/*not NULL*/
);
233
235
GR2_API
float
gr_seg_advance_Y
(
const
gr_segment
* pSeg
/*not NULL*/
);
236
238
GR2_API
unsigned
int
gr_seg_n_cinfo
(
const
gr_segment
* pSeg
/*not NULL*/
);
239
241
GR2_API
const
gr_char_info
*
gr_seg_cinfo
(
const
gr_segment
* pSeg
/*not NULL*/
,
unsigned
int
index
/*must be <number_of_CharInfo*/
);
242
244
GR2_API
unsigned
int
gr_seg_n_slots
(
const
gr_segment
* pSeg
/*not NULL*/
);
//one slot per glyph
245
251
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
252
257
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
258
275
GR2_API
void
gr_seg_justify
(
gr_segment
* pSeg
/*not NULL*/
,
gr_slot
* pStart
/*not NULL*/
,
const
gr_font
*pFont,
double
width,
enum
gr_justFlags
flags,
gr_slot
* pFirst,
gr_slot
* pLast);
276
282
GR2_API
const
gr_slot
*
gr_slot_next_in_segment
(
const
gr_slot
* p);
283
290
GR2_API
const
gr_slot
*
gr_slot_prev_in_segment
(
const
gr_slot
* p);
291
297
GR2_API
const
gr_slot
*
gr_slot_attached_to
(
const
gr_slot
* p);
298
307
GR2_API
const
gr_slot
*
gr_slot_first_attachment
(
const
gr_slot
* p);
308
318
GR2_API
const
gr_slot
*
gr_slot_next_sibling_attachment
(
const
gr_slot
* p);
319
320
326
GR2_API
unsigned
short
gr_slot_gid
(
const
gr_slot
* p);
327
329
GR2_API
float
gr_slot_origin_X
(
const
gr_slot
* p);
330
332
GR2_API
float
gr_slot_origin_Y
(
const
gr_slot
* p);
333
340
GR2_API
float
gr_slot_advance_X
(
const
gr_slot
* p,
const
gr_face
* face,
const
gr_font
*font);
341
346
GR2_API
float
gr_slot_advance_Y
(
const
gr_slot
* p,
const
gr_face
* face,
const
gr_font
*font);
347
353
GR2_API
int
gr_slot_before
(
const
gr_slot
* p
/*not NULL*/
);
354
360
GR2_API
int
gr_slot_after
(
const
gr_slot
* p
/*not NULL*/
);
361
367
GR2_API
unsigned
int
gr_slot_index
(
const
gr_slot
* p
/*not NULL*/
);
368
374
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?
375
377
GR2_API
int
gr_slot_can_insert_before
(
const
gr_slot
* p);
378
384
GR2_API
int
gr_slot_original
(
const
gr_slot
* p
/*not NULL*/
);
385
391
GR2_API
void
gr_slot_linebreak_before
(
gr_slot
*p
/*not NULL*/
);
392
393
#ifdef __cplusplus
394
}
395
#endif
Generated on Sat Jun 2 2012 01:16:33 for Graphiteng by
1.8.1