xref: /AOO42X/main/offapi/com/sun/star/rendering/XTextLayout.idl (revision d7a630b93db4316516c543e21eb4f4faf6d62bb4)
1d1766043SAndrew Rist/**************************************************************
2cdf0e10cSrcweir *
3d1766043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4d1766043SAndrew Rist * or more contributor license agreements.  See the NOTICE file
5d1766043SAndrew Rist * distributed with this work for additional information
6d1766043SAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7d1766043SAndrew Rist * to you under the Apache License, Version 2.0 (the
8d1766043SAndrew Rist * "License"); you may not use this file except in compliance
9d1766043SAndrew Rist * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir *
11d1766043SAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13d1766043SAndrew Rist * Unless required by applicable law or agreed to in writing,
14d1766043SAndrew Rist * software distributed under the License is distributed on an
15d1766043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16d1766043SAndrew Rist * KIND, either express or implied.  See the License for the
17d1766043SAndrew Rist * specific language governing permissions and limitations
18d1766043SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20d1766043SAndrew Rist *************************************************************/
21d1766043SAndrew Rist
22d1766043SAndrew Rist
23cdf0e10cSrcweir#ifndef __com_sun_star_rendering_XTextLayout_idl__
24cdf0e10cSrcweir#define __com_sun_star_rendering_XTextLayout_idl__
25cdf0e10cSrcweir
26cdf0e10cSrcweir#ifndef __com_sun_star_uno_XInterface_idl__
27cdf0e10cSrcweir#include <com/sun/star/uno/XInterface.idl>
28cdf0e10cSrcweir#endif
29cdf0e10cSrcweir#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
30cdf0e10cSrcweir#include <com/sun/star/lang/IllegalArgumentException.idl>
31cdf0e10cSrcweir#endif
32cdf0e10cSrcweir#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__
33cdf0e10cSrcweir#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
34cdf0e10cSrcweir#endif
35cdf0e10cSrcweir#ifndef __com_sun_star_geometry_RealPoint2D_idl__
36cdf0e10cSrcweir#include <com/sun/star/geometry/RealPoint2D.idl>
37cdf0e10cSrcweir#endif
38cdf0e10cSrcweir#ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__
39cdf0e10cSrcweir#include <com/sun/star/geometry/RealBezierSegment2D.idl>
40cdf0e10cSrcweir#endif
41cdf0e10cSrcweir#ifndef __com_sun_star_geometry_RealRectangle2D_idl__
42cdf0e10cSrcweir#include <com/sun/star/geometry/RealRectangle2D.idl>
43cdf0e10cSrcweir#endif
44cdf0e10cSrcweir#ifndef __com_sun_star_rendering_ViewState_idl__
45cdf0e10cSrcweir#include <com/sun/star/rendering/ViewState.idl>
46cdf0e10cSrcweir#endif
47cdf0e10cSrcweir#ifndef __com_sun_star_rendering_RenderState_idl__
48cdf0e10cSrcweir#include <com/sun/star/rendering/RenderState.idl>
49cdf0e10cSrcweir#endif
50cdf0e10cSrcweir#ifndef __com_sun_star_rendering_StringContext_idl__
51cdf0e10cSrcweir#include <com/sun/star/rendering/StringContext.idl>
52cdf0e10cSrcweir#endif
53cdf0e10cSrcweir#ifndef __com_sun_star_rendering_TextHit_idl__
54cdf0e10cSrcweir#include <com/sun/star/rendering/TextHit.idl>
55cdf0e10cSrcweir#endif
56cdf0e10cSrcweir#ifndef __com_sun_star_rendering_Caret_idl__
57cdf0e10cSrcweir#include <com/sun/star/rendering/Caret.idl>
58cdf0e10cSrcweir#endif
59cdf0e10cSrcweir
60cdf0e10cSrcweir
61cdf0e10cSrcweirmodule com { module sun { module star { module rendering {
62cdf0e10cSrcweir
63cdf0e10cSrcweirpublished interface XCanvas;
64cdf0e10cSrcweirpublished interface XCanvasFont;
65cdf0e10cSrcweirpublished interface XPolyPolygon2D;
66cdf0e10cSrcweir
67cdf0e10cSrcweir/** This is the central interface for text layouting.<p>
68cdf0e10cSrcweir
69cdf0e10cSrcweir    This is the central interface for text-related tasks more
70cdf0e10cSrcweir    complicated than simple string rendering. Note that all query
71cdf0e10cSrcweir    methods are subject to the current layout state of this
72cdf0e10cSrcweir    object. That is, calls to <member>XTextLayout::justify()</member>
73cdf0e10cSrcweir    or <member>XTextLayout::applyLogicalAdvancements()</member> are
74cdf0e10cSrcweir    likely to change subsequent output of those query methods.<p>
75cdf0e10cSrcweir
76cdf0e10cSrcweir    Similar to <type>XCanvasFont</type>, all measurements and
77cdf0e10cSrcweir    coordinates accepted and returned by this interface are relative
78cdf0e10cSrcweir    to the font's local coordinate system (which only equals device
79cdf0e10cSrcweir    coordinate space, if the combined render transformation used
80cdf0e10cSrcweir    during text output is the identity transformation). Conversely, if
81cdf0e10cSrcweir    the combined transformation used during text output is
82cdf0e10cSrcweir    <em>not</em> the identity transformation, all measurements
83cdf0e10cSrcweir    returned by this interface should be subjected to that
84cdf0e10cSrcweir    transformation, to yield values in device coordinate space.
85cdf0e10cSrcweir    Depending on the underlying font technology, actual device output
86cdf0e10cSrcweir    might be off by up to one device pixel from the transformed
87cdf0e10cSrcweir    metrics.<p>
88cdf0e10cSrcweir
89d695a2a0SJürgen Schmidt    @since OpenOffice 2.0
90cdf0e10cSrcweir */
91cdf0e10cSrcweirpublished interface XTextLayout : ::com::sun::star::uno::XInterface
92cdf0e10cSrcweir{
93cdf0e10cSrcweir    /** Extract the polygonal shapes of the layouted text.<p>
94cdf0e10cSrcweir
95cdf0e10cSrcweir        Each glyph is represented by a separate
96cdf0e10cSrcweir        <type>XPolyPolygon2D</type> in the returned sequence.<p>
97cdf0e10cSrcweir
98cdf0e10cSrcweir        @returns a sequence of <type>XPolyPolygon2D</type> in font
99cdf0e10cSrcweir        coordinate space, one for every glyph.
100cdf0e10cSrcweir     */
101cdf0e10cSrcweir    sequence<XPolyPolygon2D>    queryTextShapes();
102cdf0e10cSrcweir
103cdf0e10cSrcweir    //-------------------------------------------------------------------------
104cdf0e10cSrcweir
105cdf0e10cSrcweir    /** Query the ink bounding boxes for every glyph in the layouted
106cdf0e10cSrcweir        text.<p>
107cdf0e10cSrcweir
108cdf0e10cSrcweir        Ink, or tight bounding boxes in this case means that for
109cdf0e10cSrcweir        e.g. an 'a', the bounding box for the
110cdf0e10cSrcweir        <type>XPolyPolygon2D</type> describing the glyph 'a' is
111cdf0e10cSrcweir        returned, not the logical dimensions of the character in the
112cdf0e10cSrcweir        font.<p>
113cdf0e10cSrcweir
114cdf0e10cSrcweir        @returns a sequence of rectangles in font coordinate space,
115cdf0e10cSrcweir        specifying the bounds, one for every glyph.
116cdf0e10cSrcweir
117cdf0e10cSrcweir        @see <member>XTextLayout::queryMeasures()</member>
118cdf0e10cSrcweir     */
119cdf0e10cSrcweir    sequence<::com::sun::star::geometry::RealRectangle2D >  queryInkMeasures();
120cdf0e10cSrcweir
121cdf0e10cSrcweir    //-------------------------------------------------------------------------
122cdf0e10cSrcweir
123cdf0e10cSrcweir    /** Query the logical bounding boxes of every character in the
124cdf0e10cSrcweir        given text string.<p>
125cdf0e10cSrcweir
126cdf0e10cSrcweir        Logical bounding boxes means the space that the font allocates
127cdf0e10cSrcweir        for the given character, which, e.g. for a '.', might be
128cdf0e10cSrcweir        significantly broader than the bounds returned via
129cdf0e10cSrcweir        <member>XTextLayout::queryInkMeasures()</member>.
130cdf0e10cSrcweir
131cdf0e10cSrcweir        @returns a sequence of rectangles specifying the bounds in
132cdf0e10cSrcweir        font coordinate space, one for every glyph.
133cdf0e10cSrcweir
134cdf0e10cSrcweir        @see <member>XTextLayout::queryInkMeasures()</member>
135cdf0e10cSrcweir     */
136cdf0e10cSrcweir    sequence<::com::sun::star::geometry::RealRectangle2D>   queryMeasures();
137cdf0e10cSrcweir
138cdf0e10cSrcweir    //-------------------------------------------------------------------------
139cdf0e10cSrcweir
140cdf0e10cSrcweir    /** Query the advancements for every character in the input string.<p>
141cdf0e10cSrcweir
142cdf0e10cSrcweir        This method returns a sequence of advancements, one for each
143cdf0e10cSrcweir        character in the input string (<em>not</em> for every
144cdf0e10cSrcweir        glyph. There might be multiple glyphs per input character, or
145cdf0e10cSrcweir        multiple input characters per glyph). Adding up all
146cdf0e10cSrcweir        advancements yields the total advancement of this layout. To
147cdf0e10cSrcweir        manipulate the layout of a string on the level of characters,
148cdf0e10cSrcweir        this method can be used to query for the layout's default
149cdf0e10cSrcweir        advancements, which can subsequently be changed and applied to
150cdf0e10cSrcweir        the layout via
151cdf0e10cSrcweir        <member>XTextLayout::applyLogicalAdvancements()</member>.<p>
152cdf0e10cSrcweir
153cdf0e10cSrcweir        @returns a sequence of <type>double</type> specifying the
154cdf0e10cSrcweir        advancements per character in font coordinate space.
155cdf0e10cSrcweir
156cdf0e10cSrcweir        @see <member>XTextLayout::applyLogicalAdvancements()</member>
157cdf0e10cSrcweir     */
158cdf0e10cSrcweir    sequence<double>            queryLogicalAdvancements();
159cdf0e10cSrcweir
160cdf0e10cSrcweir    //-------------------------------------------------------------------------
161cdf0e10cSrcweir
162cdf0e10cSrcweir    /** Apply explicit advancements for every character in the layout
163cdf0e10cSrcweir        string.<p>
164cdf0e10cSrcweir
165cdf0e10cSrcweir        This method applies the specified advancements to every
166cdf0e10cSrcweir        logical character in the input string (<em>not</em> for every
167cdf0e10cSrcweir        glyph. There might be multiple glyphs per input character, or
168cdf0e10cSrcweir        multiple input characters per glyph). This is useful to
169*6d53c851Smseidel        explicitly manipulate the exact output positions of
170cdf0e10cSrcweir        characters, e.g. relative to a reference output device.<p>
171cdf0e10cSrcweir
172cdf0e10cSrcweir        @param aAdvancements
173cdf0e10cSrcweir        A sequence of character advancements, in font coordinate
174cdf0e10cSrcweir        space.
175cdf0e10cSrcweir
176cdf0e10cSrcweir        @see <member>XTextLayout::queryLogicalAdvancements()</member>
177cdf0e10cSrcweir
178cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IllegalArgumentException</type>
179cdf0e10cSrcweir        if the size of aAdvancements does not match the number of
180cdf0e10cSrcweir        characters in the text.
181cdf0e10cSrcweir     */
182cdf0e10cSrcweir    void                        applyLogicalAdvancements( [in] sequence< double > aAdvancements )
183cdf0e10cSrcweir        raises (com::sun::star::lang::IllegalArgumentException);
184cdf0e10cSrcweir
185cdf0e10cSrcweir    //-------------------------------------------------------------------------
186cdf0e10cSrcweir
187cdf0e10cSrcweir    /** Query the overall bounding box of the text.<p>
188cdf0e10cSrcweir
189cdf0e10cSrcweir        This method is similar to
190cdf0e10cSrcweir        <member>XTextLayout::queryTextMeasures</member>, only that the
191cdf0e10cSrcweir        overall bounds are returned by this method.<p>
192cdf0e10cSrcweir
193cdf0e10cSrcweir        @return the overall bounding box for the given layout, in font
194cdf0e10cSrcweir        coordinate space.
195cdf0e10cSrcweir     */
196cdf0e10cSrcweir    ::com::sun::star::geometry::RealRectangle2D   queryTextBounds();
197cdf0e10cSrcweir
198cdf0e10cSrcweir    //-------------------------------------------------------------------------
199cdf0e10cSrcweir
200cdf0e10cSrcweir    /** Justify the text to the given size.<p>
201cdf0e10cSrcweir
202cdf0e10cSrcweir        This method is the core of the <type>XTextLayout</type>
203cdf0e10cSrcweir        interface, because it layouts the text in a typographically
204cdf0e10cSrcweir        correct way into the available space.<p>
205cdf0e10cSrcweir
206cdf0e10cSrcweir        @param nSize
207cdf0e10cSrcweir        The requested size of the text after justification (either
208cdf0e10cSrcweir        width or height, depending on the writing mode). This
209cdf0e10cSrcweir        parameter is interpreted in font coordinate space.
210cdf0e10cSrcweir
211cdf0e10cSrcweir        @return the actual size of the text after the justification in
212cdf0e10cSrcweir        the font coordinate space. Depending on the font and the
213cdf0e10cSrcweir        script type, this might be somewhat different from the size
214cdf0e10cSrcweir        requested. If the requested size was smaller than the
215cdf0e10cSrcweir        justification algorithm could compress the text, this value
216cdf0e10cSrcweir        might even be significantly larger than nSize.
217cdf0e10cSrcweir
218cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IllegalArgumentException</type>
219cdf0e10cSrcweir        if nSize is 0 or negative.
220cdf0e10cSrcweir     */
221cdf0e10cSrcweir    double justify( [in] double nSize )
222cdf0e10cSrcweir        raises (com::sun::star::lang::IllegalArgumentException);
223cdf0e10cSrcweir
224cdf0e10cSrcweir    //-------------------------------------------------------------------------
225cdf0e10cSrcweir
226cdf0e10cSrcweir    /** Justify a number of text layouts to the given size.<p>
227cdf0e10cSrcweir
228cdf0e10cSrcweir        This method can be used to combine the layout of a text line
229cdf0e10cSrcweir        into a single justification run. This is e.g. useful if the
230cdf0e10cSrcweir        line consists of several text portions (e.g. because of
231cdf0e10cSrcweir        different fonts or colors), but it is desirable to spread the
232cdf0e10cSrcweir        available space more globally across the different layout
233cdf0e10cSrcweir        objects. If, for example, one layout object contains
234cdf0e10cSrcweir        significantly more whitespace or Kashidas than the rest, this
235cdf0e10cSrcweir        method can assign proportionally more space to this layout
236cdf0e10cSrcweir        object.<p>
237cdf0e10cSrcweir
238cdf0e10cSrcweir        @param aNextLayouts
239cdf0e10cSrcweir        A sequence of layouts following this one in logical text
240cdf0e10cSrcweir        order.
241cdf0e10cSrcweir
242cdf0e10cSrcweir        @param nSize
243cdf0e10cSrcweir        The requested size of the text for <em>all</em>
244cdf0e10cSrcweir        <type>XTextLayout</type>s after justification in font
245cdf0e10cSrcweir        coordinate space (either width or height, depending on the
246cdf0e10cSrcweir        writing mode).
247cdf0e10cSrcweir
248cdf0e10cSrcweir        @return the actual size of the text after the justification,
249cdf0e10cSrcweir        in font coordinate space. Depending on the font and the
250cdf0e10cSrcweir        script type, this might be somewhat different from the size
251cdf0e10cSrcweir        requested. If the requested size was smaller than the
252cdf0e10cSrcweir        justification algorithm could compress the text, this value
253cdf0e10cSrcweir        might even be significantly larger than nSize.
254cdf0e10cSrcweir
255cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IllegalArgumentException</type>
256cdf0e10cSrcweir        if one of the parameters are not in the valid range.
257cdf0e10cSrcweir     */
258cdf0e10cSrcweir    double combinedJustify( [in] sequence< XTextLayout > aNextLayouts, [in] double nSize )
259cdf0e10cSrcweir        raises (com::sun::star::lang::IllegalArgumentException);
260cdf0e10cSrcweir
261cdf0e10cSrcweir    //-------------------------------------------------------------------------
262cdf0e10cSrcweir
263cdf0e10cSrcweir    /** This method determines the hit position in the text.<p>
264cdf0e10cSrcweir
265cdf0e10cSrcweir        This method determines the index of the character hit at the
266cdf0e10cSrcweir        specified position (in font coordinate space).<p>
267cdf0e10cSrcweir
268cdf0e10cSrcweir        @param aHitPoint
269cdf0e10cSrcweir        The position in font coordinate space to determine the
270cdf0e10cSrcweir        underlying character index for.
271cdf0e10cSrcweir
272cdf0e10cSrcweir     */
273cdf0e10cSrcweir    TextHit getTextHit( [in] ::com::sun::star::geometry::RealPoint2D aHitPoint );
274cdf0e10cSrcweir
275cdf0e10cSrcweir    //-------------------------------------------------------------------------
276cdf0e10cSrcweir
277cdf0e10cSrcweir    /** This method converts an insertion index to a caret.<p>
278cdf0e10cSrcweir
279cdf0e10cSrcweir        This method generates caret information for a given insertion
280cdf0e10cSrcweir        point in the layout text.<p>
281cdf0e10cSrcweir
282cdf0e10cSrcweir        @param nInsertionIndex
283cdf0e10cSrcweir        The insertion index, as e.g. returned by
284cdf0e10cSrcweir        <member>XTextLayout::getTextHit()</member>. This value must be
285cdf0e10cSrcweir        in the range 0 up to the number of characters in the string.
286cdf0e10cSrcweir
287cdf0e10cSrcweir        @param bExcludeLigatures
288cdf0e10cSrcweir        Set this to <TRUE/>, to skip the positions inside ligatures as
289cdf0e10cSrcweir        valid caret placements. That means, on cannot e.g. set the
290cdf0e10cSrcweir        caret between the 'f' and the 'i' in a 'fi' ligature.
291cdf0e10cSrcweir
292cdf0e10cSrcweir        @returns the generated Caret structure.
293cdf0e10cSrcweir
294cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
295cdf0e10cSrcweir        if nInsertionIndex is outside the permissible range.
296cdf0e10cSrcweir     */
297cdf0e10cSrcweir    Caret getCaret( [in] long nInsertionIndex,
298cdf0e10cSrcweir                    [in] boolean bExcludeLigatures )
299cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException);
300cdf0e10cSrcweir
301cdf0e10cSrcweir    //-------------------------------------------------------------------------
302cdf0e10cSrcweir
303cdf0e10cSrcweir    /** This method calculates a new insertion index.<p>
304cdf0e10cSrcweir
305cdf0e10cSrcweir        This method calculates a new insertion index, given a start
306cdf0e10cSrcweir        index and the number of characters to skip. This is most
307cdf0e10cSrcweir        useful for caret traveling.<p>
308cdf0e10cSrcweir
309cdf0e10cSrcweir        @param nStartIndex
310cdf0e10cSrcweir        The insertion index to start from.
311cdf0e10cSrcweir
312cdf0e10cSrcweir        @param nCaretAdvancement
313cdf0e10cSrcweir        For values greater than 0, the caret is visually moved to the
314cdf0e10cSrcweir        right. For values smaller than 0, the caret is visually moved
315cdf0e10cSrcweir        to the left.
316cdf0e10cSrcweir
317cdf0e10cSrcweir        @returns the new insertion index.
318cdf0e10cSrcweir
319cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
320cdf0e10cSrcweir        if nStartIndex or nCaretAdvancement is outside the permissible
321cdf0e10cSrcweir        range.
322cdf0e10cSrcweir     */
323cdf0e10cSrcweir    long getNextInsertionIndex( [in] long nStartIndex,
324cdf0e10cSrcweir                                [in] long nCaretAdvancement,
325cdf0e10cSrcweir                                [in] boolean bExcludeLigatures )
326cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException);
327cdf0e10cSrcweir
328cdf0e10cSrcweir    //-------------------------------------------------------------------------
329cdf0e10cSrcweir
330cdf0e10cSrcweir    /** This method generates a highlight polygon.<p>
331cdf0e10cSrcweir
332cdf0e10cSrcweir        This method generates a highlighting polygon from two
333cdf0e10cSrcweir        insertion indices. This polygon will be visually continuous,
334cdf0e10cSrcweir        i.e. will not have non-highlighted text in between.<p>
335cdf0e10cSrcweir
336cdf0e10cSrcweir        @param nStartIndex
337cdf0e10cSrcweir        Start of the selection range.
338cdf0e10cSrcweir
339cdf0e10cSrcweir        @param nEndIndex
340cdf0e10cSrcweir        End of the selection range.
341cdf0e10cSrcweir
342cdf0e10cSrcweir        @return the highlight polygon in the font coordinate space.
343cdf0e10cSrcweir
344cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
345cdf0e10cSrcweir        if nStartIndex or nEndIndex are outside the permissible
346cdf0e10cSrcweir        range.
347cdf0e10cSrcweir     */
348cdf0e10cSrcweir    XPolyPolygon2D queryVisualHighlighting( [in] long nStartIndex,
349cdf0e10cSrcweir                                            [in] long nEndIndex )
350cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException);
351cdf0e10cSrcweir
352cdf0e10cSrcweir    //-------------------------------------------------------------------------
353cdf0e10cSrcweir
354cdf0e10cSrcweir    /** This method generates a highlight polygon.<p>
355cdf0e10cSrcweir
356cdf0e10cSrcweir        This method generates a highlighting polygon from two
357cdf0e10cSrcweir        insertion indices. This polygon will not always be visually
358cdf0e10cSrcweir        continuous, if e.g. the text direction changes in the middle
359cdf0e10cSrcweir        of the selection, the might be parts visually between start
360cdf0e10cSrcweir        and end position that are not selected.<p>
361cdf0e10cSrcweir
362cdf0e10cSrcweir        @param nStartIndex
363cdf0e10cSrcweir        Start of the selection range.
364cdf0e10cSrcweir
365cdf0e10cSrcweir        @param nEndIndex
366cdf0e10cSrcweir        End of the selection range.
367cdf0e10cSrcweir
368cdf0e10cSrcweir        @return the highlight polygon in the font coordinate space.
369cdf0e10cSrcweir
370cdf0e10cSrcweir        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
371cdf0e10cSrcweir        if nStartIndex or nEndIndex are outside the permissible
372cdf0e10cSrcweir        range.
373cdf0e10cSrcweir     */
374cdf0e10cSrcweir    XPolyPolygon2D queryLogicalHighlighting( [in] long nStartIndex,
375cdf0e10cSrcweir                                             [in] long nEndIndex )
376cdf0e10cSrcweir        raises (com::sun::star::lang::IndexOutOfBoundsException);
377cdf0e10cSrcweir
378cdf0e10cSrcweir    //-------------------------------------------------------------------------
379cdf0e10cSrcweir
380cdf0e10cSrcweir    /** This method yields the baseline offset.<p>
381cdf0e10cSrcweir
382cdf0e10cSrcweir        This method returns the baseline offset for this layout
383cdf0e10cSrcweir        object, either measured from the top or the left edge,
384cdf0e10cSrcweir        depending on the writing direction (horizontally or
385cdf0e10cSrcweir        vertically). Since rendering this layout via
386cdf0e10cSrcweir        <member>XCanvas::drawTextLayout()</member> outputs relative to
387cdf0e10cSrcweir        the layout object's baseline, this method can be used to
388cdf0e10cSrcweir        e.g. output relative to the left, top edge.<p>
389cdf0e10cSrcweir
390cdf0e10cSrcweir        @returns the distance of the main baseline from the top or the
391cdf0e10cSrcweir        left edge of this object, depending on the writing direction.
392cdf0e10cSrcweir     */
393cdf0e10cSrcweir    double getBaselineOffset();
394cdf0e10cSrcweir
395cdf0e10cSrcweir    //-------------------------------------------------------------------------
396cdf0e10cSrcweir
397cdf0e10cSrcweir    /** This method returns the main writing direction.<p>
398cdf0e10cSrcweir
399cdf0e10cSrcweir        This method returns the main writing direction of this layout,
400cdf0e10cSrcweir        i.e. either LEFT_TO_RIGHT or RIGHT_TO_LEFT.<p>
401cdf0e10cSrcweir
402cdf0e10cSrcweir        @returns the main text direction of this layout.
403cdf0e10cSrcweir     */
404cdf0e10cSrcweir    byte getMainTextDirection();
405cdf0e10cSrcweir
406cdf0e10cSrcweir    //-------------------------------------------------------------------------
407cdf0e10cSrcweir
408cdf0e10cSrcweir    /** Request the associated font for this layout..
409cdf0e10cSrcweir
410cdf0e10cSrcweir        @returns the associated font for this layout.
411cdf0e10cSrcweir     */
412cdf0e10cSrcweir    XCanvasFont getFont();
413cdf0e10cSrcweir
414cdf0e10cSrcweir    //-------------------------------------------------------------------------
415cdf0e10cSrcweir
416cdf0e10cSrcweir    /** Request the text this layout contains.
417cdf0e10cSrcweir
418cdf0e10cSrcweir        @returns the text this layout contains.
419cdf0e10cSrcweir     */
420cdf0e10cSrcweir    StringContext getText();
421cdf0e10cSrcweir
422cdf0e10cSrcweir    //-------------------------------------------------------------------------
423cdf0e10cSrcweir
424cdf0e10cSrcweir};
425cdf0e10cSrcweir
426cdf0e10cSrcweir}; }; }; };
427cdf0e10cSrcweir
428cdf0e10cSrcweir#endif
429