INTEGRATION: CWS canvas02 (1.1.2); FILE ADDED
2005/10/11 15:41:33 thb 1.1.2.5: #i54170# Corrected license headers 2005/09/22 21:00:54 thb 1.1.2.4: #i48939# Employing faster XOR masking for the special case nontransparent, non-alpha bitmap redraw in backbuffer (incidently, that matches the typical slide transition sprite update) 2005/07/21 14:52:50 thb 1.1.2.3: #i48939# Factored out round up/down to integer; removed backend specific methods from base Sprite interface; removed updateScreen overwrite from SpriteCanvasBase (too much backend specifics need to be passed to HW canvases); now passing the target OutputDevice directly via Sprite::redraw() method in VCL canvas; made XFont -> impl font conversion dynamic cast, too; removed the getSpriteTargetSurface crap from SpriteCanvas 2005/07/03 20:25:20 thb 1.1.2.2: #i48939# Reworked ParametricPolyPolygon, to extract state in an atomic operation; added more state checking 'isXDirty()' methods to canvascustomspritehelper; added various comments and notes 2005/06/17 23:44:42 thb 1.1.2.1: #i48939# The new canvas base classes expect more functionality in delegate members; these are the helper implementations
This commit is contained in:
131
canvas/source/vcl/spritehelper.hxx
Normal file
131
canvas/source/vcl/spritehelper.hxx
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* OpenOffice.org - a multi-platform office productivity suite
|
||||||
|
*
|
||||||
|
* $RCSfile: spritehelper.hxx,v $
|
||||||
|
*
|
||||||
|
* $Revision: 1.2 $
|
||||||
|
*
|
||||||
|
* last change: $Author: kz $ $Date: 2005-11-02 13:05:12 $
|
||||||
|
*
|
||||||
|
* The Contents of this file are made available subject to
|
||||||
|
* the terms of GNU Lesser General Public License Version 2.1.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* GNU Lesser General Public License Version 2.1
|
||||||
|
* =============================================
|
||||||
|
* Copyright 2005 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
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _VCLCANVAS_SPRITEHELPER_HXX
|
||||||
|
#define _VCLCANVAS_SPRITEHELPER_HXX
|
||||||
|
|
||||||
|
#include <com/sun/star/rendering/XCustomSprite.hpp>
|
||||||
|
|
||||||
|
#include <vcl/virdev.hxx>
|
||||||
|
|
||||||
|
#include <canvas/base/canvascustomspritehelper.hxx>
|
||||||
|
#include <canvas/vclwrapper.hxx>
|
||||||
|
|
||||||
|
#include "backbuffer.hxx"
|
||||||
|
#include "impltools.hxx"
|
||||||
|
#include "spritecanvas.hxx"
|
||||||
|
|
||||||
|
|
||||||
|
namespace vclcanvas
|
||||||
|
{
|
||||||
|
/* Definition of SpriteHelper class */
|
||||||
|
|
||||||
|
/** Helper class for canvas sprites.
|
||||||
|
|
||||||
|
This class implements all sprite-related functionality, like
|
||||||
|
that available on the XSprite interface.
|
||||||
|
*/
|
||||||
|
class SpriteHelper : public ::canvas::CanvasCustomSpriteHelper
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SpriteHelper();
|
||||||
|
|
||||||
|
/** Late-init the sprite helper
|
||||||
|
|
||||||
|
@param rSpriteSize
|
||||||
|
Size of the sprite
|
||||||
|
|
||||||
|
@param rSpriteCanvas
|
||||||
|
Sprite canvas this sprite is part of. Object stores
|
||||||
|
ref-counted reference to it, thus, don't forget to pass on
|
||||||
|
disposing()!
|
||||||
|
|
||||||
|
@param rBackBuffer
|
||||||
|
Buffer of the sprite content (non-alpha part)
|
||||||
|
|
||||||
|
@param rBackBufferMask
|
||||||
|
Buffer of the sprite content (alpha part)
|
||||||
|
*/
|
||||||
|
void init( const ::com::sun::star::geometry::RealSize2D& rSpriteSize,
|
||||||
|
const SpriteCanvasRef& rSpriteCanvas,
|
||||||
|
const BackBufferSharedPtr& rBackBuffer,
|
||||||
|
const BackBufferSharedPtr& rBackBufferMask,
|
||||||
|
bool bShowSpriteBounds );
|
||||||
|
|
||||||
|
void disposing();
|
||||||
|
|
||||||
|
/** Repaint sprite content to associated sprite canvas
|
||||||
|
|
||||||
|
@param rPos
|
||||||
|
Output position (sprite's own position is disregarded)
|
||||||
|
|
||||||
|
@param io_bSurfacesDirty
|
||||||
|
When true, the referenced sprite surfaces (backBuffer and
|
||||||
|
backBufferMask) have been modified since last call.
|
||||||
|
|
||||||
|
@param bBufferedUpdate
|
||||||
|
When true, the redraw does <em>not</em> happen directly on
|
||||||
|
the front buffer, but within a VDev. Used to speed up
|
||||||
|
drawing.
|
||||||
|
*/
|
||||||
|
void redraw( OutputDevice& rOutDev,
|
||||||
|
const ::basegfx::B2DPoint& rPos,
|
||||||
|
bool& bSurfacesDirty,
|
||||||
|
bool bBufferedUpdate ) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
virtual void clearSurface();
|
||||||
|
virtual ::basegfx::B2DPolyPolygon polyPolygonFromXPolyPolygon2D(
|
||||||
|
::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D >& xPoly ) const;
|
||||||
|
|
||||||
|
// for the redraw
|
||||||
|
BackBufferSharedPtr mpBackBuffer;
|
||||||
|
BackBufferSharedPtr mpBackBufferMask;
|
||||||
|
|
||||||
|
// necessary to avoid downcasts later on (Sprite interface
|
||||||
|
// only gets passed ptr to SpriteSurface interface, not
|
||||||
|
// concrete implementations)
|
||||||
|
SpriteCanvasRef mpSpriteCanvas;
|
||||||
|
|
||||||
|
/// Cached bitmap for the current sprite content
|
||||||
|
mutable ::canvas::vcltools::VCLObject<BitmapEx> maContent;
|
||||||
|
|
||||||
|
/// When true, line sprite corners in red
|
||||||
|
bool mbShowSpriteBounds;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* _VCLCANVAS_SPRITEHELPER_HXX */
|
Reference in New Issue
Block a user