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 $ * $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 * The Contents of this file are made available subject to the terms of
* either of the following licenses * either of the following licenses
@@ -76,6 +76,10 @@
#include <vcl/outdev.hxx> #include <vcl/outdev.hxx>
#endif #endif
#ifndef _BGFX_POLYGON_B2DPOLYPOLYGON_HXX
#include <basegfx/polygon/b2dpolypolygon.hxx>
#endif
#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_ #ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
#include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/uno/Reference.hxx>
#endif #endif
@@ -83,6 +87,19 @@
#include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/uno/Sequence.hxx>
#endif #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 basegfx
{ {
namespace matrix namespace matrix
@@ -111,11 +128,15 @@ namespace com { namespace sun { namespace star { namespace drawing
struct HomogenMatrix3; 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 RealPoint2D;
struct RealSize2D; struct RealSize2D;
struct RealRectangle2D; struct RealRectangle2D;
} } } } }
namespace drafts { namespace com { namespace sun { namespace star { namespace rendering
{
struct RenderState; struct RenderState;
struct ViewState; struct ViewState;
class XCanvas; class XCanvas;
@@ -128,7 +149,7 @@ namespace vclcanvas
{ {
namespace tools namespace tools
{ {
::PolyPolygon ::basegfx::B2DPolyPolygon
polyPolygonFromXPolyPolygon2D( const ::com::sun::star::uno::Reference< polyPolygonFromXPolyPolygon2D( const ::com::sun::star::uno::Reference<
::drafts::com::sun::star::rendering::XPolyPolygon2D >& ); ::drafts::com::sun::star::rendering::XPolyPolygon2D >& );
@@ -136,10 +157,15 @@ namespace vclcanvas
bitmapExFromXBitmap( const ::com::sun::star::uno::Reference< bitmapExFromXBitmap( const ::com::sun::star::uno::Reference<
::drafts::com::sun::star::rendering::XBitmap >& ); ::drafts::com::sun::star::rendering::XBitmap >& );
::Point setupFontTransform( ::Font& aVCLFont, /** Setup VCL font and output position
const ::drafts::com::sun::star::rendering::ViewState& viewState,
const ::drafts::com::sun::star::rendering::RenderState& renderState, @returns false, if no text output should happen
::OutputDevice& rOutDev ); */
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 // 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: private:
::vos::OGuard aGuard; ::vos::OGuard aGuard;
}; };
@@ -158,36 +190,63 @@ namespace vclcanvas
class OutDevStateKeeper class OutDevStateKeeper
{ {
public: public:
typedef ::boost::shared_ptr< canvas::vcltools::VCLObject< OutputDevice > > OutputDeviceSharedPtr;
explicit OutDevStateKeeper( OutputDevice& rOutDev ) : explicit OutDevStateKeeper( OutputDevice& rOutDev ) :
mrOutDev( rOutDev ), mpOutDev( &rOutDev ),
mbMappingWasEnable( rOutDev.IsMapModeEnabled() ) mbMappingWasEnabled( mpOutDev->IsMapModeEnabled() )
{ {
mrOutDev.Push(); init();
mrOutDev.EnableMapMode(FALSE); }
explicit OutDevStateKeeper( const OutDevProviderSharedPtr& rOutDev ) :
mpOutDev( rOutDev.get() ? &(rOutDev->getOutDev()) : NULL ),
mbMappingWasEnabled( mpOutDev ? mpOutDev->IsMapModeEnabled() : false )
{
init();
} }
~OutDevStateKeeper() ~OutDevStateKeeper()
{ {
mrOutDev.EnableMapMode( mbMappingWasEnable ); if( mpOutDev )
mrOutDev.Pop(); {
mpOutDev->EnableMapMode( mbMappingWasEnabled );
mpOutDev->Pop();
}
} }
private: private:
OutputDevice& mrOutDev; void init()
const bool mbMappingWasEnable; {
if( mpOutDev )
{
mpOutDev->Push();
mpOutDev->EnableMapMode(FALSE);
}
}
OutputDevice* mpOutDev;
const bool mbMappingWasEnabled;
}; };
::Point mapRealPoint2D( const ::drafts::com::sun::star::geometry::RealPoint2D& rPoint, ::Point mapRealPoint2D( const ::drafts::com::sun::star::geometry::RealPoint2D& rPoint,
const ::drafts::com::sun::star::rendering::ViewState& rViewState, const ::drafts::com::sun::star::rendering::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState ); 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::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState ); 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::ViewState& rViewState,
const ::drafts::com::sun::star::rendering::RenderState& rRenderState ); const ::drafts::com::sun::star::rendering::RenderState& rRenderState,
ModulationMode eModulationMode=MODULATE_NONE );
} }
} }