oox/source/export/chartexport.cxx |   80 +++++++++++++++++++++++++++-----------
 1 file changed, 57 insertions(+), 23 deletions(-)

New commits:
commit f7ff594a9c879ea3ae437e0f7602ef26642e6fc7
Author: Rohit Deshmukh <rohit.deshm...@synerzip.com>
Date:   Mon Sep 30 16:06:09 2013 +0530

    Fix for Corruption of chart due to Data Lables in Writer, Impress and Calc
    
    Chart file gets corrupted, if we save file in Libreoffice and open in MS 
office.
    MS Office gives error, file is Corrupt.
    
    Following charts get fixed
    
    1. Radar chart
    2. Area chart without data labels
    3. Line chart
    4. Bubble chart
    
    Area chart with data label file gets courrputed after roundtrip in 
Libreoffice.
    
    Change-Id: Ib03ad49aae268b53aa18bdc21c723e2a7777eb45

diff --git a/oox/source/export/chartexport.cxx 
b/oox/source/export/chartexport.cxx
index 7e56305..2dc837b 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -2275,6 +2275,11 @@ void ChartExport::exportDataLabels(
         pFS->startElement( FSNS( XML_c, XML_dLbls ),
                     FSEND );
 
+        bool showLegendSymbol = false;
+        bool showNumber = false;
+        bool showCategoryName = false;
+        bool showNumberInPercent = false;
+
         sal_Int32 nElem;
         for( nElem = 0; nElem < nSeriesLength; ++nElem)
         {
@@ -2319,34 +2324,63 @@ void ChartExport::exportDataLabels(
                        case csscd::AVOID_OVERLAP: aPlacement = "bestFit";  
break;
                    }
 
-                   pFS->startElement( FSNS( XML_c, XML_dLbl ), FSEND);
-                   pFS->singleElement( FSNS( XML_c, XML_idx), XML_val, 
I32S(nElem), FSEND);
-                   pFS->singleElement( FSNS( XML_c, XML_dLblPos), XML_val, 
aPlacement, FSEND);
-
-                   pFS->singleElement( FSNS( XML_c, XML_showLegendKey), 
XML_val,
-                                       aLabel.ShowLegendSymbol ? "1" : "0", 
FSEND);
-                   pFS->singleElement( FSNS( XML_c, XML_showVal), XML_val,
-                                       aLabel.ShowNumber ? "1" : "0", FSEND);
-                   pFS->singleElement( FSNS( XML_c, XML_showCatName), XML_val,
-                                       aLabel.ShowCategoryName ? "1" : "0", 
FSEND);
-                   // MSO somehow assumes series name to be on (=displayed) by 
default.
-                   // Let's put false here and switch it off then, since we 
have no UI means
-                   // in LibO to toggle it on anyway
-                   pFS->singleElement( FSNS( XML_c, XML_showSerName), XML_val, 
"0", FSEND);
-                   pFS->singleElement( FSNS( XML_c, XML_showPercent), XML_val,
-                                       aLabel.ShowNumberInPercent ? "1" : "0", 
FSEND);
-
-                   if (GetProperty( xPropSet, "LabelSeparator"))
+                   if(aLabel.ShowLegendSymbol || aLabel.ShowNumber || 
aLabel.ShowCategoryName || aLabel.ShowNumberInPercent)
                    {
-                       mAny >>= aSep;
-                       pFS->startElement( FSNS( XML_c, XML_separator), FSEND);
-                       pFS->writeEscaped(aSep);
-                       pFS->endElement( FSNS( XML_c, XML_separator) );
+                       pFS->startElement( FSNS( XML_c, XML_dLbl ), FSEND);
+                       pFS->singleElement( FSNS( XML_c, XML_idx), XML_val, 
I32S(nElem), FSEND);
+                       pFS->singleElement( FSNS( XML_c, XML_dLblPos), XML_val, 
aPlacement, FSEND);
+
+                       pFS->singleElement( FSNS( XML_c, XML_showLegendKey), 
XML_val, aLabel.ShowLegendSymbol ? "1": "0", FSEND);
+                       if (aLabel.ShowLegendSymbol)
+                       {
+                           showLegendSymbol = true;
+                       }
+
+                       pFS->singleElement( FSNS( XML_c, XML_showVal), 
XML_val,aLabel.ShowNumber ? "1": "0", FSEND);
+                       if(aLabel.ShowNumber)
+                       {
+                           showNumber = true;
+                       }
+
+                       pFS->singleElement( FSNS( XML_c, XML_showCatName), 
XML_val, aLabel.ShowCategoryName ? "1": "0", FSEND);
+                       if(aLabel.ShowCategoryName)
+                       {
+                           showCategoryName =  true;
+                       }
+
+                       // MSO somehow assumes series name to be on 
(=displayed) by default.
+                       // Let's put false here and switch it off then, since 
we have no UI means
+                       // in LibO to toggle it on anyway
+                       pFS->singleElement( FSNS( XML_c, XML_showSerName), 
XML_val, "0", FSEND);
+
+                       pFS->singleElement( FSNS( XML_c, XML_showPercent), 
XML_val,aLabel.ShowNumberInPercent ? "1": "0", FSEND);
+                       if(aLabel.ShowNumberInPercent)
+                       {
+                           showNumberInPercent = true;
+                       }
+
+                       if (GetProperty( xPropSet, "LabelSeparator"))
+                       {
+                           mAny >>= aSep;
+                           pFS->startElement( FSNS( XML_c, XML_separator), 
FSEND);
+                           pFS->writeEscaped(aSep);
+                           pFS->endElement( FSNS( XML_c, XML_separator) );
+                       }
+                       pFS->endElement( FSNS( XML_c, XML_dLbl ));
                    }
-                   pFS->endElement( FSNS( XML_c, XML_dLbl ));
+
                }
             }
         }
+
+        pFS->singleElement( FSNS( XML_c, XML_showLegendKey), XML_val, 
showLegendSymbol ? "1": "0", FSEND);
+        pFS->singleElement( FSNS( XML_c, XML_showVal), XML_val, showNumber ? 
"1": "0", FSEND);
+        pFS->singleElement( FSNS( XML_c, XML_showCatName), XML_val, 
showCategoryName ? "1": "0", FSEND);
+
+        pFS->singleElement( FSNS( XML_c, XML_showSerName), XML_val, "0", 
FSEND);
+
+        pFS->singleElement( FSNS( XML_c, XML_showPercent), XML_val, 
showNumberInPercent ? "1": "0", FSEND);
+
         pFS->endElement( FSNS( XML_c, XML_dLbls ) );
     }
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to