summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/rendering/XBezierPolyPolygon2D.idl
blob: 4295c70298737cfc54f0c5d7b8023c73e93cd1a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/
#ifndef __com_sun_star_rendering_XBezierPolyPolygon2D_idl__
#define __com_sun_star_rendering_XBezierPolyPolygon2D_idl__

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/lang/IndexOutOfBoundsException.idl>
#include <com/sun/star/rendering/XPolyPolygon2D.idl>
#include <com/sun/star/geometry/RealBezierSegment2D.idl>

module com { module sun { module star { module rendering {

/** This is a specialized interface for a 2D poly-polygon containing
    straight line and Bezier segments.<p>

    This poly-polygon can contain polygons consisting of a mixture of
    cubic Bezier curves and straight lines. As the straight line is a
    special case of a cubic Bezier curve (control points collinear
    with the line through start and end point), this can be expressed
    uniformly with a sequence of <type>RealBezierSegment2D</type>s.<p>

    By convention, a <type>RealBezierSegment2D</type> is a straight
    line segment, if all three contained points are strictly equal.<p>

    @since OOo 2.0
 */
interface XBezierPolyPolygon2D : XPolyPolygon2D
{
    /** Query subset of this poly-polygon.<p>

        Query subset of this poly-polygon, starting at the given
        polygon and the given point within that polygon, and
        containing the specified number of polygons and points in the
        last polygon.<p>

        @param nPolygonIndex
        The index of the polygon to start point retrieval with. This
        index must be in the range [0,numPolygons-1].

        @param nNumberOfPolygons
        The number of polygons to extract. This value must not exceed
        numPolygons-nPolygonIndex.

        @param nPointIndex
        The index of the first point in the first polygon to
        extract. This value must not exceed the number of points in
        this polygon minus one.

        @param nNumberOfPoints
        The number of points to extract from the last polygon. This
        value must not exceed the number of points in this last
        polygon minus one.

        @returns the sequence of extracted points.

        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
        if one of the given values exceed the permissible range.
     */
    sequence< sequence < ::com::sun::star::geometry::RealBezierSegment2D > > getBezierSegments( [in] long nPolygonIndex, [in] long nNumberOfPolygons, [in] long nPointIndex, [in] long nNumberOfPoints )
        raises (com::sun::star::lang::IndexOutOfBoundsException);


    /** Set the specified sequence of Bezier segments to the poly-polygon.

        This method can either set the whole poly-polygon to the new
        data, or insert the segments at the given index

        @param nPolygonIndex
        The index of the polygon to start segment insertion with. This
        index must be in the range [0,numPolygons], and the insertion
        will take place <em>before</em> this position (i.e. when
        specifying 0 here, the given Bezier sequence will precede all
        existing polygons already within the poly-polygon). To append
        to a poly-polygon, call setPoints() with
        <member>XBezierPolyPolygon2D::getNumberOfPolygons()</member>
        as the polygon index. If nPolygonIndex is -1, the given
        Bezier sequence <em>replaces</em> the poly-polygon content,
        such that after this method completes, it contains exactly the
        specified Bezier segment data.

        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
        if one of the given values exceed the permissible range.
     */
    void setBezierSegments( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points, [in] long nPolygonIndex )
        raises (com::sun::star::lang::IndexOutOfBoundsException);


    /** Get a single point from the poly-polygon.

        @param nPolygonIndex
        The index of the polygon where the point to be extract is
        contained within. This index must be in the range
        [0,numPolygons-1].

        @param nPointIndex
        The index of the point in the polygon specified by
        nPolygonIndex, which is to be retrieved.  This value must not
        exceed the number of points in this polygon minus one.

        @returns the requested point.

        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
        if one of the given values exceed the permissible range.

     */
    ::com::sun::star::geometry::RealBezierSegment2D getBezierSegment( [in] long nPolygonIndex, [in] long nPointIndex )
        raises (com::sun::star::lang::IndexOutOfBoundsException);


    /** Set a single point on the poly-polygon.<p>

        The remaining points of the poly-polygon will not be changed by
        this method. Use
        <member>XBezierPolyPolygon2D::getNumberOfPolygons()</member>
        or
        <member>XBezierPolyPolygon2D::getNumberOfPolygonPoints()</member>
        to append points or polygons, respectively.<p>

        @param point
        The point to be set at the poly-polygon.

        @param nPolygonIndex
        The index of the polygon to insert the point in. This index
        must be in the range [0,numPolygons].

        @param nPointIndex
        The index of the point in the polygon specified by
        nPolygonIndex, which is to be set.  This value must not
        exceed the number of points in this polygon.

        @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type>
        if one of the given values exceed the permissible range.
     */
    void setBezierSegment( [in] ::com::sun::star::geometry::RealBezierSegment2D point, [in] long nPolygonIndex, [in] long nPointIndex )
        raises (com::sun::star::lang::IndexOutOfBoundsException);
};

}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */