You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/01/03 18:18:47 UTC

svn commit: r1226879 [1/2] - in /incubator/ooo/trunk/main: chart2/source/controller/chartapiwrapper/ chart2/source/controller/inc/ chart2/source/controller/main/ chart2/source/inc/ drawinglayer/ drawinglayer/inc/drawinglayer/primitive2d/ drawinglayer/s...

Author: alg
Date: Tue Jan  3 17:18:46 2012
New Revision: 1226879

URL: http://svn.apache.org/viewvc?rev=1226879&view=rev
Log:
fix for #118525#: Using primitives for chart sub-geometry visualisation

Added:
    incubator/ooo/trunk/main/svx/inc/svx/charthelper.hxx
    incubator/ooo/trunk/main/svx/source/svdraw/charthelper.cxx
Removed:
    incubator/ooo/trunk/main/chart2/source/controller/inc/ChartRenderer.hxx
    incubator/ooo/trunk/main/chart2/source/controller/main/ChartRenderer.cxx
    incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/chartprimitive2d.hxx
    incubator/ooo/trunk/main/drawinglayer/source/primitive2d/chartprimitive2d.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor2d/helperchartrenderer.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor2d/helperchartrenderer.hxx
Modified:
    incubator/ooo/trunk/main/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
    incubator/ooo/trunk/main/chart2/source/controller/main/makefile.mk
    incubator/ooo/trunk/main/chart2/source/inc/servicenames.hxx
    incubator/ooo/trunk/main/drawinglayer/Library_drawinglayer.mk
    incubator/ooo/trunk/main/drawinglayer/Package_inc.mk
    incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
    incubator/ooo/trunk/main/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor2d/canvasprocessor.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
    incubator/ooo/trunk/main/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
    incubator/ooo/trunk/main/slideshow/source/engine/shapes/drawshape.cxx
    incubator/ooo/trunk/main/svtools/Library_svt.mk
    incubator/ooo/trunk/main/svtools/Package_inc.mk
    incubator/ooo/trunk/main/svtools/inc/svtools/chartprettypainter.hxx
    incubator/ooo/trunk/main/svtools/source/misc/chartprettypainter.cxx
    incubator/ooo/trunk/main/svx/Library_svxcore.mk
    incubator/ooo/trunk/main/svx/Package_inc.mk
    incubator/ooo/trunk/main/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx
    incubator/ooo/trunk/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
    incubator/ooo/trunk/main/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx
    incubator/ooo/trunk/main/svx/source/svdraw/svdoole2.cxx
    incubator/ooo/trunk/main/sw/source/core/doc/notxtfrm.cxx
    incubator/ooo/trunk/main/sw/source/core/layout/paintfrm.cxx
    incubator/ooo/trunk/main/sw/source/core/unocore/unochart.cxx

Modified: incubator/ooo/trunk/main/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx (original)
+++ incubator/ooo/trunk/main/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx Tue Jan  3 17:18:46 2012
@@ -51,7 +51,6 @@
 #include "AreaWrapper.hxx"
 #include "WrappedAddInProperty.hxx"
 #include "WrappedIgnoreProperty.hxx"
-#include "ChartRenderer.hxx"
 #include <com/sun/star/chart2/XTitled.hpp>
 #include <com/sun/star/chart2/data/XDataReceiver.hpp>
 #include <com/sun/star/chart/ChartDataRowSource.hpp>
@@ -1362,12 +1361,6 @@ uno::Reference< uno::XInterface > SAL_CA
 
         bServiceFound = true;
     }
-    else if( aServiceSpecifier.equals( CHART_RENDERER_SERVICE_IMPLEMENTATION_NAME ) )
-    {
-        Reference< lang::XUnoTunnel > xChartRenderer( new ChartRenderer( m_spChart2ModelContact->getChartModel() ) );
-        xResult.set( xChartRenderer );
-        bServiceFound = true;
-    }
     else if( aServiceSpecifier.equals( C2U("com.sun.star.comp.chart2.DataSeriesWrapper") ) )
     {
         Reference< beans::XPropertySet > xDataSeries( new DataSeriesPointWrapper( m_spChart2ModelContact ) );

Modified: incubator/ooo/trunk/main/chart2/source/controller/main/makefile.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/chart2/source/controller/main/makefile.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/chart2/source/controller/main/makefile.mk (original)
+++ incubator/ooo/trunk/main/chart2/source/controller/main/makefile.mk Tue Jan  3 17:18:46 2012
@@ -55,7 +55,6 @@ SLOFILES =  \
 			$(SLO)$/ChartController_Position.obj \
 			$(SLO)$/ChartController_Tools.obj \
 			$(SLO)$/ChartFrameloader.obj \
-			$(SLO)$/ChartRenderer.obj \
 			$(SLO)$/CommandDispatchContainer.obj \
 			$(SLO)$/CommandDispatch.obj \
 			$(SLO)$/ControllerCommandDispatch.obj \

Modified: incubator/ooo/trunk/main/chart2/source/inc/servicenames.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/chart2/source/inc/servicenames.hxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/chart2/source/inc/servicenames.hxx (original)
+++ incubator/ooo/trunk/main/chart2/source/inc/servicenames.hxx Tue Jan  3 17:18:46 2012
@@ -56,8 +56,6 @@ namespace chart
 #define CHART_ACCESSIBLE_TEXT_IMPLEMENTATION_NAME ::rtl::OUString::createFromAscii("com.sun.star.comp.chart2.AccessibleTextComponent")
 #define CHART_ACCESSIBLE_TEXT_SERVICE_NAME ::rtl::OUString::createFromAscii("com.sun.star.accessibility.AccessibleTextComponent")
 
-#define CHART_RENDERER_SERVICE_IMPLEMENTATION_NAME ::rtl::OUString::createFromAscii("com.sun.star.comp.chart2.ChartRenderer")
-
 //.............................................................................
 } //namespace chart
 //.............................................................................

Modified: incubator/ooo/trunk/main/drawinglayer/Library_drawinglayer.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/Library_drawinglayer.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/Library_drawinglayer.mk (original)
+++ incubator/ooo/trunk/main/drawinglayer/Library_drawinglayer.mk Tue Jan  3 17:18:46 2012
@@ -94,7 +94,6 @@ $(eval $(call gb_Library_add_exception_o
 	drawinglayer/source/primitive2d/backgroundcolorprimitive2d \
 	drawinglayer/source/primitive2d/bitmapprimitive2d \
 	drawinglayer/source/primitive2d/borderlineprimitive2d \
-	drawinglayer/source/primitive2d/chartprimitive2d \
 	drawinglayer/source/primitive2d/controlprimitive2d \
 	drawinglayer/source/primitive2d/cropprimitive2d \
 	drawinglayer/source/primitive2d/discretebitmapprimitive2d \
@@ -164,7 +163,6 @@ $(eval $(call gb_Library_add_exception_o
 	drawinglayer/source/processor2d/vclhelperbitmaprender \
 	drawinglayer/source/processor2d/vclhelperbufferdevice \
 	drawinglayer/source/processor2d/vclprocessor2d \
-	drawinglayer/source/processor2d/helperchartrenderer \
 	drawinglayer/source/processor2d/helperwrongspellrenderer \
 	drawinglayer/source/processor2d/vclpixelprocessor2d \
 	drawinglayer/source/processor2d/vclmetafileprocessor2d \

Modified: incubator/ooo/trunk/main/drawinglayer/Package_inc.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/Package_inc.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/Package_inc.mk (original)
+++ incubator/ooo/trunk/main/drawinglayer/Package_inc.mk Tue Jan  3 17:18:46 2012
@@ -34,7 +34,6 @@ $(eval $(call gb_Package_add_file,drawin
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/baseprimitive2d.hxx,drawinglayer/primitive2d/baseprimitive2d.hxx))
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/bitmapprimitive2d.hxx,drawinglayer/primitive2d/bitmapprimitive2d.hxx))
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/borderlineprimitive2d.hxx,drawinglayer/primitive2d/borderlineprimitive2d.hxx))
-$(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/chartprimitive2d.hxx,drawinglayer/primitive2d/chartprimitive2d.hxx))
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/controlprimitive2d.hxx,drawinglayer/primitive2d/controlprimitive2d.hxx))
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/cropprimitive2d.hxx,drawinglayer/primitive2d/cropprimitive2d.hxx))
 $(eval $(call gb_Package_add_file,drawinglayer_inc,inc/drawinglayer/primitive2d/discretebitmapprimitive2d.hxx,drawinglayer/primitive2d/discretebitmapprimitive2d.hxx))

