diff options
author | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-06-26 11:26:56 +0200 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat@free.fr> | 2013-06-27 15:19:41 +0200 |
commit | 8054a7dc0a1b9c27aea7717f58891e49bd25d14c (patch) | |
tree | 8ae3ade8134fcffecfc60c90f1e1ed62db6b2c8a /oox | |
parent | a3f2d5c140e9864b1da644ec18ad44fd6ab6334f (diff) |
n#820504: start a new subpath with m and t in VML path decoding
Change-Id: I7bac4b111ede5e815d2ed121c18f4cfe1ad0950e
(cherry picked from commit 8d6eb11d6965ee93e72513f5e01b67f598edf6c3)
Diffstat (limited to 'oox')
-rw-r--r-- | oox/source/vml/vmlformatting.cxx | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/oox/source/vml/vmlformatting.cxx b/oox/source/vml/vmlformatting.cxx index 31d4f3282713..267d8e5b5082 100644 --- a/oox/source/vml/vmlformatting.cxx +++ b/oox/source/vml/vmlformatting.cxx @@ -310,11 +310,16 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r // Upon finding the next command code, deal with stored // coordinates for previous command and reset parameters counter if needed. // See http://www.w3.org/TR/NOTE-VML#_Toc416858382 for params count reference - if ( rPath[ i ] != ',' || nParamCount == 0) + if ( rPath[ i ] != ',' || nParamCount == 0 ) { switch ( state ) { case MOVE_REL: // 2* params -> param count reset + if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 ) + { + rPointLists.push_back( ::std::vector< Point >() ); + rFlagLists.push_back( ::std::vector< PolygonFlags >() ); + } rPointLists.back().push_back( Point( aCoordList[ 0 ], aCoordList[ 1 ] ) ); rFlagLists.back().push_back( PolygonFlags_NORMAL ); aCurrentPoint = rPointLists.back().back(); @@ -322,6 +327,11 @@ void ConversionHelper::decodeVmlPath( ::std::vector< ::std::vector< Point > >& r break; case MOVE_ABS: // 2 params -> no param count reset + if ( rPointLists.size() > 0 && rPointLists.back().size() > 0 ) + { + rPointLists.push_back( ::std::vector< Point >() ); + rFlagLists.push_back( ::std::vector< PolygonFlags >() ); + } rPointLists.back().push_back( Point( aCoordList[ 0 ], aCoordList[ 1 ] ) ); rFlagLists.back().push_back( PolygonFlags_NORMAL ); aCurrentPoint = rPointLists.back().back(); |