Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <basegfx/matrix/b2dhommatrix.hxx>
30 : : #include <basegfx/tools/canvastools.hxx>
31 : : #include <basegfx/polygon/b2dpolypolygon.hxx>
32 : : #include <com/sun/star/rendering/InterpolationMode.hpp>
33 : :
34 : : #include <implspritecanvas.hxx>
35 : : #include <implcustomsprite.hxx>
36 : :
37 : :
38 : : using namespace ::com::sun::star;
39 : :
40 : : namespace cppcanvas
41 : : {
42 : : namespace internal
43 : : {
44 : 0 : ImplSpriteCanvas::TransformationArbiter::TransformationArbiter() :
45 : 0 : maTransformation()
46 : : {
47 : 0 : }
48 : :
49 : 0 : void ImplSpriteCanvas::TransformationArbiter::setTransformation( const ::basegfx::B2DHomMatrix& rViewTransform )
50 : : {
51 : 0 : maTransformation = rViewTransform;
52 : 0 : }
53 : :
54 : 0 : ::basegfx::B2DHomMatrix ImplSpriteCanvas::TransformationArbiter::getTransformation() const
55 : : {
56 : 0 : return maTransformation;
57 : : }
58 : :
59 : :
60 : 0 : ImplSpriteCanvas::ImplSpriteCanvas( const uno::Reference< rendering::XSpriteCanvas >& rCanvas ) :
61 : : ImplCanvas( uno::Reference< rendering::XCanvas >(rCanvas,
62 : : uno::UNO_QUERY) ),
63 : : ImplBitmapCanvas( uno::Reference< rendering::XBitmapCanvas >(rCanvas,
64 : : uno::UNO_QUERY) ),
65 : : mxSpriteCanvas( rCanvas ),
66 [ # # ][ # # ]: 0 : mpTransformArbiter( new TransformationArbiter() )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
67 : : {
68 : : OSL_ENSURE( mxSpriteCanvas.is(), "ImplSpriteCanvas::ImplSpriteCanvas(): Invalid canvas" );
69 : 0 : }
70 : :
71 : 0 : ImplSpriteCanvas::ImplSpriteCanvas(const ImplSpriteCanvas& rOrig) :
72 : : Canvas(),
73 : : BitmapCanvas(),
74 : : SpriteCanvas(),
75 : : ImplCanvas( rOrig ),
76 : : ImplBitmapCanvas( rOrig ),
77 : 0 : mxSpriteCanvas( rOrig.getUNOSpriteCanvas() ),
78 [ # # ][ # # ]: 0 : mpTransformArbiter( new TransformationArbiter() )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
79 : : {
80 : : OSL_ENSURE( mxSpriteCanvas.is(), "ImplSpriteCanvas::ImplSpriteCanvas( const ImplSpriteCanvas& ): Invalid canvas" );
81 : :
82 [ # # ][ # # ]: 0 : mpTransformArbiter->setTransformation( getTransformation() );
[ # # ][ # # ]
[ # # ][ # # ]
83 : 0 : }
84 : :
85 [ # # ][ # # ]: 0 : ImplSpriteCanvas::~ImplSpriteCanvas()
[ # # ][ # # ]
[ # # ][ # # ]
86 : : {
87 [ # # ][ # # ]: 0 : }
[ # # ][ # # ]
[ # # ][ # # ]
[ # # # #
# # # # #
# # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # #
# # # # #
# # # ]
88 : :
89 : 0 : void ImplSpriteCanvas::setTransformation( const ::basegfx::B2DHomMatrix& rMatrix )
90 : : {
91 : 0 : mpTransformArbiter->setTransformation( rMatrix );
92 : :
93 : 0 : ImplCanvas::setTransformation( rMatrix );
94 : 0 : }
95 : :
96 : 0 : bool ImplSpriteCanvas::updateScreen( bool bUpdateAll ) const
97 : : {
98 : : OSL_ENSURE( mxSpriteCanvas.is(), "ImplSpriteCanvas::updateScreen(): Invalid canvas" );
99 : :
100 [ # # ]: 0 : if( !mxSpriteCanvas.is() )
101 : 0 : return false;
102 : :
103 : 0 : return mxSpriteCanvas->updateScreen( bUpdateAll );
104 : : }
105 : :
106 : 0 : CustomSpriteSharedPtr ImplSpriteCanvas::createCustomSprite( const ::basegfx::B2DSize& rSize ) const
107 : : {
108 : : OSL_ENSURE( mxSpriteCanvas.is(), "ImplSpriteCanvas::createCustomSprite(): Invalid canvas" );
109 : :
110 [ # # ]: 0 : if( !mxSpriteCanvas.is() )
111 : 0 : return CustomSpriteSharedPtr();
112 : :
113 : : return CustomSpriteSharedPtr(
114 : : new ImplCustomSprite( mxSpriteCanvas,
115 : 0 : mxSpriteCanvas->createCustomSprite( ::basegfx::unotools::size2DFromB2DSize(rSize) ),
116 [ # # ][ # # ]: 0 : mpTransformArbiter ) );
[ # # ][ # # ]
117 : : }
118 : :
119 : 0 : SpriteSharedPtr ImplSpriteCanvas::createClonedSprite( const SpriteSharedPtr& rSprite ) const
120 : : {
121 : : OSL_ENSURE( mxSpriteCanvas.is(), "ImplSpriteCanvas::createCustomSprite(): Invalid canvas" );
122 : : OSL_ENSURE( rSprite.get() != NULL && rSprite->getUNOSprite().is(),
123 : : "ImplSpriteCanvas::createCustomSprite(): Invalid sprite" );
124 : :
125 [ # # # # : 0 : if( !mxSpriteCanvas.is() ||
# # ][ # # ]
126 : 0 : rSprite.get() == NULL ||
127 [ # # ][ # # ]: 0 : !rSprite->getUNOSprite().is() )
[ # # ]
128 : : {
129 : 0 : return SpriteSharedPtr();
130 : : }
131 : :
132 : : return SpriteSharedPtr(
133 : : new ImplSprite( mxSpriteCanvas,
134 : 0 : mxSpriteCanvas->createClonedSprite( rSprite->getUNOSprite() ),
135 [ # # ][ # # ]: 0 : mpTransformArbiter ) );
[ # # ][ # # ]
136 : : }
137 : :
138 : 0 : CanvasSharedPtr ImplSpriteCanvas::clone() const
139 : : {
140 [ # # ][ # # ]: 0 : return SpriteCanvasSharedPtr( new ImplSpriteCanvas( *this ) );
[ # # ][ # # ]
[ # # ]
141 : : }
142 : :
143 : 0 : uno::Reference< rendering::XSpriteCanvas > ImplSpriteCanvas::getUNOSpriteCanvas() const
144 : : {
145 : 0 : return mxSpriteCanvas;
146 : : }
147 : :
148 : : }
149 : : }
150 : :
151 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|