Modified: incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/inc/drawinglayer/primitive2d/drawinglayer_primitivetypes2d.hxx Tue Jan  3 17:18:46 2012
@@ -85,26 +85,25 @@
 #define PRIMITIVE2D_ID_POLYPOLYGONHAIRLINEPRIMITIVE2D		(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 46)
 #define PRIMITIVE2D_ID_EXECUTEPRIMITIVE2D		            (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 47)
 #define PRIMITIVE2D_ID_PAGEPREVIEWPRIMITIVE2D		        (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 48)
-#define PRIMITIVE2D_ID_CHARTPRIMITIVE2D						(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 49)
-#define PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D				(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 50)
-#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D				(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 51)
-#define PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 52)
-#define PRIMITIVE2D_ID_HITTESTPRIMITIVE2D                   (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 53)
-#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D                    (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 54)
-#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 55)
-#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 56)
-#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D                  (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 57)
-#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D    (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 58)
-#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D     (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 59)
-#define PRIMITIVE2D_ID_EPSPRIMITIVE2D						(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 60)
-#define PRIMITIVE2D_ID_DISCRETESHADOWPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 61)
-#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D            (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 62)
-#define PRIMITIVE2D_ID_SVGLINEARGRADIENTPRIMITIVE2D         (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 63)
-#define PRIMITIVE2D_ID_SVGRADIALGRADIENTPRIMITIVE2D         (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 64)
-#define PRIMITIVE2D_ID_SVGLINEARATOMPRIMITIVE2D             (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 65)
-#define PRIMITIVE2D_ID_SVGRADIALATOMPRIMITIVE2D             (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 66)
-#define PRIMITIVE2D_ID_CROPPRIMITIVE2D                      (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 67)
-#define PRIMITIVE2D_ID_PATTERNFILLPRIMITIVE2D               (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 68)
+#define PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D				(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 49)
+#define PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D				(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 50)
+#define PRIMITIVE2D_ID_POLYPOLYGONMARKERPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 51)
+#define PRIMITIVE2D_ID_HITTESTPRIMITIVE2D                   (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 52)
+#define PRIMITIVE2D_ID_INVERTPRIMITIVE2D                    (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 53)
+#define PRIMITIVE2D_ID_DISCRETEBITMAPPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 54)
+#define PRIMITIVE2D_ID_WALLPAPERBITMAPPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 55)
+#define PRIMITIVE2D_ID_TEXTLINEPRIMITIVE2D                  (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 56)
+#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D    (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 57)
+#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D     (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 58)
+#define PRIMITIVE2D_ID_EPSPRIMITIVE2D						(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 59)
+#define PRIMITIVE2D_ID_DISCRETESHADOWPRIMITIVE2D			(PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 60)
+#define PRIMITIVE2D_ID_HIDDENGEOMETRYPRIMITIVE2D            (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 61)
+#define PRIMITIVE2D_ID_SVGLINEARGRADIENTPRIMITIVE2D         (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 62)
+#define PRIMITIVE2D_ID_SVGRADIALGRADIENTPRIMITIVE2D         (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 63)
+#define PRIMITIVE2D_ID_SVGLINEARATOMPRIMITIVE2D             (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 64)
+#define PRIMITIVE2D_ID_SVGRADIALATOMPRIMITIVE2D             (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 65)
+#define PRIMITIVE2D_ID_CROPPRIMITIVE2D                      (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 66)
+#define PRIMITIVE2D_ID_PATTERNFILLPRIMITIVE2D               (PRIMITIVE2D_ID_RANGE_DRAWINGLAYER| 67)
 
 //////////////////////////////////////////////////////////////////////////////
 

Modified: incubator/ooo/trunk/main/drawinglayer/source/primitive2d/sceneprimitive2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/primitive2d/sceneprimitive2d.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/primitive2d/sceneprimitive2d.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/primitive2d/sceneprimitive2d.cxx Tue Jan  3 17:18:46 2012
@@ -205,24 +205,84 @@ namespace drawinglayer
 					}
 				}
 
-				// calculate logic render size in world coordinates for usage in renderer
-				basegfx::B2DVector aLogicRenderSize(
-					aDiscreteRange.getWidth() * fReduceFactor, 
-					aDiscreteRange.getHeight() * fReduceFactor);
-				aLogicRenderSize *= rViewInformation.getInverseObjectToViewTransformation();
-
                 // determine the oversample value
                 static sal_uInt16 nDefaultOversampleValue(3);
                 const sal_uInt16 nOversampleValue(aDrawinglayerOpt.IsAntiAliasing() ? nDefaultOversampleValue : 0);
 
+                geometry::ViewInformation3D aViewInformation3D(getViewInformation3D());
+                {
+                    // calculate a transformation from DiscreteRange to evtl. rotated/sheared content.
+                    // Start with full transformation from object to discrete units
+                    basegfx::B2DHomMatrix aObjToUnit(rViewInformation.getObjectToViewTransformation() * getObjectTransformation());
+
+                    // bring to unit coordinates by applying inverse DiscreteRange
+                    aObjToUnit.translate(-aDiscreteRange.getMinX(), -aDiscreteRange.getMinY());
+                    aObjToUnit.scale(1.0 / aDiscreteRange.getWidth(), 1.0 / aDiscreteRange.getHeight());
+
+                    // calculate transformed user coordinate system
+                    const basegfx::B2DPoint aStandardNull(0.0, 0.0);
+                    const basegfx::B2DPoint aUnitRangeTopLeft(aObjToUnit * aStandardNull);
+                    const basegfx::B2DVector aStandardXAxis(1.0, 0.0);
+                    const basegfx::B2DVector aUnitRangeXAxis(aObjToUnit * aStandardXAxis);
+                    const basegfx::B2DVector aStandardYAxis(0.0, 1.0);
+                    const basegfx::B2DVector aUnitRangeYAxis(aObjToUnit * aStandardYAxis);
+
+                    if(!aUnitRangeTopLeft.equal(aStandardNull) || !aUnitRangeXAxis.equal(aStandardXAxis) || !aUnitRangeYAxis.equal(aStandardYAxis))
+                    {
+                        // build transformation from unit range to user coordinate system; the unit range
+                        // X and Y axes are the column vectors, the null point is the offset
+                        basegfx::B2DHomMatrix aUnitRangeToUser;
+
+                        aUnitRangeToUser.set3x2(
+                            aUnitRangeXAxis.getX(), aUnitRangeYAxis.getX(), aUnitRangeTopLeft.getX(),
+                            aUnitRangeXAxis.getY(), aUnitRangeYAxis.getY(), aUnitRangeTopLeft.getY());
+
+                        // decompose to allow to apply this to the 3D transformation
+                        basegfx::B2DVector aScale, aTranslate;
+                        double fRotate, fShearX;
+                        aUnitRangeToUser.decompose(aScale, aTranslate, fRotate, fShearX);
+
+                        // apply before DeviceToView and after Projection, 3D is in range [-1.0 .. 1.0] in X,Y and Z
+                        // and not yet flipped in Y
+                        basegfx::B3DHomMatrix aExtendedProjection(aViewInformation3D.getProjection());
+
+                        // bring to unit coordiantes, flip Y, leave Z unchanged
+                        aExtendedProjection.scale(0.5, -0.5, 1.0);
+                        aExtendedProjection.translate(0.5, 0.5, 0.0);
+
+                        // apply extra; Y is flipped now, go with positive shear and rotate values
+                        aExtendedProjection.scale(aScale.getX(), aScale.getY(), 1.0);
+                        aExtendedProjection.shearXZ(fShearX, 0.0);
+                        aExtendedProjection.rotate(0.0, 0.0, fRotate);
+                        aExtendedProjection.translate(aTranslate.getX(), aTranslate.getY(), 0.0);
+
+                        // back to state after projection
+                        aExtendedProjection.translate(-0.5, -0.5, 0.0);
+                        aExtendedProjection.scale(2.0, -2.0, 1.0);
+
+                        aViewInformation3D = geometry::ViewInformation3D(
+                            aViewInformation3D.getObjectTransformation(),
+                            aViewInformation3D.getOrientation(),
+                            aExtendedProjection,
+                            aViewInformation3D.getDeviceToView(),
+                            aViewInformation3D.getViewTime(),
+                            aViewInformation3D.getExtendedInformationSequence());
+                    }
+                }
+
+                // calculate logic render size in world coordinates for usage in renderer
+                const basegfx::B2DHomMatrix aInverseOToV(rViewInformation.getInverseObjectToViewTransformation());
+                const double fLogicX((aInverseOToV * basegfx::B2DVector(aDiscreteRange.getWidth() * fReduceFactor, 0.0)).getLength());
+                const double fLogicY((aInverseOToV * basegfx::B2DVector(0.0, aDiscreteRange.getHeight() * fReduceFactor)).getLength());
+
 			    // use default 3D primitive processor to create BitmapEx for aUnitVisiblePart and process
 			    processor3d::ZBufferProcessor3D aZBufferProcessor3D(
-				    getViewInformation3D(), 
+                    aViewInformation3D, 
 					rViewInformation,
 				    getSdrSceneAttribute(), 
 				    getSdrLightingAttribute(),
-				    aLogicRenderSize.getX(), 
-				    aLogicRenderSize.getY(), 
+                    fLogicX, 
+                    fLogicY, 
 				    aUnitVisibleRange,
                     nOversampleValue);
 
@@ -243,7 +303,7 @@ namespace drawinglayer
 					aNew2DTransform.set(1, 2, aVisibleDiscreteRange.getMinY());
 
 					// transform back to world coordinates for usage in primitive creation
-					aNew2DTransform *= rViewInformation.getInverseObjectToViewTransformation();
+					aNew2DTransform *= aInverseOToV;
 
 					// create bitmap primitive and add
 					const Primitive2DReference xRef(new BitmapPrimitive2D(maOldRenderedBitmap, aNew2DTransform));

Modified: incubator/ooo/trunk/main/drawinglayer/source/processor2d/canvasprocessor.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/processor2d/canvasprocessor.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/processor2d/canvasprocessor.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/processor2d/canvasprocessor.cxx Tue Jan  3 17:18:46 2012
@@ -61,8 +61,6 @@
 #include <com/sun/star/rendering/TexturingMode.hpp>
 #include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
 #include <vclhelperbufferdevice.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
 #include <drawinglayer/primitive2d/wrongspellprimitive2d.hxx>
 #include <helperwrongspellrenderer.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
@@ -2091,26 +2089,6 @@ namespace drawinglayer
 
 					break;
 				}
-				case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
-				{
-					// chart primitive in canvas renderer; restore original DrawMode during call
-					// since the evtl. used ChartPrettyPainter will use the MapMode
-					const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
-		   			mpOutputDevice->Push(PUSH_MAPMODE);
-					mpOutputDevice->SetMapMode(maOriginalMapMode);
-					
-					if(!renderChartPrimitive2D(
-						rChartPrimitive, 
-						*mpOutputDevice,
-						getViewInformation2D()))
-					{
-						// fallback to decomposition (MetaFile)
-						process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
-					}
-
-					mpOutputDevice->Pop();
-					break;
-				}
                 case PRIMITIVE2D_ID_WRONGSPELLPRIMITIVE2D :
                 {
 					// wrong spell primitive. Handled directly here using VCL since VCL has a nice and

Modified: incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx Tue Jan  3 17:18:46 2012
@@ -59,7 +59,6 @@
 #include <drawinglayer/primitive2d/graphicprimitive2d.hxx>
 #include <basegfx/polygon/b2dpolygontools.hxx>
 #include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
 #include <drawinglayer/primitive2d/epsprimitive2d.hxx>
 #include <basegfx/polygon/b2dlinegeometry.hxx>
 
@@ -76,11 +75,6 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 
 //////////////////////////////////////////////////////////////////////////////
-// for current chart PrettyPrinting support
-
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-
-//////////////////////////////////////////////////////////////////////////////
 // for StructureTagPrimitive support in sd's unomodel.cxx
 
 #include <drawinglayer/primitive2d/structuretagprimitive2d.hxx>
@@ -1979,21 +1973,6 @@ namespace drawinglayer
 					RenderPointArrayPrimitive2D(static_cast< const primitive2d::PointArrayPrimitive2D& >(rCandidate));
 					break;
 				}
-				case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
-				{
-					// ChartPrimitive2D
-					const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
-
-					if(!renderChartPrimitive2D(
-						rChartPrimitive, 
-						*mpOutputDevice,
-						getViewInformation2D()))
-					{
-						// fallback to decomposition (MetaFile)
-						process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
-					}
-					break;
-				}
 				case PRIMITIVE2D_ID_STRUCTURETAGPRIMITIVE2D :
 				{
 					// structured tag primitive

Modified: incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx Tue Jan  3 17:18:46 2012
@@ -44,8 +44,6 @@
 #include <com/sun/star/awt/XWindow2.hpp>
 #include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx>
 #include <drawinglayer/primitive2d/pagepreviewprimitive2d.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
-#include <helperchartrenderer.hxx>
 #include <helperwrongspellrenderer.hxx>
 #include <drawinglayer/primitive2d/fillhatchprimitive2d.hxx>
 #include <basegfx/polygon/b2dpolygontools.hxx>
@@ -447,26 +445,6 @@ namespace drawinglayer
 
 					break;
 				}
-				case PRIMITIVE2D_ID_CHARTPRIMITIVE2D :
-				{
-					// chart primitive in pixel renderer; restore original DrawMode during call
-					// since the evtl. used ChartPrettyPainter will use the MapMode
-					const primitive2d::ChartPrimitive2D& rChartPrimitive = static_cast< const primitive2d::ChartPrimitive2D& >(rCandidate);
-		   			mpOutputDevice->Push(PUSH_MAPMODE);
-					mpOutputDevice->SetMapMode(maOriginalMapMode);
-					
-					if(!renderChartPrimitive2D(
-						rChartPrimitive, 
-						*mpOutputDevice,
-						getViewInformation2D()))
-					{
-						// fallback to decomposition (MetaFile)
-						process(rChartPrimitive.get2DDecomposition(getViewInformation2D()));
-					}
-		   			
-					mpOutputDevice->Pop();
-					break;
-				}
 				case PRIMITIVE2D_ID_FILLHATCHPRIMITIVE2D :
 				{
 					static bool bForceIgnoreHatchSmoothing(false);

Modified: incubator/ooo/trunk/main/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/drawinglayer/source/processor3d/zbufferprocessor3d.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/drawinglayer/source/processor3d/zbufferprocessor3d.cxx (original)
+++ incubator/ooo/trunk/main/drawinglayer/source/processor3d/zbufferprocessor3d.cxx Tue Jan  3 17:18:46 2012
@@ -132,7 +132,7 @@ namespace
 			aRetval = BitmapEx(aContent, aAlpha);
 
 			// #i101811# set PrefMapMode and PrefSize at newly created Bitmap
-			aRetval.SetPrefMapMode(MAP_100TH_MM);
+			aRetval.SetPrefMapMode(MAP_PIXEL);
 			aRetval.SetPrefSize(Size(nWidth, nHeight));
 		}
 

