Files
libreoffice/slideshow/source/engine/slidebitmap.cxx
Rüdiger Timm e809ef99b5 INTEGRATION: CWS presentationengine01 (1.2.2); FILE MERGED
2004/11/10 11:58:59 thb 1.2.2.7: #i1000# Solaris compiler glitch: ternary ? not handled correctly, re-phrased code
2004/09/30 15:01:00 thb 1.2.2.6: #110496# Added another special transition effect (comb transition); sorted out various gcc -Wall warnings; improved docs
2004/08/19 00:17:17 thb 1.2.2.5: #110496# Mostly fixes for correct text animation and iteration, plus a first working version of an optimized redraw
2004/08/03 19:46:36 thb 1.2.2.4: #110496# Properly clearing the views before the slideshow, setting a clipping the size of the slides
2004/07/22 19:42:12 thb 1.2.2.3: #110496# Slideshow milestone, all smil attributes implemented, effects basically working, UI events basically working, text iterations working
2004/05/27 15:05:02 thb 1.2.2.2: Initial revision
2004/04/05 16:06:09 thb 1.2.2.1: Resync with canvas01 changes
2004-11-26 17:59:01 +00:00

150 lines
5.1 KiB
C++

/*************************************************************************
*
* $RCSfile: slidebitmap.cxx,v $
*
* $Revision: 1.3 $
*
* last change: $Author: rt $ $Date: 2004-11-26 18:59:01 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
// must be first
#include <canvas/debug.hxx>
#include <slidebitmap.hxx>
#ifndef _DRAFTS_COM_SUN_STAR_RENDERING_XCANVAS_HPP_
#include <drafts/com/sun/star/rendering/XCanvas.hpp>
#endif
#ifndef _DRAFTS_COM_SUN_STAR_RENDERING_XBITMAP_HPP_
#include <drafts/com/sun/star/rendering/XBitmap.hpp>
#endif
#ifndef _BGFX_MATRIX_B2DHOMMATRIX_HXX
#include <basegfx/matrix/b2dhommatrix.hxx>
#endif
#include <canvas/canvastools.hxx>
#include <basegfx/tools/canvastools.hxx>
using namespace ::drafts::com::sun::star;
using namespace ::com::sun::star;
namespace presentation
{
namespace internal
{
SlideBitmap::SlideBitmap( const ::cppcanvas::BitmapSharedPtr& rBitmap ) :
maOutputPos(),
maClipPoly(),
mxBitmap()
{
if( rBitmap.get() )
mxBitmap = rBitmap->getUNOBitmap();
ENSURE_AND_THROW( mxBitmap.is(), "SlideBitmap::SlideBitmap(): Invalid bitmap" );
}
bool SlideBitmap::draw( const ::cppcanvas::CanvasSharedPtr& rCanvas ) const
{
ENSURE_AND_RETURN( rCanvas.get() != NULL && rCanvas->getUNOCanvas().is(),
"SlideBitmap::draw(): Invalid canvas" );
// selectively only copy the transformation from current viewstate,
// don't want no clipping here.
rendering::ViewState aViewState;
aViewState.AffineTransform = rCanvas->getViewState().AffineTransform;
rendering::RenderState aRenderState;
::canvas::tools::initRenderState( aRenderState );
::basegfx::B2DHomMatrix aTranslation;
aTranslation.translate( maOutputPos.getX(),
maOutputPos.getY() );
::canvas::tools::setRenderStateTransform( aRenderState, aTranslation );
if( maClipPoly.count() )
{
// TODO(P1): Buffer the clip polygon
aRenderState.Clip =
::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(
rCanvas->getUNOCanvas()->getDevice(),
maClipPoly );
}
rCanvas->getUNOCanvas()->drawBitmap( mxBitmap,
aViewState,
aRenderState );
return true;
}
::basegfx::B2ISize SlideBitmap::getSize() const
{
return ::basegfx::unotools::b2ISizeFromIntegerSize2D( mxBitmap->getSize() );
}
void SlideBitmap::move( const ::basegfx::B2DPoint& rNewPos )
{
maOutputPos = rNewPos;
}
void SlideBitmap::clip( const ::basegfx::B2DPolyPolygon& rClipPoly )
{
maClipPoly = rClipPoly;
}
}
}