[Libreoffice-commits] .: 2 commits - oox/source sw/source writerfilter/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Tue Aug 14 03:20:03 PDT 2012


 oox/source/export/vmlexport.cxx             |   10 +++++++---
 sw/source/filter/ww8/rtfsdrexport.cxx       |    9 ++++++++-
 writerfilter/source/rtftok/rtfsdrimport.cxx |    5 +++--
 3 files changed, 18 insertions(+), 6 deletions(-)

New commits:
commit 5da2e40292e420dc48da7ea5aef29c96a1127140
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Tue Aug 14 12:04:49 2012 +0200

    RTF shape filter: handle custom segment types
    
    Change-Id: I320bab34080b401c61efbc5b3383836362f5f43f

diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx
index c8040e5..a377ef0 100644
--- a/sw/source/filter/ww8/rtfsdrexport.cxx
+++ b/sw/source/filter/ww8/rtfsdrexport.cxx
@@ -314,7 +314,14 @@ void RtfSdrExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRe
                                 case 0x8000: // end
                                     break;
                                 default:
-                                    SAL_INFO("sw.rtf", OSL_THIS_FUNC << ": unhandled segment '" << nSeg << "' in the path");
+                                    // See EscherPropertyContainer::CreateCustomShapeProperties, by default nSeg is simply the number of points.
+                                    for (int i = 0; i < nSeg; ++i)
+                                    {
+                                        sal_Int32 nX = impl_GetPointComponent(pVerticesIt, nPointSize);
+                                        sal_Int32 nY = impl_GetPointComponent(pVerticesIt, nPointSize);
+                                        aVerticies.append(";(").append(nX).append(",").append(nY).append(")");
+                                        ++nVertices;
+                                    }
                                     break;
                             }
                         }
diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 7fe19e5..4eea20b 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -251,8 +251,9 @@ void RTFSdrImport::resolve(RTFShape& rShape)
                             aSegments[nIndex].Command = drawing::EnhancedCustomShapeSegmentCommand::ENDSUBPATH;
                             aSegments[nIndex].Count = sal_Int32(0);
                             break;
-                        default:
-                            SAL_INFO("writerfilter", OSL_THIS_FUNC << ": unhandled segment '" << hex << nSeg << "' in the path");
+                        default: // given number of lineto elements
+                            aSegments[nIndex].Command = drawing::EnhancedCustomShapeSegmentCommand::LINETO;
+                            aSegments[nIndex].Count = nSeg;
                             break;
                     }
                     nIndex++;
commit 4dd8aa2630074b479b216da8ee7b50ed0bf78511
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Tue Aug 14 12:03:57 2012 +0200

    fdo#53113 vml export: handle custom segment types
    
    It seems that EscherPropertyContainer::CreateCustomShapeProperties()
    simply sets nSeg to the number of (lineto) point pairs by default.
    
    Change-Id: I24bde088f5f2970d53de827e1ca03c5419ac892c

diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index 08aac17..e764d87 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -466,9 +466,13 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect
                                     aPath.append( "e" );
                                     break;
                                 default:
-#if OSL_DEBUG_LEVEL > 0
-                                    fprintf( stderr, "TODO: unhandled segment '%x' in the path\n", nSeg );
-#endif
+                                    // See EscherPropertyContainer::CreateCustomShapeProperties, by default nSeg is simply the number of points.
+                                    for (int i = 0; i < nSeg; ++i)
+                                    {
+                                        sal_Int32 nX = impl_GetPointComponent(pVerticesIt, nPointSize);
+                                        sal_Int32 nY = impl_GetPointComponent(pVerticesIt, nPointSize);
+                                        aPath.append("l").append(nX).append(",").append(nY);
+                                    }
                                     break;
                             }
                         }


More information about the Libreoffice-commits mailing list