1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/*
2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef __LOENGINE_H
8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define __LOENGINE_H
9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "LETypes.h"
11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
1283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_HIDE_INTERNAL_API
13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file
15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \brief C API for complex text layout.
16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \internal
17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This is a technology preview. The API may
19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * change significantly.
20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The opaque type for a LayoutEngine.
25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef void le_engine;
29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The opaque type for a font instance.
32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef void le_font;
36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function returns an le_engine capable of laying out text
39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * in the given font, script and langauge. Note that the LayoutEngine
40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * returned may be a subclass of LayoutEngine.
41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param font - the font of the text
43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param scriptCode - the script of the text
44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param languageCode - the language of the text
45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param typo_flags - flags that control layout features like kerning and ligatures.
46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - output parameter set to an error code if the operation fails
47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return an le_engine which can layout text in the given font.
49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL le_engine * U_EXPORT2
53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_create(const le_font *font,
54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          le_int32 scriptCode,
55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          le_int32 languageCode,
56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          le_int32 typo_flags,
57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru          LEErrorCode *success);
58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function closes the given LayoutEngine. After
61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * it returns, the le_engine is no longer valid.
62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine to close.
64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_close(le_engine *engine);
69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This routine will compute the glyph, character index and position arrays.
72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param chars - the input character context
75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param offset - the offset of the first character to process
76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param count - the number of characters to process
77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param max - the number of characters in the input context
78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param rightToLeft - TRUE if the characers are in a right to left directional run
79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param x - the initial X position
80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param y - the initial Y position
81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - output parameter set to an error code if the operation fails
82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return the number of glyphs in the glyph array
84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Note: The glyph, character index and position array can be accessed
86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * using the getter routines below.
87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Note: If you call this function more than once, you must call the reset()
89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * function first to free the glyph, character index and position arrays
90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * allocated by the previous call.
91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL le_int32 U_EXPORT2
95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_layoutChars(le_engine *engine,
96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               const LEUnicode chars[],
97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               le_int32 offset,
98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               le_int32 count,
99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               le_int32 max,
100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               le_bool rightToLeft,
101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               float x,
102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               float y,
103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru               LEErrorCode *success);
104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function returns the number of glyphs in the glyph array. Note
107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * that the number of glyphs will be greater than or equal to the number
108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * of characters used to create the LayoutEngine.
109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - output parameter set to an error code if the operation fails.
112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return the number of glyphs in the glyph array
114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL le_int32 U_EXPORT2
118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getGlyphCount(le_engine *engine,
119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                 LEErrorCode *success);
120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function copies the glyph array into a caller supplied array.
123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The caller must ensure that the array is large enough to hold all
124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the glyphs.
125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param glyphs - the destiniation glyph array
128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getGlyphs(le_engine *engine,
134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru             LEGlyphID glyphs[],
135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru             LEErrorCode *success);
136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function copies the character index array into a caller supplied array.
139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The caller must ensure that the array is large enough to hold a
140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character index for each glyph.
141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param charIndices - the destiniation character index array
144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getCharIndices(le_engine *engine,
150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  le_int32 charIndices[],
151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  LEErrorCode *success);
152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function copies the character index array into a caller supplied array.
155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The caller must ensure that the array is large enough to hold a
156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character index for each glyph.
157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param charIndices - the destiniation character index array
160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param indexBase - an offset that will be added to each index.
161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getCharIndicesWithBase(le_engine *engine,
167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  le_int32 charIndices[],
168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  le_int32 indexBase,
169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                  LEErrorCode *success);
170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function copies the position array into a caller supplied array.
173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The caller must ensure that the array is large enough to hold an
174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * X and Y position for each glyph, plus an extra X and Y for the
175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * advance of the last glyph.
176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param positions - the destiniation position array
179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getGlyphPositions(le_engine *engine,
185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                     float positions[],
186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                     LEErrorCode *success);
187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function returns the X and Y position of the glyph at
190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the given index.
191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Input parameters:
193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param glyphIndex - the index of the glyph
195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Output parameters:
197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param x - the glyph's X position
198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param y - the glyph's Y position
199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_getGlyphPosition(le_engine *engine,
205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    le_int32 glyphIndex,
206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    float *x,
207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    float *y,
208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru                    LEErrorCode *success);
209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/**
211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This function frees the glyph, character index and position arrays
212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * so that the LayoutEngine can be reused to layout a different
213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * characer array. (This function is also called by le_close)
214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param engine - the LayoutEngine
216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param success - set to an error code if the operation fails
217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *
218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal
219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */
220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_INTERNAL void U_EXPORT2
221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querule_reset(le_engine *engine,
222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru         LEErrorCode *success);
22383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif  /* U_HIDE_INTERNAL_API */
224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru
225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif
226