Modified: incubator/ooo/trunk/main/slideshow/source/engine/shapes/drawshape.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/slideshow/source/engine/shapes/drawshape.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/slideshow/source/engine/shapes/drawshape.cxx (original)
+++ incubator/ooo/trunk/main/slideshow/source/engine/shapes/drawshape.cxx Tue Jan  3 17:18:46 2012
@@ -84,130 +84,6 @@ namespace slideshow
 {
     namespace internal
     {
-        //#i75867# poor quality of ole's alternative view with 3D scenes and zoomfactors besides 100%
-        //metafiles are resolution dependent when bitmaps are contained with is the case for 3D scenes for example
-        //in addition a chart has resolution dependent content as it might skip points that are not visible for a given resolution (this is done for performance reasons)
-        bool local_getMetafileForChart( const uno::Reference< lang::XComponent >& 	  xSource, 
-                  const uno::Reference< drawing::XDrawPage >&     xContainingPage,
-                  GDIMetaFile&                                    rMtf )
-        {
-            //get the chart model
-            uno::Reference< beans::XPropertySet > xPropSet( xSource, uno::UNO_QUERY );
-            uno::Reference< frame::XModel > xChartModel;
-            getPropertyValue( xChartModel, xPropSet, OUSTR("Model"));
-            uno::Reference< lang::XMultiServiceFactory > xFact( xChartModel, uno::UNO_QUERY );
-            OSL_ENSURE( xFact.is(), "Chart cannot be painted pretty!\n" );
-            if(!xFact.is())
-                return false;
-
-            //get the chart view
-            uno::Reference< datatransfer::XTransferable > xChartViewTransferable(
-                xFact->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.chart2.ChartView" ) ) ), uno::UNO_QUERY );
-            uno::Reference< beans::XPropertySet > xChartViewProp( xChartViewTransferable, uno::UNO_QUERY );
-            OSL_ENSURE( xChartViewProp.is(), "Chart cannot be painted pretty!\n" );
-            if( !xChartViewProp.is() )
-                return false;
-
-            //estimate zoom and resolution (this is only a workaround, correct would be to know and use the exact zoom and resoltion during slideshow display)
-            sal_Int32 nScaleXNumerator = 100;//zoom factor -> exact values are important for the quality of the created bitmap especially for 3D charts
-            sal_Int32 nScaleYNumerator = 100;
-            sal_Int32 nScaleXDenominator = 100;
-            sal_Int32 nScaleYDenominator = 100;
-            awt::Size aPixelPerChart( 1000, 1000 );//when data points happen to be on the same pixel as their predecessor no shape is created to safe performance
-
-            Window* pActiveTopWindow( Application::GetActiveTopWindow() );
-            WorkWindow* pWorkWindow( dynamic_cast<WorkWindow*>(pActiveTopWindow));
-            if( pWorkWindow && pWorkWindow->IsPresentationMode() )
-            {
-                Size aPixScreenSize( pActiveTopWindow->GetOutputSizePixel() );
-                aPixelPerChart = awt::Size( aPixScreenSize.getWidth(), aPixScreenSize.getHeight() );//this is still to much (but costs only seldom performance), correct would be pixel per chart object
-
-                uno::Reference< beans::XPropertySet > xPageProp( xContainingPage, uno::UNO_QUERY );
-                sal_Int32 nLogicPageWidth=1;
-                sal_Int32 nLogicPageHeight=1;
-                if( getPropertyValue( nLogicPageWidth, xPageProp, OUSTR("Width")) &&
-                    getPropertyValue( nLogicPageHeight, xPageProp, OUSTR("Height")) )
-                {
-                    Size aLogicScreenSize( pActiveTopWindow->PixelToLogic( aPixScreenSize, MAP_100TH_MM ) );
-                    nScaleXNumerator = aLogicScreenSize.getWidth();
-                    nScaleYNumerator = aLogicScreenSize.getHeight();
-                    nScaleXDenominator = nLogicPageWidth;
-                    nScaleYDenominator = nLogicPageHeight;
-                }
-            }
-            else
-            {
-                long nMaxPixWidth = 0;
-                long nMaxPixHeight = 0;
-                unsigned int nScreenCount( Application::GetScreenCount() );
-                for( unsigned int nScreen=0; nScreen<nScreenCount; nScreen++ )
-                {
-                    Rectangle aCurScreenRect( Application::GetScreenPosSizePixel( nScreen ) );
-                    if( aCurScreenRect.GetWidth() > nMaxPixWidth )
-                        nMaxPixWidth = aCurScreenRect.GetWidth();
-                    if( aCurScreenRect.GetHeight() > nMaxPixHeight )
-                        nMaxPixHeight = aCurScreenRect.GetHeight();
-                }
-                if(nMaxPixWidth>1 && nMaxPixHeight>1)
-                    aPixelPerChart = awt::Size( nMaxPixWidth, nMaxPixHeight );//this is still to much (but costs only seldom performance), correct would be pixel per chart object
-            }
-            
-            try
-            {
-                uno::Sequence< beans::PropertyValue > aZoomFactors(4);
-                aZoomFactors[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleXNumerator") );
-                aZoomFactors[0].Value = uno::makeAny( nScaleXNumerator );
-                aZoomFactors[1].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleXDenominator") );
-                aZoomFactors[1].Value = uno::makeAny( nScaleXDenominator );
-                aZoomFactors[2].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleYNumerator") );
-                aZoomFactors[2].Value = uno::makeAny( nScaleYNumerator );
-                aZoomFactors[3].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ScaleYDenominator") );
-                aZoomFactors[3].Value = uno::makeAny( nScaleYDenominator );
-
-                xChartViewProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ZoomFactors") ), uno::makeAny( aZoomFactors ));
-                xChartViewProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Resolution") ), uno::makeAny( aPixelPerChart ));
-            }
-            catch (uno::Exception &) 
-            {
-                OSL_ENSURE( false, rtl::OUStringToOString(
-                                comphelper::anyToString(
-                                    cppu::getCaughtException() ),
-                                RTL_TEXTENCODING_UTF8 ).getStr() );
-            }
-
-            //get a metafile from the prepared chart view
-            datatransfer::DataFlavor aDataFlavor(
-                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("application/x-openoffice-gdimetafile;windows_formatname=\"GDIMetaFile\"") ),
-                    ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "GDIMetaFile" ) ),
-                    ::getCppuType( (const uno::Sequence< sal_Int8 >*) 0 ) );
-            uno::Any aData( xChartViewTransferable->getTransferData( aDataFlavor ) );
-            uno::Sequence< sal_Int8 > aSeq;
-            if( aData >>= aSeq )
-            {
-		        ::std::auto_ptr< SvMemoryStream > pSrcStm( new SvMemoryStream( (char*) aSeq.getConstArray(), aSeq.getLength(), STREAM_WRITE | STREAM_TRUNC ) );
-	            *(pSrcStm.get() ) >> rMtf;
-                return true;
-            }
-            return false;
-        }
-
-        //same as getMetafile with an exception for charts
-        //for charts a metafile with a higher resolution is created, because charts have resolution dependent content
-        bool local_getMetaFile_WithSpecialChartHandling( const uno::Reference< lang::XComponent >& 	  xSource, 
-                  const uno::Reference< drawing::XDrawPage >&     xContainingPage,
-                  GDIMetaFile&                                    rMtf,
-                  int                                             mtfLoadFlags,
-                  const uno::Reference< uno::XComponentContext >& rxContext )
-        {
-            uno::Reference<beans::XPropertySet> xProp( xSource, uno::UNO_QUERY );
-            rtl::OUString sCLSID;
-            getPropertyValue( sCLSID, xProp, OUSTR("CLSID"));
-            if( sCLSID.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("12DCAE26-281F-416F-a234-c3086127382e")) && local_getMetafileForChart( xSource, xContainingPage, rMtf ) )
-                return true;
-            return getMetaFile( xSource, xContainingPage, rMtf, mtfLoadFlags, rxContext );
-        }
-
-
         //////////////////////////////////////////////////////////////////////
         //
         // Private methods
@@ -221,7 +97,7 @@ namespace slideshow
                 // reload with added flags:
                 mpCurrMtf.reset( new GDIMetaFile );
                 mnCurrMtfLoadFlags |= MTF_LOAD_SCROLL_TEXT_MTF;
