/* -*- 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 * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef _CHART2_CLIPPING_HXX #define _CHART2_CLIPPING_HXX #include #include //............................................................................. namespace chart { //............................................................................. //----------------------------------------------------------------------------- /** */ class Clipping { /** This class uses the Liang-Biarsky parametric line-clipping algorithm as described in: Computer Graphics: principles and practice, 2nd ed., James D. Foley et al., Section 3.12.4 on page 117. */ public: /** @descr The intersection between an open polygon and a rectangle is calculated and the resulting lines are placed into the poly-polygon aResult. @param rPolygon The polygon is required to be open, ie. it's start and end point have different coordinates and that it is continuous, ie. has no holes. @param rRectangle The clipping area. @param aResult The resulting lines that are the parts of the given polygon lying inside the clipping area are stored into aResult whose prior content is deleted first. */ static void clipPolygonAtRectangle( const ::com::sun::star::drawing::PolyPolygonShape3D& rPolygon , const ::basegfx::B2DRectangle& rRectangle , ::com::sun::star::drawing::PolyPolygonShape3D& aResult , bool bSplitPiecesToDifferentPolygons = true ); }; //............................................................................. } //namespace chart //............................................................................. #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */