summaryrefslogtreecommitdiffstats
path: root/src/svg/svg-affine-parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/svg/svg-affine-parser.cpp')
-rw-r--r--src/svg/svg-affine-parser.cpp1248
1 files changed, 1248 insertions, 0 deletions
diff --git a/src/svg/svg-affine-parser.cpp b/src/svg/svg-affine-parser.cpp
new file mode 100644
index 0000000..14bfd72
--- /dev/null
+++ b/src/svg/svg-affine-parser.cpp
@@ -0,0 +1,1248 @@
+
+#line 1 "svg-affine-parser.rl"
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * SVG data parser
+ *
+ * Authors:
+ * Marc Jeanmougin <marc.jeanmougin@telecom-paris.fr>
+ *
+ * Copyright (C) 2019 Marc Jeanmougin (.rl parser, CSS-transform spec)
+ *
+ * Released under GNU GPL v2+, read the file 'COPYING' for more information.
+ *
+ * THE CPP FILE IS GENERATED FROM THE RL FILE, DO NOT EDIT THE CPP
+ *
+ * To generate it, run
+ * ragel svg-affine-parser.rl -o svg-affine-parser.cpp
+ * sed -Ei 's/\(1\)/(true)/' svg-affine-parser.cpp
+ */
+
+#include <string>
+#include <glib.h>
+#include <2geom/transforms.h>
+#include "svg.h"
+#include "preferences.h"
+
+
+#line 29 "svg-affine-parser.cpp"
+static const char _svg_transform_actions[] = {
+ 0, 1, 0, 1, 8, 1, 11, 1,
+ 12, 1, 14, 1, 15, 1, 16, 2,
+ 0, 8, 2, 1, 7, 2, 2, 7,
+ 2, 3, 7, 2, 4, 7, 2, 5,
+ 7, 2, 6, 7, 2, 9, 10, 2,
+ 12, 0, 2, 12, 13, 3, 1, 7,
+ 14, 3, 2, 7, 14, 3, 3, 7,
+ 14, 3, 4, 7, 14, 3, 5, 7,
+ 14, 3, 6, 7, 14, 3, 12, 1,
+ 7, 3, 12, 2, 7, 3, 12, 3,
+ 7, 3, 12, 4, 7, 3, 12, 5,
+ 7, 3, 12, 6, 7
+};
+
+static const short _svg_transform_key_offsets[] = {
+ 0, 0, 1, 2, 3, 4, 5, 10,
+ 19, 22, 24, 36, 46, 49, 51, 63,
+ 73, 76, 78, 90, 100, 103, 105, 117,
+ 127, 130, 132, 144, 154, 157, 159, 168,
+ 173, 181, 182, 183, 184, 185, 186, 191,
+ 200, 203, 205, 217, 227, 230, 232, 244,
+ 254, 257, 259, 271, 281, 284, 286, 298,
+ 308, 311, 313, 325, 335, 338, 340, 349,
+ 354, 358, 360, 367, 377, 386, 390, 392,
+ 402, 414, 423, 427, 429, 439, 451, 460,
+ 464, 466, 476, 488, 497, 501, 503, 513,
+ 525, 534, 538, 540, 550, 562, 563, 564,
+ 565, 566, 567, 572, 581, 584, 586, 599,
+ 610, 612, 613, 614, 615, 620, 629, 632,
+ 634, 647, 658, 659, 660, 661, 662, 663,
+ 664, 665, 666, 671, 680, 683, 685, 698,
+ 709, 712, 714, 723, 728, 732, 734, 741,
+ 751, 760, 764, 766, 777, 790, 793, 795,
+ 804, 809, 813, 815, 822, 832, 841, 845,
+ 847, 858, 871, 872, 873, 875, 880, 889,
+ 892, 894, 903, 908, 912, 914, 921, 931,
+ 936, 945, 948, 950, 959, 964, 968, 970,
+ 977, 987, 990, 992, 1004, 1014, 1017, 1019,
+ 1028, 1033, 1037, 1039, 1046, 1056, 1065, 1069,
+ 1071, 1081, 1093, 1102, 1106, 1108, 1119, 1132,
+ 1136, 1138, 1145, 1155, 1164, 1168, 1170, 1180,
+ 1192, 1201, 1205, 1207, 1217, 1229, 1238, 1242,
+ 1244, 1254, 1266, 1275, 1279, 1281, 1291, 1303,
+ 1312, 1316, 1318, 1328, 1340, 1341, 1342, 1343,
+ 1344, 1345, 1350, 1359, 1362, 1364, 1377, 1388,
+ 1391, 1393, 1405, 1415, 1418, 1420, 1429, 1434,
+ 1438, 1440, 1447, 1457, 1466, 1470, 1472, 1482,
+ 1494, 1503, 1507, 1509, 1520, 1533, 1535, 1536,
+ 1537, 1538, 1543, 1552, 1555, 1557, 1570, 1581,
+ 1584, 1586, 1595, 1600, 1604, 1606, 1613, 1623,
+ 1632, 1636, 1638, 1649, 1662, 1663, 1664, 1666,
+ 1671, 1680, 1683, 1685, 1694, 1699, 1703, 1705,
+ 1712, 1722, 1727, 1736, 1739, 1741, 1750, 1755,
+ 1759, 1761, 1768, 1778, 1779, 1780, 1781, 1782,
+ 1783, 1784, 1785, 1786, 1791, 1800, 1803, 1805,
+ 1818, 1829, 1832, 1834, 1843, 1848, 1852, 1854,
+ 1861, 1871, 1880, 1884, 1886, 1897, 1910, 1918,
+ 1926, 1935, 1944, 1953, 1962, 1971, 1980
+};
+
+static const char _svg_transform_trans_keys[] = {
+ 97, 116, 114, 105, 120, 13, 32, 40,
+ 9, 10, 13, 32, 43, 45, 46, 9,
+ 10, 48, 57, 46, 48, 57, 48, 57,
+ 13, 32, 44, 46, 69, 101, 9, 10,
+ 43, 45, 48, 57, 13, 32, 44, 46,
+ 9, 10, 43, 45, 48, 57, 46, 48,
+ 57, 48, 57, 13, 32, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 13,
+ 32, 44, 46, 9, 10, 43, 45, 48,
+ 57, 46, 48, 57, 48, 57, 13, 32,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 44, 46, 9, 10,
+ 43, 45, 48, 57, 46, 48, 57, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 44,
+ 46, 9, 10, 43, 45, 48, 57, 46,
+ 48, 57, 48, 57, 13, 32, 44, 46,
+ 69, 101, 9, 10, 43, 45, 48, 57,
+ 13, 32, 44, 46, 9, 10, 43, 45,
+ 48, 57, 46, 48, 57, 48, 57, 13,
+ 32, 41, 69, 101, 9, 10, 48, 57,
+ 13, 32, 41, 9, 10, 13, 32, 109,
+ 114, 115, 116, 9, 10, 97, 116, 114,
+ 105, 120, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 44,
+ 46, 69, 101, 9, 10, 43, 45, 48,
+ 57, 13, 32, 44, 46, 9, 10, 43,
+ 45, 48, 57, 46, 48, 57, 48, 57,
+ 13, 32, 44, 46, 69, 101, 9, 10,
+ 43, 45, 48, 57, 13, 32, 44, 46,
+ 9, 10, 43, 45, 48, 57, 46, 48,
+ 57, 48, 57, 13, 32, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 13,
+ 32, 44, 46, 9, 10, 43, 45, 48,
+ 57, 46, 48, 57, 48, 57, 13, 32,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 44, 46, 9, 10,
+ 43, 45, 48, 57, 46, 48, 57, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 44,
+ 46, 9, 10, 43, 45, 48, 57, 46,
+ 48, 57, 48, 57, 13, 32, 41, 69,
+ 101, 9, 10, 48, 57, 13, 32, 41,
+ 9, 10, 43, 45, 48, 57, 48, 57,
+ 13, 32, 41, 9, 10, 48, 57, 13,
+ 32, 41, 46, 69, 101, 9, 10, 48,
+ 57, 13, 32, 43, 45, 46, 9, 10,
+ 48, 57, 43, 45, 48, 57, 48, 57,
+ 13, 32, 44, 46, 9, 10, 43, 45,
+ 48, 57, 13, 32, 44, 46, 69, 101,
+ 9, 10, 43, 45, 48, 57, 13, 32,
+ 43, 45, 46, 9, 10, 48, 57, 43,
+ 45, 48, 57, 48, 57, 13, 32, 44,
+ 46, 9, 10, 43, 45, 48, 57, 13,
+ 32, 44, 46, 69, 101, 9, 10, 43,
+ 45, 48, 57, 13, 32, 43, 45, 46,
+ 9, 10, 48, 57, 43, 45, 48, 57,
+ 48, 57, 13, 32, 44, 46, 9, 10,
+ 43, 45, 48, 57, 13, 32, 44, 46,
+ 69, 101, 9, 10, 43, 45, 48, 57,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 43, 45, 48, 57, 48, 57, 13,
+ 32, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 43,
+ 45, 46, 9, 10, 48, 57, 43, 45,
+ 48, 57, 48, 57, 13, 32, 44, 46,
+ 9, 10, 43, 45, 48, 57, 13, 32,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 111, 116, 97, 116, 101, 13,
+ 32, 40, 9, 10, 13, 32, 43, 45,
+ 46, 9, 10, 48, 57, 46, 48, 57,
+ 48, 57, 13, 32, 41, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 13,
+ 32, 41, 44, 46, 9, 10, 43, 45,
+ 48, 57, 99, 107, 97, 108, 101, 13,
+ 32, 40, 9, 10, 13, 32, 43, 45,
+ 46, 9, 10, 48, 57, 46, 48, 57,
+ 48, 57, 13, 32, 41, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 13,
+ 32, 41, 44, 46, 9, 10, 43, 45,
+ 48, 57, 114, 97, 110, 115, 108, 97,
+ 116, 101, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 41,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 41, 44, 46, 9,
+ 10, 43, 45, 48, 57, 46, 48, 57,
+ 48, 57, 13, 32, 41, 69, 101, 9,
+ 10, 48, 57, 13, 32, 41, 9, 10,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 9, 10, 48, 57, 13, 32, 41,
+ 46, 69, 101, 9, 10, 48, 57, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 41, 44, 46, 69, 101,
+ 9, 10, 43, 45, 48, 57, 46, 48,
+ 57, 48, 57, 13, 32, 41, 69, 101,
+ 9, 10, 48, 57, 13, 32, 41, 9,
+ 10, 43, 45, 48, 57, 48, 57, 13,
+ 32, 41, 9, 10, 48, 57, 13, 32,
+ 41, 46, 69, 101, 9, 10, 48, 57,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 43, 45, 48, 57, 48, 57, 13,
+ 32, 41, 44, 46, 9, 10, 43, 45,
+ 48, 57, 13, 32, 41, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 101,
+ 119, 88, 89, 13, 32, 40, 9, 10,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 46, 48, 57, 48, 57, 13, 32,
+ 41, 69, 101, 9, 10, 48, 57, 13,
+ 32, 41, 9, 10, 43, 45, 48, 57,
+ 48, 57, 13, 32, 41, 9, 10, 48,
+ 57, 13, 32, 41, 46, 69, 101, 9,
+ 10, 48, 57, 13, 32, 40, 9, 10,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 46, 48, 57, 48, 57, 13, 32,
+ 41, 69, 101, 9, 10, 48, 57, 13,
+ 32, 41, 9, 10, 43, 45, 48, 57,
+ 48, 57, 13, 32, 41, 9, 10, 48,
+ 57, 13, 32, 41, 46, 69, 101, 9,
+ 10, 48, 57, 46, 48, 57, 48, 57,
+ 13, 32, 44, 46, 69, 101, 9, 10,
+ 43, 45, 48, 57, 13, 32, 44, 46,
+ 9, 10, 43, 45, 48, 57, 46, 48,
+ 57, 48, 57, 13, 32, 41, 69, 101,
+ 9, 10, 48, 57, 13, 32, 41, 9,
+ 10, 43, 45, 48, 57, 48, 57, 13,
+ 32, 41, 9, 10, 48, 57, 13, 32,
+ 41, 46, 69, 101, 9, 10, 48, 57,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 43, 45, 48, 57, 48, 57, 13,
+ 32, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 43,
+ 45, 46, 9, 10, 48, 57, 43, 45,
+ 48, 57, 48, 57, 13, 32, 41, 44,
+ 46, 9, 10, 43, 45, 48, 57, 13,
+ 32, 41, 44, 46, 69, 101, 9, 10,
+ 43, 45, 48, 57, 43, 45, 48, 57,
+ 48, 57, 13, 32, 41, 9, 10, 48,
+ 57, 13, 32, 41, 46, 69, 101, 9,
+ 10, 48, 57, 13, 32, 43, 45, 46,
+ 9, 10, 48, 57, 43, 45, 48, 57,
+ 48, 57, 13, 32, 44, 46, 9, 10,
+ 43, 45, 48, 57, 13, 32, 44, 46,
+ 69, 101, 9, 10, 43, 45, 48, 57,
+ 13, 32, 43, 45, 46, 9, 10, 48,
+ 57, 43, 45, 48, 57, 48, 57, 13,
+ 32, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 43,
+ 45, 46, 9, 10, 48, 57, 43, 45,
+ 48, 57, 48, 57, 13, 32, 44, 46,
+ 9, 10, 43, 45, 48, 57, 13, 32,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 43, 45, 46, 9,
+ 10, 48, 57, 43, 45, 48, 57, 48,
+ 57, 13, 32, 44, 46, 9, 10, 43,
+ 45, 48, 57, 13, 32, 44, 46, 69,
+ 101, 9, 10, 43, 45, 48, 57, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 44, 46, 9, 10, 43, 45, 48, 57,
+ 13, 32, 44, 46, 69, 101, 9, 10,
+ 43, 45, 48, 57, 111, 116, 97, 116,
+ 101, 13, 32, 40, 9, 10, 13, 32,
+ 43, 45, 46, 9, 10, 48, 57, 46,
+ 48, 57, 48, 57, 13, 32, 41, 44,
+ 46, 69, 101, 9, 10, 43, 45, 48,
+ 57, 13, 32, 41, 44, 46, 9, 10,
+ 43, 45, 48, 57, 46, 48, 57, 48,
+ 57, 13, 32, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 13, 32, 44,
+ 46, 9, 10, 43, 45, 48, 57, 46,
+ 48, 57, 48, 57, 13, 32, 41, 69,
+ 101, 9, 10, 48, 57, 13, 32, 41,
+ 9, 10, 43, 45, 48, 57, 48, 57,
+ 13, 32, 41, 9, 10, 48, 57, 13,
+ 32, 41, 46, 69, 101, 9, 10, 48,
+ 57, 13, 32, 43, 45, 46, 9, 10,
+ 48, 57, 43, 45, 48, 57, 48, 57,
+ 13, 32, 44, 46, 9, 10, 43, 45,
+ 48, 57, 13, 32, 44, 46, 69, 101,
+ 9, 10, 43, 45, 48, 57, 13, 32,
+ 43, 45, 46, 9, 10, 48, 57, 43,
+ 45, 48, 57, 48, 57, 13, 32, 41,
+ 44, 46, 9, 10, 43, 45, 48, 57,
+ 13, 32, 41, 44, 46, 69, 101, 9,
+ 10, 43, 45, 48, 57, 99, 107, 97,
+ 108, 101, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 41,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 41, 44, 46, 9,
+ 10, 43, 45, 48, 57, 46, 48, 57,
+ 48, 57, 13, 32, 41, 69, 101, 9,
+ 10, 48, 57, 13, 32, 41, 9, 10,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 9, 10, 48, 57, 13, 32, 41,
+ 46, 69, 101, 9, 10, 48, 57, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 41, 44, 46, 69, 101,
+ 9, 10, 43, 45, 48, 57, 101, 119,
+ 88, 89, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 41,
+ 69, 101, 9, 10, 48, 57, 13, 32,
+ 41, 9, 10, 43, 45, 48, 57, 48,
+ 57, 13, 32, 41, 9, 10, 48, 57,
+ 13, 32, 41, 46, 69, 101, 9, 10,
+ 48, 57, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 41,
+ 69, 101, 9, 10, 48, 57, 13, 32,
+ 41, 9, 10, 43, 45, 48, 57, 48,
+ 57, 13, 32, 41, 9, 10, 48, 57,
+ 13, 32, 41, 46, 69, 101, 9, 10,
+ 48, 57, 114, 97, 110, 115, 108, 97,
+ 116, 101, 13, 32, 40, 9, 10, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 46, 48, 57, 48, 57, 13, 32, 41,
+ 44, 46, 69, 101, 9, 10, 43, 45,
+ 48, 57, 13, 32, 41, 44, 46, 9,
+ 10, 43, 45, 48, 57, 46, 48, 57,
+ 48, 57, 13, 32, 41, 69, 101, 9,
+ 10, 48, 57, 13, 32, 41, 9, 10,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 9, 10, 48, 57, 13, 32, 41,
+ 46, 69, 101, 9, 10, 48, 57, 13,
+ 32, 43, 45, 46, 9, 10, 48, 57,
+ 43, 45, 48, 57, 48, 57, 13, 32,
+ 41, 44, 46, 9, 10, 43, 45, 48,
+ 57, 13, 32, 41, 44, 46, 69, 101,
+ 9, 10, 43, 45, 48, 57, 13, 32,
+ 109, 114, 115, 116, 9, 10, 13, 32,
+ 109, 114, 115, 116, 9, 10, 13, 32,
+ 44, 109, 114, 115, 116, 9, 10, 13,
+ 32, 44, 109, 114, 115, 116, 9, 10,
+ 13, 32, 44, 109, 114, 115, 116, 9,
+ 10, 13, 32, 44, 109, 114, 115, 116,
+ 9, 10, 13, 32, 44, 109, 114, 115,
+ 116, 9, 10, 13, 32, 44, 109, 114,
+ 115, 116, 9, 10, 13, 32, 44, 109,
+ 114, 115, 116, 9, 10, 0
+};
+
+static const char _svg_transform_single_lengths[] = {
+ 0, 1, 1, 1, 1, 1, 3, 5,
+ 1, 0, 6, 4, 1, 0, 6, 4,
+ 1, 0, 6, 4, 1, 0, 6, 4,
+ 1, 0, 6, 4, 1, 0, 5, 3,
+ 6, 1, 1, 1, 1, 1, 3, 5,
+ 1, 0, 6, 4, 1, 0, 6, 4,
+ 1, 0, 6, 4, 1, 0, 6, 4,
+ 1, 0, 6, 4, 1, 0, 5, 3,
+ 2, 0, 3, 6, 5, 2, 0, 4,
+ 6, 5, 2, 0, 4, 6, 5, 2,
+ 0, 4, 6, 5, 2, 0, 4, 6,
+ 5, 2, 0, 4, 6, 1, 1, 1,
+ 1, 1, 3, 5, 1, 0, 7, 5,
+ 2, 1, 1, 1, 3, 5, 1, 0,
+ 7, 5, 1, 1, 1, 1, 1, 1,
+ 1, 1, 3, 5, 1, 0, 7, 5,
+ 1, 0, 5, 3, 2, 0, 3, 6,
+ 5, 2, 0, 5, 7, 1, 0, 5,
+ 3, 2, 0, 3, 6, 5, 2, 0,
+ 5, 7, 1, 1, 2, 3, 5, 1,
+ 0, 5, 3, 2, 0, 3, 6, 3,
+ 5, 1, 0, 5, 3, 2, 0, 3,
+ 6, 1, 0, 6, 4, 1, 0, 5,
+ 3, 2, 0, 3, 6, 5, 2, 0,
+ 4, 6, 5, 2, 0, 5, 7, 2,
+ 0, 3, 6, 5, 2, 0, 4, 6,
+ 5, 2, 0, 4, 6, 5, 2, 0,
+ 4, 6, 5, 2, 0, 4, 6, 5,
+ 2, 0, 4, 6, 1, 1, 1, 1,
+ 1, 3, 5, 1, 0, 7, 5, 1,
+ 0, 6, 4, 1, 0, 5, 3, 2,
+ 0, 3, 6, 5, 2, 0, 4, 6,
+ 5, 2, 0, 5, 7, 2, 1, 1,
+ 1, 3, 5, 1, 0, 7, 5, 1,
+ 0, 5, 3, 2, 0, 3, 6, 5,
+ 2, 0, 5, 7, 1, 1, 2, 3,
+ 5, 1, 0, 5, 3, 2, 0, 3,
+ 6, 3, 5, 1, 0, 5, 3, 2,
+ 0, 3, 6, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 5, 1, 0, 7,
+ 5, 1, 0, 5, 3, 2, 0, 3,
+ 6, 5, 2, 0, 5, 7, 6, 6,
+ 7, 7, 7, 7, 7, 7, 7
+};
+
+static const char _svg_transform_range_lengths[] = {
+ 0, 0, 0, 0, 0, 0, 1, 2,
+ 1, 1, 3, 3, 1, 1, 3, 3,
+ 1, 1, 3, 3, 1, 1, 3, 3,
+ 1, 1, 3, 3, 1, 1, 2, 1,
+ 1, 0, 0, 0, 0, 0, 1, 2,
+ 1, 1, 3, 3, 1, 1, 3, 3,
+ 1, 1, 3, 3, 1, 1, 3, 3,
+ 1, 1, 3, 3, 1, 1, 2, 1,
+ 1, 1, 2, 2, 2, 1, 1, 3,
+ 3, 2, 1, 1, 3, 3, 2, 1,
+ 1, 3, 3, 2, 1, 1, 3, 3,
+ 2, 1, 1, 3, 3, 0, 0, 0,
+ 0, 0, 1, 2, 1, 1, 3, 3,
+ 0, 0, 0, 0, 1, 2, 1, 1,
+ 3, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 2, 1, 1, 3, 3,
+ 1, 1, 2, 1, 1, 1, 2, 2,
+ 2, 1, 1, 3, 3, 1, 1, 2,
+ 1, 1, 1, 2, 2, 2, 1, 1,
+ 3, 3, 0, 0, 0, 1, 2, 1,
+ 1, 2, 1, 1, 1, 2, 2, 1,
+ 2, 1, 1, 2, 1, 1, 1, 2,
+ 2, 1, 1, 3, 3, 1, 1, 2,
+ 1, 1, 1, 2, 2, 2, 1, 1,
+ 3, 3, 2, 1, 1, 3, 3, 1,
+ 1, 2, 2, 2, 1, 1, 3, 3,
+ 2, 1, 1, 3, 3, 2, 1, 1,
+ 3, 3, 2, 1, 1, 3, 3, 2,
+ 1, 1, 3, 3, 0, 0, 0, 0,
+ 0, 1, 2, 1, 1, 3, 3, 1,
+ 1, 3, 3, 1, 1, 2, 1, 1,
+ 1, 2, 2, 2, 1, 1, 3, 3,
+ 2, 1, 1, 3, 3, 0, 0, 0,
+ 0, 1, 2, 1, 1, 3, 3, 1,
+ 1, 2, 1, 1, 1, 2, 2, 2,
+ 1, 1, 3, 3, 0, 0, 0, 1,
+ 2, 1, 1, 2, 1, 1, 1, 2,
+ 2, 1, 2, 1, 1, 2, 1, 1,
+ 1, 2, 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 2, 1, 1, 3,
+ 3, 1, 1, 2, 1, 1, 1, 2,
+ 2, 2, 1, 1, 3, 3, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1
+};
+
+static const short _svg_transform_index_offsets[] = {
+ 0, 0, 2, 4, 6, 8, 10, 15,
+ 23, 26, 28, 38, 46, 49, 51, 61,
+ 69, 72, 74, 84, 92, 95, 97, 107,
+ 115, 118, 120, 130, 138, 141, 143, 151,
+ 156, 164, 166, 168, 170, 172, 174, 179,
+ 187, 190, 192, 202, 210, 213, 215, 225,
+ 233, 236, 238, 248, 256, 259, 261, 271,
+ 279, 282, 284, 294, 302, 305, 307, 315,
+ 320, 324, 326, 332, 341, 349, 353, 355,
+ 363, 373, 381, 385, 387, 395, 405, 413,
+ 417, 419, 427, 437, 445, 449, 451, 459,
+ 469, 477, 481, 483, 491, 501, 503, 505,
+ 507, 509, 511, 516, 524, 527, 529, 540,
+ 549, 552, 554, 556, 558, 563, 571, 574,
+ 576, 587, 596, 598, 600, 602, 604, 606,
+ 608, 610, 612, 617, 625, 628, 630, 641,
+ 650, 653, 655, 663, 668, 672, 674, 680,
+ 689, 697, 701, 703, 712, 723, 726, 728,
+ 736, 741, 745, 747, 753, 762, 770, 774,
+ 776, 785, 796, 798, 800, 803, 808, 816,
+ 819, 821, 829, 834, 838, 840, 846, 855,
+ 860, 868, 871, 873, 881, 886, 890, 892,
+ 898, 907, 910, 912, 922, 930, 933, 935,
+ 943, 948, 952, 954, 960, 969, 977, 981,
+ 983, 991, 1001, 1009, 1013, 1015, 1024, 1035,
+ 1039, 1041, 1047, 1056, 1064, 1068, 1070, 1078,
+ 1088, 1096, 1100, 1102, 1110, 1120, 1128, 1132,
+ 1134, 1142, 1152, 1160, 1164, 1166, 1174, 1184,
+ 1192, 1196, 1198, 1206, 1216, 1218, 1220, 1222,
+ 1224, 1226, 1231, 1239, 1242, 1244, 1255, 1264,
+ 1267, 1269, 1279, 1287, 1290, 1292, 1300, 1305,
+ 1309, 1311, 1317, 1326, 1334, 1338, 1340, 1348,
+ 1358, 1366, 1370, 1372, 1381, 1392, 1395, 1397,
+ 1399, 1401, 1406, 1414, 1417, 1419, 1430, 1439,
+ 1442, 1444, 1452, 1457, 1461, 1463, 1469, 1478,
+ 1486, 1490, 1492, 1501, 1512, 1514, 1516, 1519,
+ 1524, 1532, 1535, 1537, 1545, 1550, 1554, 1556,
+ 1562, 1571, 1576, 1584, 1587, 1589, 1597, 1602,
+ 1606, 1608, 1614, 1623, 1625, 1627, 1629, 1631,
+ 1633, 1635, 1637, 1639, 1644, 1652, 1655, 1657,
+ 1668, 1677, 1680, 1682, 1690, 1695, 1699, 1701,
+ 1707, 1716, 1724, 1728, 1730, 1739, 1750, 1758,
+ 1766, 1775, 1784, 1793, 1802, 1811, 1820
+};
+
+static const short _svg_transform_indicies[] = {
+ 1, 0, 2, 0, 3, 0, 4, 0,
+ 5, 0, 5, 5, 6, 5, 0, 6,
+ 6, 7, 7, 8, 6, 9, 0, 10,
+ 11, 0, 12, 0, 13, 13, 15, 16,
+ 17, 17, 13, 14, 12, 0, 18, 18,
+ 20, 21, 18, 19, 22, 0, 23, 24,
+ 0, 25, 0, 26, 26, 28, 29, 30,
+ 30, 26, 27, 25, 0, 31, 31, 33,
+ 34, 31, 32, 35, 0, 36, 37, 0,
+ 38, 0, 39, 39, 41, 42, 43, 43,
+ 39, 40, 38, 0, 44, 44, 46, 47,
+ 44, 45, 48, 0, 49, 50, 0, 51,
+ 0, 52, 52, 54, 55, 56, 56, 52,
+ 53, 51, 0, 57, 57, 59, 60, 57,
+ 58, 61, 0, 62, 63, 0, 64, 0,
+ 65, 65, 67, 68, 69, 69, 65, 66,
+ 64, 0, 70, 70, 72, 73, 70, 71,
+ 74, 0, 75, 76, 0, 77, 0, 78,
+ 78, 79, 80, 80, 78, 77, 0, 81,
+ 81, 82, 81, 0, 84, 84, 85, 86,
+ 87, 88, 84, 83, 89, 83, 90, 83,
+ 91, 83, 92, 83, 93, 83, 93, 93,
+ 94, 93, 83, 94, 94, 95, 95, 96,
+ 94, 97, 83, 98, 99, 83, 100, 83,
+ 101, 101, 103, 104, 105, 105, 101, 102,
+ 100, 83, 106, 106, 108, 109, 106, 107,
+ 110, 83, 111, 112, 83, 113, 83, 114,
+ 114, 116, 117, 118, 118, 114, 115, 113,
+ 83, 119, 119, 121, 122, 119, 120, 123,
+ 83, 124, 125, 83, 126, 83, 127, 127,
+ 129, 130, 131, 131, 127, 128, 126, 83,
+ 132, 132, 134, 135, 132, 133, 136, 83,
+ 137, 138, 83, 139, 83, 140, 140, 142,
+ 143, 144, 144, 140, 141, 139, 83, 145,
+ 145, 147, 148, 145, 146, 149, 83, 150,
+ 151, 83, 152, 83, 153, 153, 155, 156,
+ 157, 157, 153, 154, 152, 83, 158, 158,
+ 160, 161, 158, 159, 162, 83, 163, 164,
+ 83, 165, 83, 166, 166, 79, 167, 167,
+ 166, 165, 83, 168, 168, 82, 168, 83,
+ 169, 169, 170, 83, 170, 83, 166, 166,
+ 79, 166, 170, 83, 166, 166, 79, 165,
+ 167, 167, 166, 164, 83, 160, 160, 159,
+ 159, 161, 160, 162, 83, 171, 171, 172,
+ 83, 172, 83, 153, 153, 155, 156, 153,
+ 154, 172, 83, 153, 153, 155, 152, 157,
+ 157, 153, 154, 151, 83, 147, 147, 146,
+ 146, 148, 147, 149, 83, 173, 173, 174,
+ 83, 174, 83, 140, 140, 142, 143, 140,
+ 141, 174, 83, 140, 140, 142, 139, 144,
+ 144, 140, 141, 138, 83, 134, 134, 133,
+ 133, 135, 134, 136, 83, 175, 175, 176,
+ 83, 176, 83, 127, 127, 129, 130, 127,
+ 128, 176, 83, 127, 127, 129, 126, 131,
+ 131, 127, 128, 125, 83, 121, 121, 120,
+ 120, 122, 121, 123, 83, 177, 177, 178,
+ 83, 178, 83, 114, 114, 116, 117, 114,
+ 115, 178, 83, 114, 114, 116, 113, 118,
+ 118, 114, 115, 112, 83, 108, 108, 107,
+ 107, 109, 108, 110, 83, 179, 179, 180,
+ 83, 180, 83, 101, 101, 103, 104, 101,
+ 102, 180, 83, 101, 101, 103, 100, 105,
+ 105, 101, 102, 99, 83, 181, 83, 182,
+ 83, 183, 83, 184, 83, 185, 83, 185,
+ 185, 186, 185, 83, 186, 186, 187, 187,
+ 188, 186, 189, 83, 190, 191, 83, 192,
+ 83, 193, 193, 194, 196, 197, 198, 198,
+ 193, 195, 192, 83, 199, 199, 200, 202,
+ 203, 199, 201, 204, 83, 205, 206, 83,
+ 207, 83, 208, 83, 209, 83, 209, 209,
+ 210, 209, 83, 210, 210, 211, 211, 212,
+ 210, 213, 83, 214, 215, 83, 216, 83,
+ 217, 217, 218, 220, 221, 222, 222, 217,
+ 219, 216, 83, 223, 223, 224, 226, 227,
+ 223, 225, 228, 83, 229, 83, 230, 83,
+ 231, 83, 232, 83, 233, 83, 234, 83,
+ 235, 83, 236, 83, 236, 236, 237, 236,
+ 83, 237, 237, 238, 238, 239, 237, 240,
+ 83, 241, 242, 83, 243, 83, 244, 244,
+ 245, 247, 248, 249, 249, 244, 246, 243,
+ 83, 250, 250, 251, 253, 254, 250, 252,
+ 255, 83, 256, 257, 83, 258, 83, 259,
+ 259, 245, 260, 260, 259, 258, 83, 261,
+ 261, 251, 261, 83, 262, 262, 263, 83,
+ 263, 83, 259, 259, 245, 259, 263, 83,
+ 259, 259, 245, 258, 260, 260, 259, 257,
+ 83, 253, 253, 252, 252, 254, 253, 255,
+ 83, 264, 264, 265, 83, 265, 83, 244,
+ 244, 245, 247, 248, 244, 246, 265, 83,
+ 244, 244, 245, 247, 243, 249, 249, 244,
+ 246, 242, 83, 266, 267, 83, 268, 83,
+ 269, 269, 218, 270, 270, 269, 268, 83,
+ 271, 271, 224, 271, 83, 272, 272, 273,
+ 83, 273, 83, 269, 269, 218, 269, 273,
+ 83, 269, 269, 218, 268, 270, 270, 269,
+ 267, 83, 226, 226, 225, 225, 227, 226,
+ 228, 83, 274, 274, 275, 83, 275, 83,
+ 217, 217, 218, 220, 221, 217, 219, 275,
+ 83, 217, 217, 218, 220, 216, 222, 222,
+ 217, 219, 215, 83, 276, 83, 277, 83,
+ 278, 279, 83, 278, 278, 280, 278, 83,
+ 280, 280, 281, 281, 282, 280, 283, 83,
+ 284, 285, 83, 286, 83, 287, 287, 288,
+ 289, 289, 287, 286, 83, 290, 290, 291,
+ 290, 83, 292, 292, 293, 83, 293, 83,
+ 287, 287, 288, 287, 293, 83, 287, 287,
+ 288, 286, 289, 289, 287, 285, 83, 279,
+ 279, 294, 279, 83, 294, 294, 295, 295,
+ 296, 294, 297, 83, 298, 299, 83, 300,
+ 83, 301, 301, 302, 303, 303, 301, 300,
+ 83, 304, 304, 305, 304, 83, 306, 306,
+ 307, 83, 307, 83, 301, 301, 302, 301,
+ 307, 83, 301, 301, 302, 300, 303, 303,
+ 301, 299, 83, 308, 309, 83, 310, 83,
+ 311, 311, 313, 314, 315, 315, 311, 312,
+ 310, 83, 316, 316, 318, 319, 316, 317,
+ 320, 83, 321, 322, 83, 323, 83, 324,
+ 324, 194, 325, 325, 324, 323, 83, 326,
+ 326, 200, 326, 83, 327, 327, 328, 83,
+ 328, 83, 324, 324, 194, 324, 328, 83,
+ 324, 324, 194, 323, 325, 325, 324, 322,
+ 83, 318, 318, 317, 317, 319, 318, 320,
+ 83, 329, 329, 330, 83, 330, 83, 311,
+ 311, 313, 314, 311, 312, 330, 83, 311,
+ 311, 313, 310, 315, 315, 311, 312, 309,
+ 83, 202, 202, 201, 201, 203, 202, 204,
+ 83, 331, 331, 332, 83, 332, 83, 193,
+ 193, 194, 196, 197, 193, 195, 332, 83,
+ 193, 193, 194, 196, 192, 198, 198, 193,
+ 195, 191, 83, 333, 333, 334, 0, 334,
+ 0, 78, 78, 79, 78, 334, 0, 78,
+ 78, 79, 77, 80, 80, 78, 76, 0,
+ 72, 72, 71, 71, 73, 72, 74, 0,
+ 335, 335, 336, 0, 336, 0, 65, 65,
+ 67, 68, 65, 66, 336, 0, 65, 65,
+ 67, 64, 69, 69, 65, 66, 63, 0,
+ 59, 59, 58, 58, 60, 59, 61, 0,
+ 337, 337, 338, 0, 338, 0, 52, 52,
+ 54, 55, 52, 53, 338, 0, 52, 52,
+ 54, 51, 56, 56, 52, 53, 50, 0,
+ 46, 46, 45, 45, 47, 46, 48, 0,
+ 339, 339, 340, 0, 340, 0, 39, 39,
+ 41, 42, 39, 40, 340, 0, 39, 39,
+ 41, 38, 43, 43, 39, 40, 37, 0,
+ 33, 33, 32, 32, 34, 33, 35, 0,
+ 341, 341, 342, 0, 342, 0, 26, 26,
+ 28, 29, 26, 27, 342, 0, 26, 26,
+ 28, 25, 30, 30, 26, 27, 24, 0,
+ 20, 20, 19, 19, 21, 20, 22, 0,
+ 343, 343, 344, 0, 344, 0, 13, 13,
+ 15, 16, 13, 14, 344, 0, 13, 13,
+ 15, 12, 17, 17, 13, 14, 11, 0,
+ 345, 0, 346, 0, 347, 0, 348, 0,
+ 349, 0, 349, 349, 350, 349, 0, 350,
+ 350, 351, 351, 352, 350, 353, 0, 354,
+ 355, 0, 356, 0, 357, 357, 194, 359,
+ 360, 361, 361, 357, 358, 356, 0, 362,
+ 362, 200, 364, 365, 362, 363, 366, 0,
+ 367, 368, 0, 369, 0, 370, 370, 372,
+ 373, 374, 374, 370, 371, 369, 0, 375,
+ 375, 377, 378, 375, 376, 379, 0, 380,
+ 381, 0, 382, 0, 383, 383, 194, 384,
+ 384, 383, 382, 0, 385, 385, 200, 385,
+ 0, 386, 386, 387, 0, 387, 0, 383,
+ 383, 194, 383, 387, 0, 383, 383, 194,
+ 382, 384, 384, 383, 381, 0, 377, 377,
+ 376, 376, 378, 377, 379, 0, 388, 388,
+ 389, 0, 389, 0, 370, 370, 372, 373,
+ 370, 371, 389, 0, 370, 370, 372, 369,
+ 374, 374, 370, 371, 368, 0, 364, 364,
+ 363, 363, 365, 364, 366, 0, 390, 390,
+ 391, 0, 391, 0, 357, 357, 194, 359,
+ 360, 357, 358, 391, 0, 357, 357, 194,
+ 359, 356, 361, 361, 357, 358, 355, 0,
+ 392, 393, 0, 394, 0, 395, 0, 396,
+ 0, 396, 396, 397, 396, 0, 397, 397,
+ 398, 398, 399, 397, 400, 0, 401, 402,
+ 0, 403, 0, 404, 404, 218, 406, 407,
+ 408, 408, 404, 405, 403, 0, 409, 409,
+ 224, 411, 412, 409, 410, 413, 0, 414,
+ 415, 0, 416, 0, 417, 417, 218, 418,
+ 418, 417, 416, 0, 419, 419, 224, 419,
+ 0, 420, 420, 421, 0, 421, 0, 417,
+ 417, 218, 417, 421, 0, 417, 417, 218,
+ 416, 418, 418, 417, 415, 0, 411, 411,
+ 410, 410, 412, 411, 413, 0, 422, 422,
+ 423, 0, 423, 0, 404, 404, 218, 406,
+ 407, 404, 405, 423, 0, 404, 404, 218,
+ 406, 403, 408, 408, 404, 405, 402, 0,
+ 424, 0, 425, 0, 426, 427, 0, 426,
+ 426, 428, 426, 0, 428, 428, 429, 429,
+ 430, 428, 431, 0, 432, 433, 0, 434,
+ 0, 435, 435, 288, 436, 436, 435, 434,
+ 0, 437, 437, 291, 437, 0, 438, 438,
+ 439, 0, 439, 0, 435, 435, 288, 435,
+ 439, 0, 435, 435, 288, 434, 436, 436,
+ 435, 433, 0, 427, 427, 440, 427, 0,
+ 440, 440, 441, 441, 442, 440, 443, 0,
+ 444, 445, 0, 446, 0, 447, 447, 302,
+ 448, 448, 447, 446, 0, 449, 449, 305,
+ 449, 0, 450, 450, 451, 0, 451, 0,
+ 447, 447, 302, 447, 451, 0, 447, 447,
+ 302, 446, 448, 448, 447, 445, 0, 452,
+ 0, 453, 0, 454, 0, 455, 0, 456,
+ 0, 457, 0, 458, 0, 459, 0, 459,
+ 459, 460, 459, 0, 460, 460, 461, 461,
+ 462, 460, 463, 0, 464, 465, 0, 466,
+ 0, 467, 467, 245, 469, 470, 471, 471,
+ 467, 468, 466, 0, 472, 472, 251, 474,
+ 475, 472, 473, 476, 0, 477, 478, 0,
+ 479, 0, 480, 480, 245, 481, 481, 480,
+ 479, 0, 482, 482, 251, 482, 0, 483,
+ 483, 484, 0, 484, 0, 480, 480, 245,
+ 480, 484, 0, 480, 480, 245, 479, 481,
+ 481, 480, 478, 0, 474, 474, 473, 473,
+ 475, 474, 476, 0, 485, 485, 486, 0,
+ 486, 0, 467, 467, 245, 469, 470, 467,
+ 468, 486, 0, 467, 467, 245, 469, 466,
+ 471, 471, 467, 468, 465, 0, 487, 487,
+ 489, 490, 491, 492, 487, 488, 487, 487,
+ 489, 490, 491, 492, 487, 0, 494, 494,
+ 495, 496, 497, 498, 499, 494, 493, 501,
+ 501, 84, 85, 86, 87, 88, 501, 500,
+ 503, 503, 504, 505, 506, 507, 508, 503,
+ 502, 510, 510, 511, 512, 513, 514, 515,
+ 510, 509, 517, 517, 518, 519, 520, 521,
+ 522, 517, 516, 524, 524, 525, 526, 527,
+ 528, 529, 524, 523, 531, 531, 532, 533,
+ 534, 535, 536, 531, 530, 0
+};
+
+static const short _svg_transform_trans_targs[] = {
+ 334, 2, 3, 4, 5, 6, 7, 8,
+ 9, 227, 9, 227, 10, 11, 12, 223,
+ 13, 224, 11, 12, 223, 13, 222, 13,
+ 222, 14, 15, 16, 218, 17, 219, 15,
+ 16, 218, 17, 217, 17, 217, 18, 19,
+ 20, 213, 21, 214, 19, 20, 213, 21,
+ 212, 21, 212, 22, 23, 24, 208, 25,
+ 209, 23, 24, 208, 25, 207, 25, 207,
+ 26, 27, 28, 203, 29, 204, 27, 28,
+ 203, 29, 202, 29, 202, 30, 31, 336,
+ 199, 31, 336, 334, 32, 33, 93, 104,
+ 114, 34, 35, 36, 37, 38, 39, 40,
+ 41, 92, 41, 92, 42, 43, 44, 88,
+ 45, 89, 43, 44, 88, 45, 87, 45,
+ 87, 46, 47, 48, 83, 49, 84, 47,
+ 48, 83, 49, 82, 49, 82, 50, 51,
+ 52, 78, 53, 79, 51, 52, 78, 53,
+ 77, 53, 77, 54, 55, 56, 73, 57,
+ 74, 55, 56, 73, 57, 72, 57, 72,
+ 58, 59, 60, 68, 61, 69, 59, 60,
+ 68, 61, 67, 61, 67, 62, 63, 64,
+ 63, 65, 66, 70, 71, 75, 76, 80,
+ 81, 85, 86, 90, 91, 94, 95, 96,
+ 97, 98, 99, 100, 101, 198, 101, 198,
+ 102, 103, 338, 177, 194, 178, 195, 103,
+ 338, 177, 194, 178, 193, 105, 154, 106,
+ 107, 108, 109, 110, 111, 153, 111, 153,
+ 112, 113, 339, 141, 149, 142, 150, 113,
+ 339, 141, 149, 142, 148, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125,
+ 140, 125, 140, 126, 127, 340, 128, 136,
+ 129, 137, 127, 340, 128, 136, 129, 135,
+ 129, 135, 130, 131, 132, 131, 133, 134,
+ 138, 139, 142, 148, 143, 144, 145, 144,
+ 146, 147, 151, 152, 155, 156, 157, 167,
+ 158, 159, 160, 166, 160, 166, 161, 162,
+ 341, 163, 162, 341, 164, 165, 168, 169,
+ 170, 176, 170, 176, 171, 172, 342, 173,
+ 172, 342, 174, 175, 178, 193, 179, 180,
+ 181, 189, 182, 190, 180, 181, 189, 182,
+ 188, 182, 188, 183, 184, 185, 184, 186,
+ 187, 191, 192, 196, 197, 200, 201, 205,
+ 206, 210, 211, 215, 216, 220, 221, 225,
+ 226, 229, 230, 231, 232, 233, 234, 235,
+ 236, 260, 236, 260, 237, 238, 239, 256,
+ 240, 257, 238, 239, 256, 240, 255, 240,
+ 255, 241, 242, 243, 251, 244, 252, 242,
+ 243, 251, 244, 250, 244, 250, 245, 246,
+ 247, 246, 248, 249, 253, 254, 258, 259,
+ 262, 284, 263, 264, 265, 266, 267, 268,
+ 283, 268, 283, 269, 270, 271, 279, 272,
+ 280, 270, 271, 279, 272, 278, 272, 278,
+ 273, 274, 275, 274, 276, 277, 281, 282,
+ 285, 286, 287, 297, 288, 289, 290, 296,
+ 290, 296, 291, 292, 293, 292, 294, 295,
+ 298, 299, 300, 306, 300, 306, 301, 302,
+ 303, 302, 304, 305, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 318, 333,
+ 318, 333, 319, 320, 321, 329, 322, 330,
+ 320, 321, 329, 322, 328, 322, 328, 323,
+ 324, 325, 324, 326, 327, 331, 332, 335,
+ 0, 1, 228, 261, 307, 334, 337, 32,
+ 33, 93, 104, 114, 334, 337, 334, 337,
+ 32, 33, 93, 104, 114, 334, 337, 32,
+ 33, 93, 104, 114, 334, 337, 32, 33,
+ 93, 104, 114, 334, 337, 32, 33, 93,
+ 104, 114, 334, 337, 32, 33, 93, 104,
+ 114
+};
+
+static const char _svg_transform_trans_actions[] = {
+ 13, 0, 0, 0, 0, 0, 0, 3,
+ 3, 3, 0, 0, 0, 1, 15, 1,
+ 15, 0, 0, 3, 0, 3, 3, 0,
+ 0, 0, 1, 15, 1, 15, 0, 0,
+ 3, 0, 3, 3, 0, 0, 0, 1,
+ 15, 1, 15, 0, 0, 3, 0, 3,
+ 3, 0, 0, 0, 1, 15, 1, 15,
+ 0, 0, 3, 0, 3, 3, 0, 0,
+ 0, 1, 15, 1, 15, 0, 0, 3,
+ 0, 3, 3, 0, 0, 0, 1, 39,
+ 0, 0, 7, 11, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3,
+ 3, 3, 0, 0, 0, 1, 15, 1,
+ 15, 0, 0, 3, 0, 3, 3, 0,
+ 0, 0, 1, 15, 1, 15, 0, 0,
+ 3, 0, 3, 3, 0, 0, 0, 1,
+ 15, 1, 15, 0, 0, 3, 0, 3,
+ 3, 0, 0, 0, 1, 15, 1, 15,
+ 0, 0, 3, 0, 3, 3, 0, 0,
+ 0, 1, 15, 1, 15, 0, 0, 3,
+ 0, 3, 3, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 3, 3, 0, 0,
+ 0, 1, 39, 15, 1, 15, 0, 0,
+ 7, 3, 0, 3, 3, 0, 0, 0,
+ 0, 0, 0, 3, 3, 3, 0, 0,
+ 0, 1, 39, 15, 1, 15, 0, 0,
+ 7, 3, 0, 3, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 3,
+ 3, 0, 0, 0, 1, 39, 15, 1,
+ 15, 0, 0, 7, 3, 0, 3, 3,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 3, 3, 0, 0, 0, 1,
+ 39, 0, 0, 7, 0, 0, 0, 3,
+ 3, 3, 0, 0, 0, 1, 39, 0,
+ 0, 7, 0, 0, 0, 0, 0, 1,
+ 15, 1, 15, 0, 0, 3, 0, 3,
+ 3, 0, 0, 0, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3,
+ 3, 3, 0, 0, 0, 1, 15, 1,
+ 15, 0, 0, 3, 0, 3, 3, 0,
+ 0, 0, 1, 15, 1, 15, 0, 0,
+ 3, 0, 3, 3, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 3,
+ 3, 0, 0, 0, 1, 15, 1, 15,
+ 0, 0, 3, 0, 3, 3, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 3, 3,
+ 0, 0, 0, 1, 0, 0, 0, 0,
+ 0, 3, 3, 3, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 3, 3,
+ 0, 0, 0, 1, 15, 1, 15, 0,
+ 0, 3, 0, 3, 3, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 42,
+ 0, 0, 0, 0, 0, 65, 89, 33,
+ 33, 33, 33, 33, 9, 7, 53, 77,
+ 24, 24, 24, 24, 24, 49, 73, 21,
+ 21, 21, 21, 21, 45, 69, 18, 18,
+ 18, 18, 18, 57, 81, 27, 27, 27,
+ 27, 27, 61, 85, 30, 30, 30, 30,
+ 30
+};
+
+static const char _svg_transform_to_state_actions[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 36, 0,
+ 0, 0, 0, 0, 0, 0, 0
+};
+
+static const char _svg_transform_from_state_actions[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0
+};
+
+static const short _svg_transform_eof_trans[] = {
+ 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 84,
+ 84, 84, 84, 84, 84, 84, 84, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 1,
+ 494, 501, 503, 510, 517, 524, 531
+};
+
+static const int svg_transform_start = 334;
+static const int svg_transform_first_final = 334;
+
+static const int svg_transform_en_main = 334;
+
+
+#line 28 "svg-affine-parser.rl"
+
+
+// https://www.w3.org/TR/css-transforms-1/#svg-syntax
+bool sp_svg_transform_read(gchar const *str, Geom::Affine *transform)
+{
+ if (str == nullptr)
+ return false;
+
+ std::vector<double> params;
+ Geom::Affine final_transform (Geom::identity());
+ *transform = final_transform;
+ Geom::Affine tmp_transform (Geom::identity());
+ int cs;
+ const char *p = str;
+ const char *pe = p + strlen(p) + 1;
+ const char *eof = pe;
+ char const *start_num = 0;
+ char const *ts = p;
+ char const *te = pe;
+ int act = 0;
+ if (pe == p+1) return true; // ""
+
+
+#line 1023 "svg-affine-parser.cpp"
+ {
+ cs = svg_transform_start;
+ ts = 0;
+ te = 0;
+ act = 0;
+ }
+
+#line 1031 "svg-affine-parser.cpp"
+ {
+ int _klen;
+ unsigned int _trans;
+ const char *_acts;
+ unsigned int _nacts;
+ const char *_keys;
+
+ if ( p == pe )
+ goto _test_eof;
+ if ( cs == 0 )
+ goto _out;
+_resume:
+ _acts = _svg_transform_actions + _svg_transform_from_state_actions[cs];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 ) {
+ switch ( *_acts++ ) {
+ case 11:
+#line 1 "NONE"
+ {ts = p;}
+ break;
+#line 1052 "svg-affine-parser.cpp"
+ }
+ }
+
+ _keys = _svg_transform_trans_keys + _svg_transform_key_offsets[cs];
+ _trans = _svg_transform_index_offsets[cs];
+
+ _klen = _svg_transform_single_lengths[cs];
+ if ( _klen > 0 ) {
+ const char *_lower = _keys;
+ const char *_mid;
+ const char *_upper = _keys + _klen - 1;
+ while (true) {
+ if ( _upper < _lower )
+ break;
+
+ _mid = _lower + ((_upper-_lower) >> 1);
+ if ( (*p) < *_mid )
+ _upper = _mid - 1;
+ else if ( (*p) > *_mid )
+ _lower = _mid + 1;
+ else {
+ _trans += (unsigned int)(_mid - _keys);
+ goto _match;
+ }
+ }
+ _keys += _klen;
+ _trans += _klen;
+ }
+
+ _klen = _svg_transform_range_lengths[cs];
+ if ( _klen > 0 ) {
+ const char *_lower = _keys;
+ const char *_mid;
+ const char *_upper = _keys + (_klen<<1) - 2;
+ while (true) {
+ if ( _upper < _lower )
+ break;
+
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1);
+ if ( (*p) < _mid[0] )
+ _upper = _mid - 2;
+ else if ( (*p) > _mid[1] )
+ _lower = _mid + 2;
+ else {
+ _trans += (unsigned int)((_mid - _keys)>>1);
+ goto _match;
+ }
+ }
+ _trans += _klen;
+ }
+
+_match:
+ _trans = _svg_transform_indicies[_trans];
+_eof_trans:
+ cs = _svg_transform_trans_targs[_trans];
+
+ if ( _svg_transform_trans_actions[_trans] == 0 )
+ goto _again;
+
+ _acts = _svg_transform_actions + _svg_transform_trans_actions[_trans];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 )
+ {
+ switch ( *_acts++ )
+ {
+ case 0:
+#line 53 "svg-affine-parser.rl"
+ {
+ std::string buf(start_num, p);
+ params.push_back(g_ascii_strtod(buf.c_str(), NULL));
+ }
+ break;
+ case 1:
+#line 58 "svg-affine-parser.rl"
+ { tmp_transform = Geom::Translate(params[0], params.size() == 1 ? 0 : params[1]); }
+ break;
+ case 2:
+#line 59 "svg-affine-parser.rl"
+ { tmp_transform = Geom::Scale(params[0], params.size() == 1 ? params[0] : params[1]); }
+ break;
+ case 3:
+#line 60 "svg-affine-parser.rl"
+ {
+ if (params.size() == 1)
+ tmp_transform = Geom::Rotate(Geom::rad_from_deg(params[0]));
+ else {
+ tmp_transform = Geom::Translate(-params[1], -params[2]) *
+ Geom::Rotate(Geom::rad_from_deg(params[0])) *
+ Geom::Translate(params[1], params[2]);
+ }
+ }
+ break;
+ case 4:
+#line 69 "svg-affine-parser.rl"
+ { tmp_transform = Geom::Affine(1, 0, tan(params[0] * M_PI / 180.0), 1, 0, 0); }
+ break;
+ case 5:
+#line 70 "svg-affine-parser.rl"
+ { tmp_transform = Geom::Affine(1, tan(params[0] * M_PI / 180.0), 0, 1, 0, 0); }
+ break;
+ case 6:
+#line 71 "svg-affine-parser.rl"
+ { tmp_transform = Geom::Affine(params[0], params[1], params[2], params[3], params[4], params[5]);}
+ break;
+ case 7:
+#line 72 "svg-affine-parser.rl"
+ {params.clear(); final_transform = tmp_transform * final_transform ;}
+ break;
+ case 8:
+#line 87 "svg-affine-parser.rl"
+ {start_num = p;}
+ break;
+ case 12:
+#line 1 "NONE"
+ {te = p+1;}
+ break;
+ case 13:
+#line 73 "svg-affine-parser.rl"
+ {act = 1;}
+ break;
+ case 14:
+#line 73 "svg-affine-parser.rl"
+ {te = p;p--;{ *transform = final_transform; /*printf("%p %p %p %p
+%d\n",p, pe, ts, te, cs);*/ return (te+1 == pe);}}
+ break;
+ case 15:
+#line 73 "svg-affine-parser.rl"
+ {{p = ((te))-1;}{ *transform = final_transform; /*printf("%p %p %p %p
+%d\n",p, pe, ts, te, cs);*/ return (te+1 == pe);}}
+ break;
+ case 16:
+#line 1 "NONE"
+ { switch( act ) {
+ case 0:
+ {{cs = 0;goto _again;}}
+ break;
+ case 1:
+ {{p = ((te))-1;} *transform = final_transform; /*printf("%p %p %p %p
+%d\n",p, pe, ts, te, cs);*/ return (te+1 == pe);}
+ break;
+ }
+ }
+ break;
+#line 1196 "svg-affine-parser.cpp"
+ }
+ }
+
+_again:
+ _acts = _svg_transform_actions + _svg_transform_to_state_actions[cs];
+ _nacts = (unsigned int) *_acts++;
+ while ( _nacts-- > 0 ) {
+ switch ( *_acts++ ) {
+ case 9:
+#line 1 "NONE"
+ {ts = 0;}
+ break;
+ case 10:
+#line 1 "NONE"
+ {act = 0;}
+ break;
+#line 1213 "svg-affine-parser.cpp"
+ }
+ }
+
+ if ( cs == 0 )
+ goto _out;
+ if ( ++p != pe )
+ goto _resume;
+ _test_eof: {}
+ if ( p == eof )
+ {
+ if ( _svg_transform_eof_trans[cs] > 0 ) {
+ _trans = _svg_transform_eof_trans[cs] - 1;
+ goto _eof_trans;
+ }
+ }
+
+ _out: {}
+ }
+
+#line 117 "svg-affine-parser.rl"
+
+ g_warning("could not parse transform attribute");
+
+ return false;
+}
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=ragel:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :