Author: alg
Date: Mon Jan 30 13:56:49 2012
New Revision: 1237656

URL: http://svn.apache.org/viewvc?rev=1237656&view=rev
Log:
#118853# added square pixel size limit to conversion of TransparencePrimitive2D 
to Metafile action

Modified:
    
incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx

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=1237656&r1=1237655&r2=1237656&view=diff
==============================================================================
--- 
incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
 (original)
+++ 
incubator/ooo/trunk/main/drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
 Mon Jan 30 13:56:49 2012
@@ -1904,9 +1904,20 @@ namespace drawinglayer
                                            
(sal_Int32)floor(aViewRange.getMinX()), (sal_Int32)floor(aViewRange.getMinY()), 
                                            
(sal_Int32)ceil(aViewRange.getMaxX()), (sal_Int32)ceil(aViewRange.getMaxY()));
                                    const Rectangle 
aRectPixel(mpOutputDevice->LogicToPixel(aRectLogic));
-                            const Size aSizePixel(aRectPixel.GetSize());
+                            Size aSizePixel(aRectPixel.GetSize());
                                const Point aEmptyPoint;
                             VirtualDevice aBufferDevice;
+                            const sal_uInt32 nMaxQuadratPixels(500000);
+                            const sal_uInt32 
nViewVisibleArea(aSizePixel.getWidth() * aSizePixel.getHeight());
+                            double fReduceFactor(1.0);
+
+                            if(nViewVisibleArea > nMaxQuadratPixels)
+                            {
+                                // reduce render size
+                                fReduceFactor = sqrt((double)nMaxQuadratPixels 
/ (double)nViewVisibleArea);
+                                aSizePixel = 
Size(basegfx::fround((double)aSizePixel.getWidth() * fReduceFactor),
+                                    
basegfx::fround((double)aSizePixel.getHeight() * fReduceFactor));
+                            }
 
                             if(aBufferDevice.SetOutputSizePixel(aSizePixel))
                             {
@@ -1930,6 +1941,12 @@ namespace drawinglayer
                                     aViewTransform.scale(fDPIXChange, 
fDPIYChange);
                                 }
 
+                                // also take scaling from Size reduction into 
acount
+                                if(!basegfx::fTools::equal(fReduceFactor, 1.0))
+                                {
+                                    aViewTransform.scale(fReduceFactor, 
fReduceFactor);
+                                }
+
                                 // create view information and pixel renderer. 
Reuse known ViewInformation
                                                                // except new 
transformation and range
                                 const geometry::ViewInformation2D aViewInfo(


Reply via email to