Scribus Developer Documentation - API
logo-pen

Scribus Developer Documentation - API

saxiohelper.cpp

Go to the documentation of this file.
00001 #include "saxiohelper.h"
00002 #include "saxio.h"
00003 #include "scfonts.h"
00004 #include "fpointarray.h"
00005 
00006 
00007 
00008 
00009 const Xml_string SaxIO::saxxDefaultElem("");
00010 
00011 
00012 
00013 Xml_string mkXMLName(const QString& any)
00014 {
00015     QString result("");
00016     for (int i=0; i < any.length(); ++i)
00017     {
00018         unsigned int ch = any[i].unicode();
00019         if (ch == ':' || ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z')
00020             || (0xC0 <= ch && ch <= 0xD6) || (0xD8 <= ch && ch <= 0xF6)
00021             || (0xF8 <= ch && ch <= 0x2FF) || (0x370 <= ch && ch <= 0x37D)
00022             || (0x37F <= ch && ch <= 0x1FFF) || (0x200C <= ch && ch <= 0x200D)
00023             || (0x2070 <= ch && ch <= 0x218F) || (0x2C00 <= ch && ch <= 0x2FEF)
00024             || (0x3001 <= ch && ch <= 0xD7FF) || (0xF900 <= ch && ch <= 0xFDCF)
00025             || (0xFDF0 <= ch && ch <= 0xFFFD) || ch > 0xFFFF
00026             || (i > 0 && (ch == '-' || ch == '.' || ('0' <= ch && ch <= '9') || ch == 0xB7
00027                           || (0x300 <= ch && ch <= 0x36F) || (0x203F <= ch && ch <= 0x2040) )))
00028         {
00029             result += ch;
00030         }
00031         else
00032         {
00033             result += '_';
00034             result += "0123456789ABCDEF"[(ch >> 12) & 15];
00035             result += "0123456789ABCDEF"[(ch >>  8) & 15];
00036             result += "0123456789ABCDEF"[(ch >>  4) & 15];
00037             result += "0123456789ABCDEF"[(ch      ) & 15];
00038         }
00039     }
00040     return result;
00041 }
00042 
00043 /*
00044  NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] 
00045  | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
00046  NameChar      ::=      NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
00047 */
00048 
00049 
00050 // FIXME: this is too Qt dependent
00051 Xml_string toXMLString(unsigned int val)
00052 {
00053     return QString::number(val);
00054 }
00055 
00056 unsigned int parseUInt(const Xml_string& str)
00057 {
00058     return str.toUInt();
00059 }
00060 
00061 Xml_string toXMLString(int val)
00062 {
00063     return QString::number(val);
00064 }
00065 
00066 
00067 int parseInt(const Xml_string& str)
00068 {
00069     return str.toInt();
00070 }
00071 
00072 
00073 Xml_string toXMLString(unsigned long val)
00074 {
00075     return QString::number(val);
00076 }
00077 
00078 unsigned long parseULong(const Xml_string& str)
00079 {
00080     return str.toULong();
00081 }
00082 
00083 Xml_string toXMLString(long val)
00084 {
00085     return QString::number(val);
00086 }
00087 
00088 
00089 long parseLong(const Xml_string& str)
00090 {
00091     return str.toLong();
00092 }
00093 
00094 
00095 Xml_string toXMLString(double val)
00096 {
00097     return QString::number(val);
00098 }
00099 
00100 
00101 double parseDouble(const Xml_string& str)
00102 {
00103     return str.toDouble();
00104 }
00105 
00106 
00107 Xml_string toXMLString(float val)
00108 {
00109     return QString::number(val);
00110 }
00111 
00112 
00113 float parseFloat(const Xml_string& str)
00114 {
00115     return str.toFloat();
00116 }
00117 
00118 
00119 Xml_string toXMLString(bool what)
00120 {
00121     return what? "yes" : "no";
00122 }
00123 
00124 
00125 bool parseBool(const Xml_string& str)
00126 {
00127     return str == "yes";
00128 }
00129 
00130 
00131 Xml_string toXMLString(const Xml_string& val)
00132 {
00133     return val;
00134 }
00135 
00136 
00137 Xml_string toXMLString(const QList<double>& doublelist)
00138 {
00139     QString result = "";
00140     QList<double>::const_iterator dax;
00141     for (dax = doublelist.begin(); dax != doublelist.end(); ++dax)
00142         result += toXMLString(*dax) + " ";
00143     return result;
00144 }
00145 
00146 
00147 QList<double> parseDoubleList(const Xml_string& str)
00148 {
00149     QStringList strlist = str.split(' ', QString::SkipEmptyParts);
00150     QList<double> result;
00151     for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
00152         result.append(parseDouble(*it));
00153     return result;
00154 }
00155 
00156 
00157 Xml_string toXMLString(const QList<int>& intlist)
00158 {
00159     QString result = "";
00160     QList<int>::const_iterator dax;
00161     for (dax = intlist.begin(); dax != intlist.end(); ++dax)
00162         result += toXMLString(*dax) + " ";
00163     return result;
00164 }
00165 
00166 
00167 QList<int> parseIntList(const Xml_string& str)
00168 {
00169     QStringList strlist = str.split(' ', QString::SkipEmptyParts);
00170     QList<int> result;
00171     for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
00172         result.append(parseInt(*it));
00173     return result;
00174 }
00175 
00176 
00177 QStack<int> parseIntStack(const Xml_string& str)
00178 {
00179     QStringList strlist = str.split(' ', QString::SkipEmptyParts);
00180     QStack<int> result;
00181     for (QStringList::iterator it=strlist.begin(); it != strlist.end(); ++it)
00182         result.append(parseInt(*it));
00183     return result;
00184 }
00185 
00186 
00187 Xml_string toXMLString(const QStringList& list)
00188 {
00189     QString result = "";
00190     QStringList::const_iterator dax;
00191     for (dax = list.begin(); dax != list.end(); ++dax)
00192         result += *dax + " ";
00193     return result;
00194 }
00195 
00196 
00197 QStringList parseStringList(const Xml_string&  str)
00198 {
00199     return str.split(' ', QString::SkipEmptyParts);
00200 }
00201 
00202 
00203 // FIXME: the following should not be in desaxe:
00204 Xml_string toXMLString(const ScFace& val)
00205 {
00206     return val.scName();
00207 }
00208 
00209 
00210 Xml_string toXMLString(const FPointArray& path)
00211 {
00212     return path.svgPath();
00213 }
Created with personalized Doxygen. This is documentation for GPL software Scribus - Open Source Desktop Publishing.