xref: /trunk/main/cppcanvas/inc/cppcanvas/canvas.hxx (revision 2d788491)
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_CANVAS_HXX
25cdf0e10cSrcweir #define _CPPCANVAS_CANVAS_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
30cdf0e10cSrcweir #include <cppcanvas/font.hxx>
31cdf0e10cSrcweir #include <cppcanvas/color.hxx>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir namespace rtl
34cdf0e10cSrcweir {
35cdf0e10cSrcweir     class OUString;
36cdf0e10cSrcweir }
37cdf0e10cSrcweir 
38cdf0e10cSrcweir namespace basegfx
39cdf0e10cSrcweir {
40cdf0e10cSrcweir     class B2DHomMatrix;
41cdf0e10cSrcweir     class B2DPolyPolygon;
42cdf0e10cSrcweir }
43cdf0e10cSrcweir 
44cdf0e10cSrcweir namespace com { namespace sun { namespace star { namespace rendering
45cdf0e10cSrcweir {
46cdf0e10cSrcweir     class  XCanvas;
47cdf0e10cSrcweir     struct ViewState;
48cdf0e10cSrcweir } } } }
49cdf0e10cSrcweir 
50cdf0e10cSrcweir 
51cdf0e10cSrcweir /* Definition of BitmapCanvas */
52cdf0e10cSrcweir 
53cdf0e10cSrcweir namespace cppcanvas
54cdf0e10cSrcweir {
55cdf0e10cSrcweir     class PolyPolygon;
56cdf0e10cSrcweir     class Canvas;
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     // forward declaration, since PolyPolygon also references Canvas
59cdf0e10cSrcweir     typedef ::boost::shared_ptr< PolyPolygon > PolyPolygonSharedPtr;
60cdf0e10cSrcweir 
61cdf0e10cSrcweir     // forward declaration, since cloneCanvas() also references Canvas
62cdf0e10cSrcweir     typedef ::boost::shared_ptr< Canvas > CanvasSharedPtr;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir     /** Canvas interface
65cdf0e10cSrcweir      */
66cdf0e10cSrcweir     class Canvas
67cdf0e10cSrcweir     {
68cdf0e10cSrcweir     public:
69cdf0e10cSrcweir         enum
70cdf0e10cSrcweir         {
71cdf0e10cSrcweir             /** Extra pixel used when canvas anti-aliases.
72cdf0e10cSrcweir 
73cdf0e10cSrcweir             	Enlarge the bounding box of drawing primitives by this
74cdf0e10cSrcweir             	amount in both dimensions, and on both sides of the
75cdf0e10cSrcweir             	bounds, to account for extra pixel touched outside the
76cdf0e10cSrcweir             	actual primitive bounding box, when the canvas
77cdf0e10cSrcweir             	performs anti-aliasing.
78cdf0e10cSrcweir              */
79cdf0e10cSrcweir             ANTIALIASING_EXTRA_SIZE=2
80cdf0e10cSrcweir     	};
81cdf0e10cSrcweir 
~Canvas()82cdf0e10cSrcweir         virtual ~Canvas() {}
83cdf0e10cSrcweir 
84cdf0e10cSrcweir         virtual void 						     setTransformation( const ::basegfx::B2DHomMatrix& rMatrix ) = 0;
85cdf0e10cSrcweir         virtual ::basegfx::B2DHomMatrix          getTransformation() const = 0;
86cdf0e10cSrcweir 
87cdf0e10cSrcweir         virtual void                             setClip( const ::basegfx::B2DPolyPolygon& rClipPoly ) = 0;
88cdf0e10cSrcweir         virtual void                             setClip() = 0;
89cdf0e10cSrcweir 
90cdf0e10cSrcweir         /** Get current clip
91cdf0e10cSrcweir 
92cdf0e10cSrcweir             @return NULL, if no clip is set, otherwise the current clip poly-polygon
93cdf0e10cSrcweir          */
94cdf0e10cSrcweir         virtual ::basegfx::B2DPolyPolygon const* getClip() const = 0;
95cdf0e10cSrcweir 
96cdf0e10cSrcweir         virtual FontSharedPtr                    createFont( const ::rtl::OUString& rFontName, const double& rCellSize ) const = 0;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir         virtual ColorSharedPtr                   createColor() const = 0;
99cdf0e10cSrcweir 
100cdf0e10cSrcweir         virtual CanvasSharedPtr                  clone() const = 0;
101cdf0e10cSrcweir         virtual void                             clear() const = 0;
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         // this should be considered private. if RTTI gets enabled
104cdf0e10cSrcweir         // someday, remove that to a separate interface
105cdf0e10cSrcweir         virtual ::com::sun::star::uno::Reference<
106cdf0e10cSrcweir             ::com::sun::star::rendering::XCanvas > 			getUNOCanvas() const = 0;
107cdf0e10cSrcweir         virtual ::com::sun::star::rendering::ViewState	 	getViewState() const = 0;
108cdf0e10cSrcweir     };
109cdf0e10cSrcweir 
110cdf0e10cSrcweir }
111cdf0e10cSrcweir 
112cdf0e10cSrcweir #endif /* _CPPCANVAS_CANVAS_HXX */
113