diff options
| author | Liam P. White <inkscapebrony@gmail.com> | 2014-08-06 18:38:03 +0000 |
|---|---|---|
| committer | Liam P. White <inkscapebrony@gmail.com> | 2014-08-06 18:38:03 +0000 |
| commit | e747c89c1d1579d2dd478bfcdc448efd09438371 (patch) | |
| tree | 706654eeabb6c28af7dc93463f2ad9b75b564cfc /src/2geom/svg-path-parser.cpp | |
| parent | Fix bug #1241501, improve tooltip text on path parameter (diff) | |
| parent | Fix for bug #1327267 (excessive calls to sp_style_read_from_prefs) (diff) | |
| download | inkscape-e747c89c1d1579d2dd478bfcdc448efd09438371.tar.gz inkscape-e747c89c1d1579d2dd478bfcdc448efd09438371.zip | |
Update to trunk r13497
(bzr r13341.1.119)
Diffstat (limited to 'src/2geom/svg-path-parser.cpp')
| -rw-r--r-- | src/2geom/svg-path-parser.cpp | 37 |
1 files changed, 8 insertions, 29 deletions
diff --git a/src/2geom/svg-path-parser.cpp b/src/2geom/svg-path-parser.cpp index ccc383920..932f95829 100644 --- a/src/2geom/svg-path-parser.cpp +++ b/src/2geom/svg-path-parser.cpp @@ -1,5 +1,3 @@ - -#line 1 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" /** * \file * \brief parse SVG path specifications @@ -130,6 +128,9 @@ private: void _arcTo(double rx, double ry, double angle, bool large_arc, bool sweep, Point p) { + if (are_near(_current, p)) { + return; + } _quad_tangent = _cubic_tangent = _current = p; _sink.arcTo(rx, ry, angle, large_arc, sweep, p); } @@ -141,7 +142,6 @@ private: }; -#line 145 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.cpp" static const char _svg_path_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 15, 1, @@ -1147,9 +1147,6 @@ static const int svg_path_first_final = 270; //static const int svg_path_en_main = 1; -#line 144 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" - - void Parser::parse(char const *str) throw(SVGPathParseError) { @@ -1159,13 +1156,11 @@ throw(SVGPathParseError) _reset(); - -#line 1164 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.cpp" { cs = svg_path_start; } -#line 1169 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.cpp" + { int _klen; unsigned int _trans; @@ -1238,13 +1233,12 @@ _match: switch ( *_acts++ ) { case 0: -#line 156 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { start = p; } break; case 1: -#line 160 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" + { char const *end=p; std::string buf(start, end); @@ -1253,55 +1247,49 @@ _match: } break; case 2: -#line 167 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" + { _push(1.0); } break; case 3: -#line 171 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" + { _push(0.0); } break; case 4: -#line 175 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" + { _absolute = true; } break; case 5: -#line 179 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _absolute = false; } break; case 6: -#line 183 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _moveTo(_pop_point()); } break; case 7: -#line 187 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _lineTo(_pop_point()); } break; case 8: -#line 191 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _hlineTo(Point(_pop_coord(X), _current[Y])); } break; case 9: -#line 195 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _vlineTo(Point(_current[X], _pop_coord(Y))); } break; case 10: -#line 199 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1310,7 +1298,6 @@ _match: } break; case 11: -#line 206 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1318,7 +1305,6 @@ _match: } break; case 12: -#line 212 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); Point c = _pop_point(); @@ -1326,14 +1312,12 @@ _match: } break; case 13: -#line 218 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { Point p = _pop_point(); _quadTo(_quad_tangent, p); } break; case 14: -#line 223 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { Point point = _pop_point(); bool sweep = _pop_flag(); @@ -1346,16 +1330,13 @@ _match: } break; case 15: -#line 234 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" { _closePath(); } break; case 16: -#line 370 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" {{p++; goto _out; }} break; -#line 1359 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.cpp" } } @@ -1367,8 +1348,6 @@ _again: _out: {} } -#line 380 "/home/tweenk/src/lib2geom/src/2geom/svg-path-parser.rl" - if ( cs < svg_path_first_final ) { throw SVGPathParseError(); |
