1*25ea7f45SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*25ea7f45SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*25ea7f45SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*25ea7f45SAndrew Rist  * distributed with this work for additional information
6*25ea7f45SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*25ea7f45SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*25ea7f45SAndrew Rist  * "License"); you may not use this file except in compliance
9*25ea7f45SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*25ea7f45SAndrew Rist  *
11*25ea7f45SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*25ea7f45SAndrew Rist  *
13*25ea7f45SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*25ea7f45SAndrew Rist  * software distributed under the License is distributed on an
15*25ea7f45SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*25ea7f45SAndrew Rist  * KIND, either express or implied.  See the License for the
17*25ea7f45SAndrew Rist  * specific language governing permissions and limitations
18*25ea7f45SAndrew Rist  * under the License.
19*25ea7f45SAndrew Rist  *
20*25ea7f45SAndrew Rist  *************************************************************/
21*25ea7f45SAndrew Rist 
22*25ea7f45SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_canvas.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <canvas/debug.hxx>
28cdf0e10cSrcweir #include <tools/diagnose_ex.h>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include <rtl/logfile.hxx>
31cdf0e10cSrcweir #include <rtl/math.hxx>
32cdf0e10cSrcweir 
33cdf0e10cSrcweir #include <com/sun/star/util/Endianness.hpp>
34cdf0e10cSrcweir #include <com/sun/star/rendering/TexturingMode.hpp>
35cdf0e10cSrcweir #include <com/sun/star/rendering/CompositeOperation.hpp>
36cdf0e10cSrcweir #include <com/sun/star/rendering/RepaintResult.hpp>
37cdf0e10cSrcweir #include <com/sun/star/rendering/PathCapType.hpp>
38cdf0e10cSrcweir #include <com/sun/star/rendering/PathJoinType.hpp>
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #include <basegfx/matrix/b2dhommatrix.hxx>
41cdf0e10cSrcweir #include <basegfx/point/b2dpoint.hxx>
42cdf0e10cSrcweir #include <basegfx/tools/canvastools.hxx>
43cdf0e10cSrcweir 
44cdf0e10cSrcweir #include <comphelper/sequence.hxx>
45cdf0e10cSrcweir #include <canvas/canvastools.hxx>
46cdf0e10cSrcweir 
47cdf0e10cSrcweir #include "null_spritecanvas.hxx"
48cdf0e10cSrcweir #include "null_canvasfont.hxx"
49cdf0e10cSrcweir #include "null_textlayout.hxx"
50cdf0e10cSrcweir #include "null_canvashelper.hxx"
51cdf0e10cSrcweir 
52cdf0e10cSrcweir #include <algorithm>
53cdf0e10cSrcweir 
54cdf0e10cSrcweir 
55cdf0e10cSrcweir using namespace ::com::sun::star;
56cdf0e10cSrcweir 
57cdf0e10cSrcweir namespace nullcanvas
58cdf0e10cSrcweir {
CanvasHelper()59cdf0e10cSrcweir     CanvasHelper::CanvasHelper() :
60cdf0e10cSrcweir         mpDevice( NULL ),
61cdf0e10cSrcweir         maSize(),
62cdf0e10cSrcweir         mbHaveAlpha()
63cdf0e10cSrcweir     {
64cdf0e10cSrcweir     }
65cdf0e10cSrcweir 
disposing()66cdf0e10cSrcweir     void CanvasHelper::disposing()
67cdf0e10cSrcweir     {
68cdf0e10cSrcweir         mpDevice = NULL;
69cdf0e10cSrcweir     }
70cdf0e10cSrcweir 
init(const::basegfx::B2ISize & rSize,SpriteCanvas & rDevice,bool bHasAlpha)71cdf0e10cSrcweir     void CanvasHelper::init( const ::basegfx::B2ISize& rSize,
72cdf0e10cSrcweir                              SpriteCanvas&             rDevice,
73cdf0e10cSrcweir                              bool                      bHasAlpha )
74cdf0e10cSrcweir     {
75cdf0e10cSrcweir         mpDevice = &rDevice;
76cdf0e10cSrcweir         maSize = rSize;
77cdf0e10cSrcweir         mbHaveAlpha = bHasAlpha;
78cdf0e10cSrcweir     }
79cdf0e10cSrcweir 
clear()80cdf0e10cSrcweir     void CanvasHelper::clear()
81cdf0e10cSrcweir     {
82cdf0e10cSrcweir     }
83cdf0e10cSrcweir 
drawPoint(const rendering::XCanvas *,const geometry::RealPoint2D &,const rendering::ViewState &,const rendering::RenderState &)84cdf0e10cSrcweir     void CanvasHelper::drawPoint( const rendering::XCanvas* 	/*pCanvas*/,
85cdf0e10cSrcweir                                   const geometry::RealPoint2D& 	/*aPoint*/,
86cdf0e10cSrcweir                                   const rendering::ViewState& 	/*viewState*/,
87cdf0e10cSrcweir                                   const rendering::RenderState&	/*renderState*/ )
88cdf0e10cSrcweir     {
89cdf0e10cSrcweir     }
90cdf0e10cSrcweir 
drawLine(const rendering::XCanvas *,const geometry::RealPoint2D &,const geometry::RealPoint2D &,const rendering::ViewState &,const rendering::RenderState &)91cdf0e10cSrcweir     void CanvasHelper::drawLine( const rendering::XCanvas* 	    /*pCanvas*/,
92cdf0e10cSrcweir                                  const geometry::RealPoint2D& 	/*aPoint1*/,
93cdf0e10cSrcweir                                  const geometry::RealPoint2D& 	/*aPoint2*/,
94cdf0e10cSrcweir                                  const rendering::ViewState& 	/*viewState*/,
95cdf0e10cSrcweir                                  const rendering::RenderState&	/*renderState*/ )
96cdf0e10cSrcweir     {
97cdf0e10cSrcweir     }
98cdf0e10cSrcweir 
drawBezier(const rendering::XCanvas *,const geometry::RealBezierSegment2D &,const geometry::RealPoint2D &,const rendering::ViewState &,const rendering::RenderState &)99cdf0e10cSrcweir     void CanvasHelper::drawBezier( const rendering::XCanvas* 			/*pCanvas*/,
100cdf0e10cSrcweir                                    const geometry::RealBezierSegment2D&	/*aBezierSegment*/,
101cdf0e10cSrcweir                                    const geometry::RealPoint2D& 		/*aEndPoint*/,
102cdf0e10cSrcweir                                    const rendering::ViewState& 			/*viewState*/,
103cdf0e10cSrcweir                                    const rendering::RenderState& 		/*renderState*/ )
104cdf0e10cSrcweir     {
105cdf0e10cSrcweir     }
106cdf0e10cSrcweir 
drawPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &)107cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
108cdf0e10cSrcweir                                                                                  const uno::Reference< rendering::XPolyPolygon2D >& /*xPolyPolygon*/,
109cdf0e10cSrcweir                                                                                  const rendering::ViewState& 						/*viewState*/,
110cdf0e10cSrcweir                                                                                  const rendering::RenderState& 						/*renderState*/ )
111cdf0e10cSrcweir     {
112cdf0e10cSrcweir         // TODO(P1): Provide caching here.
113cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
114cdf0e10cSrcweir     }
115cdf0e10cSrcweir 
strokePolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const rendering::StrokeAttributes &)116cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::strokePolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
117cdf0e10cSrcweir                                                                                    const uno::Reference< rendering::XPolyPolygon2D >& 	/*xPolyPolygon*/,
118cdf0e10cSrcweir                                                                                    const rendering::ViewState& 							/*viewState*/,
119cdf0e10cSrcweir                                                                                    const rendering::RenderState& 						/*renderState*/,
120cdf0e10cSrcweir                                                                                    const rendering::StrokeAttributes& 					/*strokeAttributes*/ )
121cdf0e10cSrcweir     {
122cdf0e10cSrcweir         // TODO(P1): Provide caching here.
123cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
124cdf0e10cSrcweir     }
125cdf0e10cSrcweir 
strokeTexturedPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const uno::Sequence<rendering::Texture> &,const rendering::StrokeAttributes &)126cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::strokeTexturedPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
127cdf0e10cSrcweir                                                                                            const uno::Reference< rendering::XPolyPolygon2D >& 	/*xPolyPolygon*/,
128cdf0e10cSrcweir                                                                                            const rendering::ViewState& 							/*viewState*/,
129cdf0e10cSrcweir                                                                                            const rendering::RenderState& 						/*renderState*/,
130cdf0e10cSrcweir                                                                                            const uno::Sequence< rendering::Texture >& 			/*textures*/,
131cdf0e10cSrcweir                                                                                            const rendering::StrokeAttributes& 					/*strokeAttributes*/ )
132cdf0e10cSrcweir     {
133cdf0e10cSrcweir         // TODO
134cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
135cdf0e10cSrcweir     }
136cdf0e10cSrcweir 
strokeTextureMappedPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const uno::Sequence<rendering::Texture> &,const uno::Reference<geometry::XMapping2D> &,const rendering::StrokeAttributes &)137cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::strokeTextureMappedPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
138cdf0e10cSrcweir                                                                                                 const uno::Reference< rendering::XPolyPolygon2D >&	/*xPolyPolygon*/,
139cdf0e10cSrcweir                                                                                                 const rendering::ViewState& 						/*viewState*/,
140cdf0e10cSrcweir                                                                                                 const rendering::RenderState& 						/*renderState*/,
141cdf0e10cSrcweir                                                                                                 const uno::Sequence< rendering::Texture >& 			/*textures*/,
142cdf0e10cSrcweir                                                                                                 const uno::Reference< geometry::XMapping2D >& 		/*xMapping*/,
143cdf0e10cSrcweir                                                                                                 const rendering::StrokeAttributes& 					/*strokeAttributes*/ )
144cdf0e10cSrcweir     {
145cdf0e10cSrcweir         // TODO
146cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
147cdf0e10cSrcweir     }
148cdf0e10cSrcweir 
queryStrokeShapes(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const rendering::StrokeAttributes &)149cdf0e10cSrcweir     uno::Reference< rendering::XPolyPolygon2D >   CanvasHelper::queryStrokeShapes( const rendering::XCanvas* 							/*pCanvas*/,
150cdf0e10cSrcweir                                                                                    const uno::Reference< rendering::XPolyPolygon2D >& 	/*xPolyPolygon*/,
151cdf0e10cSrcweir                                                                                    const rendering::ViewState& 							/*viewState*/,
152cdf0e10cSrcweir                                                                                    const rendering::RenderState& 						/*renderState*/,
153cdf0e10cSrcweir                                                                                    const rendering::StrokeAttributes& 					/*strokeAttributes*/ )
154cdf0e10cSrcweir     {
155cdf0e10cSrcweir         // TODO
156cdf0e10cSrcweir         return uno::Reference< rendering::XPolyPolygon2D >(NULL);
157cdf0e10cSrcweir     }
158cdf0e10cSrcweir 
fillPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &)159cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::fillPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
160cdf0e10cSrcweir                                                                                  const uno::Reference< rendering::XPolyPolygon2D >& /*xPolyPolygon*/,
161cdf0e10cSrcweir                                                                                  const rendering::ViewState& 						/*viewState*/,
162cdf0e10cSrcweir                                                                                  const rendering::RenderState& 						/*renderState*/ )
163cdf0e10cSrcweir     {
164cdf0e10cSrcweir         // TODO(P1): Provide caching here.
165cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
166cdf0e10cSrcweir     }
167cdf0e10cSrcweir 
fillTexturedPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const uno::Sequence<rendering::Texture> &)168cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::fillTexturedPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
169cdf0e10cSrcweir                                                                                          const uno::Reference< rendering::XPolyPolygon2D >& /*xPolyPolygon*/,
170cdf0e10cSrcweir                                                                                          const rendering::ViewState& 						/*viewState*/,
171cdf0e10cSrcweir                                                                                          const rendering::RenderState& 						/*renderState*/,
172cdf0e10cSrcweir                                                                                          const uno::Sequence< rendering::Texture >& 		/*textures*/ )
173cdf0e10cSrcweir     {
174cdf0e10cSrcweir         // TODO(P1): Provide caching here.
175cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
176cdf0e10cSrcweir     }
177cdf0e10cSrcweir 
fillTextureMappedPolyPolygon(const rendering::XCanvas *,const uno::Reference<rendering::XPolyPolygon2D> &,const rendering::ViewState &,const rendering::RenderState &,const uno::Sequence<rendering::Texture> &,const uno::Reference<geometry::XMapping2D> &)178cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::fillTextureMappedPolyPolygon( const rendering::XCanvas* 							/*pCanvas*/,
179cdf0e10cSrcweir                                                                                               const uno::Reference< rendering::XPolyPolygon2D >& 	/*xPolyPolygon*/,
180cdf0e10cSrcweir                                                                                               const rendering::ViewState& 							/*viewState*/,
181cdf0e10cSrcweir                                                                                               const rendering::RenderState& 						/*renderState*/,
182cdf0e10cSrcweir                                                                                               const uno::Sequence< rendering::Texture >& 			/*textures*/,
183cdf0e10cSrcweir                                                                                               const uno::Reference< geometry::XMapping2D >& 		/*xMapping*/ )
184cdf0e10cSrcweir     {
185cdf0e10cSrcweir         // TODO
186cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
187cdf0e10cSrcweir     }
188cdf0e10cSrcweir 
createFont(const rendering::XCanvas *,const rendering::FontRequest & fontRequest,const uno::Sequence<beans::PropertyValue> & extraFontProperties,const geometry::Matrix2D & fontMatrix)189cdf0e10cSrcweir     uno::Reference< rendering::XCanvasFont > CanvasHelper::createFont( const rendering::XCanvas* 					/*pCanvas*/,
190cdf0e10cSrcweir                                                                        const rendering::FontRequest& 				fontRequest,
191cdf0e10cSrcweir                                                                        const uno::Sequence< beans::PropertyValue >& extraFontProperties,
192cdf0e10cSrcweir                                                                        const geometry::Matrix2D& 					fontMatrix )
193cdf0e10cSrcweir     {
194cdf0e10cSrcweir         return uno::Reference< rendering::XCanvasFont >(
195cdf0e10cSrcweir             new CanvasFont(fontRequest, extraFontProperties, fontMatrix ) );
196cdf0e10cSrcweir     }
197cdf0e10cSrcweir 
queryAvailableFonts(const rendering::XCanvas *,const rendering::FontInfo &,const uno::Sequence<beans::PropertyValue> &)198cdf0e10cSrcweir     uno::Sequence< rendering::FontInfo > CanvasHelper::queryAvailableFonts( const rendering::XCanvas* 						/*pCanvas*/,
199cdf0e10cSrcweir                                                                             const rendering::FontInfo& 						/*aFilter*/,
200cdf0e10cSrcweir                                                                             const uno::Sequence< beans::PropertyValue >& 	/*aFontProperties*/ )
201cdf0e10cSrcweir     {
202cdf0e10cSrcweir         // TODO
203cdf0e10cSrcweir         return uno::Sequence< rendering::FontInfo >();
204cdf0e10cSrcweir     }
205cdf0e10cSrcweir 
drawText(const rendering::XCanvas *,const rendering::StringContext &,const uno::Reference<rendering::XCanvasFont> &,const rendering::ViewState &,const rendering::RenderState &,sal_Int8)206cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawText( const rendering::XCanvas* 						/*pCanvas*/,
207cdf0e10cSrcweir                                                                           const rendering::StringContext& 					/*text*/,
208cdf0e10cSrcweir                                                                           const uno::Reference< rendering::XCanvasFont >& 	/*xFont*/,
209cdf0e10cSrcweir                                                                           const rendering::ViewState& 						/*viewState*/,
210cdf0e10cSrcweir                                                                           const rendering::RenderState& 					/*renderState*/,
211cdf0e10cSrcweir                                                                           sal_Int8				 							/*textDirection*/ )
212cdf0e10cSrcweir     {
213cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
214cdf0e10cSrcweir     }
215cdf0e10cSrcweir 
drawTextLayout(const rendering::XCanvas *,const uno::Reference<rendering::XTextLayout> & xLayoutetText,const rendering::ViewState & viewState,const rendering::RenderState & renderState)216cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawTextLayout( const rendering::XCanvas* 						/*pCanvas*/,
217cdf0e10cSrcweir                                                                                 const uno::Reference< rendering::XTextLayout >& xLayoutetText,
218cdf0e10cSrcweir                                                                                 const rendering::ViewState& 					viewState,
219cdf0e10cSrcweir                                                                                 const rendering::RenderState& 					renderState )
220cdf0e10cSrcweir     {
221cdf0e10cSrcweir         ENSURE_OR_THROW( xLayoutetText.is(),
222cdf0e10cSrcweir                           "CanvasHelper::drawTextLayout: layout is NULL");
223cdf0e10cSrcweir 
224cdf0e10cSrcweir         TextLayout* pTextLayout =
225cdf0e10cSrcweir             dynamic_cast< TextLayout* >( xLayoutetText.get() );
226cdf0e10cSrcweir 
227cdf0e10cSrcweir         ENSURE_OR_THROW( pTextLayout,
228cdf0e10cSrcweir                           "CanvasHelper::drawTextLayout(): TextLayout not compatible with this canvas" );
229cdf0e10cSrcweir 
230cdf0e10cSrcweir         pTextLayout->draw( viewState,
231cdf0e10cSrcweir                            renderState,
232cdf0e10cSrcweir                            mpDevice );
233cdf0e10cSrcweir 
234cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
235cdf0e10cSrcweir     }
236cdf0e10cSrcweir 
drawBitmap(const rendering::XCanvas *,const uno::Reference<rendering::XBitmap> &,const rendering::ViewState &,const rendering::RenderState &)237cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawBitmap( const rendering::XCanvas* 					/*pCanvas*/,
238cdf0e10cSrcweir                                                                             const uno::Reference< rendering::XBitmap >& /*xBitmap*/,
239cdf0e10cSrcweir                                                                             const rendering::ViewState& 				/*viewState*/,
240cdf0e10cSrcweir                                                                             const rendering::RenderState& 				/*renderState*/ )
241cdf0e10cSrcweir     {
242cdf0e10cSrcweir         // TODO(P1): Provide caching here.
243cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
244cdf0e10cSrcweir     }
245cdf0e10cSrcweir 
drawBitmapModulated(const rendering::XCanvas *,const uno::Reference<rendering::XBitmap> &,const rendering::ViewState &,const rendering::RenderState &)246cdf0e10cSrcweir     uno::Reference< rendering::XCachedPrimitive > CanvasHelper::drawBitmapModulated( const rendering::XCanvas* 						/*pCanvas*/,
247cdf0e10cSrcweir                                                                                      const uno::Reference< rendering::XBitmap >& 	/*xBitmap*/,
248cdf0e10cSrcweir                                                                                      const rendering::ViewState& 					/*viewState*/,
249cdf0e10cSrcweir                                                                                      const rendering::RenderState& 					/*renderState*/ )
250cdf0e10cSrcweir     {
251cdf0e10cSrcweir         // TODO(P1): Provide caching here.
252cdf0e10cSrcweir         return uno::Reference< rendering::XCachedPrimitive >(NULL);
253cdf0e10cSrcweir     }
254cdf0e10cSrcweir 
getDevice()255cdf0e10cSrcweir     uno::Reference< rendering::XGraphicDevice > CanvasHelper::getDevice()
256cdf0e10cSrcweir     {
257cdf0e10cSrcweir         return uno::Reference< rendering::XGraphicDevice >(mpDevice);
258cdf0e10cSrcweir     }
259cdf0e10cSrcweir 
copyRect(const rendering::XCanvas *,const uno::Reference<rendering::XBitmapCanvas> &,const geometry::RealRectangle2D &,const rendering::ViewState &,const rendering::RenderState &,const geometry::RealRectangle2D &,const rendering::ViewState &,const rendering::RenderState &)260cdf0e10cSrcweir     void CanvasHelper::copyRect( const rendering::XCanvas* 							/*pCanvas*/,
261cdf0e10cSrcweir                                  const uno::Reference< rendering::XBitmapCanvas >&	/*sourceCanvas*/,
262cdf0e10cSrcweir                                  const geometry::RealRectangle2D& 					/*sourceRect*/,
263cdf0e10cSrcweir                                  const rendering::ViewState& 						/*sourceViewState*/,
264cdf0e10cSrcweir                                  const rendering::RenderState& 						/*sourceRenderState*/,
265cdf0e10cSrcweir                                  const geometry::RealRectangle2D& 					/*destRect*/,
266cdf0e10cSrcweir                                  const rendering::ViewState& 						/*destViewState*/,
267cdf0e10cSrcweir                                  const rendering::RenderState& 						/*destRenderState*/ )
268cdf0e10cSrcweir     {
269cdf0e10cSrcweir         // TODO(F2): copyRect NYI
270cdf0e10cSrcweir     }
271cdf0e10cSrcweir 
getSize()272cdf0e10cSrcweir     geometry::IntegerSize2D CanvasHelper::getSize()
273cdf0e10cSrcweir     {
274cdf0e10cSrcweir         if( !mpDevice )
275cdf0e10cSrcweir             geometry::IntegerSize2D(1, 1); // we're disposed
276cdf0e10cSrcweir 
277cdf0e10cSrcweir         return ::basegfx::unotools::integerSize2DFromB2ISize( maSize );
278cdf0e10cSrcweir     }
279cdf0e10cSrcweir 
getScaledBitmap(const geometry::RealSize2D &,sal_Bool)280cdf0e10cSrcweir     uno::Reference< rendering::XBitmap > CanvasHelper::getScaledBitmap( const geometry::RealSize2D&	/*newSize*/,
281cdf0e10cSrcweir                                                                         sal_Bool 					/*beFast*/ )
282cdf0e10cSrcweir     {
283cdf0e10cSrcweir         // TODO(F1):
284cdf0e10cSrcweir         return uno::Reference< rendering::XBitmap >();
285cdf0e10cSrcweir     }
286cdf0e10cSrcweir 
getData(rendering::IntegerBitmapLayout &,const geometry::IntegerRectangle2D &)287cdf0e10cSrcweir     uno::Sequence< sal_Int8 > CanvasHelper::getData( rendering::IntegerBitmapLayout&     /*bitmapLayout*/,
288cdf0e10cSrcweir                                                      const geometry::IntegerRectangle2D& /*rect*/ )
289cdf0e10cSrcweir     {
290cdf0e10cSrcweir         // TODO
291cdf0e10cSrcweir         return uno::Sequence< sal_Int8 >();
292cdf0e10cSrcweir     }
293cdf0e10cSrcweir 
setData(const uno::Sequence<sal_Int8> &,const rendering::IntegerBitmapLayout &,const geometry::IntegerRectangle2D &)294cdf0e10cSrcweir     void CanvasHelper::setData( const uno::Sequence< sal_Int8 >& 		/*data*/,
295cdf0e10cSrcweir                                 const rendering::IntegerBitmapLayout&   /*bitmapLayout*/,
296cdf0e10cSrcweir                                 const geometry::IntegerRectangle2D& 	/*rect*/ )
297cdf0e10cSrcweir     {
298cdf0e10cSrcweir     }
299cdf0e10cSrcweir 
setPixel(const uno::Sequence<sal_Int8> &,const rendering::IntegerBitmapLayout &,const geometry::IntegerPoint2D &)300cdf0e10cSrcweir     void CanvasHelper::setPixel( const uno::Sequence< sal_Int8 >&       /*color*/,
301cdf0e10cSrcweir                                  const rendering::IntegerBitmapLayout&  /*bitmapLayout*/,
302cdf0e10cSrcweir                                  const geometry::IntegerPoint2D&        /*pos*/ )
303cdf0e10cSrcweir     {
304cdf0e10cSrcweir     }
305cdf0e10cSrcweir 
getPixel(rendering::IntegerBitmapLayout &,const geometry::IntegerPoint2D &)306cdf0e10cSrcweir     uno::Sequence< sal_Int8 > CanvasHelper::getPixel( rendering::IntegerBitmapLayout&   /*bitmapLayout*/,
307cdf0e10cSrcweir                                                       const geometry::IntegerPoint2D&   /*pos*/ )
308cdf0e10cSrcweir     {
309cdf0e10cSrcweir         return uno::Sequence< sal_Int8 >();
310cdf0e10cSrcweir     }
311cdf0e10cSrcweir 
getPalette()312cdf0e10cSrcweir     uno::Reference< rendering::XBitmapPalette > CanvasHelper::getPalette()
313cdf0e10cSrcweir     {
314cdf0e10cSrcweir         // TODO(F1): Palette bitmaps NYI
315cdf0e10cSrcweir         return uno::Reference< rendering::XBitmapPalette >();
316cdf0e10cSrcweir     }
317cdf0e10cSrcweir 
getMemoryLayout()318cdf0e10cSrcweir     rendering::IntegerBitmapLayout CanvasHelper::getMemoryLayout()
319cdf0e10cSrcweir     {
320cdf0e10cSrcweir         return ::canvas::tools::getStdMemoryLayout(getSize());
321cdf0e10cSrcweir     }
322cdf0e10cSrcweir 
flush() const323cdf0e10cSrcweir     void CanvasHelper::flush() const
324cdf0e10cSrcweir     {
325cdf0e10cSrcweir     }
326cdf0e10cSrcweir 
hasAlpha() const327cdf0e10cSrcweir     bool CanvasHelper::hasAlpha() const
328cdf0e10cSrcweir     {
329cdf0e10cSrcweir         return mbHaveAlpha;
330cdf0e10cSrcweir     }
331cdf0e10cSrcweir 
332cdf0e10cSrcweir }
333