Mercurial > octave
annotate src/octave-qsvghandler.h @ 31210:9ad55d2e1bbf stable
Make sure we don't pass short 8.3 path to latex on Windows (bug #62779).
* latex-text-renderer.cc (latex_renderer::write_tex_file): On Windows, use
canonicalized path of temporary directory.
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Sun, 28 Aug 2022 22:44:49 +0200 |
parents | 78f42413e20f |
children | 81de46cd091b |
rev | line source |
---|---|
29519
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
1 /**************************************************************************** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
2 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
3 ** Copyright (C) 2016 The Qt Company Ltd. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
4 ** Contact: https://www.qt.io/licensing/ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
5 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
6 ** This file is part of the Qt SVG module of the Qt Toolkit. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
7 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
8 ** $QT_BEGIN_LICENSE:LGPL$ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
9 ** Commercial License Usage |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
10 ** Licensees holding valid commercial Qt licenses may use this file in |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
11 ** accordance with the commercial license agreement provided with the |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
12 ** Software or, alternatively, in accordance with the terms contained in |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
13 ** a written agreement between you and The Qt Company. For licensing terms |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
14 ** and conditions see https://www.qt.io/terms-conditions. For further |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
15 ** information use the contact form at https://www.qt.io/contact-us. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
16 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
17 ** GNU Lesser General Public License Usage |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
18 ** Alternatively, this file may be used under the terms of the GNU Lesser |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
19 ** General Public License version 3 as published by the Free Software |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
20 ** Foundation and appearing in the file LICENSE.LGPL3 included in the |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
21 ** packaging of this file. Please review the following information to |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
22 ** ensure the GNU Lesser General Public License version 3 requirements |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
23 ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
24 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
25 ** GNU General Public License Usage |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
26 ** Alternatively, this file may be used under the terms of the GNU |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
27 ** General Public License version 2.0 or (at your option) the GNU General |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
28 ** Public license version 3 or any later version approved by the KDE Free |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
29 ** Qt Foundation. The licenses are as published by the Free Software |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
30 ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
31 ** included in the packaging of this file. Please review the following |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
32 ** information to ensure the GNU General Public License requirements will |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
33 ** be met: https://www.gnu.org/licenses/gpl-2.0.html and |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
34 ** https://www.gnu.org/licenses/gpl-3.0.html. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
35 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
36 ** $QT_END_LICENSE$ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
37 ** |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
38 ****************************************************************************/ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
39 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
40 // -------------------------------------------------------------------------- |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
41 // Build a QPainterPath from the "d" attribute of a path element |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
42 // These functions are extracted from Qt-5.12 sources (qtsvghandler.cpp) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
43 // Modifications: |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
44 // * use static_cast<qreal> to avoid old style cast warning. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
45 // -------------------------------------------------------------------------- |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
46 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
47 #include <QPainterPath> |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
48 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
49 static inline bool isDigit(ushort ch) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
50 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
51 static quint16 magic = 0x3ff; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
52 return ((ch >> 4) == 3) && (magic >> (ch & 15)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
53 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
54 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
55 static qreal toDouble(const QChar *&str) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
56 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
57 const int maxLen = 255;//technically doubles can go til 308+ but whatever |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
58 char temp[maxLen+1]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
59 int pos = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
60 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
61 if (*str == QLatin1Char('-')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
62 temp[pos++] = '-'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
63 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
64 } else if (*str == QLatin1Char('+')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
65 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
66 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
67 while (isDigit(str->unicode()) && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
68 temp[pos++] = str->toLatin1(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
69 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
70 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
71 if (*str == QLatin1Char('.') && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
72 temp[pos++] = '.'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
73 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
74 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
75 while (isDigit(str->unicode()) && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
76 temp[pos++] = str->toLatin1(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
77 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
78 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
79 bool exponent = false; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
80 if ((*str == QLatin1Char('e') || *str == QLatin1Char('E')) && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
81 exponent = true; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
82 temp[pos++] = 'e'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
83 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
84 if ((*str == QLatin1Char('-') || *str == QLatin1Char('+')) && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
85 temp[pos++] = str->toLatin1(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
86 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
87 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
88 while (isDigit(str->unicode()) && pos < maxLen) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
89 temp[pos++] = str->toLatin1(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
90 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
91 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
92 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
93 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
94 temp[pos] = '\0'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
95 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
96 qreal val; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
97 if (!exponent && pos < 10) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
98 int ival = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
99 const char *t = temp; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
100 bool neg = false; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
101 if(*t == '-') { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
102 neg = true; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
103 ++t; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
104 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
105 while(*t && *t != '.') { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
106 ival *= 10; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
107 ival += (*t) - '0'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
108 ++t; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
109 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
110 if(*t == '.') { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
111 ++t; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
112 int div = 1; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
113 while(*t) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
114 ival *= 10; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
115 ival += (*t) - '0'; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
116 div *= 10; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
117 ++t; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
118 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
119 val = static_cast<qreal> (ival)/static_cast<qreal> (div); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
120 } else { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
121 val = ival; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
122 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
123 if (neg) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
124 val = -val; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
125 } else { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
126 val = QByteArray::fromRawData(temp, pos).toDouble(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
127 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
128 return val; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
129 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
130 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
131 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
132 static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
133 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
134 while (str->isSpace()) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
135 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
136 while (isDigit(str->unicode()) || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
137 *str == QLatin1Char('-') || *str == QLatin1Char('+') || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
138 *str == QLatin1Char('.')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
139 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
140 points.append(toDouble(str)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
141 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
142 while (str->isSpace()) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
143 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
144 if (*str == QLatin1Char(',')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
145 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
146 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
147 //eat the rest of space |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
148 while (str->isSpace()) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
149 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
150 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
151 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
152 static void pathArcSegment(QPainterPath &path, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
153 qreal xc, qreal yc, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
154 qreal th0, qreal th1, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
155 qreal rx, qreal ry, qreal xAxisRotation) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
156 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
157 qreal sinTh, cosTh; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
158 qreal a00, a01, a10, a11; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
159 qreal x1, y1, x2, y2, x3, y3; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
160 qreal t; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
161 qreal thHalf; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
162 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
163 sinTh = qSin(xAxisRotation * (3.141592653589793 / 180.0)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
164 cosTh = qCos(xAxisRotation * (3.141592653589793 / 180.0)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
165 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
166 a00 = cosTh * rx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
167 a01 = -sinTh * ry; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
168 a10 = sinTh * rx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
169 a11 = cosTh * ry; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
170 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
171 thHalf = 0.5 * (th1 - th0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
172 t = (8.0 / 3.0) * qSin(thHalf * 0.5) * qSin(thHalf * 0.5) / qSin(thHalf); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
173 x1 = xc + qCos(th0) - t * qSin(th0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
174 y1 = yc + qSin(th0) + t * qCos(th0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
175 x3 = xc + qCos(th1); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
176 y3 = yc + qSin(th1); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
177 x2 = x3 + t * qSin(th1); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
178 y2 = y3 - t * qCos(th1); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
179 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
180 path.cubicTo(a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
181 a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
182 a00 * x3 + a01 * y3, a10 * x3 + a11 * y3); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
183 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
184 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
185 // the arc handling code underneath is from XSVG (BSD license) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
186 /* |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
187 * Copyright 2002 USC/Information Sciences Institute |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
188 * |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
189 * Permission to use, copy, modify, distribute, and sell this software |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
190 * and its documentation for any purpose is hereby granted without |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
191 * fee, provided that the above copyright notice appear in all copies |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
192 * and that both that copyright notice and this permission notice |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
193 * appear in supporting documentation, and that the name of |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
194 * Information Sciences Institute not be used in advertising or |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
195 * publicity pertaining to distribution of the software without |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
196 * specific, written prior permission. Information Sciences Institute |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
197 * makes no representations about the suitability of this software for |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
198 * any purpose. It is provided "as is" without express or implied |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
199 * warranty. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
200 * |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
201 * INFORMATION SCIENCES INSTITUTE DISCLAIMS ALL WARRANTIES WITH REGARD |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
202 * TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
203 * MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL INFORMATION SCIENCES |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
204 * INSTITUTE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
205 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
206 * OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
207 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
208 * PERFORMANCE OF THIS SOFTWARE. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
209 * |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
210 */ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
211 static void pathArc(QPainterPath &path, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
212 qreal rx, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
213 qreal ry, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
214 qreal x_axis_rotation, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
215 int large_arc_flag, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
216 int sweep_flag, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
217 qreal x, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
218 qreal y, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
219 qreal curx, qreal cury) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
220 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
221 qreal sin_th, cos_th; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
222 qreal a00, a01, a10, a11; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
223 qreal x0, y0, x1, y1, xc, yc; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
224 qreal d, sfactor, sfactor_sq; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
225 qreal th0, th1, th_arc; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
226 int i, n_segs; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
227 qreal dx, dy, dx1, dy1, Pr1, Pr2, Px, Py, check; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
228 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
229 rx = qAbs(rx); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
230 ry = qAbs(ry); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
231 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
232 sin_th = qSin(x_axis_rotation * (3.141592653589793 / 180.0)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
233 cos_th = qCos(x_axis_rotation * (3.141592653589793 / 180.0)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
234 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
235 dx = (curx - x) / 2.0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
236 dy = (cury - y) / 2.0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
237 dx1 = cos_th * dx + sin_th * dy; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
238 dy1 = -sin_th * dx + cos_th * dy; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
239 Pr1 = rx * rx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
240 Pr2 = ry * ry; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
241 Px = dx1 * dx1; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
242 Py = dy1 * dy1; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
243 /* Spec : check if radii are large enough */ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
244 check = Px / Pr1 + Py / Pr2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
245 if (check > 1) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
246 rx = rx * qSqrt(check); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
247 ry = ry * qSqrt(check); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
248 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
249 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
250 a00 = cos_th / rx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
251 a01 = sin_th / rx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
252 a10 = -sin_th / ry; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
253 a11 = cos_th / ry; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
254 x0 = a00 * curx + a01 * cury; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
255 y0 = a10 * curx + a11 * cury; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
256 x1 = a00 * x + a01 * y; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
257 y1 = a10 * x + a11 * y; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
258 /* (x0, y0) is current point in transformed coordinate space. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
259 (x1, y1) is new point in transformed coordinate space. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
260 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
261 The arc fits a unit-radius circle in this space. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
262 */ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
263 d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
264 sfactor_sq = 1.0 / d - 0.25; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
265 if (sfactor_sq < 0) sfactor_sq = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
266 sfactor = qSqrt(sfactor_sq); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
267 if (sweep_flag == large_arc_flag) sfactor = -sfactor; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
268 xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
269 yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
270 /* (xc, yc) is center of the circle. */ |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
271 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
272 th0 = qAtan2(y0 - yc, x0 - xc); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
273 th1 = qAtan2(y1 - yc, x1 - xc); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
274 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
275 th_arc = th1 - th0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
276 if (th_arc < 0 && sweep_flag) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
277 th_arc += 2 * 3.141592653589793; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
278 else if (th_arc > 0 && !sweep_flag) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
279 th_arc -= 2 * 3.141592653589793; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
280 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
281 n_segs = qCeil(qAbs(th_arc / (3.141592653589793 * 0.5 + 0.001))); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
282 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
283 for (i = 0; i < n_segs; i++) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
284 pathArcSegment(path, xc, yc, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
285 th0 + i * th_arc / n_segs, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
286 th0 + (i + 1) * th_arc / n_segs, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
287 rx, ry, x_axis_rotation); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
288 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
289 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
290 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
291 static QTransform parseTransformationMatrix(const QStringRef &value) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
292 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
293 if (value.isEmpty()) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
294 return QTransform(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
295 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
296 QTransform matrix; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
297 const QChar *str = value.constData(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
298 const QChar *end = str + value.length(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
299 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
300 while (str < end) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
301 if (str->isSpace() || *str == QLatin1Char(',')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
302 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
303 continue; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
304 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
305 enum State { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
306 Matrix, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
307 Translate, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
308 Rotate, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
309 Scale, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
310 SkewX, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
311 SkewY |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
312 }; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
313 State state = Matrix; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
314 if (*str == QLatin1Char('m')) { //matrix |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
315 const char *ident = "atrix"; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
316 for (int i = 0; i < 5; ++i) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
317 if (*(++str) != QLatin1Char(ident[i])) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
318 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
319 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
320 state = Matrix; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
321 } else if (*str == QLatin1Char('t')) { //translate |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
322 const char *ident = "ranslate"; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
323 for (int i = 0; i < 8; ++i) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
324 if (*(++str) != QLatin1Char(ident[i])) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
325 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
326 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
327 state = Translate; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
328 } else if (*str == QLatin1Char('r')) { //rotate |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
329 const char *ident = "otate"; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
330 for (int i = 0; i < 5; ++i) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
331 if (*(++str) != QLatin1Char(ident[i])) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
332 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
333 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
334 state = Rotate; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
335 } else if (*str == QLatin1Char('s')) { //scale, skewX, skewY |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
336 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
337 if (*str == QLatin1Char('c')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
338 const char *ident = "ale"; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
339 for (int i = 0; i < 3; ++i) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
340 if (*(++str) != QLatin1Char(ident[i])) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
341 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
342 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
343 state = Scale; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
344 } else if (*str == QLatin1Char('k')) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
345 if (*(++str) != QLatin1Char('e')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
346 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
347 if (*(++str) != QLatin1Char('w')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
348 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
349 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
350 if (*str == QLatin1Char('X')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
351 state = SkewX; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
352 else if (*str == QLatin1Char('Y')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
353 state = SkewY; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
354 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
355 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
356 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
357 } else { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
358 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
359 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
360 } else { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
361 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
362 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
363 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
364 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
365 while (str < end && str->isSpace()) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
366 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
367 if (*str != QLatin1Char('(')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
368 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
369 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
370 QVarLengthArray<qreal, 8> points; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
371 parseNumbersArray(str, points); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
372 if (*str != QLatin1Char(')')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
373 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
374 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
375 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
376 if(state == Matrix) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
377 if(points.count() != 6) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
378 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
379 matrix = QTransform(points[0], points[1], |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
380 points[2], points[3], |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
381 points[4], points[5]) * matrix; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
382 } else if (state == Translate) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
383 if (points.count() == 1) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
384 matrix.translate(points[0], 0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
385 else if (points.count() == 2) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
386 matrix.translate(points[0], points[1]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
387 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
388 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
389 } else if (state == Rotate) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
390 if(points.count() == 1) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
391 matrix.rotate(points[0]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
392 } else if (points.count() == 3) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
393 matrix.translate(points[1], points[2]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
394 matrix.rotate(points[0]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
395 matrix.translate(-points[1], -points[2]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
396 } else { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
397 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
398 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
399 } else if (state == Scale) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
400 if (points.count() < 1 || points.count() > 2) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
401 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
402 qreal sx = points[0]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
403 qreal sy = sx; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
404 if(points.count() == 2) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
405 sy = points[1]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
406 matrix.scale(sx, sy); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
407 } else if (state == SkewX) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
408 if (points.count() != 1) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
409 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
410 const qreal deg2rad = qreal(0.017453292519943295769); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
411 matrix.shear(qTan(points[0]*deg2rad), 0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
412 } else if (state == SkewY) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
413 if (points.count() != 1) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
414 goto error; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
415 const qreal deg2rad = qreal(0.017453292519943295769); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
416 matrix.shear(0, qTan(points[0]*deg2rad)); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
417 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
418 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
419 error: |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
420 return matrix; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
421 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
422 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
423 static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
424 { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
425 qreal x0 = 0, y0 = 0; // starting point |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
426 qreal x = 0, y = 0; // current point |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
427 char lastMode = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
428 QPointF ctrlPt; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
429 const QChar *str = dataStr.constData(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
430 const QChar *end = str + dataStr.size(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
431 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
432 while (str != end) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
433 while (str->isSpace() && (str + 1) != end) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
434 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
435 QChar pathElem = *str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
436 ++str; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
437 QChar endc = *end; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
438 *const_cast<QChar *>(end) = 0; // parseNumbersArray requires 0-termination that QStringRef cannot guarantee |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
439 QVarLengthArray<qreal, 8> arg; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
440 parseNumbersArray(str, arg); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
441 *const_cast<QChar *>(end) = endc; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
442 if (pathElem == QLatin1Char('z') || pathElem == QLatin1Char('Z')) |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
443 arg.append(0);//dummy |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
444 const qreal *num = arg.constData(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
445 int count = arg.count(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
446 while (count > 0) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
447 qreal offsetX = x; // correction offsets |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
448 qreal offsetY = y; // for relative commands |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
449 switch (pathElem.unicode()) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
450 case 'm': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
451 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
452 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
453 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
454 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
455 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
456 x = x0 = num[0] + offsetX; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
457 y = y0 = num[1] + offsetY; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
458 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
459 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
460 path.moveTo(x0, y0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
461 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
462 // As per 1.2 spec 8.3.2 The "moveto" commands |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
463 // If a 'moveto' is followed by multiple pairs of coordinates without explicit commands, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
464 // the subsequent pairs shall be treated as implicit 'lineto' commands. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
465 pathElem = QLatin1Char('l'); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
466 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
467 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
468 case 'M': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
469 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
470 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
471 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
472 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
473 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
474 x = x0 = num[0]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
475 y = y0 = num[1]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
476 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
477 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
478 path.moveTo(x0, y0); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
479 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
480 // As per 1.2 spec 8.3.2 The "moveto" commands |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
481 // If a 'moveto' is followed by multiple pairs of coordinates without explicit commands, |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
482 // the subsequent pairs shall be treated as implicit 'lineto' commands. |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
483 pathElem = QLatin1Char('L'); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
484 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
485 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
486 case 'z': |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
487 case 'Z': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
488 x = x0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
489 y = y0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
490 count--; // skip dummy |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
491 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
492 path.closeSubpath(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
493 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
494 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
495 case 'l': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
496 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
497 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
498 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
499 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
500 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
501 x = num[0] + offsetX; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
502 y = num[1] + offsetY; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
503 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
504 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
505 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
506 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
507 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
508 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
509 case 'L': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
510 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
511 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
512 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
513 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
514 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
515 x = num[0]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
516 y = num[1]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
517 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
518 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
519 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
520 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
521 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
522 case 'h': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
523 x = num[0] + offsetX; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
524 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
525 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
526 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
527 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
528 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
529 case 'H': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
530 x = num[0]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
531 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
532 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
533 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
534 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
535 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
536 case 'v': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
537 y = num[0] + offsetY; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
538 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
539 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
540 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
541 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
542 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
543 case 'V': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
544 y = num[0]; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
545 num++; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
546 count--; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
547 path.lineTo(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
548 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
549 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
550 case 'c': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
551 if (count < 6) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
552 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
553 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
554 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
555 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
556 QPointF c1(num[0] + offsetX, num[1] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
557 QPointF c2(num[2] + offsetX, num[3] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
558 QPointF e(num[4] + offsetX, num[5] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
559 num += 6; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
560 count -= 6; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
561 path.cubicTo(c1, c2, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
562 ctrlPt = c2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
563 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
564 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
565 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
566 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
567 case 'C': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
568 if (count < 6) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
569 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
570 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
571 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
572 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
573 QPointF c1(num[0], num[1]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
574 QPointF c2(num[2], num[3]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
575 QPointF e(num[4], num[5]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
576 num += 6; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
577 count -= 6; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
578 path.cubicTo(c1, c2, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
579 ctrlPt = c2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
580 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
581 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
582 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
583 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
584 case 's': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
585 if (count < 4) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
586 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
587 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
588 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
589 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
590 QPointF c1; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
591 if (lastMode == 'c' || lastMode == 'C' || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
592 lastMode == 's' || lastMode == 'S') |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
593 c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
594 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
595 c1 = QPointF(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
596 QPointF c2(num[0] + offsetX, num[1] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
597 QPointF e(num[2] + offsetX, num[3] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
598 num += 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
599 count -= 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
600 path.cubicTo(c1, c2, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
601 ctrlPt = c2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
602 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
603 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
604 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
605 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
606 case 'S': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
607 if (count < 4) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
608 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
609 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
610 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
611 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
612 QPointF c1; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
613 if (lastMode == 'c' || lastMode == 'C' || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
614 lastMode == 's' || lastMode == 'S') |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
615 c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
616 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
617 c1 = QPointF(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
618 QPointF c2(num[0], num[1]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
619 QPointF e(num[2], num[3]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
620 num += 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
621 count -= 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
622 path.cubicTo(c1, c2, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
623 ctrlPt = c2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
624 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
625 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
626 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
627 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
628 case 'q': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
629 if (count < 4) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
630 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
631 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
632 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
633 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
634 QPointF c(num[0] + offsetX, num[1] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
635 QPointF e(num[2] + offsetX, num[3] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
636 num += 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
637 count -= 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
638 path.quadTo(c, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
639 ctrlPt = c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
640 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
641 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
642 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
643 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
644 case 'Q': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
645 if (count < 4) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
646 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
647 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
648 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
649 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
650 QPointF c(num[0], num[1]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
651 QPointF e(num[2], num[3]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
652 num += 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
653 count -= 4; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
654 path.quadTo(c, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
655 ctrlPt = c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
656 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
657 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
658 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
659 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
660 case 't': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
661 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
662 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
663 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
664 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
665 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
666 QPointF e(num[0] + offsetX, num[1] + offsetY); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
667 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
668 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
669 QPointF c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
670 if (lastMode == 'q' || lastMode == 'Q' || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
671 lastMode == 't' || lastMode == 'T') |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
672 c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
673 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
674 c = QPointF(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
675 path.quadTo(c, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
676 ctrlPt = c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
677 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
678 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
679 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
680 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
681 case 'T': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
682 if (count < 2) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
683 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
684 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
685 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
686 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
687 QPointF e(num[0], num[1]); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
688 num += 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
689 count -= 2; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
690 QPointF c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
691 if (lastMode == 'q' || lastMode == 'Q' || |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
692 lastMode == 't' || lastMode == 'T') |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
693 c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
694 else |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
695 c = QPointF(x, y); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
696 path.quadTo(c, e); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
697 ctrlPt = c; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
698 x = e.x(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
699 y = e.y(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
700 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
701 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
702 case 'a': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
703 if (count < 7) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
704 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
705 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
706 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
707 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
708 qreal rx = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
709 qreal ry = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
710 qreal xAxisRotation = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
711 qreal largeArcFlag = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
712 qreal sweepFlag = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
713 qreal ex = (*num++) + offsetX; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
714 qreal ey = (*num++) + offsetY; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
715 count -= 7; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
716 qreal curx = x; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
717 qreal cury = y; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
718 pathArc(path, rx, ry, xAxisRotation, int(largeArcFlag), |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
719 int(sweepFlag), ex, ey, curx, cury); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
720 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
721 x = ex; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
722 y = ey; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
723 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
724 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
725 case 'A': { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
726 if (count < 7) { |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
727 num += count; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
728 count = 0; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
729 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
730 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
731 qreal rx = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
732 qreal ry = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
733 qreal xAxisRotation = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
734 qreal largeArcFlag = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
735 qreal sweepFlag = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
736 qreal ex = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
737 qreal ey = (*num++); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
738 count -= 7; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
739 qreal curx = x; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
740 qreal cury = y; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
741 pathArc(path, rx, ry, xAxisRotation, int(largeArcFlag), |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
742 int(sweepFlag), ex, ey, curx, cury); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
743 |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
744 x = ex; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
745 y = ey; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
746 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
747 break; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
748 default: |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
749 return false; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
750 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
751 lastMode = pathElem.toLatin1(); |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
752 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
753 } |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
754 return true; |
78f42413e20f
octave-svgconvert: Don't use Qt's SVG module (bug #59546)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
diff
changeset
|
755 } |