xref: /trunk/main/canvas/source/vcl/canvashelper.hxx (revision 914d351e5f5b84e4342a86d6ab8d4aca7308b9bd)
1*91c99ff4SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*91c99ff4SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*91c99ff4SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*91c99ff4SAndrew Rist  * distributed with this work for additional information
6*91c99ff4SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*91c99ff4SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*91c99ff4SAndrew Rist  * "License"); you may not use this file except in compliance
9*91c99ff4SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11*91c99ff4SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13*91c99ff4SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*91c99ff4SAndrew Rist  * software distributed under the License is distributed on an
15*91c99ff4SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*91c99ff4SAndrew Rist  * KIND, either express or implied.  See the License for the
17*91c99ff4SAndrew Rist  * specific language governing permissions and limitations
18*91c99ff4SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20*91c99ff4SAndrew Rist  *************************************************************/
21*91c99ff4SAndrew Rist 
22*91c99ff4SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _VCLCANVAS_CANVASHELPER_HXX_
25cdf0e10cSrcweir #define _VCLCANVAS_CANVASHELPER_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <com/sun/star/rendering/XCanvas.hpp>
28cdf0e10cSrcweir #include <com/sun/star/rendering/XIntegerBitmap.hpp>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include <vcl/outdev.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir #include <canvas/vclwrapper.hxx>
33cdf0e10cSrcweir 
34cdf0e10cSrcweir #include "cachedbitmap.hxx"
35cdf0e10cSrcweir #include "outdevprovider.hxx"
36cdf0e10cSrcweir 
37cdf0e10cSrcweir #include <boost/utility.hpp>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir 
40cdf0e10cSrcweir namespace vclcanvas
41cdf0e10cSrcweir {
42cdf0e10cSrcweir     class SpriteCanvas;
43cdf0e10cSrcweir 
44cdf0e10cSrcweir     /** Helper class for basic canvas functionality. Also offers
45cdf0e10cSrcweir         optional backbuffer painting, when providing it with a second
46cdf0e10cSrcweir         OutputDevice to render into.
47cdf0e10cSrcweir      */
48cdf0e10cSrcweir     class CanvasHelper : private ::boost::noncopyable
49cdf0e10cSrcweir     {
50cdf0e10cSrcweir     public:
51cdf0e10cSrcweir         /** Create canvas helper
52cdf0e10cSrcweir          */
53cdf0e10cSrcweir         CanvasHelper();
54cdf0e10cSrcweir 
55cdf0e10cSrcweir         /// Release all references
56cdf0e10cSrcweir         void disposing();
57cdf0e10cSrcweir 
58cdf0e10cSrcweir         /** Initialize canvas helper
59cdf0e10cSrcweir 
60cdf0e10cSrcweir             This method late-initializes the canvas helper, providing
61cdf0e10cSrcweir             it with the necessary device and output objects. Note that
62cdf0e10cSrcweir             the CanvasHelper does <em>not</em> take ownership of the
63cdf0e10cSrcweir             passed rDevice reference, nor does it perform any
64cdf0e10cSrcweir             reference counting. Thus, to prevent the reference counted
65cdf0e10cSrcweir             SpriteCanvas object from deletion, the user of this class
66cdf0e10cSrcweir             is responsible for holding ref-counted references itself!
67cdf0e10cSrcweir 
68cdf0e10cSrcweir             @param rDevice
69cdf0e10cSrcweir             Reference device this canvas is associated with
70cdf0e10cSrcweir 
71cdf0e10cSrcweir             @param rOutDev
72cdf0e10cSrcweir             Set primary output device for this canvas. That's where
73cdf0e10cSrcweir             all content is output to.
74cdf0e10cSrcweir 
75cdf0e10cSrcweir             @param bProtect
76cdf0e10cSrcweir             When true, all output operations preserve outdev
77cdf0e10cSrcweir             state. When false, outdev state might change at any time.
78cdf0e10cSrcweir 
79cdf0e10cSrcweir             @param bHaveAlpha
80cdf0e10cSrcweir             When true, hasAlpha() will always return true, otherwise, false.
81cdf0e10cSrcweir          */
82cdf0e10cSrcweir         void init( ::com::sun::star::rendering::XGraphicDevice& rDevice,
83cdf0e10cSrcweir                    const OutDevProviderSharedPtr&               rOutDev,
84cdf0e10cSrcweir                    bool                                         bProtect,
85cdf0e10cSrcweir                    bool                                         bHaveAlpha );
86cdf0e10cSrcweir 
87cdf0e10cSrcweir         /** Set primary output device
88cdf0e10cSrcweir 
89cdf0e10cSrcweir             This changes the primary output device, where rendering is
90cdf0e10cSrcweir             sent to.
91cdf0e10cSrcweir          */
92cdf0e10cSrcweir         void setOutDev( const OutDevProviderSharedPtr&  rOutDev,
93cdf0e10cSrcweir                         bool                            bProtect);
94cdf0e10cSrcweir 
95cdf0e10cSrcweir         /** Set secondary output device
96cdf0e10cSrcweir 
97cdf0e10cSrcweir             Used for sprites, to generate mask bitmap.
98cdf0e10cSrcweir          */
99cdf0e10cSrcweir         void setBackgroundOutDev( const OutDevProviderSharedPtr& rOutDev );
100cdf0e10cSrcweir 
101cdf0e10cSrcweir 
102cdf0e10cSrcweir         // CanvasHelper functionality
103cdf0e10cSrcweir         // ==========================
104cdf0e10cSrcweir 
105cdf0e10cSrcweir         // XCanvas (only providing, not implementing the
106cdf0e10cSrcweir         // interface. Also note subtle method parameter differences)
107cdf0e10cSrcweir         void clear();
108cdf0e10cSrcweir         void drawPoint( const ::com::sun::star::rendering::XCanvas*         rCanvas,
109cdf0e10cSrcweir                         const ::com::sun::star::geometry::RealPoint2D&      aPoint,
110cdf0e10cSrcweir                         const ::com::sun::star::rendering::ViewState&       viewState,
111cdf0e10cSrcweir                         const ::com::sun::star::rendering::RenderState&     renderState );
112cdf0e10cSrcweir         void drawLine( const ::com::sun::star::rendering::XCanvas*      rCanvas,
113cdf0e10cSrcweir                        const ::com::sun::star::geometry::RealPoint2D&   aStartPoint,
114cdf0e10cSrcweir                        const ::com::sun::star::geometry::RealPoint2D&   aEndPoint,
115cdf0e10cSrcweir                        const ::com::sun::star::rendering::ViewState&    viewState,
116cdf0e10cSrcweir                        const ::com::sun::star::rendering::RenderState&  renderState );
117cdf0e10cSrcweir         void drawBezier( const ::com::sun::star::rendering::XCanvas*            rCanvas,
118cdf0e10cSrcweir                          const ::com::sun::star::geometry::RealBezierSegment2D& aBezierSegment,
119cdf0e10cSrcweir                          const ::com::sun::star::geometry::RealPoint2D&         aEndPoint,
120cdf0e10cSrcweir                          const ::com::sun::star::rendering::ViewState&          viewState,
121cdf0e10cSrcweir                          const ::com::sun::star::rendering::RenderState&        renderState );
122cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
123cdf0e10cSrcweir             drawPolyPolygon( const ::com::sun::star::rendering::XCanvas*        rCanvas,
124cdf0e10cSrcweir                              const ::com::sun::star::uno::Reference<
125cdf0e10cSrcweir                                 ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
126cdf0e10cSrcweir                              const ::com::sun::star::rendering::ViewState&      viewState,
127cdf0e10cSrcweir                              const ::com::sun::star::rendering::RenderState&    renderState );
128cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
129cdf0e10cSrcweir             strokePolyPolygon( const ::com::sun::star::rendering::XCanvas*          rCanvas,
130cdf0e10cSrcweir                                const ::com::sun::star::uno::Reference<
131cdf0e10cSrcweir                                     ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
132cdf0e10cSrcweir                                const ::com::sun::star::rendering::ViewState&        viewState,
133cdf0e10cSrcweir                                const ::com::sun::star::rendering::RenderState&      renderState,
134cdf0e10cSrcweir                                const ::com::sun::star::rendering::StrokeAttributes& strokeAttributes );
135cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
136cdf0e10cSrcweir             strokeTexturedPolyPolygon( const ::com::sun::star::rendering::XCanvas*          rCanvas,
137cdf0e10cSrcweir                                        const ::com::sun::star::uno::Reference<
138cdf0e10cSrcweir                                             ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
139cdf0e10cSrcweir                                        const ::com::sun::star::rendering::ViewState&        viewState,
140cdf0e10cSrcweir                                        const ::com::sun::star::rendering::RenderState&      renderState,
141cdf0e10cSrcweir                                        const ::com::sun::star::uno::Sequence<
142cdf0e10cSrcweir                                             ::com::sun::star::rendering::Texture >&         textures,
143cdf0e10cSrcweir                                        const ::com::sun::star::rendering::StrokeAttributes& strokeAttributes );
144cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
145cdf0e10cSrcweir             strokeTextureMappedPolyPolygon( const ::com::sun::star::rendering::XCanvas*             rCanvas,
146cdf0e10cSrcweir                                             const ::com::sun::star::uno::Reference<
147cdf0e10cSrcweir                                                     ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
148cdf0e10cSrcweir                                             const ::com::sun::star::rendering::ViewState&           viewState,
149cdf0e10cSrcweir                                             const ::com::sun::star::rendering::RenderState&         renderState,
150cdf0e10cSrcweir                                             const ::com::sun::star::uno::Sequence<
151cdf0e10cSrcweir                                                     ::com::sun::star::rendering::Texture >&         textures,
152cdf0e10cSrcweir                                             const ::com::sun::star::uno::Reference<
153cdf0e10cSrcweir                                                     ::com::sun::star::geometry::XMapping2D >&       xMapping,
154cdf0e10cSrcweir                                             const ::com::sun::star::rendering::StrokeAttributes&    strokeAttributes );
155cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >
156cdf0e10cSrcweir             queryStrokeShapes( const ::com::sun::star::rendering::XCanvas*          rCanvas,
157cdf0e10cSrcweir                                const ::com::sun::star::uno::Reference<
158cdf0e10cSrcweir                                     ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
159cdf0e10cSrcweir                                const ::com::sun::star::rendering::ViewState&        viewState,
160cdf0e10cSrcweir                                const ::com::sun::star::rendering::RenderState&      renderState,
161cdf0e10cSrcweir                                const ::com::sun::star::rendering::StrokeAttributes& strokeAttributes );
162cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
163cdf0e10cSrcweir             fillPolyPolygon( const ::com::sun::star::rendering::XCanvas*            rCanvas,
164cdf0e10cSrcweir                              const ::com::sun::star::uno::Reference<
165cdf0e10cSrcweir                                     ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
166cdf0e10cSrcweir                              const ::com::sun::star::rendering::ViewState&          viewState,
167cdf0e10cSrcweir                              const ::com::sun::star::rendering::RenderState&        renderState );
168cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
169cdf0e10cSrcweir             fillTexturedPolyPolygon( const ::com::sun::star::rendering::XCanvas*            rCanvas,
170cdf0e10cSrcweir                                      const ::com::sun::star::uno::Reference<
171cdf0e10cSrcweir                                             ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
172cdf0e10cSrcweir                                      const ::com::sun::star::rendering::ViewState&          viewState,
173cdf0e10cSrcweir                                      const ::com::sun::star::rendering::RenderState&        renderState,
174cdf0e10cSrcweir                                      const ::com::sun::star::uno::Sequence<
175cdf0e10cSrcweir                                             ::com::sun::star::rendering::Texture >&         textures );
176cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
177cdf0e10cSrcweir             fillTextureMappedPolyPolygon( const ::com::sun::star::rendering::XCanvas*           rCanvas,
178cdf0e10cSrcweir                                           const ::com::sun::star::uno::Reference<
179cdf0e10cSrcweir                                                 ::com::sun::star::rendering::XPolyPolygon2D >&  xPolyPolygon,
180cdf0e10cSrcweir                                           const ::com::sun::star::rendering::ViewState&         viewState,
181cdf0e10cSrcweir                                           const ::com::sun::star::rendering::RenderState&       renderState,
182cdf0e10cSrcweir                                           const ::com::sun::star::uno::Sequence<
183cdf0e10cSrcweir                                                 ::com::sun::star::rendering::Texture >&         textures,
184cdf0e10cSrcweir                                           const ::com::sun::star::uno::Reference<
185cdf0e10cSrcweir                                                 ::com::sun::star::geometry::XMapping2D >&       xMapping );
186cdf0e10cSrcweir 
187cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvasFont >
188cdf0e10cSrcweir             createFont( const ::com::sun::star::rendering::XCanvas*         rCanvas,
189cdf0e10cSrcweir                         const ::com::sun::star::rendering::FontRequest&     fontRequest,
190cdf0e10cSrcweir                         const ::com::sun::star::uno::Sequence<
191cdf0e10cSrcweir                             ::com::sun::star::beans::PropertyValue >&       extraFontProperties,
192cdf0e10cSrcweir                         const ::com::sun::star::geometry::Matrix2D&         fontMatrix );
193cdf0e10cSrcweir 
194cdf0e10cSrcweir         ::com::sun::star::uno::Sequence< ::com::sun::star::rendering::FontInfo >
195cdf0e10cSrcweir             queryAvailableFonts( const ::com::sun::star::rendering::XCanvas*        rCanvas,
196cdf0e10cSrcweir                                  const ::com::sun::star::rendering::FontInfo&       aFilter,
197cdf0e10cSrcweir                                  const ::com::sun::star::uno::Sequence<
198cdf0e10cSrcweir                                         ::com::sun::star::beans::PropertyValue >&   aFontProperties );
199cdf0e10cSrcweir 
200cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
201cdf0e10cSrcweir             drawText( const ::com::sun::star::rendering::XCanvas*       rCanvas,
202cdf0e10cSrcweir                       const ::com::sun::star::rendering::StringContext& text,
203cdf0e10cSrcweir                       const ::com::sun::star::uno::Reference<
204cdf0e10cSrcweir                             ::com::sun::star::rendering::XCanvasFont >& xFont,
205cdf0e10cSrcweir                       const ::com::sun::star::rendering::ViewState&     viewState,
206cdf0e10cSrcweir                       const ::com::sun::star::rendering::RenderState&   renderState,
207cdf0e10cSrcweir                       sal_Int8                                          textDirection );
208cdf0e10cSrcweir 
209cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
210cdf0e10cSrcweir             drawTextLayout( const ::com::sun::star::rendering::XCanvas*         rCanvas,
211cdf0e10cSrcweir                             const ::com::sun::star::uno::Reference<
212cdf0e10cSrcweir                                     ::com::sun::star::rendering::XTextLayout >& layoutetText,
213cdf0e10cSrcweir                             const ::com::sun::star::rendering::ViewState&       viewState,
214cdf0e10cSrcweir                             const ::com::sun::star::rendering::RenderState&     renderState );
215cdf0e10cSrcweir 
216cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
217cdf0e10cSrcweir             drawBitmap( const ::com::sun::star::rendering::XCanvas*     rCanvas,
218cdf0e10cSrcweir                         const ::com::sun::star::uno::Reference<
219cdf0e10cSrcweir                                 ::com::sun::star::rendering::XBitmap >& xBitmap,
220cdf0e10cSrcweir                         const ::com::sun::star::rendering::ViewState&   viewState,
221cdf0e10cSrcweir                         const ::com::sun::star::rendering::RenderState& renderState );
222cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
223cdf0e10cSrcweir             drawBitmapModulated( const ::com::sun::star::rendering::XCanvas*        rCanvas,
224cdf0e10cSrcweir                                  const ::com::sun::star::uno::Reference<
225cdf0e10cSrcweir                                         ::com::sun::star::rendering::XBitmap >&     xBitmap,
226cdf0e10cSrcweir                                  const ::com::sun::star::rendering::ViewState&      viewState,
227cdf0e10cSrcweir                                  const ::com::sun::star::rendering::RenderState&    renderState );
228cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XGraphicDevice >
229cdf0e10cSrcweir             getDevice();
230cdf0e10cSrcweir 
231cdf0e10cSrcweir         // BitmapCanvasHelper functionality
232cdf0e10cSrcweir         // ================================
233cdf0e10cSrcweir 
234cdf0e10cSrcweir         void copyRect( const ::com::sun::star::rendering::XCanvas*          rCanvas,
235cdf0e10cSrcweir                        const ::com::sun::star::uno::Reference<
236cdf0e10cSrcweir                             ::com::sun::star::rendering::XBitmapCanvas >&   sourceCanvas,
237cdf0e10cSrcweir                        const ::com::sun::star::geometry::RealRectangle2D&   sourceRect,
238cdf0e10cSrcweir                        const ::com::sun::star::rendering::ViewState&        sourceViewState,
239cdf0e10cSrcweir                        const ::com::sun::star::rendering::RenderState&      sourceRenderState,
240cdf0e10cSrcweir                        const ::com::sun::star::geometry::RealRectangle2D&   destRect,
241cdf0e10cSrcweir                        const ::com::sun::star::rendering::ViewState&        destViewState,
242cdf0e10cSrcweir                        const ::com::sun::star::rendering::RenderState&      destRenderState );
243cdf0e10cSrcweir 
244cdf0e10cSrcweir         ::com::sun::star::geometry::IntegerSize2D getSize();
245cdf0e10cSrcweir 
246cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmapCanvas > queryBitmapCanvas();
247cdf0e10cSrcweir 
248cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XBitmap >
249cdf0e10cSrcweir             getScaledBitmap( const ::com::sun::star::geometry::RealSize2D&  newSize,
250cdf0e10cSrcweir                              sal_Bool                                               beFast );
251cdf0e10cSrcweir 
252cdf0e10cSrcweir         ::com::sun::star::uno::Sequence< sal_Int8 >
253cdf0e10cSrcweir             getData( ::com::sun::star::rendering::IntegerBitmapLayout&      bitmapLayout,
254cdf0e10cSrcweir                      const ::com::sun::star::geometry::IntegerRectangle2D&  rect );
255cdf0e10cSrcweir 
256cdf0e10cSrcweir         void setData( const ::com::sun::star::uno::Sequence< sal_Int8 >&        data,
257cdf0e10cSrcweir                       const ::com::sun::star::rendering::IntegerBitmapLayout&   bitmapLayout,
258cdf0e10cSrcweir                       const ::com::sun::star::geometry::IntegerRectangle2D&     rect );
259cdf0e10cSrcweir 
260cdf0e10cSrcweir         void setPixel( const ::com::sun::star::uno::Sequence< sal_Int8 >&       color,
261cdf0e10cSrcweir                        const ::com::sun::star::rendering::IntegerBitmapLayout&  bitmapLayout,
262cdf0e10cSrcweir                        const ::com::sun::star::geometry::IntegerPoint2D&        pos );
263cdf0e10cSrcweir 
264cdf0e10cSrcweir         ::com::sun::star::uno::Sequence< sal_Int8 >
265cdf0e10cSrcweir             getPixel( ::com::sun::star::rendering::IntegerBitmapLayout& bitmapLayout,
266cdf0e10cSrcweir                       const ::com::sun::star::geometry::IntegerPoint2D& pos );
267cdf0e10cSrcweir 
268cdf0e10cSrcweir         ::com::sun::star::rendering::IntegerBitmapLayout getMemoryLayout();
269cdf0e10cSrcweir 
270cdf0e10cSrcweir         /// Repaint a cached bitmap
271cdf0e10cSrcweir         bool repaint( const GraphicObjectSharedPtr&                   rGrf,
272cdf0e10cSrcweir                       const ::com::sun::star::rendering::ViewState&   viewState,
273cdf0e10cSrcweir                       const ::com::sun::star::rendering::RenderState& renderState,
274cdf0e10cSrcweir                       const ::Point&                                  rPt,
275cdf0e10cSrcweir                       const ::Size&                                   rSz,
276cdf0e10cSrcweir                       const GraphicAttr&                              rAttr ) const;
277cdf0e10cSrcweir 
278cdf0e10cSrcweir         /** Flush drawing queue.
279cdf0e10cSrcweir 
280cdf0e10cSrcweir             This only works for Window canvases, and ensures that all
281cdf0e10cSrcweir             pending render operations are flushed to the
282cdf0e10cSrcweir             driver/hardware.
283cdf0e10cSrcweir          */
284cdf0e10cSrcweir         void flush() const;
285cdf0e10cSrcweir 
286cdf0e10cSrcweir         enum ColorType
287cdf0e10cSrcweir         {
288cdf0e10cSrcweir             LINE_COLOR, FILL_COLOR, TEXT_COLOR, IGNORE_COLOR
289cdf0e10cSrcweir         };
290cdf0e10cSrcweir 
291cdf0e10cSrcweir         // returns transparency of color
292cdf0e10cSrcweir         int setupOutDevState( const ::com::sun::star::rendering::ViewState&     viewState,
293cdf0e10cSrcweir                               const ::com::sun::star::rendering::RenderState&   renderState,
294cdf0e10cSrcweir                               ColorType                                         eColorType ) const;
295cdf0e10cSrcweir 
296cdf0e10cSrcweir         /** Called from XCanvas base classes, to notify that content
297cdf0e10cSrcweir             is _about_ to change
298cdf0e10cSrcweir         */
modifying()299cdf0e10cSrcweir         void modifying() {}
300cdf0e10cSrcweir 
hasAlpha() const301cdf0e10cSrcweir         bool hasAlpha() const { return mbHaveAlpha; }
302cdf0e10cSrcweir 
303cdf0e10cSrcweir     protected:
304cdf0e10cSrcweir         /** Phyical output device
305cdf0e10cSrcweir 
306cdf0e10cSrcweir             Deliberately not a refcounted reference, because of
307cdf0e10cSrcweir             potential circular references for spritecanvas.
308cdf0e10cSrcweir          */
309cdf0e10cSrcweir         ::com::sun::star::rendering::XGraphicDevice* mpDevice;
310cdf0e10cSrcweir 
311cdf0e10cSrcweir         /// Rendering to this outdev preserves its state
312cdf0e10cSrcweir         OutDevProviderSharedPtr                      mpProtectedOutDev;
313cdf0e10cSrcweir 
314cdf0e10cSrcweir         /// Rendering to this outdev does not preserve its state
315cdf0e10cSrcweir         OutDevProviderSharedPtr                      mpOutDev;
316cdf0e10cSrcweir 
317cdf0e10cSrcweir         /// Rendering to this outdev does not preserve its state
318cdf0e10cSrcweir         OutDevProviderSharedPtr                      mp2ndOutDev;
319cdf0e10cSrcweir 
320cdf0e10cSrcweir         /// When true, content is able to represent alpha
321cdf0e10cSrcweir         bool                                         mbHaveAlpha;
322cdf0e10cSrcweir 
323cdf0e10cSrcweir     private:
324cdf0e10cSrcweir         ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCachedPrimitive >
325cdf0e10cSrcweir             implDrawBitmap( const ::com::sun::star::rendering::XCanvas*     rCanvas,
326cdf0e10cSrcweir                             const ::com::sun::star::uno::Reference<
327cdf0e10cSrcweir                                   ::com::sun::star::rendering::XBitmap >&   xBitmap,
328cdf0e10cSrcweir                             const ::com::sun::star::rendering::ViewState&   viewState,
329cdf0e10cSrcweir                             const ::com::sun::star::rendering::RenderState& renderState,
330cdf0e10cSrcweir                             bool                                            bModulateColors );
331cdf0e10cSrcweir 
332cdf0e10cSrcweir         bool setupTextOutput( ::Point&                                                                              o_rOutPos,
333cdf0e10cSrcweir                               const ::com::sun::star::rendering::ViewState&                                         viewState,
334cdf0e10cSrcweir                               const ::com::sun::star::rendering::RenderState&                                       renderState,
335cdf0e10cSrcweir                               const ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvasFont >&   xFont ) const;
336cdf0e10cSrcweir 
337cdf0e10cSrcweir     };
338cdf0e10cSrcweir }
339cdf0e10cSrcweir 
340cdf0e10cSrcweir #endif /* _VCLCANVAS_CANVASHELPER_HXX_ */
341