INTEGRATION: CWS presentationengine01 (1.2.2); FILE MERGED

2004/11/17 17:00:31 thb 1.2.2.7: #118514# Canvas module reorg
2004/11/08 05:54:34 thb 1.2.2.6: #i36093#, #110496# Added native canvas gradients; improved bitmap performance by special-casing a few important formats; de-flickered full-content redraw, by performing that, too, in a bg VDev
2004/10/11 00:00:06 thb 1.2.2.5: #i34997# Added new method XCanvas::drawBitmapModulated(), to facilitate global alpha channel changes when rendering bitmaps
2004/08/03 19:45:37 thb 1.2.2.4: #110496# Changed vcl canvas to use B2DPolygons, and transforming clip polys before setting them
2004/07/20 19:23:56 thb 1.2.2.3: #110496# Removed self-references to various interface implementations, along the lines, factored out common base implementation for all c++ canvases
2004/06/17 10:33:27 thb 1.2.2.2: #110496# Handle huge shrinks correctly for font scaling; added some more debug code
2004/04/05 15:57:59 thb 1.2.2.1: Resync with canvas01 changes
This commit is contained in:
Rüdiger Timm 2004-11-26 16:13:19 +00:00
parent 68530643d9
commit a0888cbbaf

View file

@ -2,9 +2,9 @@
*
* $RCSfile: impltools.hxx,v $
*
* $Revision: 1.2 $
* $Revision: 1.3 $
*
* last change: $Author: thb $ $Date: 2004-03-18 10:38:42 $
* last change: $Author: rt $ $Date: 2004-11-26 17:13:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@ -76,6 +76,10 @@
#include <vcl/outdev.hxx>
#endif
#ifndef _BGFX_POLYGON_B2DPOLYPOLYGON_HXX
#include <basegfx/polygon/b2dpolypolygon.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
#include <com/sun/star/uno/Reference.hxx>
#endif
@ -83,6 +87,19 @@
#include <com/sun/star/uno/Sequence.hxx>
#endif
#ifndef BOOST_SHARED_PTR_HPP_INCLUDED
#include <boost/shared_ptr.hpp>
#endif
#include <canvas/vclwrapper.hxx>
#include "outdevprovider.hxx"
class OutputDevice;
class Point;
class Size;
namespace basegfx
{
namespace matrix
@ -111,11 +128,15 @@ namespace com { namespace sun { namespace star { namespace drawing
struct HomogenMatrix3;
} } } }
namespace drafts { namespace com { namespace sun { namespace star { namespace rendering
namespace drafts { namespace com { namespace sun { namespace star { namespace geometry
{
struct RealPoint2D;
struct RealSize2D;
struct RealRectangle2D;
} } } } }
namespace drafts { namespace com { namespace sun { namespace star { namespace rendering
{
struct RenderState;
struct ViewState;
class XCanvas;
@ -128,7 +149,7 @@ namespace vclcanvas
{
namespace tools
{
::PolyPolygon
::basegfx::B2DPolyPolygon
polyPolygonFromXPolyPolygon2D( const ::com::sun::star::uno::Reference<
::drafts::com::sun::star::rendering::XPolyPolygon2D >& );
@ -136,10 +157,15 @@ namespace vclcanvas
bitmapExFromXBitmap( const ::com::sun::star::uno::Reference<
::drafts::com::sun::star::rendering::XBitmap >& );
::Point setupFontTransform( ::Font& aVCLFont,
const ::drafts::com::sun::star::rendering::ViewState& viewState,
const ::drafts::com::sun::star::rendering::RenderState& renderState,
::OutputDevice& rOutDev );
/** Setup VCL font and output position
@returns false, if no text output should happen
*/
bool setupFontTransform( ::Point& o_rPoint,
::Font& io_rVCLFont,
const ::drafts::com::sun::star::rendering::ViewState& viewState,
const ::drafts::com::sun::star::rendering::RenderState& renderState,
::OutputDevice& rOutDev );
// Little helper to encapsulate locking into policy class
@ -151,6 +177,12 @@ namespace vclcanvas
{
}
/// To be compatible with CanvasBase mutex concept
LocalGuard( const ::osl::Mutex& ) :
aGuard( Application::GetSolarMutex() )
{
}
private:
::vos::OGuard aGuard;
};
@ -158,36 +190,63 @@ namespace vclcanvas
class OutDevStateKeeper
{
public:
typedef ::boost::shared_ptr< canvas::vcltools::VCLObject< OutputDevice > > OutputDeviceSharedPtr;
explicit OutDevStateKeeper( OutputDevice& rOutDev ) :
mrOutDev( rOutDev ),
mbMappingWasEnable( rOutDev.IsMapModeEnabled() )
mpOutDev( &rOutDev ),
mbMappingWasEnabled( mpOutDev->IsMapModeEnabled() )
{
mrOutDev.Push();
mrOutDev.EnableMapMode(FALSE);
init();
}
explicit OutDevStateKeeper( const OutDevProviderSharedPtr& rOutDev ) :
mpOutDev( rOutDev.get() ? &(rOutDev->getOutDev()) : NULL ),
mbMappingWasEnabled( mpOutDev ? mpOutDev->IsMapModeEnabled() : false )
{
init();
}
~OutDevStateKeeper()
{
mrOutDev.EnableMapMode( mbMappingWasEnable );
mrOutDev.Pop();
if( mpOutDev )
{
mpOutDev->EnableMapMode( mbMappingWasEnabled );
mpOutDev->Pop();
}
}
private:
OutputDevice& mrOutDev;
const bool mbMappingWasEnable;
void init()
{
if( mpOutDev )
{
mpOutDev->Push();
mpOutDev->EnableMapMode(FALSE);
}
}
OutputDevice* mpOutDev;
const bool mbMappingWasEnabled;
};
::Point mapRealPoint2D( const ::drafts::com::sun::star::geometry::RealPoint2D& rPoint,
const ::drafts::com::sun::star::rendering::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState );
::PolyPolygon mapPolyPolygon( const ::PolyPolygon& rPoly,
::PolyPolygon mapPolyPolygon( const ::basegfx::B2DPolyPolygon& rPoly,
const ::drafts::com::sun::star::rendering::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState );
::BitmapEx transformBitmap( const BitmapEx& rBitmap,
enum ModulationMode
{
MODULATE_NONE,
MODULATE_WITH_DEVICECOLOR
};
::BitmapEx transformBitmap( const BitmapEx& rBitmap,
const ::drafts::com::sun::star::rendering::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState );
const ::drafts::com::sun::star::rendering::RenderState& rRenderState,
ModulationMode eModulationMode=MODULATE_NONE );
}
}