incubator-ooo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject svn commit: r1376067 - /incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx
Date Wed, 22 Aug 2012 14:17:44 GMT
Author: alg
Date: Wed Aug 22 14:17:43 2012
New Revision: 1376067

URL: http://svn.apache.org/viewvc?rev=1376067&view=rev
Log:
#120569# Corrected 3D object creations

Modified:
    incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx

Modified: incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx?rev=1376067&r1=1376066&r2=1376067&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx (original)
+++ incubator/ooo/trunk/main/svx/source/customshapes/EnhancedCustomShape3d.cxx Wed Aug 22
14:17:43 2012
@@ -393,7 +393,9 @@ SdrObject* EnhancedCustomShape3d::Create
 		}
 
 		Rectangle aBoundRect2d;
-		SdrObjListIter aIter( *pShape2d, IM_DEEPWITHGROUPS );
+		SdrObjListIter aIter( *pShape2d, IM_DEEPNOGROUPS );
+        const bool bMultipleSubObjects(aIter.Count() > 1);
+
 		while( aIter.IsMore() )
 		{
 			const SdrObject* pNext = aIter.Next();
@@ -405,20 +407,35 @@ SdrObject* EnhancedCustomShape3d::Create
 
 			if ( pNext->ISA( SdrPathObj ) )
 			{
-            	const SfxItemSet& rSet = pNext->GetMergedItemSet();
-			    const drawinglayer::attribute::SdrLineAttribute aLine(
-                    drawinglayer::primitive2d::createNewSdrLineAttribute(rSet));
-                bool bNeedToConvertToContour(0.0 <= aLine.getWidth() || 0.0 != aLine.getFullDotDashLen());
+                const SfxItemSet& rSet = pNext->GetMergedItemSet();
+                bool bNeedToConvertToContour(false);
 
-                if(!bNeedToConvertToContour && !aLine.isDefault())
+                // do conversion only for single line objects; for all others a fill and
a
+                // line object get created. When we have fill, we want no line. That line
has
+                // always been there, but since it was never converted to contour, it kept
+                // invisible (all this 'hidden' logic should be migrated to primitives).
+                if(!bMultipleSubObjects) 
                 {
-    			    const drawinglayer::attribute::SdrLineStartEndAttribute aLineStartEnd(
-                        drawinglayer::primitive2d::createNewSdrLineStartEndAttribute(rSet,
aLine.getWidth()));
+                    const XFillStyle eStyle(((XFillStyleItem&)(rSet.Get(XATTR_FILLSTYLE))).GetValue());
 
-                    if((aLineStartEnd.getStartWidth() && aLineStartEnd.isStartActive())

-                        || (aLineStartEnd.getEndWidth() && aLineStartEnd.isEndActive()))
+                    if(XFILL_NONE == eStyle)
                     {
-                        bNeedToConvertToContour = true;
+                        const drawinglayer::attribute::SdrLineAttribute aLine(
+                            drawinglayer::primitive2d::createNewSdrLineAttribute(rSet));
+
+                        bNeedToConvertToContour = (0.0 < aLine.getWidth() || 0.0 != aLine.getFullDotDashLen());
+
+                        if(!bNeedToConvertToContour && !aLine.isDefault())
+                        {
+                            const drawinglayer::attribute::SdrLineStartEndAttribute aLineStartEnd(
+                                drawinglayer::primitive2d::createNewSdrLineStartEndAttribute(rSet,
aLine.getWidth()));
+
+                            if((aLineStartEnd.getStartWidth() && aLineStartEnd.isStartActive())

+                                || (aLineStartEnd.getEndWidth() && aLineStartEnd.isEndActive()))
+                            {
+                                bNeedToConvertToContour = true;
+                            }
+                        }
                     }
                 }
 
@@ -434,12 +451,23 @@ SdrObject* EnhancedCustomShape3d::Create
                         if(aPolyPoly.isClosed())
                         {
                             // correct item properties from line to fill style
-				            aLocalSet.Put(XLineWidthItem(0));
-				            aLocalSet.Put(XLineStyleItem(XLINE_NONE));
-				            aLocalSet.Put(XFillColorItem(XubString(), ((const XLineColorItem&)(aLocalSet.Get(XATTR_LINECOLOR))).GetColorValue()));
-				            aLocalSet.Put(XFillStyleItem(XFILL_SOLID));
-				            aLocalSet.Put(XFillTransparenceItem(((const XLineTransparenceItem&)(aLocalSet.Get(XATTR_LINETRANSPARENCE))).GetValue()));
-                            aLocalFillStyle = XFILL_SOLID;
+                            if(eShadeMode == drawing::ShadeMode_DRAFT)
+                            {
+                                // for draft, create wireframe with fixed line width
+                                aLocalSet.Put(XLineStyleItem(XLINE_SOLID));
+                                aLocalSet.Put(XLineWidthItem(40));
+                                aLocalFillStyle = XFILL_NONE;
+                            }
+                            else
+                            {
+                                // switch from line to fill, copy line attr to fill attr
(color, transparence)
+				                aLocalSet.Put(XLineWidthItem(0));
+				                aLocalSet.Put(XLineStyleItem(XLINE_NONE));
+				                aLocalSet.Put(XFillColorItem(XubString(), ((const XLineColorItem&)(aLocalSet.Get(XATTR_LINECOLOR))).GetColorValue()));
+				                aLocalSet.Put(XFillStyleItem(XFILL_SOLID));
+				                aLocalSet.Put(XFillTransparenceItem(((const XLineTransparenceItem&)(aLocalSet.Get(XATTR_LINETRANSPARENCE))).GetValue()));
+                                aLocalFillStyle = XFILL_SOLID;
+                            }
                         }
                         else
                         {



Mime
View raw message