summaryrefslogtreecommitdiff
path: root/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'drawinglayer/source/primitive2d/sceneprimitive2d.cxx')
-rw-r--r--drawinglayer/source/primitive2d/sceneprimitive2d.cxx45
1 files changed, 26 insertions, 19 deletions
diff --git a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
index 893d011a91cc..5c6fa3852259 100644
--- a/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
+++ b/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: sceneprimitive2d.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: aw $ $Date: 2008-05-16 10:13:49 $
+ * last change: $Author: aw $ $Date: 2008-05-27 14:11:20 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -83,11 +83,14 @@ namespace drawinglayer
if(!rViewInformation.getViewport().isEmpty())
{
rVisibleDiscreteRange.intersect(rViewInformation.getDiscreteViewport());
- }
- // force to discrete expanded bounds, too
- rVisibleDiscreteRange.expand(basegfx::B2DTuple(floor(rVisibleDiscreteRange.getMinX()), floor(rVisibleDiscreteRange.getMinY())));
- rVisibleDiscreteRange.expand(basegfx::B2DTuple(ceil(rVisibleDiscreteRange.getMaxX()), ceil(rVisibleDiscreteRange.getMaxY())));
+ if(!rVisibleDiscreteRange.isEmpty())
+ {
+ // force to discrete expanded bounds, too
+ rVisibleDiscreteRange.expand(basegfx::B2DTuple(floor(rVisibleDiscreteRange.getMinX()), floor(rVisibleDiscreteRange.getMinY())));
+ rVisibleDiscreteRange.expand(basegfx::B2DTuple(ceil(rVisibleDiscreteRange.getMaxX()), ceil(rVisibleDiscreteRange.getMaxY())));
+ }
+ }
if(rVisibleDiscreteRange.isEmpty())
{
@@ -192,8 +195,8 @@ namespace drawinglayer
// create transform for the created bitmap in discrete coordinates first
basegfx::B2DHomMatrix aNew2DTransform;
- aNew2DTransform.set(0, 0, aVisibleDiscreteRange.getWidth());
- aNew2DTransform.set(1, 1, aVisibleDiscreteRange.getHeight());
+ aNew2DTransform.set(0, 0, (double)(aBitmapSizePixel.getWidth() - 1));
+ aNew2DTransform.set(1, 1, (double)(aBitmapSizePixel.getHeight() - 1));
aNew2DTransform.set(0, 2, aVisibleDiscreteRange.getMinX());
aNew2DTransform.set(1, 2, aVisibleDiscreteRange.getMinY());
@@ -352,26 +355,30 @@ namespace drawinglayer
::osl::MutexGuard aGuard( m_aMutex );
// get the involved ranges (see helper method calculateDsicreteSizes for details)
- bool bNeedNewDecomposition(false);
basegfx::B2DRange aDiscreteRange;
- basegfx::B2DRange aVisibleDiscreteRange;
basegfx::B2DRange aUnitVisibleRange;
- calculateDsicreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
+ bool bNeedNewDecomposition(false);
if(getLocalDecomposition().hasElements())
{
+ basegfx::B2DRange aVisibleDiscreteRange;
+ calculateDsicreteSizes(rViewInformation, aDiscreteRange, aVisibleDiscreteRange, aUnitVisibleRange);
+
// display has changed and cannot be reused when resolution did change
- if(!basegfx::fTools::equal(aVisibleDiscreteRange.getWidth(), mfOldDiscreteSizeX) ||
- !basegfx::fTools::equal(aVisibleDiscreteRange.getHeight(), mfOldDiscreteSizeY))
+ if(!basegfx::fTools::equal(aDiscreteRange.getWidth(), mfOldDiscreteSizeX) ||
+ !basegfx::fTools::equal(aDiscreteRange.getHeight(), mfOldDiscreteSizeY))
{
bNeedNewDecomposition = true;
}
- // display has changed and cannot be reused when the shown relative part did change
- if(!bNeedNewDecomposition
- && !aUnitVisibleRange.equal(maOldUnitVisiblePart))
+ if(!bNeedNewDecomposition)
{
- bNeedNewDecomposition = true;
+ // needs to be painted when the new part is not part of the last
+ // decomposition
+ if(!maOldUnitVisiblePart.isInside(aUnitVisibleRange))
+ {
+ bNeedNewDecomposition = true;
+ }
}
}
@@ -385,8 +392,8 @@ namespace drawinglayer
{
// remember last used NewDiscreteSize and NewUnitVisiblePart
ScenePrimitive2D* pThat = const_cast< ScenePrimitive2D* >(this);
- pThat->mfOldDiscreteSizeX = aVisibleDiscreteRange.getWidth();
- pThat->mfOldDiscreteSizeY = aVisibleDiscreteRange.getHeight();
+ pThat->mfOldDiscreteSizeX = aDiscreteRange.getWidth();
+ pThat->mfOldDiscreteSizeY = aDiscreteRange.getHeight();
pThat->maOldUnitVisiblePart = aUnitVisibleRange;
}