-                local_getMetaFile_WithSpecialChartHandling(
+                getMetaFile(
                     uno::Reference<lang::XComponent>(mxShape, uno::UNO_QUERY),
                     mxPage, *mpCurrMtf, mnCurrMtfLoadFlags,
                     mxComponentContext );
@@ -291,7 +167,7 @@ namespace slideshow
                 // subsetting information!
                 mpCurrMtf.reset( new GDIMetaFile );
                 mnCurrMtfLoadFlags |= MTF_LOAD_VERBOSE_COMMENTS;
-                local_getMetaFile_WithSpecialChartHandling(
+                getMetaFile(
                     uno::Reference<lang::XComponent>(mxShape, uno::UNO_QUERY),
                     mxPage, *mpCurrMtf, mnCurrMtfLoadFlags,
                     mxComponentContext );
@@ -582,7 +458,7 @@ namespace slideshow
             // must NOT be called from within initializer list, uses
             // state from mnCurrMtfLoadFlags!
             mpCurrMtf.reset( new GDIMetaFile );
-            local_getMetaFile_WithSpecialChartHandling(
+            getMetaFile(
                 uno::Reference<lang::XComponent>(xShape, uno::UNO_QUERY),
                 xContainingPage, *mpCurrMtf, mnCurrMtfLoadFlags,
                 mxComponentContext );

Modified: incubator/ooo/trunk/main/svtools/Library_svt.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svtools/Library_svt.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svtools/Library_svt.mk (original)
+++ incubator/ooo/trunk/main/svtools/Library_svt.mk Tue Jan  3 17:18:46 2012
@@ -212,7 +212,6 @@ $(eval $(call gb_Library_add_exception_o
 	svtools/source/java/javacontext \
 	svtools/source/java/javainteractionhandler \
 	svtools/source/misc/acceleratorexecute \
-	svtools/source/misc/chartprettypainter \
 	svtools/source/misc/cliplistener \
 	svtools/source/misc/dialogclosedlistener \
 	svtools/source/misc/dialogcontrolling \

Modified: incubator/ooo/trunk/main/svtools/Package_inc.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svtools/Package_inc.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svtools/Package_inc.mk (original)
+++ incubator/ooo/trunk/main/svtools/Package_inc.mk Tue Jan  3 17:18:46 2012
@@ -41,7 +41,6 @@ $(eval $(call gb_Package_add_file,svtool
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/brwbox.hxx,svtools/brwbox.hxx))
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/brwhead.hxx,svtools/brwhead.hxx))
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/calendar.hxx,svtools/calendar.hxx))
-$(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/chartprettypainter.hxx,svtools/chartprettypainter.hxx))
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/cliplistener.hxx,svtools/cliplistener.hxx))
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/colctrl.hxx,svtools/colctrl.hxx))
 $(eval $(call gb_Package_add_file,svtools_inc,inc/svtools/collatorres.hxx,svtools/collatorres.hxx))

Modified: incubator/ooo/trunk/main/svtools/inc/svtools/chartprettypainter.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svtools/inc/svtools/chartprettypainter.hxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svtools/inc/svtools/chartprettypainter.hxx (original)
+++ incubator/ooo/trunk/main/svtools/inc/svtools/chartprettypainter.hxx Tue Jan  3 17:18:46 2012
@@ -1,67 +0,0 @@
-/**************************************************************
- * 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * 
- *************************************************************/
-
-
-
-#ifndef CHARTPRETTYPAINTER_HXX
-#define CHARTPRETTYPAINTER_HXX
-
-#ifndef INCLUDED_SVTDLLAPI_H
-#include "svtools/svtdllapi.h"
-#endif
-
-//#include <svtools/embedhlp.hxx>
-#include <vcl/outdev.hxx>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-
-// predeclarations
-namespace svt { class EmbeddedObjectRef; }
-
-/** use this class for a correct view representation of charts
-see issues #i82893#, #i75867#: charts must be painted resolution dependent!! 
-
-example usage when painting ole objects:
-if( ChartPrettyPainter::IsChart(xObjRef) && ChartPrettyPainter::ShouldPrettyPaintChartOnThisDevice( pOutDev )
-    && ChartPrettyPainter::DoPrettyPaintChart( get/loadChartModel(), pOutDev, rLogicObjectRect ) )
-    return;
-else
-    use any other painting method for charts or paint other ole objects
-
-this way of usage ensures that ole objects are only loaded if necessary
-*/
-
-class SVT_DLLPUBLIC ChartPrettyPainter
-{
-public:
-    static bool IsChart( const svt::EmbeddedObjectRef& xObjRef );
-    static bool ShouldPrettyPaintChartOnThisDevice( OutputDevice* pOutDev );
-    static bool DoPrettyPaintChart( ::com::sun::star::uno::Reference<
-                    ::com::sun::star::frame::XModel > xChartModel,
-                        OutputDevice* pOutDev, const Rectangle& rLogicObjectRect );
-
-    ChartPrettyPainter();
-    virtual ~ChartPrettyPainter();
-    virtual bool DoPaint( OutputDevice* pOutDev, const Rectangle& rLogicObjectRect ) const;
-    static const com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
-};
-
-#endif

