1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: bitmap.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_canvas.hxx"
34 #include <canvas/debug.hxx>
35 #include <tools/diagnose_ex.h>
36 #include <canvas/rendering/bitmap.hxx>
37 #include <canvas/rendering/isurfaceproxy.hxx>
38 #include <basegfx/vector/b2isize.hxx>
44 using namespace ::com::sun::star
;
51 ImplBitmap( const ::basegfx::B2IVector
& rSize
,
52 const ISurfaceProxyManagerSharedPtr
& rMgr
,
56 mbIsSurfaceDirty( true )
58 ENSURE_OR_THROW( rMgr
,
59 "Bitmap::Bitmap(): Invalid surface proxy manager" );
61 Image::Description desc
;
63 desc
.eFormat
= bWithAlpha
? Image::FMT_A8R8G8B8
: Image::FMT_R8G8B8
;
64 desc
.nWidth
= rSize
.getX();
65 desc
.nHeight
= rSize
.getY();
69 mpImage
.reset( new Image(desc
) );
71 // clear the surface [fill with opaque black]
72 mpImage
->clear(0,255,255,255);
74 // create a (possibly hardware accelerated) mirror surface.
75 mpSurfaceProxy
= rMgr
->createSurfaceProxy( mpImage
);
83 return (mpImage
->getDescription().eFormat
== Image::FMT_A8R8G8B8
);
86 ::basegfx::B2IVector
getSize() const
88 return ::basegfx::B2IVector( mpImage
->getWidth(),
89 mpImage
->getHeight() );
92 ::com::sun::star::uno::Sequence
< sal_Int8
> getData( ::com::sun::star::rendering::IntegerBitmapLayout
& /*bitmapLayout*/,
93 const ::com::sun::star::geometry::IntegerRectangle2D
& rect
)
95 const IColorBuffer::Format format
= mpImage
->getFormat();
96 const sal_uInt32 dwNumBytesPerPixel
= getNumBytes(format
);
97 const sal_uInt32 dwPitch
= mpImage
->getWidth()*dwNumBytesPerPixel
;
99 if(!(dwNumBytesPerPixel
))
100 return uno::Sequence
< sal_Int8
>();
102 const sal_uInt32 dwWidth
= rect
.X2
-rect
.X1
;
103 const sal_uInt32 dwHeight
= rect
.Y2
-rect
.Y1
;
105 uno::Sequence
< sal_Int8
> aRes(dwWidth
*dwHeight
*4);
106 sal_uInt8
*pDst
= reinterpret_cast<sal_uInt8
*>(aRes
.getArray());
108 const sal_uInt8
*pSrc
= mpImage
->lock()+(rect
.Y1
*dwPitch
)+(rect
.X1
*dwNumBytesPerPixel
);
109 const sal_uInt32 dwSpanSizeInBytes
= dwNumBytesPerPixel
*dwWidth
;
110 for(sal_uInt32 y
=0; y
<dwHeight
; ++y
)
112 rtl_copyMemory(pDst
,pSrc
,dwSpanSizeInBytes
);
113 pDst
+= dwSpanSizeInBytes
;
121 void setData( const ::com::sun::star::uno::Sequence
< sal_Int8
>& data
,
122 const ::com::sun::star::rendering::IntegerBitmapLayout
& /*bitmapLayout*/,
123 const ::com::sun::star::geometry::IntegerRectangle2D
& rect
)
125 const IColorBuffer::Format format
= mpImage
->getFormat();
126 const sal_uInt32 dwNumBytesPerPixel
= getNumBytes(format
);
127 const sal_uInt32 dwPitch
= mpImage
->getWidth()*dwNumBytesPerPixel
;
129 if(!(dwNumBytesPerPixel
))
132 const sal_uInt32 dwWidth
= rect
.X2
-rect
.X1
;
133 const sal_uInt32 dwHeight
= rect
.Y2
-rect
.Y1
;
134 const sal_uInt8
*pSrc
= reinterpret_cast<const sal_uInt8
*>(data
.getConstArray());
136 sal_uInt8
*pDst
= mpImage
->lock()+(rect
.Y1
*dwPitch
)+(rect
.X1
*dwNumBytesPerPixel
);
137 const sal_uInt32 dwSpanSizeInBytes
= dwNumBytesPerPixel
*dwWidth
;
138 for(sal_uInt32 y
=0; y
<dwHeight
; ++y
)
140 rtl_copyMemory(pDst
,pSrc
,dwSpanSizeInBytes
);
141 pSrc
+= dwSpanSizeInBytes
;
147 void setPixel( const ::com::sun::star::uno::Sequence
< sal_Int8
>& color
,
148 const ::com::sun::star::rendering::IntegerBitmapLayout
& /*bitmapLayout*/,
149 const ::com::sun::star::geometry::IntegerPoint2D
& pos
)
164 inline ARGB( sal_uInt32 _color
) : color(_color
) {}
167 ARGB
argb(0xFFFFFFFF);
169 if(color
.getLength() > 2)
171 argb
.Color
.r
= static_cast<sal_uInt8
>(color
[0]);
172 argb
.Color
.g
= static_cast<sal_uInt8
>(color
[1]);
173 argb
.Color
.b
= static_cast<sal_uInt8
>(color
[2]);
174 if(color
.getLength() > 3)
175 argb
.Color
.a
= static_cast<sal_uInt8
>(255.0f
*color
[3]);
178 const IColorBuffer::Format format
= mpImage
->getFormat();
179 const sal_uInt32 dwNumBytesPerPixel
= getNumBytes(format
);
180 const sal_uInt32 dwPitch
= mpImage
->getWidth()*dwNumBytesPerPixel
;
182 if(!(dwNumBytesPerPixel
))
185 sal_uInt8
*pDst
= mpImage
->lock()+(pos
.Y
*dwPitch
)+(pos
.X
*dwNumBytesPerPixel
);
189 case IColorBuffer::FMT_R8G8B8
:
190 pDst
[0] = argb
.Color
.r
;
191 pDst
[1] = argb
.Color
.g
;
192 pDst
[2] = argb
.Color
.b
;
194 case IColorBuffer::FMT_A8R8G8B8
:
195 case IColorBuffer::FMT_X8R8G8B8
:
196 pDst
[0] = argb
.Color
.a
;
197 pDst
[1] = argb
.Color
.r
;
198 pDst
[2] = argb
.Color
.g
;
199 pDst
[3] = argb
.Color
.b
;
208 uno::Sequence
< sal_Int8
> getPixel( ::com::sun::star::rendering::IntegerBitmapLayout
& /*bitmapLayout*/,
209 const ::com::sun::star::geometry::IntegerPoint2D
& pos
)
211 const IColorBuffer::Format format
= mpImage
->getFormat();
212 const sal_uInt32 dwNumBytesPerPixel
= getNumBytes(format
);
213 const sal_uInt32 dwPitch
= mpImage
->getWidth()*dwNumBytesPerPixel
;
215 if(!(dwNumBytesPerPixel
))
216 return uno::Sequence
< sal_Int8
>();
218 uno::Sequence
< sal_Int8
> aRet(dwNumBytesPerPixel
);
219 const sal_uInt8
*pSrc
= mpImage
->lock()+(pos
.Y
*dwPitch
)+(pos
.X
*dwNumBytesPerPixel
);
223 case IColorBuffer::FMT_R8G8B8
:
228 case IColorBuffer::FMT_A8R8G8B8
:
229 case IColorBuffer::FMT_X8R8G8B8
:
244 // the IColorBuffer interface
245 // ==========================
247 bool draw( double fAlpha
,
248 const ::basegfx::B2DPoint
& rPos
,
249 const ::basegfx::B2DHomMatrix
& rTransform
)
251 if( mbIsSurfaceDirty
)
253 mpSurfaceProxy
->setColorBufferDirty();
254 mbIsSurfaceDirty
= false;
257 return mpSurfaceProxy
->draw( fAlpha
, rPos
, rTransform
);
260 bool draw( double fAlpha
,
261 const ::basegfx::B2DPoint
& rPos
,
262 const ::basegfx::B2DRange
& rArea
,
263 const ::basegfx::B2DHomMatrix
& rTransform
)
265 if( mbIsSurfaceDirty
)
267 mpSurfaceProxy
->setColorBufferDirty();
268 mbIsSurfaceDirty
= false;
271 return mpSurfaceProxy
->draw( fAlpha
, rPos
, rArea
, rTransform
);
275 bool draw( double fAlpha
,
276 const ::basegfx::B2DPoint
& rPos
,
277 const ::basegfx::B2DPolyPolygon
& rClipPoly
,
278 const ::basegfx::B2DHomMatrix
& rTransform
)
280 if( mbIsSurfaceDirty
)
282 mpSurfaceProxy
->setColorBufferDirty();
283 mbIsSurfaceDirty
= false;
286 return mpSurfaceProxy
->draw( fAlpha
, rPos
, rClipPoly
, rTransform
);
289 void clear( const uno::Sequence
< double >& color
)
291 if(color
.getLength() > 2)
293 mbIsSurfaceDirty
= true;
295 if(color
.getLength() > 3)
297 mpImage
->clear( static_cast<sal_uInt8
>(255.0f
*color
[0]),
298 static_cast<sal_uInt8
>(255.0f
*color
[1]),
299 static_cast<sal_uInt8
>(255.0f
*color
[2]),
300 static_cast<sal_uInt8
>(255.0f
*color
[3]) );
304 mpImage
->clear( static_cast<sal_uInt8
>(255.0f
*color
[0]),
305 static_cast<sal_uInt8
>(255.0f
*color
[1]),
306 static_cast<sal_uInt8
>(255.0f
*color
[2]),
312 void fillB2DPolyPolygon( const ::basegfx::B2DPolyPolygon
& rPolyPolygon
,
313 const rendering::ViewState
& viewState
,
314 const rendering::RenderState
& renderState
)
316 mbIsSurfaceDirty
= true;
318 mpImage
->fillB2DPolyPolygon( rPolyPolygon
,
324 // the XCanvas-render interface
325 // ============================
327 void drawPoint( const geometry::RealPoint2D
& aPoint
,
328 const rendering::ViewState
& viewState
,
329 const rendering::RenderState
& renderState
)
331 mbIsSurfaceDirty
= true;
333 mpImage
->drawPoint( aPoint
, viewState
, renderState
);
336 void drawLine( const geometry::RealPoint2D
& aStartPoint
,
337 const geometry::RealPoint2D
& aEndPoint
,
338 const rendering::ViewState
& viewState
,
339 const rendering::RenderState
& renderState
)
341 mbIsSurfaceDirty
= true;
343 mpImage
->drawLine( aStartPoint
, aEndPoint
, viewState
, renderState
);
346 void drawBezier( const geometry::RealBezierSegment2D
& aBezierSegment
,
347 const geometry::RealPoint2D
& aEndPoint
,
348 const rendering::ViewState
& viewState
,
349 const rendering::RenderState
& renderState
)
351 mbIsSurfaceDirty
= true;
353 mpImage
->drawBezier( aBezierSegment
, aEndPoint
, viewState
, renderState
);
356 ICachedPrimitiveSharedPtr
drawPolyPolygon(
357 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
358 const rendering::ViewState
& viewState
,
359 const rendering::RenderState
& renderState
)
361 mbIsSurfaceDirty
= true;
363 return setupCachedPrimitive(
364 mpImage
->drawPolyPolygon( xPolyPolygon
, viewState
, renderState
) );
367 ICachedPrimitiveSharedPtr
strokePolyPolygon(
368 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
369 const rendering::ViewState
& viewState
,
370 const rendering::RenderState
& renderState
,
371 const rendering::StrokeAttributes
& strokeAttributes
)
373 mbIsSurfaceDirty
= true;
375 return setupCachedPrimitive(
376 mpImage
->strokePolyPolygon( xPolyPolygon
,
379 strokeAttributes
) );
382 ICachedPrimitiveSharedPtr
strokeTexturedPolyPolygon(
383 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
384 const rendering::ViewState
& viewState
,
385 const rendering::RenderState
& renderState
,
386 const uno::Sequence
< rendering::Texture
>& textures
,
387 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
388 const rendering::StrokeAttributes
& strokeAttributes
)
390 mbIsSurfaceDirty
= true;
392 ::std::vector
< ImageSharedPtr
> aTextureAnnotations
;
393 convertTextureAnnotations( aTextureAnnotations
,
394 textureAnnotations
);
396 return setupCachedPrimitive(
397 mpImage
->strokeTexturedPolyPolygon( xPolyPolygon
,
402 strokeAttributes
) );
405 ICachedPrimitiveSharedPtr
strokeTextureMappedPolyPolygon(
406 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
407 const rendering::ViewState
& viewState
,
408 const rendering::RenderState
& renderState
,
409 const uno::Sequence
< rendering::Texture
>& textures
,
410 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
411 const uno::Reference
< geometry::XMapping2D
>& xMapping
,
412 const rendering::StrokeAttributes
& strokeAttributes
)
414 mbIsSurfaceDirty
= true;
416 ::std::vector
< ImageSharedPtr
> aTextureAnnotations
;
417 convertTextureAnnotations( aTextureAnnotations
,
418 textureAnnotations
);
420 return setupCachedPrimitive(
421 mpImage
->strokeTextureMappedPolyPolygon( xPolyPolygon
,
427 strokeAttributes
) );
431 ICachedPrimitiveSharedPtr
fillPolyPolygon(
432 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
433 const rendering::ViewState
& viewState
,
434 const rendering::RenderState
& renderState
)
436 mbIsSurfaceDirty
= true;
438 return setupCachedPrimitive(
439 mpImage
->fillPolyPolygon( xPolyPolygon
,
444 ICachedPrimitiveSharedPtr
fillTexturedPolyPolygon(
445 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
446 const rendering::ViewState
& viewState
,
447 const rendering::RenderState
& renderState
,
448 const uno::Sequence
< rendering::Texture
>& textures
,
449 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
)
451 mbIsSurfaceDirty
= true;
453 ::std::vector
< ImageSharedPtr
> aTextureAnnotations
;
454 convertTextureAnnotations( aTextureAnnotations
,
455 textureAnnotations
);
457 return setupCachedPrimitive(
458 mpImage
->fillTexturedPolyPolygon( xPolyPolygon
,
462 aTextureAnnotations
) );
466 ICachedPrimitiveSharedPtr
fillTextureMappedPolyPolygon(
467 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
468 const rendering::ViewState
& viewState
,
469 const rendering::RenderState
& renderState
,
470 const uno::Sequence
< rendering::Texture
>& textures
,
471 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
472 const uno::Reference
< geometry::XMapping2D
>& xMapping
)
474 mbIsSurfaceDirty
= true;
476 ::std::vector
< ImageSharedPtr
> aTextureAnnotations
;
477 convertTextureAnnotations( aTextureAnnotations
,
478 textureAnnotations
);
480 return setupCachedPrimitive(
481 mpImage
->fillTextureMappedPolyPolygon( xPolyPolygon
,
489 ICachedPrimitiveSharedPtr
drawBitmap(
490 const uno::Reference
< rendering::XBitmap
>& xBitmap
,
491 const rendering::ViewState
& viewState
,
492 const rendering::RenderState
& renderState
)
494 mbIsSurfaceDirty
= true;
496 return setupCachedPrimitive(
497 mpImage
->drawBitmap( xBitmap
,
502 ICachedPrimitiveSharedPtr
drawBitmap(
503 const ::boost::shared_ptr
<Bitmap
>& rImage
,
504 const rendering::ViewState
& viewState
,
505 const rendering::RenderState
& renderState
)
507 mbIsSurfaceDirty
= true;
509 return setupCachedPrimitive(
510 mpImage
->drawBitmap( rImage
->mpImpl
->mpImage
,
515 ICachedPrimitiveSharedPtr
drawBitmapModulated(
516 const uno::Reference
< rendering::XBitmap
>& xBitmap
,
517 const rendering::ViewState
& viewState
,
518 const rendering::RenderState
& renderState
)
520 mbIsSurfaceDirty
= true;
522 return setupCachedPrimitive(
523 mpImage
->drawBitmapModulated( xBitmap
,
529 ICachedPrimitiveSharedPtr
drawBitmapModulated(
530 const ::boost::shared_ptr
<Bitmap
>& rImage
,
531 const rendering::ViewState
& viewState
,
532 const rendering::RenderState
& renderState
)
534 mbIsSurfaceDirty
= true;
536 return setupCachedPrimitive(
537 mpImage
->drawBitmapModulated( rImage
->mpImpl
->mpImage
,
543 ICachedPrimitiveSharedPtr
setupCachedPrimitive(
544 const ImageCachedPrimitiveSharedPtr
& rCachedPrimitive
) const
546 if( rCachedPrimitive
)
547 rCachedPrimitive
->setImage( mpImage
);
549 return rCachedPrimitive
;
552 void convertTextureAnnotations( ::std::vector
< ImageSharedPtr
>& o_rTextureAnnotations
,
553 const ::std::vector
< BitmapSharedPtr
>& textureAnnotations
)
555 ::std::vector
< BitmapSharedPtr
>::const_iterator
aCurr( textureAnnotations
.begin() );
556 const ::std::vector
< BitmapSharedPtr
>::const_iterator
aEnd( textureAnnotations
.end() );
557 while( aCurr
!= aEnd
)
559 if( aCurr
->get() != NULL
)
560 o_rTextureAnnotations
.push_back( (*aCurr
)->mpImpl
->mpImage
);
562 o_rTextureAnnotations
.push_back( ImageSharedPtr() );
568 sal_uInt32
getNumBytes( IColorBuffer::Format format
)
572 case IColorBuffer::FMT_R8G8B8
:
574 case IColorBuffer::FMT_A8R8G8B8
:
575 case IColorBuffer::FMT_X8R8G8B8
:
582 ImageSharedPtr mpImage
;
583 ISurfaceProxySharedPtr mpSurfaceProxy
;
584 bool mbIsSurfaceDirty
;
588 /////////////////////////////////////////////////////////////////
589 // Actual Bitmap pimpl forwarding functions
590 /////////////////////////////////////////////////////////////////
592 Bitmap::Bitmap( const ::basegfx::B2IVector
& rSize
,
593 const ISurfaceProxyManagerSharedPtr
& rMgr
,
595 mpImpl( new ImplBitmap( rSize
,
603 // outline destructor is _necessary_, because ImplBitmap is an
604 // incomplete type outside this file.
607 // forward all methods to ImplBitmap
608 // ==================================================
610 bool Bitmap::hasAlpha() const
612 return mpImpl
->hasAlpha();
615 ::basegfx::B2IVector
Bitmap::getSize() const
617 return mpImpl
->getSize();
620 ::com::sun::star::uno::Sequence
< sal_Int8
> Bitmap::getData(
621 ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
,
622 const ::com::sun::star::geometry::IntegerRectangle2D
& rect
)
624 return mpImpl
->getData(bitmapLayout
,rect
);
627 void Bitmap::setData(
628 const ::com::sun::star::uno::Sequence
< sal_Int8
>& data
,
629 const ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
,
630 const ::com::sun::star::geometry::IntegerRectangle2D
& rect
)
632 mpImpl
->setData(data
,bitmapLayout
,rect
);
635 void Bitmap::setPixel(
636 const ::com::sun::star::uno::Sequence
< sal_Int8
>& color
,
637 const ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
,
638 const ::com::sun::star::geometry::IntegerPoint2D
& pos
)
640 mpImpl
->setPixel(color
,bitmapLayout
,pos
);
643 uno::Sequence
< sal_Int8
> Bitmap::getPixel(
644 ::com::sun::star::rendering::IntegerBitmapLayout
& bitmapLayout
,
645 const ::com::sun::star::geometry::IntegerPoint2D
& pos
)
647 return mpImpl
->getPixel(bitmapLayout
,pos
);
650 bool Bitmap::draw( double fAlpha
,
651 const ::basegfx::B2DPoint
& rPos
,
652 const ::basegfx::B2DHomMatrix
& rTransform
)
654 return mpImpl
->draw( fAlpha
, rPos
, rTransform
);
657 bool Bitmap::draw( double fAlpha
,
658 const ::basegfx::B2DPoint
& rPos
,
659 const ::basegfx::B2DRange
& rArea
,
660 const ::basegfx::B2DHomMatrix
& rTransform
)
662 return mpImpl
->draw( fAlpha
, rPos
, rArea
, rTransform
);
666 bool Bitmap::draw( double fAlpha
,
667 const ::basegfx::B2DPoint
& rPos
,
668 const ::basegfx::B2DPolyPolygon
& rClipPoly
,
669 const ::basegfx::B2DHomMatrix
& rTransform
)
671 return mpImpl
->draw( fAlpha
, rPos
, rClipPoly
, rTransform
);
674 void Bitmap::clear( const uno::Sequence
< double >& color
)
676 mpImpl
->clear( color
);
679 void Bitmap::fillB2DPolyPolygon(
680 const ::basegfx::B2DPolyPolygon
& rPolyPolygon
,
681 const rendering::ViewState
& viewState
,
682 const rendering::RenderState
& renderState
)
684 mpImpl
->fillB2DPolyPolygon( rPolyPolygon
, viewState
, renderState
);
687 void Bitmap::drawPoint( const geometry::RealPoint2D
& aPoint
,
688 const rendering::ViewState
& viewState
,
689 const rendering::RenderState
& renderState
)
691 return mpImpl
->drawPoint( aPoint
, viewState
, renderState
);
694 void Bitmap::drawLine( const geometry::RealPoint2D
& aStartPoint
,
695 const geometry::RealPoint2D
& aEndPoint
,
696 const rendering::ViewState
& viewState
,
697 const rendering::RenderState
& renderState
)
699 return mpImpl
->drawLine( aStartPoint
, aEndPoint
, viewState
, renderState
);
702 void Bitmap::drawBezier( const geometry::RealBezierSegment2D
& aBezierSegment
,
703 const geometry::RealPoint2D
& aEndPoint
,
704 const rendering::ViewState
& viewState
,
705 const rendering::RenderState
& renderState
)
707 return mpImpl
->drawBezier( aBezierSegment
, aEndPoint
, viewState
, renderState
);
710 ICachedPrimitiveSharedPtr
Bitmap::drawPolyPolygon(
711 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
712 const rendering::ViewState
& viewState
,
713 const rendering::RenderState
& renderState
)
715 return mpImpl
->drawPolyPolygon( xPolyPolygon
, viewState
, renderState
);
718 ICachedPrimitiveSharedPtr
Bitmap::strokePolyPolygon(
719 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
720 const rendering::ViewState
& viewState
,
721 const rendering::RenderState
& renderState
,
722 const rendering::StrokeAttributes
& strokeAttributes
)
724 return mpImpl
->strokePolyPolygon( xPolyPolygon
, viewState
, renderState
, strokeAttributes
);
727 ICachedPrimitiveSharedPtr
Bitmap::strokeTexturedPolyPolygon(
728 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
729 const rendering::ViewState
& viewState
,
730 const rendering::RenderState
& renderState
,
731 const uno::Sequence
< rendering::Texture
>& textures
,
732 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
733 const rendering::StrokeAttributes
& strokeAttributes
)
735 return mpImpl
->strokeTexturedPolyPolygon( xPolyPolygon
,
743 ICachedPrimitiveSharedPtr
Bitmap::strokeTextureMappedPolyPolygon(
744 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
745 const rendering::ViewState
& viewState
,
746 const rendering::RenderState
& renderState
,
747 const uno::Sequence
< rendering::Texture
>& textures
,
748 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
749 const uno::Reference
< geometry::XMapping2D
>& xMapping
,
750 const rendering::StrokeAttributes
& strokeAttributes
)
752 return mpImpl
->strokeTextureMappedPolyPolygon( xPolyPolygon
,
762 ICachedPrimitiveSharedPtr
Bitmap::fillPolyPolygon(
763 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
764 const rendering::ViewState
& viewState
,
765 const rendering::RenderState
& renderState
)
767 return mpImpl
->fillPolyPolygon( xPolyPolygon
,
772 ICachedPrimitiveSharedPtr
Bitmap::fillTexturedPolyPolygon(
773 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
774 const rendering::ViewState
& viewState
,
775 const rendering::RenderState
& renderState
,
776 const uno::Sequence
< rendering::Texture
>& textures
,
777 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
)
779 return mpImpl
->fillTexturedPolyPolygon( xPolyPolygon
,
783 textureAnnotations
);
786 ICachedPrimitiveSharedPtr
Bitmap::fillTextureMappedPolyPolygon(
787 const uno::Reference
< rendering::XPolyPolygon2D
>& xPolyPolygon
,
788 const rendering::ViewState
& viewState
,
789 const rendering::RenderState
& renderState
,
790 const uno::Sequence
< rendering::Texture
>& textures
,
791 const ::std::vector
< ::boost::shared_ptr
<Bitmap
> >& textureAnnotations
,
792 const uno::Reference
< geometry::XMapping2D
>& xMapping
)
794 return mpImpl
->fillTextureMappedPolyPolygon( xPolyPolygon
,
802 ICachedPrimitiveSharedPtr
Bitmap::drawBitmap(
803 const uno::Reference
< rendering::XBitmap
>& xBitmap
,
804 const rendering::ViewState
& viewState
,
805 const rendering::RenderState
& renderState
)
807 return mpImpl
->drawBitmap( xBitmap
,
812 ICachedPrimitiveSharedPtr
Bitmap::drawBitmap(
813 const ::boost::shared_ptr
<Bitmap
>& rImage
,
814 const rendering::ViewState
& viewState
,
815 const rendering::RenderState
& renderState
)
817 return mpImpl
->drawBitmap( rImage
,
822 ICachedPrimitiveSharedPtr
Bitmap::drawBitmapModulated(
823 const uno::Reference
< rendering::XBitmap
>& xBitmap
,
824 const rendering::ViewState
& viewState
,
825 const rendering::RenderState
& renderState
)
827 return mpImpl
->drawBitmapModulated( xBitmap
,
832 ICachedPrimitiveSharedPtr
Bitmap::drawBitmapModulated(
833 const ::boost::shared_ptr
<Bitmap
>& rImage
,
834 const rendering::ViewState
& viewState
,
835 const rendering::RenderState
& renderState
)
837 return mpImpl
->drawBitmapModulated( rImage
,