1*2d788491SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*2d788491SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*2d788491SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*2d788491SAndrew Rist  * distributed with this work for additional information
6*2d788491SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*2d788491SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*2d788491SAndrew Rist  * "License"); you may not use this file except in compliance
9*2d788491SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*2d788491SAndrew Rist  *
11*2d788491SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*2d788491SAndrew Rist  *
13*2d788491SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*2d788491SAndrew Rist  * software distributed under the License is distributed on an
15*2d788491SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*2d788491SAndrew Rist  * KIND, either express or implied.  See the License for the
17*2d788491SAndrew Rist  * specific language governing permissions and limitations
18*2d788491SAndrew Rist  * under the License.
19*2d788491SAndrew Rist  *
20*2d788491SAndrew Rist  *************************************************************/
21*2d788491SAndrew Rist 
22*2d788491SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _CPPCANVAS_POLYPOLYGON_HXX
25cdf0e10cSrcweir #define _CPPCANVAS_POLYPOLYGON_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
30cdf0e10cSrcweir #include <cppcanvas/canvasgraphic.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir namespace basegfx
33cdf0e10cSrcweir {
34cdf0e10cSrcweir     class B2DPolygon;
35cdf0e10cSrcweir     class B2DPolyPolygon;
36cdf0e10cSrcweir }
37cdf0e10cSrcweir 
38cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace rendering
39cdf0e10cSrcweir {
40cdf0e10cSrcweir     class  XPolyPolygon2D;
41cdf0e10cSrcweir } } } }
42cdf0e10cSrcweir 
43cdf0e10cSrcweir 
44cdf0e10cSrcweir /* Definition of PolyPolygon interface */
45cdf0e10cSrcweir 
46cdf0e10cSrcweir namespace cppcanvas
47cdf0e10cSrcweir {
48cdf0e10cSrcweir 
49cdf0e10cSrcweir     /** This interface defines a PolyPolygon canvas object
50cdf0e10cSrcweir 
51cdf0e10cSrcweir 		Consider this object part of the view, and not of the model
52cdf0e10cSrcweir 		data. Although the given polygon is typically copied and held
53cdf0e10cSrcweir 		internally (to facilitate migration to incompatible canvases),
54cdf0e10cSrcweir 		::basegfx::B2DPolygon et al. are ref-counted copy-on-write
55cdf0e10cSrcweir 		classes, i.e. memory shouldn't be wasted. On the other hand,
56cdf0e10cSrcweir 		the API polygon created internally _does_ necessarily
57cdf0e10cSrcweir 		duplicate the data held, but can be easily flushed away via
58cdf0e10cSrcweir 		flush().
59cdf0e10cSrcweir      */
60cdf0e10cSrcweir     class PolyPolygon : public virtual CanvasGraphic
61cdf0e10cSrcweir     {
62cdf0e10cSrcweir     public:
63cdf0e10cSrcweir         virtual void addPolygon( const ::basegfx::B2DPolygon& rPoly ) = 0;
64cdf0e10cSrcweir         virtual void addPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly ) = 0;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir         /** Set polygon fill color
67cdf0e10cSrcweir          */
68cdf0e10cSrcweir         virtual void						setRGBAFillColor( Color::IntSRGBA ) = 0;
69cdf0e10cSrcweir         /** Set polygon line color
70cdf0e10cSrcweir          */
71cdf0e10cSrcweir         virtual void						setRGBALineColor( Color::IntSRGBA ) = 0;
72cdf0e10cSrcweir         /** Get polygon fill color
73cdf0e10cSrcweir          */
74cdf0e10cSrcweir         virtual Color::IntSRGBA				getRGBAFillColor() const = 0;
75cdf0e10cSrcweir         /** Get polygon line color
76cdf0e10cSrcweir          */
77cdf0e10cSrcweir         virtual Color::IntSRGBA				getRGBALineColor() const = 0;
78cdf0e10cSrcweir 
79cdf0e10cSrcweir         virtual void 						setStrokeWidth( const double& rStrokeWidth ) = 0;
80cdf0e10cSrcweir         virtual double 						getStrokeWidth() const = 0;
81cdf0e10cSrcweir 
82cdf0e10cSrcweir         virtual ::com::sun::star::uno::Reference<
83cdf0e10cSrcweir             ::com::sun::star::rendering::XPolyPolygon2D > getUNOPolyPolygon() const = 0;
84cdf0e10cSrcweir     };
85cdf0e10cSrcweir 
86cdf0e10cSrcweir     typedef ::boost::shared_ptr< ::cppcanvas::PolyPolygon > PolyPolygonSharedPtr;
87cdf0e10cSrcweir }
88cdf0e10cSrcweir 
89cdf0e10cSrcweir #endif /* _CPPCANVAS_POLYPOLYGON_HXX */
90