/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef __com_sun_star_rendering_XBezierPolyPolygon2D_idl__ #define __com_sun_star_rendering_XBezierPolyPolygon2D_idl__ #ifndef __com_sun_star_uno_XInterface_idl__ #include #endif #ifndef __com_sun_star_lang_IndexOutOfBoundsException_idl__ #include #endif #ifndef __com_sun_star_rendering_XPolyPolygon2D_idl__ #include #endif #ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__ #include #endif module com { module sun { module star { module rendering { /** This is a specialized interface for a 2D poly-polygon containing straight line and bezier segments.

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 RealBezierSegment2Ds.

By convention, a RealBezierSegment2D is a straight line segment, if all three contained points are strictly equal.

@since OpenOffice 2.0 */ published interface XBezierPolyPolygon2D : XPolyPolygon2D { /** Query subset of this poly-polygon.

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.

@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 com::sun::star::lang::IndexOutOfBoundsException 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 before 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 XBezierPolyPolygon2D::getNumberOfPolygons() as the polygon index. If nPolygonIndex is -1, the given bezier sequence replaces the poly-polygon content, such that after this method completes, it contains exactly the specified bezier segment data. @throws com::sun::star::lang::IndexOutOfBoundsException 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 com::sun::star::lang::IndexOutOfBoundsException 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.

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

@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 com::sun::star::lang::IndexOutOfBoundsException 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