INTEGRATION: CWS presfixes07 (1.5.6); FILE MERGED

2005/05/12 17:27:00 thb 1.5.6.1: #i49106# Now adapting the clip position, to account for output position shift; Catching the case now that mxBufferBitmap is not set, but just by coincidence the matrices are the same; Added some optional debug code.
This commit is contained in:
Rüdiger Timm
2005-05-20 06:43:20 +00:00
parent 3e65dc4010
commit 2acc6a977b

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: transparencygroupaction.cxx,v $
*
* $Revision: 1.5 $
* $Revision: 1.6 $
*
* last change: $Author: obo $ $Date: 2005-04-18 10:01:14 $
* last change: $Author: rt $ $Date: 2005-05-20 07:43:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -271,6 +271,9 @@ namespace cppcanvas
tools::initRenderState(maState,rState);
implSetupTransform( maState, rDstPoint );
// correct clip (which is relative to original transform)
tools::modifyClip( maState, rState, rCanvas, rDstPoint, NULL );
maLastSubset.mnSubsetBegin = 0;
maLastSubset.mnSubsetEnd = -1;
}
@@ -295,6 +298,9 @@ namespace cppcanvas
tools::initRenderState(maState,rState);
implSetupTransform( maState, rDstPoint );
// correct clip (which is relative to original transform)
tools::modifyClip( maState, rState, rCanvas, rDstPoint, NULL );
maLastSubset.mnSubsetBegin = 0;
maLastSubset.mnSubsetEnd = -1;
}
@@ -327,9 +333,11 @@ namespace cppcanvas
aTotalTransform.set( 0, 2, 0.0 );
aTotalTransform.set( 1, 2, 0.0 );
// as soon as the total transformation changes, we've got
// to re-render the bitmap
if( aTotalTransform != maLastTransformation ||
// if there's no buffer bitmap, or as soon as the
// total transformation changes, we've got to
// re-render the bitmap
if( !mxBufferBitmap.is() ||
aTotalTransform != maLastTransformation ||
rSubset.mnSubsetBegin != maLastSubset.mnSubsetBegin ||
rSubset.mnSubsetEnd != maLastSubset.mnSubsetEnd )
{
@@ -510,6 +518,20 @@ namespace cppcanvas
rendering::RenderState aLocalState( maState );
::canvas::tools::setRenderStateTransform(aLocalState, aTransform);
#ifdef SPECIAL_DEBUG
aLocalState.Clip.clear();
aLocalState.DeviceColor =
::vcl::unotools::colorToDoubleSequence( mpCanvas->getUNOCanvas()->getDevice(),
::Color( 0x80FF0000 ) );
if( maState.Clip.is() )
mpCanvas->getUNOCanvas()->fillPolyPolygon( maState.Clip,
mpCanvas->getViewState(),
aLocalState );
aLocalState.DeviceColor = maState.DeviceColor;
#endif
if( ::rtl::math::approxEqual(mnAlpha, 1.0) )
{
// no further alpha changes necessary -> draw directly