1/************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27#ifndef __com_sun_star_rendering_XBezierPolyPolygon2D_idl__ 28#define __com_sun_star_rendering_XBezierPolyPolygon2D_idl__ 29 30#ifndef __com_sun_star_uno_XInterface_idl__ 31#include <com/sun/star/uno/XInterface.idl> 32#endif 33#ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__ 34#include <com/sun/star/lang/IndexOutOfBoundsException.idl> 35#endif 36#ifndef __com_sun_star_rendering_XPolyPolygon2D_idl__ 37#include <com/sun/star/rendering/XPolyPolygon2D.idl> 38#endif 39#ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__ 40#include <com/sun/star/geometry/RealBezierSegment2D.idl> 41#endif 42 43module com { module sun { module star { module rendering { 44 45/** This is a specialized interface for a 2D poly-polygon containing 46 straight line and bezier segments.<p> 47 48 This poly-polygon can contain polygons consisting of a mixture of 49 cubic bezier curves and straight lines. As the straight line is a 50 special case of a cubic bezier curve (control points collinear 51 with the line through start and end point), this can be expressed 52 uniformly with a sequence of <type>RealBezierSegment2D</type>s.<p> 53 54 By convention, a <type>RealBezierSegment2D</type> is a straight 55 line segment, if all three contained points are strictly equal.<p> 56 57 @since OOo 2.0 58 */ 59published interface XBezierPolyPolygon2D : XPolyPolygon2D 60{ 61 /** Query subset of this poly-polygon.<p> 62 63 Query subset of this poly-polygon, starting at the given 64 polygon and the given point within that polygon, and 65 containing the specified number of polygons and points in the 66 last polygon.<p> 67 68 @param nPolygonIndex 69 The index of the polygon to start point retrieval with. This 70 index must be in the range [0,numPolygons-1]. 71 72 @param nNumberOfPolygons 73 The number of polygons to extract. This value must not exceed 74 numPolygons-nPolygonIndex. 75 76 @param nPointIndex 77 The index of the first point in the first polygon to 78 extract. This value must not exceed the number of points in 79 this polygon minus one. 80 81 @param nNumberOfPoints 82 The number of points to extract from the last polygon. This 83 value must not exceed the number of points in this last 84 polygon minus one. 85 86 @returns the sequence of extracted points. 87 88 @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type> 89 if one of the given values exceed the permissible range. 90 */ 91 sequence< sequence < ::com::sun::star::geometry::RealBezierSegment2D > > getBezierSegments( [in] long nPolygonIndex, [in] long nNumberOfPolygons, [in] long nPointIndex, [in] long nNumberOfPoints ) 92 raises (com::sun::star::lang::IndexOutOfBoundsException); 93 94 //------------------------------------------------------------------------- 95 96 /** Set the specified sequence of bezier segments to the poly-polygon. 97 98 This method can either set the whole poly-polygon to the new 99 data, or insert the segments at the given index 100 101 @param nPolygonIndex 102 The index of the polygon to start segment insertion with. This 103 index must be in the range [0,numPolygons], and the insertion 104 will take place <em>before</em> this position (i.e. when 105 specifying 0 here, the given bezier sequence will precede all 106 existing polygons already within the poly-polygon). To append 107 to a poly-polygon, call setPoints() with 108 <member>XBezierPolyPolygon2D::getNumberOfPolygons()</member> 109 as the polygon index. If nPolygonIndex is -1, the given 110 bezier sequence <em>replaces</em> the poly-polygon content, 111 such that after this method completes, it contains exactly the 112 specified bezier segment data. 113 114 @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type> 115 if one of the given values exceed the permissible range. 116 */ 117 void setBezierSegments( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points, [in] long nPolygonIndex ) 118 raises (com::sun::star::lang::IndexOutOfBoundsException); 119 120 //------------------------------------------------------------------------- 121 122 /** Get a single point from the poly-polygon. 123 124 @param nPolygonIndex 125 The index of the polygon where the point to be extract is 126 contained within. This index must be in the range 127 [0,numPolygons-1]. 128 129 @param nPointIndex 130 The index of the point in the polygon specified by 131 nPolygonIndex, which is to be retrieved. This value must not 132 exceed the number of points in this polygon minus one. 133 134 @returns the requested point. 135 136 @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type> 137 if one of the given values exceed the permissible range. 138 139 */ 140 ::com::sun::star::geometry::RealBezierSegment2D getBezierSegment( [in] long nPolygonIndex, [in] long nPointIndex ) 141 raises (com::sun::star::lang::IndexOutOfBoundsException); 142 143 //------------------------------------------------------------------------- 144 145 /** Set a single point on the poly-polygon.<p> 146 147 The remaining points of the poly-polygon will not be changed by 148 this method. Use 149 <member>XBezierPolyPolygon2D::getNumberOfPolygons()</member> 150 or 151 <member>XBezierPolyPolygon2D::getNumberOfPolygonPoints()</member> 152 to append points or polygons, respectively.<p> 153 154 @param point 155 The point to be set at the poly-polygon. 156 157 @param nPolygonIndex 158 The index of the polygon to insert the point in. This index 159 must be in the range [0,numPolygons]. 160 161 @param nPointIndex 162 The index of the point in the polygon specified by 163 nPolygonIndex, which is to be set. This value must not 164 exceed the number of points in this polygon. 165 166 @throws <type>com::sun::star::lang::IndexOutOfBoundsException</type> 167 if one of the given values exceed the permissible range. 168 */ 169 void setBezierSegment( [in] ::com::sun::star::geometry::RealBezierSegment2D point, [in] long nPolygonIndex, [in] long nPointIndex ) 170 raises (com::sun::star::lang::IndexOutOfBoundsException); 171}; 172 173}; }; }; }; 174 175#endif 176