]>
Commit | Line | Data |
---|---|---|
46f4442e A |
1 | /* |
2 | * | |
3 | * (C) Copyright IBM Corp. 1998-2007 - All Rights Reserved | |
4 | * | |
5 | */ | |
6 | ||
7 | #include "LETypes.h" | |
8 | #include "loengine.h" | |
9 | #include "LayoutEngine.h" | |
10 | ||
11 | /** | |
12 | * \file | |
13 | * \brief C API for complex text layout. | |
14 | */ | |
15 | ||
16 | U_NAMESPACE_USE | |
17 | ||
18 | U_CAPI le_engine * U_EXPORT2 | |
19 | le_create(const le_font *font, | |
20 | le_int32 scriptCode, | |
21 | le_int32 languageCode, | |
22 | le_int32 typo_flags, | |
23 | LEErrorCode *success) | |
24 | { | |
25 | LEFontInstance *fontInstance = (LEFontInstance *) font; | |
26 | ||
27 | return (le_engine *) LayoutEngine::layoutEngineFactory(fontInstance, scriptCode, languageCode, typo_flags, *success); | |
28 | } | |
29 | ||
30 | U_CAPI void U_EXPORT2 | |
31 | le_close(le_engine *engine) | |
32 | { | |
33 | LayoutEngine *le = (LayoutEngine *) engine; | |
34 | ||
35 | delete le; | |
36 | } | |
37 | ||
38 | U_CAPI le_int32 U_EXPORT2 | |
39 | le_layoutChars(le_engine *engine, | |
40 | const LEUnicode chars[], | |
41 | le_int32 offset, | |
42 | le_int32 count, | |
43 | le_int32 max, | |
44 | le_bool rightToLeft, | |
45 | float x, | |
46 | float y, | |
47 | LEErrorCode *success) | |
48 | { | |
49 | LayoutEngine *le = (LayoutEngine *) engine; | |
50 | ||
51 | if (le == NULL) { | |
52 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
53 | return -1; | |
54 | } | |
55 | ||
56 | return le->layoutChars(chars, offset, count, max, rightToLeft, x, y, *success); | |
57 | } | |
58 | ||
59 | U_CAPI le_int32 U_EXPORT2 | |
60 | le_getGlyphCount(le_engine *engine, | |
61 | LEErrorCode *success) | |
62 | { | |
63 | LayoutEngine *le = (LayoutEngine *) engine; | |
64 | ||
65 | if (le == NULL) { | |
66 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
67 | return -1; | |
68 | } | |
69 | ||
70 | return le->getGlyphCount(); | |
71 | } | |
72 | ||
73 | U_CAPI void U_EXPORT2 | |
74 | le_getGlyphs(le_engine *engine, | |
75 | LEGlyphID glyphs[], | |
76 | LEErrorCode *success) | |
77 | { | |
78 | LayoutEngine *le = (LayoutEngine *) engine; | |
79 | ||
80 | if (le == NULL) { | |
81 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
82 | return; | |
83 | } | |
84 | ||
85 | le->getGlyphs(glyphs, *success); | |
86 | } | |
87 | ||
88 | U_CAPI void U_EXPORT2 | |
89 | le_getCharIndices(le_engine *engine, | |
90 | le_int32 charIndices[], | |
91 | LEErrorCode *success) | |
92 | { | |
93 | LayoutEngine *le = (LayoutEngine *) engine; | |
94 | ||
95 | if (le == NULL) { | |
96 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
97 | return; | |
98 | } | |
99 | ||
100 | le->getCharIndices(charIndices, *success); | |
101 | } | |
102 | ||
103 | U_CAPI void U_EXPORT2 | |
104 | le_getCharIndicesWithBase(le_engine *engine, | |
105 | le_int32 charIndices[], | |
106 | le_int32 indexBase, | |
107 | LEErrorCode *success) | |
108 | { | |
109 | LayoutEngine *le = (LayoutEngine *) engine; | |
110 | ||
111 | if (le == NULL) { | |
112 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
113 | return; | |
114 | } | |
115 | ||
116 | le->getCharIndices(charIndices, indexBase, *success); | |
117 | } | |
118 | ||
119 | U_CAPI void U_EXPORT2 | |
120 | le_getGlyphPositions(le_engine *engine, | |
121 | float positions[], | |
122 | LEErrorCode *success) | |
123 | { | |
124 | LayoutEngine *le = (LayoutEngine *) engine; | |
125 | ||
126 | if (le == NULL) { | |
127 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
128 | return; | |
129 | } | |
130 | ||
131 | le->getGlyphPositions(positions, *success); | |
132 | } | |
133 | ||
134 | U_CAPI void U_EXPORT2 | |
135 | le_getGlyphPosition(le_engine *engine, | |
136 | le_int32 glyphIndex, | |
137 | float *x, | |
138 | float *y, | |
139 | LEErrorCode *success) | |
140 | { | |
141 | LayoutEngine *le = (LayoutEngine *) engine; | |
142 | ||
143 | if (le == NULL) { | |
144 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
145 | return; | |
146 | } | |
147 | ||
148 | le->getGlyphPosition(glyphIndex, *x, *y, *success); | |
149 | } | |
150 | ||
151 | U_CAPI void U_EXPORT2 | |
152 | le_reset(le_engine *engine, | |
153 | LEErrorCode *success) | |
154 | { | |
155 | LayoutEngine *le = (LayoutEngine *) engine; | |
156 | ||
157 | if (le == NULL) { | |
158 | *success = LE_ILLEGAL_ARGUMENT_ERROR; | |
159 | return; | |
160 | } | |
161 | ||
162 | le->reset(); | |
163 | } |