/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * 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 . */ #ifndef __com_sun_star_rendering_XPolyPolygon2D_idl__ #define __com_sun_star_rendering_XPolyPolygon2D_idl__ #include #include #include #include #include module com { module sun { module star { module rendering { /** Generic interface for poly-polygons in 2D. @since OOo 2.0 */ interface XPolyPolygon2D : ::com::sun::star::uno::XInterface { /** Add the specified poly-polygon at the given position. One can do symbolic path construction with this method. The poly-polygons added by this method are not joined in the sense that they participate in mutual fill rule calculations like the polygons inside a single poly-polygon do. When rendering such a poly-polygon without transparency, it will look like the constituting poly-polygons rendered separately on top of another. Alas, when rendering with transparency, separate rendering will combine the alpha of overlapping areas, whereas addPolyPolygon results in constant alpha, regardless how many internal poly-polygons overlap at a single place. @param position The poly-polygon will be added at the given position, i.e. the upper, left edge of the referenced poly-polygon will be at this position relative to the target poly-polygon. @param polyPolygon The poly-polygon to add. Note that the content of this poly-polygon is copied, later changes to polyPolygon will have no effect on the poly-polygon it was added to. @throws a com::sun::star::lang::IllegalArgumentException, if the XPolyPolygon2D parameter does not support one of the data-providing derivative interfaces (XBezierPolyPolygon2D, XLinePolyPolygon2D). */ void addPolyPolygon( [in] ::com::sun::star::geometry::RealPoint2D position, [in] XPolyPolygon2D polyPolygon ) raises (com::sun::star::lang::IllegalArgumentException); /** Query number of polygons inside this poly-polygon */ long getNumberOfPolygons(); /** Query number of points inside given polygon @param polygon The index of the polygon to query the number of points for. Must be in the range [0,getNumberOfPolygons()-1]. */ long getNumberOfPolygonPoints( [in] long polygon ) raises (com::sun::star::lang::IndexOutOfBoundsException); /** Query the rule used to determine inside and outside of the poly-polygon. */ FillRule getFillRule(); /** Set the rule used to determine inside and outside of the poly-polygon. */ void setFillRule( [in] FillRule fillRule ); /** Query whether the specified polygon outline is closed. */ boolean isClosed( [in] long index ) raises (com::sun::star::lang::IndexOutOfBoundsException); /** Set the close state of the specified polygon outline. Use -1 as the index to affect all polygons of this poly-polygon. */ void setClosed( [in] long index, [in] boolean closedState ) raises (com::sun::star::lang::IndexOutOfBoundsException); }; }; }; }; }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */