diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-08-14 12:04:49 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-08-14 12:20:10 +0200 |
commit | 5da2e40292e420dc48da7ea5aef29c96a1127140 (patch) | |
tree | 62bd9dbe66ae99e8a6ec4a0b7b8507dd067c27e9 | |
parent | 4dd8aa2630074b479b216da8ee7b50ed0bf78511 (diff) |
RTF shape filter: handle custom segment types
Change-Id: I320bab34080b401c61efbc5b3383836362f5f43f
-rw-r--r-- | sw/source/filter/ww8/rtfsdrexport.cxx | 9 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfsdrimport.cxx | 5 |
2 files changed, 11 insertions, 3 deletions
diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx index c8040e5a2358..a377ef018b06 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 7fe19e5bb6fe..4eea20b44811 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++; |