xref: /aoo41x/main/svx/inc/svx/polypolygoneditor.hxx (revision 3334a7e6)
1*3334a7e6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*3334a7e6SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*3334a7e6SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*3334a7e6SAndrew Rist  * distributed with this work for additional information
6*3334a7e6SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*3334a7e6SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*3334a7e6SAndrew Rist  * "License"); you may not use this file except in compliance
9*3334a7e6SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*3334a7e6SAndrew Rist  *
11*3334a7e6SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*3334a7e6SAndrew Rist  *
13*3334a7e6SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*3334a7e6SAndrew Rist  * software distributed under the License is distributed on an
15*3334a7e6SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*3334a7e6SAndrew Rist  * KIND, either express or implied.  See the License for the
17*3334a7e6SAndrew Rist  * specific language governing permissions and limitations
18*3334a7e6SAndrew Rist  * under the License.
19*3334a7e6SAndrew Rist  *
20*3334a7e6SAndrew Rist  *************************************************************/
21*3334a7e6SAndrew Rist 
22*3334a7e6SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SDR_POLYPOLYGONEDITOR_HXX_
25cdf0e10cSrcweir #define _SDR_POLYPOLYGONEDITOR_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "svx/svxdllapi.h"
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "svx/ipolypolygoneditorcontroller.hxx"
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include <basegfx/polygon/b2dpolypolygon.hxx>
32cdf0e10cSrcweir #include <set>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir class SdrUShortCont;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir namespace sdr
37cdf0e10cSrcweir {
38cdf0e10cSrcweir 
39cdf0e10cSrcweir /** this class implements some helper functions to edit a B2DPolyPolygon */
40cdf0e10cSrcweir class SVX_DLLPUBLIC PolyPolygonEditor
41cdf0e10cSrcweir {
42cdf0e10cSrcweir public:
43cdf0e10cSrcweir 	PolyPolygonEditor( const basegfx::B2DPolyPolygon& rPolyPolygon, bool bClosed );
44cdf0e10cSrcweir 
GetPolyPolygon() const45cdf0e10cSrcweir 	const basegfx::B2DPolyPolygon& GetPolyPolygon() const { return maPolyPolygon; }
46cdf0e10cSrcweir 
47cdf0e10cSrcweir 	/** returns true if the B2DPolyPolygon was changed.
48cdf0e10cSrcweir 		Warning: B2DPolyPolygon can be empty after this operation!
49cdf0e10cSrcweir 	*/
50cdf0e10cSrcweir 	bool DeletePoints( const std::set< sal_uInt16 >& rAbsPoints );
51cdf0e10cSrcweir 
52cdf0e10cSrcweir 	/** returns true if the B2DPolyPolygon was changed.
53cdf0e10cSrcweir 	*/
54cdf0e10cSrcweir 	bool SetSegmentsKind(SdrPathSegmentKind eKind, const std::set< sal_uInt16 >& rAbsPoints);
55cdf0e10cSrcweir 
56cdf0e10cSrcweir 	/** returns true if the B2DPolyPolygon was changed.
57cdf0e10cSrcweir 	*/
58cdf0e10cSrcweir 	bool SetPointsSmooth( basegfx::B2VectorContinuity eFlags, const std::set< sal_uInt16 >& rAbsPoints);
59cdf0e10cSrcweir 
60cdf0e10cSrcweir 	/** Outputs the realative position ( polygon number and point number in that polygon ) from the absolut point number.
61cdf0e10cSrcweir 		False is returned if the given absolute point is greater not inside this B2DPolyPolygon
62cdf0e10cSrcweir 	*/
63cdf0e10cSrcweir 	static bool GetRelativePolyPoint( const basegfx::B2DPolyPolygon& rPoly, sal_uInt32 nAbsPnt, sal_uInt32& rPolyNum, sal_uInt32& rPointNum );
64cdf0e10cSrcweir 
65cdf0e10cSrcweir private:
66cdf0e10cSrcweir 	basegfx::B2DPolyPolygon maPolyPolygon;
67cdf0e10cSrcweir 	bool mbIsClosed;
68cdf0e10cSrcweir };
69cdf0e10cSrcweir 
70cdf0e10cSrcweir }
71cdf0e10cSrcweir 
72cdf0e10cSrcweir #endif
73