[Libreoffice-commits] core.git: Branch 'distro/suse/suse-4.0.3' - filter/source
Andre Fischer
af at apache.org
Thu Jun 13 05:42:41 PDT 2013
filter/source/msfilter/msdffimp.cxx | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
New commits:
commit 05703e43389312f7e9856733fcb7384122047631
Author: Andre Fischer <af at apache.org>
Date: Tue Jul 10 10:01:05 2012 +0000
bnc#823049 #i119872# Fixed import of custom shapes from PPT.
Reported by: Li Feng Wang
Patch by: Jianyuan Li
Review by: Andre Fischer
(cherry picked from commit 5278c7770a350771a96780c0e0d7a0bdae0d55b9)
Signed-off-by: Miklos Vajna <vmiklos at suse.cz>
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index c2b67c5..33a5b99 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -2253,23 +2253,24 @@ void DffPropertyReader::ApplyCustomShapeGeometryAttributes( SvStream& rIn, SfxIt
{
rIn >> nTmp;
nCommand = EnhancedCustomShapeSegmentCommand::UNKNOWN;
- nCnt = (sal_Int16)( nTmp & 0xfff );
- switch( nTmp >> 12 )
+ nCnt = (sal_Int16)( nTmp & 0x1fff );//Last 13 bits for segment points number
+ switch( nTmp >> 13 )//First 3 bits for command type
{
case 0x0: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break;
- case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::LINETO; if ( !nCnt ) nCnt = 1; break; // seems to the relative lineto
- case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
- case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
- case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break; // seems to be the relative curveto
- case 0x8: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
- case 0x6: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
- case 0xa:
- case 0xb:
+ case 0x1: nCommand = EnhancedCustomShapeSegmentCommand::CURVETO; if ( !nCnt ) nCnt = 1; break;
+ case 0x2: nCommand = EnhancedCustomShapeSegmentCommand::MOVETO; if ( !nCnt ) nCnt = 1; break;
+ case 0x3: nCommand = EnhancedCustomShapeSegmentCommand::CLOSESUBPATH; nCnt = 0; break;
+ case 0x4: nCommand = EnhancedCustomShapeSegmentCommand::ENDSUBPATH; nCnt = 0; break;
+ case 0x5:
+ case 0x6:
{
- switch ( ( nTmp >> 8 ) & 0xf )
+ switch ( ( nTmp >> 8 ) & 0x1f )//5 bits next to command type is for path escape type
{
case 0x0:
{
+ //It is msopathEscapeExtension which is transformed into LINETO.
+ //If issue happens, I think this part can be comment so that it will be taken as unknow command.
+ //When export, origin data will be export without any change.
nCommand = EnhancedCustomShapeSegmentCommand::LINETO;
if ( !nCnt )
nCnt = 1;
More information about the Libreoffice-commits
mailing list