Author: alg
Date: Thu Jan 9 15:58:41 2014
New Revision: 1556850
URL: http://svn.apache.org/r1556850
Log:
i124002 use own logical size for graphics, do not adapt PrefSize of these in
rendering stack
Modified:
openoffice/trunk/main/drawinglayer/inc/drawinglayer/attribute/sdrfillgraphicattribute.hxx
openoffice/trunk/main/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
openoffice/trunk/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
Modified:
openoffice/trunk/main/drawinglayer/inc/drawinglayer/attribute/sdrfillgraphicattribute.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/drawinglayer/inc/drawinglayer/attribute/sdrfillgraphicattribute.hxx?rev=1556850&r1=1556849&r2=1556850&view=diff
==============================================================================
---
openoffice/trunk/main/drawinglayer/inc/drawinglayer/attribute/sdrfillgraphicattribute.hxx
(original)
+++
openoffice/trunk/main/drawinglayer/inc/drawinglayer/attribute/sdrfillgraphicattribute.hxx
Thu Jan 9 15:58:41 2014
@@ -56,6 +56,7 @@ namespace drawinglayer
/// constructors/assignmentoperator/destructor
SdrFillGraphicAttribute(
const Graphic& rFillGraphic,
+ const basegfx::B2DVector& rGraphicLogicSize,
const basegfx::B2DVector& rSize,
const basegfx::B2DVector& rOffset,
const basegfx::B2DVector& rOffsetPosition,
@@ -76,6 +77,7 @@ namespace drawinglayer
// data read access
const Graphic& getFillGraphic() const;
+ const basegfx::B2DVector& getGraphicLogicSize() const;
const basegfx::B2DVector& getSize() const;
const basegfx::B2DVector& getOffset() const;
const basegfx::B2DVector& getOffsetPosition() const;
Modified:
openoffice/trunk/main/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx?rev=1556850&r1=1556849&r2=1556850&view=diff
==============================================================================
---
openoffice/trunk/main/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
(original)
+++
openoffice/trunk/main/drawinglayer/source/attribute/sdrfillgraphicattribute.cxx
Thu Jan 9 15:58:41 2014
@@ -42,6 +42,7 @@ namespace drawinglayer
// data definitions
Graphic maFillGraphic;
+ basegfx::B2DVector maGraphicLogicSize;
basegfx::B2DVector
maSize;
basegfx::B2DVector
maOffset;
basegfx::B2DVector
maOffsetPosition;
@@ -54,6 +55,7 @@ namespace drawinglayer
ImpSdrFillGraphicAttribute(
const Graphic& rFillGraphic,
+ const basegfx::B2DVector& rGraphicLogicSize,
const basegfx::B2DVector& rSize,
const basegfx::B2DVector& rOffset,
const basegfx::B2DVector& rOffsetPosition,
@@ -63,6 +65,7 @@ namespace drawinglayer
bool bLogSize)
: mnRefCount(0),
maFillGraphic(rFillGraphic),
+ maGraphicLogicSize(rGraphicLogicSize),
maSize(rSize),
maOffset(rOffset),
maOffsetPosition(rOffsetPosition),
@@ -75,6 +78,7 @@ namespace drawinglayer
// data read access
const Graphic& getFillGraphic() const { return maFillGraphic; }
+ const basegfx::B2DVector& getGraphicLogicSize() const { return
maGraphicLogicSize; }
const basegfx::B2DVector& getSize() const { return maSize; }
const basegfx::B2DVector& getOffset() const { return maOffset; }
const basegfx::B2DVector& getOffsetPosition() const { return
maOffsetPosition; }
@@ -86,6 +90,7 @@ namespace drawinglayer
bool operator==(const ImpSdrFillGraphicAttribute& rCandidate) const
{
return (getFillGraphic() ==
rCandidate.getFillGraphic()
+ && getGraphicLogicSize() ==
rCandidate.getGraphicLogicSize()
&& getSize() == rCandidate.getSize()
&& getOffset() == rCandidate.getOffset()
&& getOffsetPosition() ==
rCandidate.getOffsetPosition()
@@ -105,6 +110,7 @@ namespace drawinglayer
Graphic(),
basegfx::B2DVector(),
basegfx::B2DVector(),
+ basegfx::B2DVector(),
basegfx::B2DVector(),
basegfx::B2DVector(),
false,
@@ -121,6 +127,7 @@ namespace drawinglayer
SdrFillGraphicAttribute::SdrFillGraphicAttribute(
const Graphic& rFillGraphic,
+ const basegfx::B2DVector& rGraphicLogicSize,
const basegfx::B2DVector& rSize,
const basegfx::B2DVector& rOffset,
const basegfx::B2DVector& rOffsetPosition,
@@ -131,6 +138,7 @@ namespace drawinglayer
: mpSdrFillGraphicAttribute(
new ImpSdrFillGraphicAttribute(
rFillGraphic,
+ rGraphicLogicSize,
rSize,
rOffset,
rOffsetPosition,
@@ -210,6 +218,11 @@ namespace drawinglayer
return mpSdrFillGraphicAttribute->getFillGraphic();
}
+ const basegfx::B2DVector&
SdrFillGraphicAttribute::getGraphicLogicSize() const
+ {
+ return mpSdrFillGraphicAttribute->getGraphicLogicSize();
+ }
+
const basegfx::B2DVector& SdrFillGraphicAttribute::getSize() const
{
return mpSdrFillGraphicAttribute->getSize();
@@ -249,7 +262,6 @@ namespace drawinglayer
{
// get logical size of bitmap (before expanding
eventually)
Graphic aGraphic(getFillGraphic());
- const basegfx::B2DVector
aLogicalSize(aGraphic.GetPrefSize().getWidth(),
aGraphic.GetPrefSize().getHeight());
// init values with defaults
basegfx::B2DPoint aBitmapSize(1.0, 1.0);
@@ -277,7 +289,9 @@ namespace drawinglayer
}
else
{
- aBitmapSize.setX(aLogicalSize.getX());
+ // #124002# use GraphicLogicSize directly, do not try to
use GetPrefSize
+ // of the graphic, that may not be adapted to the MapMode
of the target
+ aBitmapSize.setX(getGraphicLogicSize().getX());
}
if(0.0 != getSize().getY())
@@ -293,7 +307,9 @@ namespace drawinglayer
}
else
{
- aBitmapSize.setY(aLogicalSize.getY());
+ // #124002# use GraphicLogicSize directly, do not try to
use GetPrefSize
+ // of the graphic, that may not be adapted to the MapMode
of the target
+ aBitmapSize.setY(getGraphicLogicSize().getY());
}
// get values, force to centered if necessary
Modified:
openoffice/trunk/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx?rev=1556850&r1=1556849&r2=1556850&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
(original)
+++ openoffice/trunk/main/svx/source/sdr/primitive2d/sdrattributecreator.cxx
Thu Jan 9 15:58:41 2014
@@ -647,26 +647,31 @@ namespace drawinglayer
// convert size and MapMode to destination logical size and MapMode
const MapUnit
aDestinationMapUnit((MapUnit)rSet.GetPool()->GetMetric(0));
+ basegfx::B2DVector
aGraphicLogicSize(aGraphic.GetPrefSize().Width(),
aGraphic.GetPrefSize().Height());
if(aGraphic.GetPrefMapMode() != aDestinationMapUnit)
{
// #i100360# for MAP_PIXEL, LogicToLogic will not work
properly,
// so fallback to Application::GetDefaultDevice()
+ Size aNewSize(0, 0);
+
if(MAP_PIXEL == aGraphic.GetPrefMapMode().GetMapUnit())
{
- aGraphic.SetPrefSize(
- Application::GetDefaultDevice()->PixelToLogic(
- aGraphic.GetPrefSize(),
- aDestinationMapUnit));
+ aNewSize = Application::GetDefaultDevice()->PixelToLogic(
+ aGraphic.GetPrefSize(),
+ aDestinationMapUnit);
}
else
{
- aGraphic.SetPrefSize(
- OutputDevice::LogicToLogic(
- aGraphic.GetPrefSize(),
- aGraphic.GetPrefMapMode(),
- aDestinationMapUnit));
+ aNewSize = OutputDevice::LogicToLogic(
+ aGraphic.GetPrefSize(),
+ aGraphic.GetPrefMapMode(),
+ aDestinationMapUnit);
}
+
+ // #124002# do not set new size using SetPrefSize at the
graphic, this will lead to problems.
+ // Instead, adapt the GraphicLogicSize which will be used for
further decompositions
+ aGraphicLogicSize = basegfx::B2DVector(aNewSize.Width(),
aNewSize.Height());
}
// get size
@@ -682,6 +687,7 @@ namespace drawinglayer
return attribute::SdrFillGraphicAttribute(
aGraphic,
+ aGraphicLogicSize,
aSize,
aOffset,
aOffsetPosition,