Modified: incubator/ooo/trunk/main/svtools/source/misc/chartprettypainter.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svtools/source/misc/chartprettypainter.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svtools/source/misc/chartprettypainter.cxx (original)
+++ incubator/ooo/trunk/main/svtools/source/misc/chartprettypainter.cxx Tue Jan  3 17:18:46 2012
@@ -1,136 +0,0 @@
-/**************************************************************
- * 
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- * 
- *   http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * 
- *************************************************************/
-
-
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-
-#include <svtools/chartprettypainter.hxx>
-
-#include <tools/globname.hxx>
-#include <sot/clsids.hxx>
-// header for function rtl_createUuid
-#include <rtl/uuid.h>
-#include <vcl/pdfextoutdevdata.hxx>
-
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <svtools/embedhlp.hxx>
-
-using namespace ::com::sun::star;
-
-ChartPrettyPainter::ChartPrettyPainter()
-{
-}
-
-ChartPrettyPainter::~ChartPrettyPainter()
-{
-}
-
-bool ChartPrettyPainter::DoPaint(OutputDevice* /*pOutDev*/, const Rectangle& /*rLogicObjectRect*/) const
-{
-    return false;
-}
-
-//static
-const uno::Sequence<sal_Int8>& ChartPrettyPainter::getUnoTunnelId()
-{
-    static uno::Sequence<sal_Int8> * pSeq = 0;
-	if( !pSeq )
-	{
-		osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
-		if( !pSeq )
-		{
-            static uno::Sequence< sal_Int8 > aSeq( 16 );
-			rtl_createUuid( (sal_uInt8*)aSeq.getArray(), 0, sal_True );
-			pSeq = &aSeq;
-		}
-	}
-	return *pSeq;
-}
-
-bool ChartPrettyPainter::IsChart( const svt::EmbeddedObjectRef& xObjRef )
-{
-    if ( !xObjRef.is() )
-        return false;
-
-    SvGlobalName aObjClsId( xObjRef->getClassID() );
-    if(
-        SvGlobalName(SO3_SCH_CLASSID_30) == aObjClsId
-        || SvGlobalName(SO3_SCH_CLASSID_40) == aObjClsId
-        || SvGlobalName(SO3_SCH_CLASSID_50) == aObjClsId
-        || SvGlobalName(SO3_SCH_CLASSID_60) == aObjClsId)
-    {
-        return true;
-    }
-
-	return false;
-}
-
-bool ChartPrettyPainter::ShouldPrettyPaintChartOnThisDevice( OutputDevice* pOutDev )
-{
-    if( !pOutDev )
-        return false;
-    //at least the print preview in calc has a paint loop due to too much invalidate calls deep in sdr
-    //to avoid the paint loop we use the metafile replacement in this case instead of direct rendering
-    if( OUTDEV_WINDOW == pOutDev->GetOutDevType() )
-        return false;
-    if( OUTDEV_PRINTER == pOutDev->GetOutDevType() )
-        return true;
-    vcl::PDFExtOutDevData* pPDFData = PTR_CAST( vcl::PDFExtOutDevData, pOutDev->GetExtOutDevData() );
-    if( pPDFData )
-        return true;
-    return false;
-}
-
-bool ChartPrettyPainter::DoPrettyPaintChart( uno::Reference< frame::XModel > xChartModel, OutputDevice* pOutDev, const Rectangle& rLogicObjectRect )
-{
-    //charts must be painted resolution dependent!! #i82893#, #i75867#
-    if( !xChartModel.is() || !ShouldPrettyPaintChartOnThisDevice( pOutDev ) )
-        return false;
-
-    try
-    {
-        uno::Reference< lang::XMultiServiceFactory > xFact( xChartModel, uno::UNO_QUERY );
-        OSL_ENSURE( xFact.is(), "Chart cannot be painted pretty!\n" );
-        if( xFact.is() )
-        {
-            uno::Reference< lang::XUnoTunnel > xChartRenderer( xFact->createInstance(
-                ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.chart2.ChartRenderer" ) ) ), uno::UNO_QUERY );
-            OSL_ENSURE( xChartRenderer.is(), "Chart cannot be painted pretty!\n" );
-            if( xChartRenderer.is() )
-            {
-                ChartPrettyPainter* pPrettyPainter = reinterpret_cast<ChartPrettyPainter*>(
-                    xChartRenderer->getSomething( ChartPrettyPainter::getUnoTunnelId() ));
-                if( pPrettyPainter )
-                    return pPrettyPainter->DoPaint(pOutDev, rLogicObjectRect);
-            }
-        }
-    }
-    catch( uno::Exception& e )
-	{
-		(void)e;
-		DBG_ERROR( "Chart cannot be painted pretty!" );
-	}
-    return false; 
-}
-

Modified: incubator/ooo/trunk/main/svx/Library_svxcore.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/Library_svxcore.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/Library_svxcore.mk (original)
+++ incubator/ooo/trunk/main/svx/Library_svxcore.mk Tue Jan  3 17:18:46 2012
@@ -298,6 +298,7 @@ $(eval $(call gb_Library_add_exception_o
     svx/source/sdr/properties/connectorproperties \
     svx/source/sdr/properties/e3dcompoundproperties \
     svx/source/sdr/properties/oleproperties \
+    svx/source/svdraw/charthelper \
     svx/source/svdraw/clonelist \
     svx/source/svdraw/gradtrns \
     svx/source/svdraw/polypolygoneditor \

Modified: incubator/ooo/trunk/main/svx/Package_inc.mk
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/Package_inc.mk?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/Package_inc.mk (original)
+++ incubator/ooo/trunk/main/svx/Package_inc.mk Tue Jan  3 17:18:46 2012
@@ -27,6 +27,7 @@
 
 $(eval $(call gb_Package_Package,svx_inc,$(SRCDIR)/svx/inc))
 
+$(eval $(call gb_Package_add_file,svx_inc,inc/svx/charthelper.hxx,svx/charthelper.hxx))
 $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sxsoitm.hxx,svx/sxsoitm.hxx))
 $(eval $(call gb_Package_add_file,svx_inc,inc/svx/sdshtitm.hxx,svx/sdshtitm.hxx))
 $(eval $(call gb_Package_add_file,svx_inc,inc/svx/polysc3d.hxx,svx/polysc3d.hxx))

Added: incubator/ooo/trunk/main/svx/inc/svx/charthelper.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/inc/svx/charthelper.hxx?rev=1226879&view=auto
==============================================================================
--- incubator/ooo/trunk/main/svx/inc/svx/charthelper.hxx (added)
+++ incubator/ooo/trunk/main/svx/inc/svx/charthelper.hxx Tue Jan  3 17:18:46 2012
@@ -0,0 +1,55 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+#ifndef CHARTHELPER_HXX
+#define CHARTHELPER_HXX
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <basegfx/range/b2drange.hxx>
+#include <svx/svxdllapi.h>
+#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+// predeclarations
+
+namespace svt { class EmbeddedObjectRef; }
+
+//////////////////////////////////////////////////////////////////////////////
+
+class SVX_DLLPUBLIC ChartHelper
+{
+public:
+    // test if given reference is a chart
+    static bool IsChart(const svt::EmbeddedObjectRef& xObjRef);
+
+    // try to access rXModel in case of a chart to to get the chart content
+    // as sequence of primitives. Return range of primitives (chart size) in rRange;
+    // it will be used to embed the chart to the SdrObject transformation. This
+    // allows to define possible distances between chart and SDrObject bounds here
+    static drawinglayer::primitive2d::Primitive2DSequence tryToGetChartContentAsPrimitive2DSequence(
+        const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& rXModel,
+        basegfx::B2DRange& rRange);
+};
+
+//////////////////////////////////////////////////////////////////////////////
+
+#endif //CHARTHELPER_HXX

Modified: incubator/ooo/trunk/main/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx (original)
+++ incubator/ooo/trunk/main/svx/inc/svx/sdr/contact/viewcontactofsdrole2obj.hxx Tue Jan  3 17:18:46 2012
@@ -25,6 +25,7 @@
 #define _SDR_CONTACT_VIEWCONTACTOFSDROLE2OBJ_HXX
 
 #include <svx/sdr/contact/viewcontactofsdrrectobj.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
 
 //////////////////////////////////////////////////////////////////////////////
 // predeclarations
@@ -52,7 +53,10 @@ namespace sdr
 				return (SdrOle2Obj&)GetSdrObject();
 			}
 
-			// basic constructor, used from SdrObject.
+            /// helper to create transformation from SdrObject
+            basegfx::B2DHomMatrix createObjectTransform() const;
+
+            // basic constructor, used from SdrObject.
 			ViewContactOfSdrOle2Obj(SdrOle2Obj& rOle2Obj);
 			virtual ~ViewContactOfSdrOle2Obj();
 

Modified: incubator/ooo/trunk/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/sdr/contact/viewcontactofsdrole2obj.cxx Tue Jan  3 17:18:46 2012
@@ -38,6 +38,8 @@
 #include <vcl/svapp.hxx>
 #include <svx/sdr/primitive2d/sdrolecontentprimitive2d.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
+#include <svx/charthelper.hxx>
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -64,20 +66,29 @@ namespace sdr
 		{
 		}
 
-        drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrOle2Obj::createPrimitive2DSequenceWithParameters(
-            bool bHighContrast) const
+        basegfx::B2DHomMatrix ViewContactOfSdrOle2Obj::createObjectTransform() const
         {
             // take unrotated snap rect (direct model data) for position and size
-		    const Rectangle& rRectangle = GetOle2Obj().GetGeoRect();
-		    const basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
+            const Rectangle& rRectangle = GetOle2Obj().GetGeoRect();
+            const basegfx::B2DRange aObjectRange(rRectangle.Left(), rRectangle.Top(), rRectangle.Right(), rRectangle.Bottom());
 
-		    // create object matrix
-		    const GeoStat& rGeoStat(GetOle2Obj().GetGeoStat());
+            // create object matrix
+            const GeoStat& rGeoStat(GetOle2Obj().GetGeoStat());
             const double fShearX(rGeoStat.nShearWink ? tan((36000 - rGeoStat.nShearWink) * F_PI18000) : 0.0);
             const double fRotate(rGeoStat.nDrehWink ? (36000 - rGeoStat.nDrehWink) * F_PI18000 : 0.0);
-			const basegfx::B2DHomMatrix aObjectMatrix(basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
-				aObjectRange.getWidth(), aObjectRange.getHeight(), fShearX, fRotate,
-				aObjectRange.getMinX(), aObjectRange.getMinY()));
+            
+            return basegfx::tools::createScaleShearXRotateTranslateB2DHomMatrix(
+                aObjectRange.getWidth(), aObjectRange.getHeight(), 
+                fShearX, 
+                fRotate,
+                aObjectRange.getMinX(), aObjectRange.getMinY());
+        }
+
+        drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrOle2Obj::createPrimitive2DSequenceWithParameters(
+            bool bHighContrast) const
+        {
+            // get object transformation
+            const basegfx::B2DHomMatrix aObjectMatrix(createObjectTransform());
 
 		    // Prepare attribute settings, will be used soon anyways
 			const SfxItemSet& rItemSet = GetOle2Obj().GetMergedItemSet();
@@ -85,13 +96,44 @@ namespace sdr
 				drawinglayer::primitive2d::createNewSdrLineFillShadowTextAttribute(
                     rItemSet, 
                     GetOle2Obj().getText(0)));
+            drawinglayer::primitive2d::Primitive2DReference xContent;
 
