21#include <com/sun/star/rendering/XBitmap.hpp>
22#include <com/sun/star/rendering/XCanvas.hpp>
23#include <com/sun/star/rendering/XCachedPrimitive.hpp>
46 class BitmapAction :
public CachedPrimitiveBase
49 BitmapAction( const ::BitmapEx&,
50 const ::basegfx::B2DPoint& rDstPoint,
53 BitmapAction( const ::BitmapEx&,
54 const ::basegfx::B2DPoint& rDstPoint,
55 const ::basegfx::B2DVector& rDstSize,
59 virtual bool renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
60 const Subset& rSubset )
const override;
62 virtual ::basegfx::B2DRange getBounds( const ::basegfx::B2DHomMatrix& rTransformation )
const override;
63 virtual ::basegfx::B2DRange getBounds( const ::basegfx::B2DHomMatrix& rTransformation,
64 const Subset& rSubset )
const override;
66 virtual sal_Int32 getActionCount()
const override;
70 virtual bool renderPrimitive( uno::Reference< rendering::XCachedPrimitive >& rCachedPrimitive,
71 const ::basegfx::B2DHomMatrix& rTransformation )
const override;
79 BitmapAction::BitmapAction( const ::BitmapEx& rBmpEx,
80 const ::basegfx::B2DPoint& rDstPoint,
82 const OutDevState& rState ) :
83 CachedPrimitiveBase( rCanvas, true ),
92 ::canvas::tools::appendToRenderState(
maState,
93 aLocalTransformation );
104 BitmapAction::BitmapAction( const ::BitmapEx& rBmpEx,
105 const ::basegfx::B2DPoint& rDstPoint,
106 const ::basegfx::B2DVector& rDstSize,
108 const OutDevState& rState ) :
109 CachedPrimitiveBase( rCanvas, true ),
118 const ::Size aBmpSize( rBmpEx.GetSizePixel() );
120 const ::basegfx::B2DVector aScale( rDstSize.getX() / aBmpSize.Width(),
121 rDstSize.getY() / aBmpSize.Height() );
124 ::canvas::tools::appendToRenderState(
maState, aLocalTransformation );
135 bool BitmapAction::renderPrimitive( uno::Reference< rendering::XCachedPrimitive >& rCachedPrimitive,
136 const ::basegfx::B2DHomMatrix& rTransformation )
const
138 SAL_INFO(
"cppcanvas.emf",
"::cppcanvas::internal::BitmapAction::renderPrimitive()" );
139 SAL_INFO(
"cppcanvas.emf",
"::cppcanvas::internal::BitmapAction: 0x" << std::hex <<
this );
141 rendering::RenderState aLocalState(
maState );
142 ::canvas::tools::prependToRenderState(aLocalState, rTransformation);
151 bool BitmapAction::renderSubset( const ::basegfx::B2DHomMatrix& rTransformation,
152 const Subset& rSubset )
const
156 if( rSubset.mnSubsetBegin != 0 ||
157 rSubset.mnSubsetEnd != 1 )
160 return CachedPrimitiveBase::render( rTransformation );
163 ::basegfx::B2DRange BitmapAction::getBounds( const ::basegfx::B2DHomMatrix& rTransformation )
const
165 rendering::RenderState aLocalState(
maState );
166 ::canvas::tools::prependToRenderState(aLocalState, rTransformation);
168 const geometry::IntegerSize2D aSize(
mxBitmap->getSize() );
177 ::basegfx::B2DRange BitmapAction::getBounds( const ::basegfx::B2DHomMatrix& rTransformation,
178 const Subset& rSubset )
const
182 if( rSubset.mnSubsetBegin != 0 ||
183 rSubset.mnSubsetEnd != 1 )
184 return ::basegfx::B2DRange();
186 return getBounds( rTransformation );
189 sal_Int32 BitmapAction::getActionCount()
const
196 const ::basegfx::B2DPoint& rDstPoint,
200 return std::make_shared<BitmapAction>(rBmpEx, rDstPoint, rCanvas, rState );
204 const ::basegfx::B2DPoint& rDstPoint,
205 const ::basegfx::B2DVector& rDstSize,
209 return std::make_shared<BitmapAction>(rBmpEx,
uno::Reference< rendering::XBitmap > mxBitmap
rendering::RenderState maState
virtual bool render(const ::basegfx::B2DHomMatrix &rTransformation) const =0
Render this action to the associated canvas.
#define SAL_INFO(area, stream)
B2DHomMatrix createScaleTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fTranslateX, double fTranslateY)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
std::shared_ptr< Action > createBitmapAction(const ::BitmapEx &, const ::basegfx::B2DPoint &rDstPoint, const CanvasSharedPtr &, const OutDevState &)
Unscaled bitmap action, only references destination point.
std::shared_ptr< Canvas > CanvasSharedPtr