Subversion Repositories Scribus

Rev

Rev 8337 | Rev 8455 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8196 avox 1
 
2
#include "saxiohelper.h"
8266 avox 3
#include "saxio.h"
8196 avox 4
#include "scfonts.h"
5
#include "fpointarray.h"
6
 
8266 avox 7
 
8
 
9
 
10
const Xml_string SaxIO::saxxDefaultElem("");
11
 
12
 
8390 avox 13
 
14
Xml_string mkXMLName(QString any)
15
{
16
        QString result("");
17
        for (unsigned int i=0; i < any.length(); ++i)
18
        {
19
                unsigned int ch = any[i].unicode();
20
                if (ch == ':' || ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
21
                        || (0xC0 <= ch && ch <= 0xD6) || (0xD8 <= ch && ch <= 0xF6)
22
                        || (0xF8 <= ch && ch <= 0x2FF) || (0x370 <= ch && ch <= 0x37D)
23
                        || (0x37F <= ch && ch <= 0x1FFF) || (0x200C <= ch && ch <= 0x200D)
24
                        || (0x2070 <= ch && ch <= 0x218F) || (0x2C00 <= ch && ch <= 0x2FEF)
25
                        || (0x3001 <= ch && ch <= 0xD7FF) || (0xF900 <= ch && ch <= 0xFDCF)
26
                        || (0xFDF0 <= ch && ch <= 0xFFFD) || ch > 0xFFFF
27
                        || (i > 0 && (ch == '-' || ch == '.' || ('0' <= ch && ch <= '9') || ch == 0xB7
28
                                                  || (0x300 <= ch && ch <= 0x36F) || (0x203F <= ch && ch <= 0x2040) )))
29
                {
30
                        result += ch;
31
                }
32
                else
33
                {
34
                        result += '_';
35
                        result += ('0' + ch >> 12 & 15);
36
                        result += ('0' + ch >>  8 & 15);
37
                        result += ('0' + ch >>  4 & 15);
38
                        result += ('0' + ch       & 15);
39
                }
40
        }
41
        return result;
42
}
43
 
44
/*
45
 NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D]
46
 | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
47
 NameChar          ::=          NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
48
*/
49
 
50
 
8227 avox 51
// FIXME: this is too Qt dependent
52
Xml_string toXMLString(unsigned int val)
53
{
54
        return QString::number(val);
55
}
8196 avox 56
 
8227 avox 57
unsigned int parseUInt(Xml_string str)
8196 avox 58
{
8227 avox 59
        return str.toUInt();
60
}
61
 
62
Xml_string toXMLString(int val)
63
{
8196 avox 64
        return QString::number(val);
65
}
66
 
67
 
8227 avox 68
int parseInt(Xml_string str)
8196 avox 69
{
8227 avox 70
        return str.toInt();
71
}
72
 
73
 
74
Xml_string toXMLString(unsigned long val)
75
{
8196 avox 76
        return QString::number(val);
77
}
78
 
8227 avox 79
unsigned long parseULong(Xml_string str)
80
{
81
        return str.toULong();
82
}
8196 avox 83
 
8227 avox 84
Xml_string toXMLString(long val)
8196 avox 85
{
86
        return QString::number(val);
87
}
88
 
89
 
8227 avox 90
long parseLong(Xml_string str)
8196 avox 91
{
8227 avox 92
        return str.toLong();
8196 avox 93
}
94
 
95
 
8227 avox 96
Xml_string toXMLString(double val)
8196 avox 97
{
8227 avox 98
        return QString::number(val);
8196 avox 99
}
100
 
101
 
8227 avox 102
double parseDouble(Xml_string str)
8196 avox 103
{
8227 avox 104
        return str.toDouble();
105
}
106
 
107
 
108
Xml_string toXMLString(float val)
109
{
110
        return QString::number(val);
111
}
112
 
113
 
114
float parseFloat(Xml_string str)
115
{
116
        return str.toFloat();
117
}
118
 
119
 
120
Xml_string toXMLString(bool what)
121
{
8196 avox 122
        return what? "yes" : "no";
123
}
124
 
8227 avox 125
 
126
bool parseBool(Xml_string str)
8196 avox 127
{
8227 avox 128
        return str == "yes";
8196 avox 129
}
8227 avox 130
 
131
 
132
Xml_string toXMLString(const Xml_string& val)
133
{
134
        return val;
135
}
136
 
137
 
8337 avox 138
Xml_string toXMLString(const QValueList<double>& doublelist)
139
{
140
        QString result = "";
141
        QValueList<double>::const_iterator dax;
142
        for (dax = doublelist.begin(); dax != doublelist.end(); ++dax)
143
                result += toXMLString(*dax) + " ";
144
        return result;
145
}
8227 avox 146
 
8337 avox 147
 
148
QValueList<double> parseDoubleList(Xml_string str)
149
{
150
        QStringList strlist = QStringList::split(' ', str);
151
        QValueList<double> result;
152
        for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
153
                result.append(parseDouble(*it));
154
        return result;
155
}
156
 
157
 
158
Xml_string toXMLString(const QValueList<int>& intlist)
159
{
160
        QString result = "";
161
        QValueList<int>::const_iterator dax;
162
        for (dax = intlist.begin(); dax != intlist.end(); ++dax)
163
                result += toXMLString(*dax) + " ";
164
        return result;
165
}
166
 
167
 
168
QValueList<int> parseIntList(Xml_string str)
169
{
170
        QStringList strlist = QStringList::split(' ', str);
171
        QValueList<int> result;
172
        for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
173
                result.append(parseInt(*it));
174
        return result;
175
}
176
 
177
 
178
QValueStack<int> parseIntStack(Xml_string str)
179
{
180
        QStringList strlist = QStringList::split(' ', str);
181
        QValueStack<int> result;
182
        for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
183
                result.append(parseInt(*it));
184
        return result;
185
}
186
 
187
 
8227 avox 188
// FIXME: the following should not be in desaxe:
189
Xml_string toXMLString(const ScFace& val)
190
{
191
        return val.scName();
192
}
193
 
194
 
195
Xml_string toXMLString(const FPointArray& path)
196
{
197
        return path.svgPath();
198
}