-            // #i102063# embed OLE content in an own primitive; this will be able to decompose accessing
-            // the weak SdrOle2 reference and will also implement getB2DRange() for fast BoundRect
-            // calculations without OLE Graphic access (which may trigger e.g. chart recalculation).
-            // It will also take care of HighContrast and ScaleContent
-            const drawinglayer::primitive2d::Primitive2DReference xOleContent(
-                new drawinglayer::primitive2d::SdrOleContentPrimitive2D(
+            if(GetOle2Obj().IsChart())
+            {
+                // try to get chart primitives and chart range directly from xChartModel
+                basegfx::B2DRange aChartContentRange;
+                const drawinglayer::primitive2d::Primitive2DSequence aChartSequence(
+                    ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
+                        GetOle2Obj().getXModel(),
+                        aChartContentRange));
+                const double fWidth(aChartContentRange.getWidth());
+                const double fHeight(aChartContentRange.getHeight());
+
+                if(aChartSequence.hasElements() 
+                    && basegfx::fTools::more(fWidth, 0.0)
+                    && basegfx::fTools::more(fHeight, 0.0))
+                {
+                    // create embedding transformation
+                    basegfx::B2DHomMatrix aEmbed(
+                        basegfx::tools::createTranslateB2DHomMatrix(
+                            -aChartContentRange.getMinX(), 
+                            -aChartContentRange.getMinY()));
+
+                    aEmbed.scale(1.0 / fWidth, 1.0 / fHeight);
+                    aEmbed = aObjectMatrix * aEmbed;
+                    xContent = new drawinglayer::primitive2d::TransformPrimitive2D(
+                        aEmbed,
+                        aChartSequence);
+                }
+            }
+
+            if(!xContent.is())
+            {
+                // #i102063# embed OLE content in an own primitive; this will be able to decompose accessing
+                // the weak SdrOle2 reference and will also implement getB2DRange() for fast BoundRect
+                // calculations without OLE Graphic access (which may trigger e.g. chart recalculation).
+                // It will also take care of HighContrast and ScaleContent
+                xContent = new drawinglayer::primitive2d::SdrOleContentPrimitive2D(
                     GetOle2Obj(),
                     aObjectMatrix,
 
@@ -99,15 +141,15 @@ namespace sdr
                     // content change in the primitive later
                     GetOle2Obj().getEmbeddedObjectRef().getGraphicVersion(),
 
-                    bHighContrast));
-            
+                    bHighContrast);
+            }
+
             // create primitive. Use Ole2 primitive here. Prepare attribute settings, will 
 			// be used soon anyways. Always create primitives to allow the decomposition of 
 			// SdrOle2Primitive2D to create needed invisible elements for HitTest and/or BoundRect
-            const drawinglayer::primitive2d::Primitive2DSequence xOLEContent(&xOleContent, 1);
             const drawinglayer::primitive2d::Primitive2DReference xReference(
                 new drawinglayer::primitive2d::SdrOle2Primitive2D(
-			        xOLEContent,
+			        drawinglayer::primitive2d::Primitive2DSequence(&xContent, 1),
 			        aObjectMatrix, 
 			        aAttribute));
 

Modified: incubator/ooo/trunk/main/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/sdr/contact/viewobjectcontactofsdrole2obj.cxx Tue Jan  3 17:18:46 2012
@@ -30,12 +30,12 @@
 #include <svx/svdoole2.hxx>
 #include <svx/sdr/contact/objectcontact.hxx>
 #include <svx/svdview.hxx>
-#include <drawinglayer/primitive2d/chartprimitive2d.hxx>
 #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
 #include <basegfx/polygon/b2dpolygontools.hxx>
 #include <com/sun/star/embed/EmbedMisc.hpp>
 #include <com/sun/star/embed/EmbedStates.hpp>
 #include <basegfx/polygon/b2dpolygon.hxx>
+#include <basegfx/matrix/b2dhommatrix.hxx>
 
 //////////////////////////////////////////////////////////////////////////////
 
@@ -70,7 +70,6 @@ namespace sdr
 
             const bool bIsOutplaceActive(nState == embed::EmbedStates::ACTIVE);
             const bool bIsInplaceActive((nState == embed::EmbedStates::INPLACE_ACTIVE) || (nState == embed::EmbedStates::UI_ACTIVE));
-            const bool bIsChart(rSdrOle2.IsChart());
             bool bDone(false);
  
             if(!bDone && bIsInplaceActive)
@@ -85,122 +84,49 @@ namespace sdr
 
             if( !bDone )
             {
-                const Rectangle& rObjectRectangle(rSdrOle2.GetGeoRect());
-		        const basegfx::B2DRange aObjectRange(rObjectRectangle.Left(), rObjectRectangle.Top(), rObjectRectangle.Right(), rObjectRectangle.Bottom());
-
-		        // create object transform
-		        basegfx::B2DHomMatrix aObjectTransform;
-		        aObjectTransform.set(0, 0, aObjectRange.getWidth());
-		        aObjectTransform.set(1, 1, aObjectRange.getHeight());
-		        aObjectTransform.set(0, 2, aObjectRange.getMinX());
-		        aObjectTransform.set(1, 2, aObjectRange.getMinY());
-
-                if(bIsChart)
-		        {
-                    //charts must be painted resolution dependent!! #i82893#, #i75867#
-
-			        // for chart, to not lose the current better quality visualisation which
-			        // uses a direct paint, use a primtive wrapper for that exceptional case. The renderers
-			        // will then ATM paint it to an OutputDevice directly.
-			        // In later versions this should be replaced by getting the Primitive2DSequnce from
-			        // the chart and using it.
-			        // to be able to render something in non-VCL using renderers, the wrapper is a
-			        // GroupPrimitive2D which automatically decomposes to the already created Metafile
-			        // content.
-			        // For being completely compatible, ATM Window and VDEV PrettyPrinting is suppressed.
-			        // It works in the VCL renderers, though. So for activating again with VCL primitive
-			        // renderers, change conditions here.
-
-			        // determine if embedding and PrettyPrinting shall be done at all
-			        uno::Reference< frame::XModel > xChartModel;
-			        bool bDoChartPrettyPrinting(true);
-				    
-			        // the original ChartPrettyPainter does not do it for Window
-			        if(bDoChartPrettyPrinting && GetObjectContact().isOutputToWindow())
-			        {
-				        bDoChartPrettyPrinting = false;
-			        }
-
-			        // the original ChartPrettyPainter does not do it for VDEV
-			        if(bDoChartPrettyPrinting && GetObjectContact().isOutputToVirtualDevice())
-			        {
-				        if(GetObjectContact().isOutputToPDFFile())
-				        {
-					        // #i97982#
-					        // For PDF files, allow PrettyPrinting
-				        }
-				        else
-				        {
-					        bDoChartPrettyPrinting = false;
-				        }
-			        }
-
-			        // the chart model is needed. Check if it's available
-			        if(bDoChartPrettyPrinting)
-			        {
-				        // get chart model
-				        xChartModel = rSdrOle2.getXModel();
-
-				        if(!xChartModel.is())
-				        {
-					        bDoChartPrettyPrinting = false;
-				        }
-			        }
-
-			        if(bDoChartPrettyPrinting)
-			        {
-				        // embed MetaFile data in a specialized Wrapper Primitive which holds also the ChartModel needed
-				        // for PrettyPrinting
-				        const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::ChartPrimitive2D(
-					        xChartModel, aObjectTransform, xRetval));
-				        xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
-                        bDone = true;
-			        }
-		        }
-
-                if( !bDone )
+                //old stuff that should be reworked
                 {
-                    //old stuff that should be reworked
+                    //if no replacement image is available load the OLE object
+//                    if(!rSdrOle2.GetGraphic()) //try to fetch the metafile - this can lead to the actual creation of the metafile what can be extremely expensive (e.g. for big charts)!!! #i101925#
+//                    {
+//	                    // try to create embedded object
+//                        rSdrOle2.GetObjRef(); //this loads the OLE object if it is not loaded already
+//                    }
+                    const svt::EmbeddedObjectRef& xObjRef  = rSdrOle2.getEmbeddedObjectRef();
+                    if(xObjRef.is())
                     {
-                        //if no replacement image is available load the OLE object
-                        if(!rSdrOle2.GetGraphic()) //try to fetch the metafile - this can lead to the actual creation of the metafile what can be extremely expensive (e.g. for big charts)!!! #i101925#
-                        {
-	                        // try to create embedded object
-                            rSdrOle2.GetObjRef(); //this loads the OLE object if it is not loaded already
-                        }
-                        const svt::EmbeddedObjectRef& xObjRef  = rSdrOle2.getEmbeddedObjectRef();
-                        if(xObjRef.is())
-                        {
-                            const sal_Int64 nMiscStatus(xObjRef->getStatus(rSdrOle2.GetAspect()));
+                        const sal_Int64 nMiscStatus(xObjRef->getStatus(rSdrOle2.GetAspect()));
 
-                            // this hack (to change model data during PAINT argh(!)) should be reworked
-                            if(!rSdrOle2.IsResizeProtect() && (nMiscStatus & embed::EmbedMisc::EMBED_NEVERRESIZE))
-                            {
-	                            const_cast< SdrOle2Obj* >(&rSdrOle2)->SetResizeProtect(true);
-                            }
-
-                            SdrPageView* pPageView = GetObjectContact().TryToGetSdrPageView();
-	                        if(pPageView && (nMiscStatus & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE))
-	                        {
-		                        // connect plugin object
-		                        pPageView->GetView().DoConnect(const_cast< SdrOle2Obj* >(&rSdrOle2));
-	                        }
+                        // this hack (to change model data during PAINT argh(!)) should be reworked
+                        if(!rSdrOle2.IsResizeProtect() && (nMiscStatus & embed::EmbedMisc::EMBED_NEVERRESIZE))
+                        {
+	                        const_cast< SdrOle2Obj* >(&rSdrOle2)->SetResizeProtect(true);
                         }
-                    }//end old stuff to rework
 
-                    // create OLE primitive stuff directly at VC with HC as parameter
-		            const ViewContactOfSdrOle2Obj& rVC = static_cast< const ViewContactOfSdrOle2Obj& >(GetViewContact());
-                    xRetval = rVC.createPrimitive2DSequenceWithParameters(GetObjectContact().isDrawModeHighContrast());
-                }
+                        SdrPageView* pPageView = GetObjectContact().TryToGetSdrPageView();
+	                    if(pPageView && (nMiscStatus & embed::EmbedMisc::MS_EMBED_ACTIVATEWHENVISIBLE))
+	                    {
+		                    // connect plugin object
+		                    pPageView->GetView().DoConnect(const_cast< SdrOle2Obj* >(&rSdrOle2));
+	                    }
+                    }
+                }//end old stuff to rework
+
+                // create OLE primitive stuff directly at VC with HC as parameter
+		        const ViewContactOfSdrOle2Obj& rVC = static_cast< const ViewContactOfSdrOle2Obj& >(GetViewContact());
+                xRetval = rVC.createPrimitive2DSequenceWithParameters(GetObjectContact().isDrawModeHighContrast());
 
                 if(bIsOutplaceActive)
 		        {
 			        // do not shade when printing or PDF exporting
 			        if(!GetObjectContact().isOutputToPrinter() && !GetObjectContact().isOutputToRecordingMetaFile())
 			        {
-				        // shade the representation if the object is activated outplace
+                        // get object transformation
+                        const basegfx::B2DHomMatrix aObjectMatrix(static_cast< ViewContactOfSdrOle2Obj& >(GetViewContact()).createObjectTransform());
+				        
+                        // shade the representation if the object is activated outplace
 				        basegfx::B2DPolygon aObjectOutline(basegfx::tools::createUnitPolygon());
-				        aObjectOutline.transform(aObjectTransform);
+				        aObjectOutline.transform(aObjectMatrix);
 
 				        // Use a FillHatchPrimitive2D with necessary attributes
 				        const drawinglayer::attribute::FillHatchAttribute aFillHatch(

Added: incubator/ooo/trunk/main/svx/source/svdraw/charthelper.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/svdraw/charthelper.cxx?rev=1226879&view=auto
==============================================================================
--- incubator/ooo/trunk/main/svx/source/svdraw/charthelper.cxx (added)
+++ incubator/ooo/trunk/main/svx/source/svdraw/charthelper.cxx Tue Jan  3 17:18:46 2012
@@ -0,0 +1,143 @@
+/**************************************************************
+ * 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * 
+ *************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svx.hxx"
+
+#include <svx/charthelper.hxx>
+#include <svtools/embedhlp.hxx>
+#include <tools/globname.hxx>
+#include <sot/clsids.hxx>
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#include <com/sun/star/util/XUpdatable.hpp>
+#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <comphelper/processfactory.hxx>
+#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp>
+#include <drawinglayer/geometry/viewinformation2d.hxx>
+
+//// header for function rtl_createUuid
+//#include <rtl/uuid.h>
+//#include <vcl/pdfextoutdevdata.hxx>
+//
+//#include <com/sun/star/lang/XUnoTunnel.hpp>
+//#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+//#include <svtools/embedhlp.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+using namespace ::com::sun::star;
+
+//////////////////////////////////////////////////////////////////////////////
+
+bool ChartHelper::IsChart(const svt::EmbeddedObjectRef& xObjRef)
+{
+    if(!xObjRef.is())
+    {
+        return false;
+    }
+
+    const SvGlobalName aObjClsId(xObjRef->getClassID());
+
+    if(SvGlobalName(SO3_SCH_CLASSID_30) == aObjClsId
+        || SvGlobalName(SO3_SCH_CLASSID_40) == aObjClsId
+        || SvGlobalName(SO3_SCH_CLASSID_50) == aObjClsId
+        || SvGlobalName(SO3_SCH_CLASSID_60) == aObjClsId)
+    {
+        return true;
+    }
+
+    return false;
+}
+
+drawinglayer::primitive2d::Primitive2DSequence ChartHelper::tryToGetChartContentAsPrimitive2DSequence(
+    const uno::Reference< ::frame::XModel >& rXModel,
+    basegfx::B2DRange& rRange)
+{
+    drawinglayer::primitive2d::Primitive2DSequence aRetval;
+
+    if(rXModel.is())
+    {
+        try
+        {
+            const uno::Reference< lang::XMultiServiceFactory > xChartFact(rXModel, uno::UNO_QUERY_THROW);
+            const uno::Reference< lang::XUnoTunnel > xChartView(xChartFact->createInstance(::rtl::OUString::createFromAscii("com.sun.star.chart2.ChartView")), uno::UNO_QUERY_THROW);
+            const uno::Reference< util::XUpdatable > xUpdatable(xChartView, uno::UNO_QUERY_THROW);
+
+            if(xUpdatable.is())
+            {
+                xUpdatable->update();
+
+                const uno::Reference< drawing::XDrawPageSupplier > xDrawPageSupplier(rXModel, uno::UNO_QUERY_THROW);
+                const uno::Reference< container::XIndexAccess > xShapeAccess(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY_THROW);
+
+                if(xShapeAccess.is() && xShapeAccess->getCount())
+                {
+                    const sal_Int32 nShapeCount(xShapeAccess->getCount());
+                    const uno::Reference< lang::XMultiServiceFactory > xMgr(::comphelper::getProcessServiceFactory());
+                    const uno::Reference< graphic::XPrimitiveFactory2D > xPrimitiveFactory(
+                        xMgr->createInstance(
+                            String(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.graphic.PrimitiveFactory2D" ))), 
+                            uno::UNO_QUERY);
+
+                    if(xPrimitiveFactory.is())
+                    {
+                        const uno::Sequence< beans::PropertyValue > aParams;
+                        uno::Reference< drawing::XShape > xShape;
+
+                        for(sal_Int32 a(0); a < nShapeCount; a++)
+                        {
+                            xShapeAccess->getByIndex(a) >>= xShape;
+
+                            if(xShape.is())
+                            {
+                                const drawinglayer::primitive2d::Primitive2DSequence aNew( 
+                                    xPrimitiveFactory->createPrimitivesFromXShape( 
+                                        xShape, 
+                                        aParams));
+
+                                drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(
+                                    aRetval,
+                                    aNew);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        catch(uno::Exception&)
+        {
+            OSL_ENSURE(false, "Unexpected exception!");
+        }
+
+        if(aRetval.hasElements())
+        {
+            const drawinglayer::geometry::ViewInformation2D aViewInformation2D;
+            
+            rRange = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(aRetval, aViewInformation2D);
+        }
+    }
+
+    return aRetval;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// eof

Modified: incubator/ooo/trunk/main/svx/source/svdraw/svdoole2.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/svdraw/svdoole2.cxx?rev=1226879&r1=1226878&r2=1226879&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/svdraw/svdoole2.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/svdraw/svdoole2.cxx Tue Jan  3 17:18:46 2012
@@ -78,7 +78,7 @@
 #include <svx/svdetc.hxx>
 #include <svx/svdview.hxx>
 #include "unomlstr.hxx"
-#include <svtools/chartprettypainter.hxx>
+#include <svx/charthelper.hxx>
 #include <svx/sdr/contact/viewcontactofsdrole2obj.hxx>
 #include <svx/svdograf.hxx>
 #include <svx/sdr/properties/oleproperties.hxx>
@@ -2185,7 +2185,7 @@ sal_Bool SdrOle2Obj::IsChart() const
 {
     if ( !m_bTypeAsked )
     {
-        m_bChart = ChartPrettyPainter::IsChart(xObjRef);
+        m_bChart = ChartHelper::IsChart(xObjRef);
         m_bTypeAsked = true;
     }
     return m_bChart;