Rev 18491 | Rev 18752 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
13746 | jghali | 1 | /* |
2 | For general Scribus (>=1.3.2) copyright and licensing information please refer |
||
3 | to the COPYING file provided with the program. Following this notice may exist |
||
4 | a copyright and/or license notice that predates the release of Scribus 1.3.2 |
||
5 | for which a new license (GPL+exception) is in place. |
||
6 | */ |
||
7 | #include "scribus150format.h" |
||
8 | #include "scribus150formatimpl.h" |
||
9 | |||
14170 | jghali | 10 | #include <ctime> |
13746 | jghali | 11 | #include <memory> |
12 | |||
13 | #include "../../formatidlist.h" |
||
14 | #include "commonstrings.h" |
||
15 | #include "ui/missing.h" |
||
16 | #include "prefsmanager.h" |
||
16162 | fschmid | 17 | #include "resourcecollection.h" |
13746 | jghali | 18 | #include "scconfig.h" |
19 | #include "scpattern.h" |
||
20 | #include "scribusdoc.h" |
||
21 | #include "scribusview.h" |
||
22 | #include "hyphenator.h" |
||
17826 | craig | 23 | #include "notesstyles.h" |
17863 | jghali | 24 | #include "pageitem_arc.h" |
13746 | jghali | 25 | #include "pageitem_latexframe.h" |
17863 | jghali | 26 | #include "pageitem_noteframe.h" |
13839 | fschmid | 27 | #ifdef HAVE_OSG |
28 | #include "pageitem_osgframe.h" |
||
29 | #endif |
||
16191 | fschmid | 30 | #include "pageitem_regularpolygon.h" |
16311 | fschmid | 31 | #include "pageitem_spiral.h" |
16859 | craig | 32 | #include "pageitem_table.h" |
13746 | jghali | 33 | |
34 | #include "units.h" |
||
35 | #include "util.h" |
||
36 | #include "util_math.h" |
||
37 | #include "util_color.h" |
||
38 | #include "scgzfile.h" |
||
39 | #include <QCursor> |
||
40 | #include <QFileInfo> |
||
41 | #include <QList> |
||
42 | #include <QDataStream> |
||
43 | |||
44 | #include "scxmlstreamwriter.h" |
||
45 | |||
16162 | fschmid | 46 | QString Scribus150Format::saveElements(double xp, double yp, double wp, double hp, Selection* selection, QByteArray &prevData) |
47 | { |
||
48 | QString fileDir = QDir::homePath(); |
||
49 | QString documentStr; |
||
50 | documentStr.reserve(524288); |
||
51 | ScXmlStreamWriter writer(&documentStr); |
||
52 | writer.setAutoFormatting(true); |
||
17003 | fschmid | 53 | // writer.writeStartDocument(); |
16162 | fschmid | 54 | writer.writeStartElement("SCRIBUSELEMUTF8"); |
55 | writer.writeAttribute("XP", xp); |
||
56 | writer.writeAttribute("YP", yp); |
||
57 | writer.writeAttribute("W", wp); |
||
58 | writer.writeAttribute("H", hp); |
||
59 | writer.writeAttribute("COUNT", selection->count()); |
||
60 | writer.writeAttribute("Version", QString(VERSION)); |
||
61 | writer.writeAttribute("previewData", QString(prevData)); |
||
62 | writeColors(writer, true); |
||
63 | writeGradients(writer, true); |
||
64 | ResourceCollection lists; |
||
65 | QList<PageItem*> emG; |
||
17147 | fschmid | 66 | QList<PageItem*> emF; |
67 | emG.clear(); |
||
68 | emF.clear(); |
||
16162 | fschmid | 69 | for (int cor = 0; cor < selection->count(); ++cor) |
70 | { |
||
17147 | fschmid | 71 | PageItem *currItem = selection->itemAt(cor); |
72 | currItem->getNamedResources(lists); |
||
73 | emG.append(currItem); |
||
74 | if ((currItem->asTextFrame()) || (currItem->asPathText())) |
||
75 | { |
||
17826 | craig | 76 | //for notes frames text should not be saved |
77 | if (currItem->isNoteFrame()) |
||
78 | continue; |
||
17147 | fschmid | 79 | for (int e = currItem->firstInFrame(); e <= currItem->lastInFrame(); ++e) |
80 | { |
||
81 | uint chr = currItem->itemText.text(e).unicode(); |
||
82 | if (chr == 25) |
||
83 | { |
||
18524 | avox | 84 | if ((currItem->itemText.hasObject(e)) && (!emF.contains(currItem->itemText.object(e)))) |
85 | emF.append(currItem->itemText.object(e)); |
||
17147 | fschmid | 86 | } |
87 | } |
||
88 | } |
||
16162 | fschmid | 89 | } |
90 | QList<QString>::Iterator it; |
||
91 | QList<QString> names = lists.styleNames(); |
||
16396 | fschmid | 92 | QList<int> styleList = m_Doc->getSortedStyleList(); |
93 | for (int a = 0; a < styleList.count(); ++a) |
||
16162 | fschmid | 94 | { |
16396 | fschmid | 95 | if (names.contains(m_Doc->paragraphStyles()[styleList[a]].name())) |
96 | putPStyle(writer, m_Doc->paragraphStyles()[styleList[a]], "STYLE"); |
||
16162 | fschmid | 97 | } |
16396 | fschmid | 98 | // for (it = names.begin(); it != names.end(); ++it) |
99 | // { |
||
100 | // putPStyle(writer, m_Doc->paragraphStyles().get(*it), "STYLE"); |
||
101 | // } |
||
16162 | fschmid | 102 | names = lists.charStyleNames(); |
16396 | fschmid | 103 | styleList = m_Doc->getSortedCharStyleList(); |
104 | for (int a = 0; a < styleList.count(); ++a) |
||
16162 | fschmid | 105 | { |
16396 | fschmid | 106 | if (names.contains(m_Doc->charStyles()[styleList[a]].name())) |
107 | { |
||
108 | writer.writeStartElement("CHARSTYLE"); |
||
109 | putNamedCStyle(writer, m_Doc->charStyles()[styleList[a]]); |
||
110 | writer.writeEndElement(); |
||
111 | } |
||
16162 | fschmid | 112 | } |
16396 | fschmid | 113 | // for (it = names.begin(); it != names.end(); ++it) |
114 | // { |
||
115 | // writer.writeStartElement("CHARSTYLE"); |
||
116 | // putNamedCStyle(writer, m_Doc->charStyles().get(*it)); |
||
117 | // writer.writeEndElement(); |
||
118 | // } |
||
16162 | fschmid | 119 | /* names = lists.lineStyleNames(); |
120 | for (it = names.begin(); it != names.end(); ++it) |
||
121 | { |
||
122 | writeLinestyles(writer, true, *it); |
||
123 | } */ |
||
124 | writeLinestyles(writer); |
||
125 | writePatterns(writer, fileDir, true, selection); |
||
17147 | fschmid | 126 | if (!emF.isEmpty()) |
127 | WriteObjects(m_Doc, writer, fileDir, 0, 0, ItemSelectionFrame, &emF); |
||
16162 | fschmid | 128 | WriteObjects(m_Doc, writer, fileDir, 0, 0, ItemSelectionElements, &emG); |
129 | writer.writeEndElement(); |
||
17003 | fschmid | 130 | // writer.writeEndDocument(); |
16163 | fschmid | 131 | documentStr.squeeze(); |
17003 | fschmid | 132 | return documentStr.trimmed(); |
16162 | fschmid | 133 | } |
134 | |||
16016 | fschmid | 135 | bool Scribus150Format::savePalette(const QString & fileName) |
136 | { |
||
137 | QString fileDir = QFileInfo(fileName).absolutePath(); |
||
138 | std::auto_ptr<QIODevice> outputFile; |
||
139 | outputFile.reset( new QFile(fileName) ); |
||
140 | if (!outputFile->open(QIODevice::WriteOnly)) |
||
141 | return false; |
||
142 | ScXmlStreamWriter docu; |
||
143 | docu.setAutoFormatting(true); |
||
144 | docu.setDevice(outputFile.get()); |
||
145 | docu.writeStartDocument(); |
||
146 | docu.writeStartElement("SCRIBUSCOLORS"); |
||
147 | writeColors(docu); |
||
148 | writeGradients(docu); |
||
149 | writePatterns(docu, fileDir); |
||
150 | docu.writeEndElement(); |
||
151 | docu.writeEndDocument(); |
||
152 | bool writeSucceed = false; |
||
153 | const QFile* qFile = dynamic_cast<QFile*>(outputFile.get()); |
||
154 | writeSucceed = (qFile->error() == QFile::NoError); |
||
155 | outputFile->close(); |
||
156 | return writeSucceed; |
||
157 | } |
||
158 | |||
13746 | jghali | 159 | bool Scribus150Format::saveFile(const QString & fileName, const FileFormat & /* fmt */) |
160 | { |
||
161 | QString text, tf, tf2, tc, tc2; |
||
162 | m_lastSavedFile = ""; |
||
163 | |||
18058 | jghali | 164 | // #11279: Image links get corrupted when symlinks involved |
165 | // We have to proceed in tow steps here as QFileInfo::canonicalPath() |
||
166 | // may no return correct result if fileName does not exists |
||
167 | QString fileDir = QFileInfo(fileName).absolutePath(); |
||
168 | QString canonicalPath = QFileInfo(fileDir).canonicalFilePath(); |
||
169 | if (!canonicalPath.isEmpty()) |
||
170 | fileDir = canonicalPath; |
||
171 | |||
13746 | jghali | 172 | // Create a random temporary file name |
173 | srand(time(NULL)); // initialize random sequence each time |
||
174 | long randt = 0, randn = 1 + (int) (((double) rand() / ((double) RAND_MAX + 1)) * 10000); |
||
175 | QString tmpFileName = QString("%1.%2").arg(fileName).arg(randn); |
||
176 | while (QFile::exists(tmpFileName) && (randt < 100)) |
||
177 | { |
||
178 | randn = 1 + (int) (((double) rand() / ((double) RAND_MAX + 1)) * 10000); |
||
179 | tmpFileName = QString("%1.%2").arg(fileName).arg(randn); |
||
180 | ++randt; |
||
181 | } |
||
182 | if (QFile::exists(tmpFileName)) |
||
183 | return false; |
||
184 | |||
185 | std::auto_ptr<QIODevice> outputFile; |
||
186 | if (fileName.toLower().right(2) == "gz") |
||
187 | outputFile.reset( new ScGzFile(tmpFileName) ); |
||
188 | else |
||
189 | outputFile.reset( new QFile(tmpFileName) ); |
||
190 | |||
191 | if (!outputFile->open(QIODevice::WriteOnly)) |
||
192 | return false; |
||
193 | |||
194 | ScXmlStreamWriter docu; |
||
195 | docu.setAutoFormatting(true); |
||
196 | docu.setDevice(outputFile.get()); |
||
197 | docu.writeStartDocument(); |
||
198 | docu.writeStartElement("SCRIBUSUTF8NEW"); |
||
199 | docu.writeAttribute("Version", QString(VERSION)); |
||
200 | |||
201 | docu.writeStartElement("DOCUMENT"); |
||
202 | docu.writeAttribute("ANZPAGES" , m_Doc->DocPages.count()); |
||
14991 | cbradney | 203 | docu.writeAttribute("PAGEWIDTH" , m_Doc->pageWidth()); |
204 | docu.writeAttribute("PAGEHEIGHT" , m_Doc->pageHeight()); |
||
14994 | cbradney | 205 | docu.writeAttribute("BORDERLEFT" , m_Doc->margins()->Left); |
206 | docu.writeAttribute("BORDERRIGHT" , m_Doc->margins()->Right); |
||
207 | docu.writeAttribute("BORDERTOP" , m_Doc->margins()->Top); |
||
208 | docu.writeAttribute("BORDERBOTTOM", m_Doc->margins()->Bottom); |
||
209 | docu.writeAttribute("PRESET" , m_Doc->marginPreset()); |
||
14992 | cbradney | 210 | docu.writeAttribute("BleedTop" , m_Doc->bleeds()->Top); |
211 | docu.writeAttribute("BleedLeft" , m_Doc->bleeds()->Left); |
||
212 | docu.writeAttribute("BleedRight" , m_Doc->bleeds()->Right); |
||
213 | docu.writeAttribute("BleedBottom" , m_Doc->bleeds()->Bottom); |
||
14991 | cbradney | 214 | docu.writeAttribute("ORIENTATION" , m_Doc->pageOrientation()); |
215 | docu.writeAttribute("PAGESIZE" , m_Doc->pageSize()); |
||
13746 | jghali | 216 | docu.writeAttribute("FIRSTNUM" , m_Doc->FirstPnum); |
15407 | craig | 217 | docu.writeAttribute("BOOK" , m_Doc->pagePositioning()); |
13746 | jghali | 218 | if(m_Doc->usesAutomaticTextFrames()) |
219 | docu.writeAttribute("AUTOTEXT", 1); |
||
220 | docu.writeAttribute("AUTOSPALTEN" ,m_Doc->PageSp); |
||
221 | docu.writeAttribute("ABSTSPALTEN" ,m_Doc->PageSpa); |
||
222 | docu.writeAttribute("UNITS" , m_Doc->unitIndex()); |
||
14932 | cbradney | 223 | docu.writeAttribute("DFONT" ,m_Doc->itemToolPrefs().textFont); |
224 | docu.writeAttribute("DSIZE" ,m_Doc->itemToolPrefs().textSize / 10.0); |
||
225 | docu.writeAttribute("DCOL" ,m_Doc->itemToolPrefs().textColumns); |
||
226 | docu.writeAttribute("DGAP" ,m_Doc->itemToolPrefs().textColumnGap); |
||
227 | docu.writeAttribute("TabFill" ,m_Doc->itemToolPrefs().textTabFillChar); |
||
228 | docu.writeAttribute("TabWidth" ,m_Doc->itemToolPrefs().textTabWidth); |
||
15037 | cbradney | 229 | docu.writeAttribute("AUTHOR" ,m_Doc->documentInfo().author()); |
230 | docu.writeAttribute("COMMENTS" ,m_Doc->documentInfo().comments()); |
||
231 | docu.writeAttribute("KEYWORDS" ,m_Doc->documentInfo().keywords()); |
||
232 | docu.writeAttribute("PUBLISHER",m_Doc->documentInfo().publisher()); |
||
233 | docu.writeAttribute("DOCDATE",m_Doc->documentInfo().date()); |
||
234 | docu.writeAttribute("DOCTYPE",m_Doc->documentInfo().type()); |
||
235 | docu.writeAttribute("DOCFORMAT",m_Doc->documentInfo().format()); |
||
236 | docu.writeAttribute("DOCIDENT",m_Doc->documentInfo().ident()); |
||
237 | docu.writeAttribute("DOCSOURCE",m_Doc->documentInfo().source()); |
||
238 | docu.writeAttribute("DOCLANGINFO",m_Doc->documentInfo().langInfo()); |
||
239 | docu.writeAttribute("DOCRELATION",m_Doc->documentInfo().relation()); |
||
240 | docu.writeAttribute("DOCCOVER",m_Doc->documentInfo().cover()); |
||
241 | docu.writeAttribute("DOCRIGHTS",m_Doc->documentInfo().rights()); |
||
242 | docu.writeAttribute("DOCCONTRIB",m_Doc->documentInfo().contrib()); |
||
243 | docu.writeAttribute("TITLE",m_Doc->documentInfo().title()); |
||
244 | docu.writeAttribute("SUBJECT",m_Doc->documentInfo().subject()); |
||
14932 | cbradney | 245 | docu.writeAttribute("VHOCH" , m_Doc->typographicPrefs().valueSuperScript); |
246 | docu.writeAttribute("VHOCHSC", m_Doc->typographicPrefs().scalingSuperScript); |
||
247 | docu.writeAttribute("VTIEF" , m_Doc->typographicPrefs().valueSubScript); |
||
248 | docu.writeAttribute("VTIEFSC", m_Doc->typographicPrefs().scalingSubScript); |
||
249 | docu.writeAttribute("VKAPIT" , m_Doc->typographicPrefs().valueSmallCaps); |
||
250 | docu.writeAttribute("BASEGRID",m_Doc->guidesPrefs().valueBaselineGrid); |
||
251 | docu.writeAttribute("BASEO" , m_Doc->guidesPrefs().offsetBaselineGrid); |
||
252 | docu.writeAttribute("AUTOL" , m_Doc->typographicPrefs().autoLineSpacing); |
||
253 | docu.writeAttribute("UnderlinePos" , m_Doc->typographicPrefs().valueUnderlinePos); |
||
254 | docu.writeAttribute("UnderlineWidth" , m_Doc->typographicPrefs().valueUnderlineWidth); |
||
255 | docu.writeAttribute("StrikeThruPos" , m_Doc->typographicPrefs().valueStrikeThruPos); |
||
256 | docu.writeAttribute("StrikeThruWidth", m_Doc->typographicPrefs().valueStrikeThruWidth); |
||
13746 | jghali | 257 | docu.writeAttribute("GROUPC",m_Doc->GroupCounter); |
258 | docu.writeAttribute("HCMS" , static_cast<int>(m_Doc->HasCMS)); |
||
15001 | cbradney | 259 | docu.writeAttribute("DPSo" , static_cast<int>(m_Doc->cmsSettings().SoftProofOn)); |
260 | docu.writeAttribute("DPSFo", static_cast<int>(m_Doc->cmsSettings().SoftProofFullOn)); |
||
261 | docu.writeAttribute("DPuse", static_cast<int>(m_Doc->cmsSettings().CMSinUse)); |
||
262 | docu.writeAttribute("DPgam", static_cast<int>(m_Doc->cmsSettings().GamutCheck)); |
||
263 | docu.writeAttribute("DPbla", static_cast<int>(m_Doc->cmsSettings().BlackPoint)); |
||
264 | docu.writeAttribute("DPMo",m_Doc->cmsSettings().DefaultMonitorProfile); |
||
265 | docu.writeAttribute("DPPr",m_Doc->cmsSettings().DefaultPrinterProfile); |
||
266 | docu.writeAttribute("DPIn",m_Doc->cmsSettings().DefaultImageRGBProfile); |
||
267 | docu.writeAttribute("DPInCMYK",m_Doc->cmsSettings().DefaultImageCMYKProfile); |
||
268 | docu.writeAttribute("DPIn2",m_Doc->cmsSettings().DefaultSolidColorRGBProfile); |
||
269 | docu.writeAttribute("DPIn3",m_Doc->cmsSettings().DefaultSolidColorCMYKProfile); |
||
270 | docu.writeAttribute("DISc",m_Doc->cmsSettings().DefaultIntentColors); |
||
271 | docu.writeAttribute("DIIm",m_Doc->cmsSettings().DefaultIntentImages); |
||
13746 | jghali | 272 | docu.writeAttribute("ALAYER", m_Doc->activeLayer()); |
14924 | cbradney | 273 | docu.writeAttribute("LANGUAGE", m_Doc->hyphLanguage()); |
274 | docu.writeAttribute("MINWORDLEN", m_Doc->hyphMinimumWordLength()); |
||
275 | docu.writeAttribute("HYCOUNT", m_Doc->hyphConsecutiveLines()); |
||
276 | docu.writeAttribute("AUTOMATIC", static_cast<int>(m_Doc->hyphAutomatic())); |
||
277 | docu.writeAttribute("AUTOCHECK", static_cast<int>(m_Doc->hyphAutoCheck())); |
||
13746 | jghali | 278 | docu.writeAttribute("GUIDELOCK", static_cast<int>(m_Doc->GuideLock)); |
279 | docu.writeAttribute("SnapToGuides", static_cast<int>(m_Doc->SnapGuides)); |
||
18027 | jghali | 280 | docu.writeAttribute("SnapToGrid", static_cast<int>(m_Doc->SnapGrid)); |
14932 | cbradney | 281 | docu.writeAttribute("MINGRID", m_Doc->guidesPrefs().minorGridSpacing); |
282 | docu.writeAttribute("MAJGRID", m_Doc->guidesPrefs().majorGridSpacing); |
||
283 | docu.writeAttribute("SHOWGRID", static_cast<int>(m_Doc->guidesPrefs().gridShown)); |
||
284 | docu.writeAttribute("SHOWGUIDES", static_cast<int>(m_Doc->guidesPrefs().guidesShown)); |
||
285 | docu.writeAttribute("showcolborders", static_cast<int>(m_Doc->guidesPrefs().colBordersShown)); |
||
286 | docu.writeAttribute("SHOWFRAME", static_cast<int>(m_Doc->guidesPrefs().framesShown)); |
||
287 | docu.writeAttribute("SHOWLAYERM", static_cast<int>(m_Doc->guidesPrefs().layerMarkersShown)); |
||
288 | docu.writeAttribute("SHOWMARGIN", static_cast<int>(m_Doc->guidesPrefs().marginsShown)); |
||
289 | docu.writeAttribute("SHOWBASE", static_cast<int>(m_Doc->guidesPrefs().baselineGridShown)); |
||
290 | docu.writeAttribute("SHOWPICT", static_cast<int>(m_Doc->guidesPrefs().showPic)); |
||
291 | docu.writeAttribute("SHOWControl", static_cast<int>(m_Doc->guidesPrefs().showControls)); |
||
292 | docu.writeAttribute("SHOWLINK", static_cast<int>(m_Doc->guidesPrefs().linkShown)); |
||
293 | docu.writeAttribute("rulerMode", static_cast<int>(m_Doc->guidesPrefs().rulerMode)); |
||
294 | docu.writeAttribute("showrulers", static_cast<int>(m_Doc->guidesPrefs().rulersShown)); |
||
295 | docu.writeAttribute("showBleed", static_cast<int>(m_Doc->guidesPrefs().showBleed)); |
||
13746 | jghali | 296 | docu.writeAttribute("rulerXoffset", m_Doc->rulerXoffset); |
297 | docu.writeAttribute("rulerYoffset", m_Doc->rulerYoffset); |
||
14932 | cbradney | 298 | docu.writeAttribute("GuideRad", m_Doc->guidesPrefs().guideRad); |
299 | docu.writeAttribute("GRAB",m_Doc->guidesPrefs().grabRadius); |
||
300 | docu.writeAttribute("POLYC", m_Doc->itemToolPrefs().polyCorners); |
||
301 | docu.writeAttribute("POLYF", m_Doc->itemToolPrefs().polyFactor); |
||
302 | docu.writeAttribute("POLYR", m_Doc->itemToolPrefs().polyRotation); |
||
16191 | fschmid | 303 | docu.writeAttribute("POLYIR", m_Doc->itemToolPrefs().polyInnerRot); |
14932 | cbradney | 304 | docu.writeAttribute("POLYCUR", m_Doc->itemToolPrefs().polyCurvature); |
16192 | fschmid | 305 | docu.writeAttribute("POLYOCUR", m_Doc->itemToolPrefs().polyOuterCurvature); |
14932 | cbradney | 306 | docu.writeAttribute("POLYS", static_cast<int>(m_Doc->itemToolPrefs().polyUseFactor)); |
16215 | fschmid | 307 | docu.writeAttribute("arcStartAngle", m_Doc->itemToolPrefs().arcStartAngle); |
16311 | fschmid | 308 | docu.writeAttribute("arcSweepAngle", m_Doc->itemToolPrefs().arcSweepAngle); |
309 | docu.writeAttribute("spiralStartAngle", m_Doc->itemToolPrefs().spiralStartAngle); |
||
310 | docu.writeAttribute("spiralEndAngle", m_Doc->itemToolPrefs().spiralEndAngle); |
||
311 | docu.writeAttribute("spiralFactor", m_Doc->itemToolPrefs().spiralFactor); |
||
14925 | cbradney | 312 | docu.writeAttribute("AutoSave", static_cast<int>(m_Doc->autoSave())); |
313 | docu.writeAttribute("AutoSaveTime", m_Doc->autoSaveTime()); |
||
14924 | cbradney | 314 | docu.writeAttribute("ScratchBottom", m_Doc->scratch()->Bottom); |
315 | docu.writeAttribute("ScratchLeft", m_Doc->scratch()->Left); |
||
316 | docu.writeAttribute("ScratchRight", m_Doc->scratch()->Right); |
||
317 | docu.writeAttribute("ScratchTop", m_Doc->scratch()->Top); |
||
318 | docu.writeAttribute("GapHorizontal", m_Doc->pageGapHorizontal()); |
||
319 | docu.writeAttribute("GapVertical", m_Doc->pageGapVertical()); |
||
14932 | cbradney | 320 | docu.writeAttribute("StartArrow", m_Doc->itemToolPrefs().lineStartArrow); |
321 | docu.writeAttribute("EndArrow", m_Doc->itemToolPrefs().lineEndArrow); |
||
322 | docu.writeAttribute("PEN",m_Doc->itemToolPrefs().shapeLineColor); |
||
323 | docu.writeAttribute("BRUSH",m_Doc->itemToolPrefs().shapeFillColor); |
||
324 | docu.writeAttribute("PENLINE",m_Doc->itemToolPrefs().lineColor); |
||
325 | docu.writeAttribute("PENTEXT",m_Doc->itemToolPrefs().textColor); |
||
326 | docu.writeAttribute("StrokeText",m_Doc->itemToolPrefs().textStrokeColor); |
||
327 | docu.writeAttribute("TextBackGround", m_Doc->itemToolPrefs().textFillColor); |
||
328 | docu.writeAttribute("TextLineColor", m_Doc->itemToolPrefs().textLineColor); |
||
329 | docu.writeAttribute("TextBackGroundShade", m_Doc->itemToolPrefs().textFillColorShade); |
||
330 | docu.writeAttribute("TextLineShade", m_Doc->itemToolPrefs().textLineColorShade); |
||
331 | docu.writeAttribute("TextPenShade", m_Doc->itemToolPrefs().textShade); |
||
332 | docu.writeAttribute("TextStrokeShade", m_Doc->itemToolPrefs().textStrokeShade); |
||
333 | docu.writeAttribute("STIL",m_Doc->itemToolPrefs().shapeLineStyle); |
||
334 | docu.writeAttribute("STILLINE",m_Doc->itemToolPrefs().lineStyle); |
||
335 | docu.writeAttribute("WIDTH",m_Doc->itemToolPrefs().shapeLineWidth); |
||
336 | docu.writeAttribute("WIDTHLINE",m_Doc->itemToolPrefs().lineWidth); |
||
337 | docu.writeAttribute("PENSHADE",m_Doc->itemToolPrefs().shapeLineColorShade); |
||
338 | docu.writeAttribute("LINESHADE",m_Doc->itemToolPrefs().lineColorShade); |
||
339 | docu.writeAttribute("BRUSHSHADE",m_Doc->itemToolPrefs().shapeFillColorShade); |
||
340 | docu.writeAttribute("CPICT",m_Doc->itemToolPrefs().imageFillColor); |
||
341 | docu.writeAttribute("PICTSHADE",m_Doc->itemToolPrefs().imageFillColorShade); |
||
17054 | fschmid | 342 | docu.writeAttribute("CSPICT",m_Doc->itemToolPrefs().imageStrokeColor); |
343 | docu.writeAttribute("PICTSSHADE",m_Doc->itemToolPrefs().imageStrokeColorShade); |
||
14932 | cbradney | 344 | docu.writeAttribute("PICTSCX",m_Doc->itemToolPrefs().imageScaleX); |
345 | docu.writeAttribute("PICTSCY",m_Doc->itemToolPrefs().imageScaleY); |
||
346 | docu.writeAttribute("PSCALE", static_cast<int>(m_Doc->itemToolPrefs().imageScaleType)); |
||
347 | docu.writeAttribute("PASPECT", static_cast<int>(m_Doc->itemToolPrefs().imageAspectRatio)); |
||
348 | docu.writeAttribute("EmbeddedPath", static_cast<int>(m_Doc->itemToolPrefs().imageUseEmbeddedPath)); |
||
349 | docu.writeAttribute("HalfRes", m_Doc->itemToolPrefs().imageLowResType); |
||
350 | docu.writeAttribute("dispX", m_Doc->opToolPrefs().dispX); |
||
351 | docu.writeAttribute("dispY", m_Doc->opToolPrefs().dispY); |
||
352 | docu.writeAttribute("constrain", m_Doc->opToolPrefs().constrain); |
||
353 | docu.writeAttribute("MINORC",m_Doc->guidesPrefs().minorGridColor.name()); |
||
354 | docu.writeAttribute("MAJORC",m_Doc->guidesPrefs().majorGridColor.name()); |
||
355 | docu.writeAttribute("GuideC", m_Doc->guidesPrefs().guideColor.name()); |
||
356 | docu.writeAttribute("BaseC", m_Doc->guidesPrefs().baselineGridColor.name()); |
||
16990 | fschmid | 357 | QString renderStack = ""; |
358 | int renderStackCount = m_Doc->guidesPrefs().renderStackOrder.count(); |
||
359 | for (int r = 0; r < renderStackCount; r++) |
||
360 | { |
||
361 | renderStack += QString("%1 ").arg(m_Doc->guidesPrefs().renderStackOrder[r]); |
||
362 | } |
||
363 | docu.writeAttribute("renderStack", renderStack.trimmed()); |
||
16992 | fschmid | 364 | docu.writeAttribute("GridType", m_Doc->guidesPrefs().gridType); |
14924 | cbradney | 365 | docu.writeAttribute("PAGEC",m_Doc->paperColor().name()); |
14932 | cbradney | 366 | docu.writeAttribute("MARGC",m_Doc->guidesPrefs().marginColor.name()); |
14971 | cbradney | 367 | docu.writeAttribute("RANDF", static_cast<int>(m_Doc->marginColored())); |
368 | docu.writeAttribute("currentProfile", m_Doc->curCheckProfile()); |
||
15847 | fschmid | 369 | docu.writeAttribute("calligrapicPenFillColor", m_Doc->itemToolPrefs().calligrapicPenFillColor); |
370 | docu.writeAttribute("calligrapicPenLineColor", m_Doc->itemToolPrefs().calligrapicPenLineColor); |
||
371 | docu.writeAttribute("calligrapicPenFillColorShade", m_Doc->itemToolPrefs().calligrapicPenFillColorShade); |
||
372 | docu.writeAttribute("calligrapicPenLineColorShade", m_Doc->itemToolPrefs().calligrapicPenLineColorShade); |
||
373 | docu.writeAttribute("calligrapicPenLineWidth", m_Doc->itemToolPrefs().calligrapicPenLineWidth); |
||
374 | docu.writeAttribute("calligrapicPenAngle", m_Doc->itemToolPrefs().calligrapicPenAngle); |
||
375 | docu.writeAttribute("calligrapicPenWidth", m_Doc->itemToolPrefs().calligrapicPenWidth); |
||
376 | docu.writeAttribute("calligrapicPenStyle", m_Doc->itemToolPrefs().calligrapicPenStyle); |
||
13746 | jghali | 377 | |
378 | writeCheckerProfiles(docu); |
||
379 | writeJavascripts(docu); |
||
380 | writeBookmarks(docu); |
||
381 | writeColors(docu); |
||
14150 | fschmid | 382 | writeGradients(docu); |
13746 | jghali | 383 | writeHyphenatorLists(docu); |
384 | writePStyles(docu); |
||
385 | writeCStyles(docu); |
||
16859 | craig | 386 | writeTableStyles(docu); |
387 | writeCellStyles(docu); |
||
16162 | fschmid | 388 | writeLinestyles(docu); |
13746 | jghali | 389 | writeLayers(docu); |
390 | writePrintOptions(docu); |
||
391 | writePdfOptions(docu); |
||
392 | writeDocItemAttributes(docu); |
||
393 | writeTOC(docu); |
||
17826 | craig | 394 | writeMarks(docu); |
395 | writeNotesStyles(docu); |
||
396 | writeNotesFrames(docu); |
||
397 | writeNotes(docu); |
||
13746 | jghali | 398 | writePageSets(docu); |
399 | writeSections(docu); |
||
400 | writePatterns(docu, fileDir); |
||
401 | writeContent (docu, fileDir); |
||
402 | |||
403 | docu.writeEndElement(); |
||
404 | docu.writeEndDocument(); |
||
405 | |||
406 | bool writeSucceed = false; |
||
407 | const QFile* qFile = dynamic_cast<QFile*>(outputFile.get()); |
||
408 | const ScGzFile* gzFile = dynamic_cast<ScGzFile*>(outputFile.get()); |
||
409 | if (qFile) |
||
410 | writeSucceed = (qFile->error() == QFile::NoError); |
||
411 | else if (gzFile) |
||
412 | writeSucceed = !gzFile->errorOccurred(); |
||
413 | outputFile->close(); |
||
414 | |||
415 | if (writeSucceed) |
||
416 | { |
||
417 | if (QFile::exists(fileName)) |
||
418 | writeSucceed = QFile::remove(fileName) ? QFile::rename(tmpFileName, fileName) : false; |
||
419 | else |
||
420 | writeSucceed = QFile::rename(tmpFileName, fileName); |
||
421 | m_lastSavedFile = writeSucceed ? fileName : tmpFileName; |
||
422 | } |
||
423 | else if (QFile::exists(tmpFileName)) |
||
424 | QFile::remove(tmpFileName); |
||
425 | if (writeSucceed) |
||
426 | QFile::remove(tmpFileName); |
||
427 | return writeSucceed; |
||
428 | } |
||
429 | |||
430 | void Scribus150Format::writeCheckerProfiles(ScXmlStreamWriter & docu) |
||
431 | { |
||
432 | CheckerPrefsList::Iterator itcp; |
||
14971 | cbradney | 433 | CheckerPrefsList::Iterator itcpend=m_Doc->checkerProfiles().end(); |
434 | for (itcp = m_Doc->checkerProfiles().begin(); itcp != itcpend; ++itcp) |
||
13746 | jghali | 435 | { |
436 | docu.writeEmptyElement("CheckProfile"); |
||
437 | docu.writeAttribute("Name",itcp.key()); |
||
438 | docu.writeAttribute("ignoreErrors", static_cast<int>(itcp.value().ignoreErrors)); |
||
439 | docu.writeAttribute("autoCheck", static_cast<int>(itcp.value().autoCheck)); |
||
440 | docu.writeAttribute("checkGlyphs", static_cast<int>(itcp.value().checkGlyphs)); |
||
441 | docu.writeAttribute("checkOrphans", static_cast<int>(itcp.value().checkOrphans)); |
||
442 | docu.writeAttribute("checkOverflow", static_cast<int>(itcp.value().checkOverflow)); |
||
443 | docu.writeAttribute("checkPictures", static_cast<int>(itcp.value().checkPictures)); |
||
16411 | fschmid | 444 | docu.writeAttribute("checkPartFilledImageFrames", static_cast<int>(itcp.value().checkPartFilledImageFrames)); |
13746 | jghali | 445 | docu.writeAttribute("checkResolution", static_cast<int>(itcp.value().checkResolution)); |
446 | docu.writeAttribute("checkTransparency", static_cast<int>(itcp.value().checkTransparency)); |
||
447 | docu.writeAttribute("minResolution",itcp.value().minResolution); |
||
448 | docu.writeAttribute("maxResolution",itcp.value().maxResolution); |
||
449 | docu.writeAttribute("checkAnnotations", static_cast<int>(itcp.value().checkAnnotations)); |
||
450 | docu.writeAttribute("checkRasterPDF", static_cast<int>(itcp.value().checkRasterPDF)); |
||
451 | docu.writeAttribute("checkForGIF", static_cast<int>(itcp.value().checkForGIF)); |
||
452 | docu.writeAttribute("ignoreOffLayers", static_cast<int>(itcp.value().ignoreOffLayers)); |
||
18410 | jghali | 453 | docu.writeAttribute("checkNotCMYKOrSpot", static_cast<int>(itcp.value().checkNotCMYKOrSpot)); |
454 | docu.writeAttribute("checkDeviceColorsAndOutputIntent", static_cast<int>(itcp.value().checkDeviceColorsAndOutputIntent)); |
||
455 | docu.writeAttribute("checkFontNotEmbedded", static_cast<int>(itcp.value().checkFontNotEmbedded)); |
||
456 | docu.writeAttribute("checkFontIsOpenType", static_cast<int>(itcp.value().checkFontIsOpenType)); |
||
18490 | craig | 457 | docu.writeAttribute("checkAppliedMasterDifferentSide", static_cast<int>(itcp.value().checkAppliedMasterDifferentSide)); |
18491 | craig | 458 | docu.writeAttribute("checkEmptyTextFrames", static_cast<int>(itcp.value().checkEmptyTextFrames)); |
13746 | jghali | 459 | } |
460 | } |
||
461 | |||
462 | void Scribus150Format::writeLinestyles(ScXmlStreamWriter& docu) |
||
463 | { |
||
17400 | fschmid | 464 | QHash<QString,multiLine>::Iterator itMU; |
13746 | jghali | 465 | for (itMU = m_Doc->MLineStyles.begin(); itMU != m_Doc->MLineStyles.end(); ++itMU) |
466 | { |
||
467 | docu.writeStartElement("MultiLine"); |
||
468 | docu.writeAttribute("Name",itMU.key()); |
||
469 | multiLine ml = itMU.value(); |
||
470 | multiLine::iterator itMU2; |
||
471 | for (itMU2 = ml.begin(); itMU2 != ml.end(); ++itMU2) |
||
472 | { |
||
473 | docu.writeEmptyElement("SubLine"); |
||
474 | docu.writeAttribute("Color", (*itMU2).Color); |
||
475 | docu.writeAttribute("Shade", (*itMU2).Shade); |
||
476 | docu.writeAttribute("Dash", (*itMU2).Dash); |
||
477 | docu.writeAttribute("LineEnd", (*itMU2).LineEnd); |
||
478 | docu.writeAttribute("LineJoin", (*itMU2).LineJoin); |
||
479 | docu.writeAttribute("Width", (*itMU2).Width); |
||
480 | docu.writeAttribute("Shortcut", ml.shortcut); |
||
481 | } |
||
482 | docu.writeEndElement(); |
||
483 | } |
||
484 | QList<ArrowDesc>::Iterator itar; |
||
14969 | cbradney | 485 | for (itar = m_Doc->arrowStyles().begin(); itar != m_Doc->arrowStyles().end(); ++itar) |
13746 | jghali | 486 | { |
487 | if ((*itar).userArrow) |
||
488 | { |
||
489 | docu.writeEmptyElement("Arrows"); |
||
490 | docu.writeAttribute("NumPoints", (*itar).points.size()); |
||
491 | QString arp = ""; |
||
492 | QString tmp, tmpy; |
||
493 | double xa, ya; |
||
18114 | jghali | 494 | for (int nxx = 0; nxx < (*itar).points.size(); ++nxx) |
13746 | jghali | 495 | { |
496 | (*itar).points.point(nxx, &xa, &ya); |
||
497 | arp += tmp.setNum(xa) + " " + tmpy.setNum(ya) + " "; |
||
498 | } |
||
499 | docu.writeAttribute("Points", arp); |
||
500 | docu.writeAttribute("Name", (*itar).name); |
||
501 | } |
||
502 | } |
||
503 | } |
||
504 | |||
505 | |||
506 | void Scribus150Format::writeJavascripts(ScXmlStreamWriter & docu) |
||
507 | { |
||
508 | QMap<QString,QString>::Iterator itja; |
||
509 | for (itja = m_Doc->JavaScripts.begin(); itja != m_Doc->JavaScripts.end(); ++itja) |
||
510 | { |
||
511 | docu.writeEmptyElement("JAVA"); |
||
512 | docu.writeAttribute("NAME",itja.key()); |
||
513 | docu.writeAttribute("SCRIPT",itja.value()); |
||
514 | } |
||
515 | |||
516 | } |
||
517 | |||
518 | |||
519 | void Scribus150Format::writeBookmarks(ScXmlStreamWriter & docu) |
||
520 | { |
||
521 | QList<ScribusDoc::BookMa>::Iterator itbm; |
||
522 | for (itbm = m_Doc->BookMarks.begin(); itbm != m_Doc->BookMarks.end(); ++itbm) |
||
523 | { |
||
524 | docu.writeEmptyElement("Bookmark"); |
||
525 | docu.writeAttribute("Title",(*itbm).Title); |
||
526 | docu.writeAttribute("Text",(*itbm).Text); |
||
527 | docu.writeAttribute("Aktion",(*itbm).Aktion); |
||
528 | docu.writeAttribute("ItemNr", (*itbm).ItemNr); |
||
16943 | fschmid | 529 | docu.writeAttribute("Element", qHash((*itbm).PageObject)); |
13746 | jghali | 530 | docu.writeAttribute("First", (*itbm).First); |
531 | docu.writeAttribute("Last", (*itbm).Last); |
||
532 | docu.writeAttribute("Prev", (*itbm).Prev); |
||
533 | docu.writeAttribute("Next", (*itbm).Next); |
||
534 | docu.writeAttribute("Parent", (*itbm).Parent); |
||
535 | } |
||
536 | } |
||
537 | |||
538 | |||
16162 | fschmid | 539 | void Scribus150Format::writeColors(ScXmlStreamWriter & docu, bool part) |
13746 | jghali | 540 | { |
541 | ColorList::Iterator itc; |
||
16162 | fschmid | 542 | ColorList usedColors; |
543 | if (part) |
||
544 | m_Doc->getUsedColors(usedColors); |
||
545 | else |
||
546 | usedColors = m_Doc->PageColors; |
||
547 | for (itc = usedColors.begin(); itc != usedColors.end(); ++itc) |
||
13746 | jghali | 548 | { |
549 | docu.writeEmptyElement("COLOR"); |
||
550 | docu.writeAttribute("NAME",itc.key()); |
||
551 | if (m_Doc->PageColors[itc.key()].getColorModel() == colorModelRGB) |
||
552 | docu.writeAttribute("RGB",m_Doc->PageColors[itc.key()].nameRGB()); |
||
553 | else |
||
554 | docu.writeAttribute("CMYK",m_Doc->PageColors[itc.key()].nameCMYK()); |
||
16252 | fschmid | 555 | if (m_Doc->PageColors[itc.key()].isSpotColor()) |
556 | docu.writeAttribute("Spot",static_cast<int>(m_Doc->PageColors[itc.key()].isSpotColor())); |
||
557 | if (m_Doc->PageColors[itc.key()].isRegistrationColor()) |
||
558 | docu.writeAttribute("Register",static_cast<int>(m_Doc->PageColors[itc.key()].isRegistrationColor())); |
||
13746 | jghali | 559 | } |
560 | |||
561 | } |
||
562 | |||
16162 | fschmid | 563 | void Scribus150Format::writeGradients(ScXmlStreamWriter & docu, bool part) |
14150 | fschmid | 564 | { |
17400 | fschmid | 565 | QHash<QString, VGradient>::Iterator itGrad; |
566 | QHash<QString, VGradient> gradMap; |
||
16162 | fschmid | 567 | if (part) |
568 | m_Doc->getUsedGradients(gradMap); |
||
569 | else |
||
570 | gradMap = m_Doc->docGradients; |
||
571 | for (itGrad = gradMap.begin(); itGrad != gradMap.end(); ++itGrad) |
||
14150 | fschmid | 572 | { |
573 | docu.writeStartElement("Gradient"); |
||
574 | docu.writeAttribute("Name",itGrad.key()); |
||
575 | VGradient gra = itGrad.value(); |
||
576 | QList<VColorStop*> cstops = gra.colorStops(); |
||
577 | for (uint cst = 0; cst < gra.Stops(); ++cst) |
||
578 | { |
||
579 | docu.writeEmptyElement("CSTOP"); |
||
580 | docu.writeAttribute("RAMP", cstops.at(cst)->rampPoint); |
||
581 | docu.writeAttribute("NAME", cstops.at(cst)->name); |
||
582 | docu.writeAttribute("SHADE", cstops.at(cst)->shade); |
||
583 | docu.writeAttribute("TRANS", cstops.at(cst)->opacity); |
||
584 | } |
||
585 | docu.writeEndElement(); |
||
586 | } |
||
587 | } |
||
588 | |||
13746 | jghali | 589 | void Scribus150Format::writeHyphenatorLists(ScXmlStreamWriter &docu) |
590 | { |
||
591 | docu.writeStartElement("HYPHEN"); |
||
592 | for (QHash<QString, QString>::Iterator hyit = m_Doc->docHyphenator->specialWords.begin(); hyit != m_Doc->docHyphenator->specialWords.end(); ++hyit) |
||
593 | { |
||
594 | docu.writeEmptyElement("EXCEPTION"); |
||
595 | docu.writeAttribute("WORD", hyit.key()); |
||
596 | docu.writeAttribute("HYPHENATED", hyit.value()); |
||
597 | } |
||
598 | for (QSet<QString>::Iterator hyit2 = m_Doc->docHyphenator->ignoredWords.begin(); hyit2 != m_Doc->docHyphenator->ignoredWords.end(); ++hyit2) |
||
599 | { |
||
600 | docu.writeEmptyElement("IGNORE"); |
||
601 | docu.writeAttribute("WORD", (*hyit2)); |
||
602 | } |
||
603 | docu.writeEndElement(); |
||
604 | } |
||
605 | |||
16859 | craig | 606 | void Scribus150Format::writePStyles(ScXmlStreamWriter & docu) |
13746 | jghali | 607 | { |
16396 | fschmid | 608 | QList<int> styleList = m_Doc->getSortedStyleList(); |
609 | for (int a = 0; a < styleList.count(); ++a) |
||
13746 | jghali | 610 | { |
16396 | fschmid | 611 | putPStyle(docu, m_Doc->paragraphStyles()[styleList[a]], "STYLE"); |
13746 | jghali | 612 | } |
16682 | jghali | 613 | // for (int ff = 0; ff < m_Doc->paragraphStyles().count(); ++ff) |
614 | // putPStyle(docu, m_Doc->paragraphStyles()[ff], "STYLE"); |
||
13746 | jghali | 615 | } |
616 | |||
617 | void Scribus150Format::putPStyle(ScXmlStreamWriter & docu, const ParagraphStyle & style, const QString &nodeName) |
||
618 | { |
||
619 | bool styleHasTabs = (!style.isInhTabValues() && (style.tabValues().count() > 0)); |
||
620 | if (styleHasTabs) |
||
621 | docu.writeStartElement(nodeName); |
||
622 | else |
||
623 | docu.writeEmptyElement(nodeName); |
||
624 | if ( ! style.name().isEmpty() ) |
||
625 | docu.writeAttribute("NAME", style.name()); |
||
626 | if ( ! style.parent().isEmpty()) |
||
627 | docu.writeAttribute("PARENT", style.parent()); |
||
628 | if ( style.isDefaultStyle()) |
||
629 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
630 | |||
631 | if ( ! style.isInhAlignment()) |
||
632 | docu.writeAttribute("ALIGN", style.alignment()); |
||
633 | if ( ! style.isInhLineSpacingMode()) |
||
634 | docu.writeAttribute("LINESPMode", style.lineSpacingMode()); |
||
635 | if ( ! style.isInhLineSpacing()) |
||
636 | docu.writeAttribute("LINESP", style.lineSpacing()); |
||
637 | if ( ! style.isInhLeftMargin()) |
||
638 | docu.writeAttribute("INDENT", style.leftMargin()); |
||
639 | if ( ! style.isInhRightMargin()) |
||
640 | docu.writeAttribute("RMARGIN", style.rightMargin()); |
||
641 | if ( ! style.isInhFirstIndent()) |
||
642 | docu.writeAttribute("FIRST", style.firstIndent()); |
||
643 | if ( ! style.isInhGapBefore()) |
||
644 | docu.writeAttribute("VOR", style.gapBefore()); |
||
645 | if ( ! style.isInhGapAfter()) |
||
646 | docu.writeAttribute("NACH", style.gapAfter()); |
||
18047 | craig | 647 | if ( ! style.isInhPeCharStyleName()) |
648 | docu.writeAttribute("ParagraphEffectCharStyle", style.peCharStyleName()); |
||
649 | if ( ! style.isInhParEffectOffset()) |
||
650 | docu.writeAttribute("ParagraphEffectOffset", style.parEffectOffset()); |
||
651 | if ( ! style.isInhParEffectIndent()) |
||
652 | docu.writeAttribute("ParagraphEffectIndent", static_cast<int>(style.parEffectIndent())); |
||
13746 | jghali | 653 | if ( ! style.isInhHasDropCap()) |
654 | docu.writeAttribute("DROP", static_cast<int>(style.hasDropCap())); |
||
655 | if ( ! style.isInhDropCapLines()) |
||
656 | docu.writeAttribute("DROPLIN", style.dropCapLines()); |
||
18047 | craig | 657 | if ( ! style.isInhHasBullet()) |
658 | docu.writeAttribute("Bullet", static_cast<int>(style.hasBullet())); |
||
659 | if ( ! style.isInhBulletStr()) |
||
660 | docu.writeAttribute("BulletStr", style.bulletStr()); |
||
661 | if ( ! style.isInhHasNum()) |
||
662 | docu.writeAttribute("Numeration", static_cast<int>(style.hasNum())); |
||
663 | if ( ! style.isInhNumFormat()) |
||
664 | docu.writeAttribute("NumerationFormat", style.numFormat()); |
||
665 | if ( ! style.isInhNumName()) |
||
666 | docu.writeAttribute("NumerationName", style.numName()); |
||
667 | if ( ! style.isInhNumLevel()) |
||
668 | docu.writeAttribute("NumerationLevel", style.numLevel()); |
||
669 | if ( ! style.isInhNumPrefix()) |
||
670 | docu.writeAttribute("NumerationPrefix", style.numPrefix()); |
||
671 | if ( ! style.isInhNumSuffix()) |
||
672 | docu.writeAttribute("NumerationSuffix", style.numSuffix()); |
||
673 | if ( ! style.isInhNumStart()) |
||
674 | docu.writeAttribute("NumerationStart", style.numStart()); |
||
675 | if ( ! style.isInhNumRestart()) |
||
676 | docu.writeAttribute("NumerationRestart", style.numRestart()); |
||
677 | if ( ! style.isInhNumOther()) |
||
678 | docu.writeAttribute("NumerationOther", static_cast<int>(style.numOther())); |
||
679 | if ( ! style.isInhNumHigher()) |
||
680 | docu.writeAttribute("NumerationHigher", static_cast<int>(style.numHigher())); |
||
13746 | jghali | 681 | if ( ! style.isInhOpticalMargins()) |
682 | docu.writeAttribute("OpticalMargins", style.opticalMargins()); |
||
683 | if ( ! style.isInhHyphenationMode()) |
||
684 | docu.writeAttribute("HyphenationMode", style.hyphenationMode()); |
||
685 | if ( ! style.isInhMinWordTracking()) |
||
686 | docu.writeAttribute("MinWordTrack", style.minWordTracking()); |
||
687 | if ( ! style.isInhMinGlyphExtension()) |
||
688 | docu.writeAttribute("MinGlyphShrink", style.minGlyphExtension()); |
||
689 | if ( ! style.isInhMaxGlyphExtension()) |
||
690 | docu.writeAttribute("MaxGlyphExtend", style.maxGlyphExtension()); |
||
16840 | jghali | 691 | if ( ! style.isInhKeepLinesStart()) |
692 | docu.writeAttribute("KeepLinesStart", style.keepLinesStart()); |
||
693 | if ( ! style.isInhKeepLinesEnd()) |
||
694 | docu.writeAttribute("KeepLinesEnd", style.keepLinesEnd()); |
||
695 | if ( ! style.isInhKeepWithNext()) |
||
696 | docu.writeAttribute("KeepWithNext", style.keepWithNext()); |
||
697 | if ( ! style.isInhKeepTogether()) |
||
698 | docu.writeAttribute("KeepTogether", style.keepTogether()); |
||
13746 | jghali | 699 | |
700 | if ( ! style.shortcut().isEmpty() ) |
||
701 | docu.writeAttribute("PSHORTCUT", style.shortcut()); // shortcuts won't be inherited |
||
702 | |||
703 | putCStyle(docu, style.charStyle()); |
||
704 | |||
705 | if ( ! style.isInhTabValues()) |
||
706 | { |
||
707 | for (int a = 0; a < style.tabValues().count(); ++a) |
||
708 | { |
||
709 | docu.writeEmptyElement("Tabs"); |
||
710 | docu.writeAttribute("Type", (style.tabValues().at(a)).tabType); |
||
711 | docu.writeAttribute("Pos", (style.tabValues().at(a)).tabPosition); |
||
712 | QString tabCh = ""; |
||
713 | if (!(style.tabValues().at(a)).tabFillChar.isNull()) |
||
714 | tabCh = QString((style.tabValues().at(a)).tabFillChar); |
||
715 | docu.writeAttribute("Fill", tabCh); |
||
716 | } |
||
717 | } |
||
718 | |||
719 | if (styleHasTabs) |
||
720 | docu.writeEndElement(); |
||
721 | } |
||
722 | |||
723 | |||
724 | void Scribus150Format::writeCStyles(ScXmlStreamWriter & docu) |
||
725 | { |
||
16396 | fschmid | 726 | QList<int> styleList = m_Doc->getSortedCharStyleList(); |
727 | for (int a = 0; a < styleList.count(); ++a) |
||
13746 | jghali | 728 | { |
729 | docu.writeStartElement("CHARSTYLE"); |
||
16396 | fschmid | 730 | putNamedCStyle(docu, m_Doc->charStyles()[styleList[a]]); |
13746 | jghali | 731 | docu.writeEndElement(); |
732 | } |
||
16396 | fschmid | 733 | // for (int ff = 0; ff < m_Doc->charStyles().count(); ++ff) |
734 | // { |
||
735 | // docu.writeStartElement("CHARSTYLE"); |
||
736 | // putNamedCStyle(docu, m_Doc->charStyles()[ff]); |
||
737 | // docu.writeEndElement(); |
||
738 | // } |
||
13746 | jghali | 739 | } |
740 | |||
741 | void Scribus150Format::putCStylePT(ScXmlStreamWriter & docu, const CharStyle & style) |
||
742 | { |
||
743 | docu.writeAttribute("CNAME", style.name()); |
||
744 | docu.writeAttribute("CPARENT", style.parent()); |
||
745 | docu.writeAttribute("FONT", style.font().scName()); |
||
746 | docu.writeAttribute("FONTSIZE", style.fontSize() / 10.0); |
||
747 | docu.writeAttribute("FEATURES", style.features().join(" ")); |
||
748 | docu.writeAttribute("FCOLOR", style.fillColor()); |
||
749 | docu.writeAttribute("FSHADE", style.fillShade()); |
||
750 | docu.writeAttribute("SCOLOR", style.strokeColor()); |
||
751 | docu.writeAttribute("SSHADE", style.strokeShade()); |
||
752 | docu.writeAttribute("TXTSHX", style.shadowXOffset() / 10.0); |
||
753 | docu.writeAttribute("TXTSHY", style.shadowYOffset() / 10.0); |
||
754 | docu.writeAttribute("TXTOUT", style.outlineWidth() / 10.0); |
||
755 | docu.writeAttribute("TXTULP", style.underlineOffset() / 10.0); |
||
756 | docu.writeAttribute("TXTULW", style.underlineWidth() / 10.0); |
||
757 | docu.writeAttribute("TXTSTP", style.strikethruOffset() / 10.0); |
||
758 | docu.writeAttribute("TXTSTW", style.strikethruWidth() / 10.0); |
||
759 | docu.writeAttribute("SCALEH", style.scaleH() / 10.0); |
||
760 | docu.writeAttribute("SCALEV", style.scaleV() / 10.0); |
||
761 | docu.writeAttribute("BASEO", style.baselineOffset() / 10.0); |
||
762 | docu.writeAttribute("KERN", style.tracking() / 10.0); |
||
763 | docu.writeAttribute("wordTrack", style.wordTracking()); |
||
15316 | jghali | 764 | docu.writeAttribute("LANGUAGE", style.language()); |
13746 | jghali | 765 | docu.writeAttribute("SHORTCUT", style.shortcut()); // shortcuts won't be inherited |
766 | } |
||
767 | |||
768 | void Scribus150Format::putCStyle(ScXmlStreamWriter & docu, const CharStyle & style) |
||
769 | { |
||
770 | if ( ! style.parent().isEmpty() ) |
||
771 | docu.writeAttribute("CPARENT", style.parent()); |
||
772 | if ( ! style.isInhFont()) |
||
773 | docu.writeAttribute("FONT", style.font().scName()); |
||
774 | if ( ! style.isInhFontSize()) |
||
775 | docu.writeAttribute("FONTSIZE", style.fontSize() / 10.0); |
||
776 | if ( ! style.isInhFeatures()) |
||
777 | docu.writeAttribute("FEATURES", style.features().join(" ")); |
||
778 | if ( ! style.isInhFillColor()) |
||
779 | docu.writeAttribute("FCOLOR", style.fillColor()); |
||
780 | if ( ! style.isInhFillShade()) |
||
781 | docu.writeAttribute("FSHADE", style.fillShade()); |
||
782 | if ( ! style.isInhStrokeColor()) |
||
783 | docu.writeAttribute("SCOLOR", style.strokeColor()); |
||
784 | if ( ! style.isInhStrokeShade()) |
||
785 | docu.writeAttribute("SSHADE", style.strokeShade()); |
||
786 | if ( ! style.isInhShadowXOffset()) |
||
787 | docu.writeAttribute("TXTSHX", style.shadowXOffset() / 10.0); |
||
788 | if ( ! style.isInhShadowYOffset()) |
||
789 | docu.writeAttribute("TXTSHY", style.shadowYOffset() / 10.0); |
||
790 | if ( ! style.isInhOutlineWidth()) |
||
791 | docu.writeAttribute("TXTOUT", style.outlineWidth() / 10.0); |
||
792 | if ( ! style.isInhUnderlineOffset()) |
||
793 | docu.writeAttribute("TXTULP", style.underlineOffset() / 10.0); |
||
794 | if ( ! style.isInhUnderlineWidth()) |
||
795 | docu.writeAttribute("TXTULW", style.underlineWidth() / 10.0); |
||
796 | if ( ! style.isInhStrikethruOffset()) |
||
797 | docu.writeAttribute("TXTSTP", style.strikethruOffset() / 10.0); |
||
798 | if ( ! style.isInhStrikethruWidth()) |
||
799 | docu.writeAttribute("TXTSTW", style.strikethruWidth() / 10.0); |
||
800 | if ( ! style.isInhScaleH()) |
||
801 | docu.writeAttribute("SCALEH", style.scaleH() / 10.0); |
||
802 | if ( ! style.isInhScaleV()) |
||
803 | docu.writeAttribute("SCALEV", style.scaleV() / 10.0); |
||
804 | if ( ! style.isInhBaselineOffset()) |
||
805 | docu.writeAttribute("BASEO", style.baselineOffset() / 10.0); |
||
806 | if ( ! style.isInhTracking()) |
||
807 | docu.writeAttribute("KERN", style.tracking() / 10.0); |
||
808 | if ( ! style.isInhWordTracking()) |
||
809 | docu.writeAttribute("wordTrack", style.wordTracking()); |
||
15316 | jghali | 810 | if ( ! style.isInhLanguage()) |
811 | docu.writeAttribute("LANGUAGE", style.language()); |
||
13746 | jghali | 812 | if ( ! style.shortcut().isEmpty() ) |
813 | docu.writeAttribute("SHORTCUT", style.shortcut()); // shortcuts won't be inherited |
||
814 | } |
||
815 | |||
816 | void Scribus150Format::putNamedCStyle(ScXmlStreamWriter& docu, const CharStyle & style) |
||
817 | { |
||
818 | if ( ! style.name().isEmpty() ) |
||
819 | docu.writeAttribute("CNAME", style.name()); |
||
820 | if ( style.hasName() && style.isDefaultStyle()) |
||
821 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
822 | putCStyle(docu, style); |
||
823 | } |
||
824 | |||
16859 | craig | 825 | void Scribus150Format::writeTableStyles(ScXmlStreamWriter& docu) |
826 | { |
||
827 | QList<int> styleList = m_Doc->getSortedTableStyleList(); |
||
828 | for (int i = 0; i < styleList.count(); ++i) |
||
829 | { |
||
830 | docu.writeStartElement("TableStyle"); |
||
831 | putTableStyle(docu, m_Doc->tableStyles()[styleList[i]]); |
||
832 | docu.writeEndElement(); |
||
833 | } |
||
834 | } |
||
835 | |||
836 | void Scribus150Format::writeCellStyles(ScXmlStreamWriter& docu) |
||
837 | { |
||
838 | QList<int> styleList = m_Doc->getSortedCellStyleList(); |
||
839 | for (int i = 0; i < styleList.count(); ++i) |
||
840 | { |
||
841 | docu.writeStartElement("CellStyle"); |
||
842 | putCellStyle(docu, m_Doc->cellStyles()[styleList[i]]); |
||
843 | docu.writeEndElement(); |
||
844 | } |
||
845 | } |
||
846 | |||
847 | void Scribus150Format::putTableStyle(ScXmlStreamWriter &docu, const TableStyle &style) |
||
848 | { |
||
17318 | fschmid | 849 | if ( ! style.name().isEmpty() ) |
850 | docu.writeAttribute("NAME", style.name()); |
||
851 | if ( style.hasName() && style.isDefaultStyle()) |
||
852 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
853 | if ( ! style.parent().isEmpty() ) |
||
854 | docu.writeAttribute("PARENT", style.parent()); |
||
855 | if ( ! style.isInhFillColor()) |
||
856 | docu.writeAttribute("FillColor", style.fillColor()); |
||
857 | if ( ! style.isInhFillShade()) |
||
858 | docu.writeAttribute("FillShade", style.fillShade()); |
||
17319 | fschmid | 859 | if ( ! style.isInhLeftBorder()) |
17318 | fschmid | 860 | { |
17319 | fschmid | 861 | TableBorder tbLeft = style.leftBorder(); |
862 | docu.writeStartElement("TableBorderLeft"); |
||
863 | foreach (TableBorderLine tbl, tbLeft.borderLines()) |
||
864 | { |
||
865 | docu.writeStartElement("TableBorderLine"); |
||
866 | docu.writeAttribute("Width", tbl.width()); |
||
867 | docu.writeAttribute("PenStyle", tbl.style()); |
||
868 | docu.writeAttribute("Color", tbl.color()); |
||
869 | docu.writeAttribute("Shade", tbl.shade()); |
||
870 | docu.writeEndElement(); |
||
871 | } |
||
17318 | fschmid | 872 | docu.writeEndElement(); |
873 | } |
||
17319 | fschmid | 874 | if ( ! style.isInhRightBorder()) |
17318 | fschmid | 875 | { |
17319 | fschmid | 876 | TableBorder tbRight = style.rightBorder(); |
877 | docu.writeStartElement("TableBorderRight"); |
||
878 | foreach (TableBorderLine tbl, tbRight.borderLines()) |
||
879 | { |
||
880 | docu.writeStartElement("TableBorderLine"); |
||
881 | docu.writeAttribute("Width", tbl.width()); |
||
882 | docu.writeAttribute("PenStyle", tbl.style()); |
||
883 | docu.writeAttribute("Color", tbl.color()); |
||
884 | docu.writeAttribute("Shade", tbl.shade()); |
||
885 | docu.writeEndElement(); |
||
886 | } |
||
17318 | fschmid | 887 | docu.writeEndElement(); |
888 | } |
||
17319 | fschmid | 889 | if ( ! style.isInhTopBorder()) |
17318 | fschmid | 890 | { |
17319 | fschmid | 891 | TableBorder tbTop = style.topBorder(); |
892 | docu.writeStartElement("TableBorderTop"); |
||
893 | foreach (TableBorderLine tbl, tbTop.borderLines()) |
||
894 | { |
||
895 | docu.writeStartElement("TableBorderLine"); |
||
896 | docu.writeAttribute("Width", tbl.width()); |
||
897 | docu.writeAttribute("PenStyle", tbl.style()); |
||
898 | docu.writeAttribute("Color", tbl.color()); |
||
899 | docu.writeAttribute("Shade", tbl.shade()); |
||
900 | docu.writeEndElement(); |
||
901 | } |
||
17318 | fschmid | 902 | docu.writeEndElement(); |
903 | } |
||
17319 | fschmid | 904 | if ( ! style.isInhBottomBorder()) |
17318 | fschmid | 905 | { |
17319 | fschmid | 906 | TableBorder tbBottom = style.bottomBorder(); |
907 | docu.writeStartElement("TableBorderBottom"); |
||
908 | foreach (TableBorderLine tbl, tbBottom.borderLines()) |
||
909 | { |
||
910 | docu.writeStartElement("TableBorderLine"); |
||
911 | docu.writeAttribute("Width", tbl.width()); |
||
912 | docu.writeAttribute("PenStyle", tbl.style()); |
||
913 | docu.writeAttribute("Color", tbl.color()); |
||
914 | docu.writeAttribute("Shade", tbl.shade()); |
||
915 | docu.writeEndElement(); |
||
916 | } |
||
17318 | fschmid | 917 | docu.writeEndElement(); |
918 | } |
||
16859 | craig | 919 | } |
920 | |||
921 | void Scribus150Format::putCellStyle(ScXmlStreamWriter &docu, const CellStyle &style) |
||
922 | { |
||
17318 | fschmid | 923 | if ( ! style.name().isEmpty() ) |
924 | docu.writeAttribute("NAME", style.name()); |
||
925 | if ( style.hasName() && style.isDefaultStyle()) |
||
926 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
927 | if ( ! style.parent().isEmpty() ) |
||
928 | docu.writeAttribute("PARENT", style.parent()); |
||
929 | if ( ! style.isInhFillColor()) |
||
930 | docu.writeAttribute("FillColor", style.fillColor()); |
||
931 | if ( ! style.isInhFillShade()) |
||
932 | docu.writeAttribute("FillShade", style.fillShade()); |
||
17319 | fschmid | 933 | if ( ! style.isInhLeftPadding()) |
934 | docu.writeAttribute("LeftPadding",style.leftPadding()); |
||
935 | if ( ! style.isInhRightPadding()) |
||
936 | docu.writeAttribute("RightPadding", style.rightPadding()); |
||
937 | if ( ! style.isInhTopPadding()) |
||
938 | docu.writeAttribute("TopPadding",style.topPadding()); |
||
939 | if ( ! style.isInhBottomPadding()) |
||
940 | docu.writeAttribute("BottomPadding", style.bottomPadding()); |
||
941 | if ( ! style.isInhLeftBorder()) |
||
17318 | fschmid | 942 | { |
17319 | fschmid | 943 | TableBorder tbLeft = style.leftBorder(); |
944 | docu.writeStartElement("TableBorderLeft"); |
||
945 | foreach (TableBorderLine tbl, tbLeft.borderLines()) |
||
946 | { |
||
947 | docu.writeStartElement("TableBorderLine"); |
||
948 | docu.writeAttribute("Width", tbl.width()); |
||
949 | docu.writeAttribute("PenStyle", tbl.style()); |
||
950 | docu.writeAttribute("Color", tbl.color()); |
||
951 | docu.writeAttribute("Shade", tbl.shade()); |
||
952 | docu.writeEndElement(); |
||
953 | } |
||
17318 | fschmid | 954 | docu.writeEndElement(); |
955 | } |
||
17319 | fschmid | 956 | if ( ! style.isInhRightBorder()) |
17318 | fschmid | 957 | { |
17319 | fschmid | 958 | TableBorder tbRight = style.rightBorder(); |
959 | docu.writeStartElement("TableBorderRight"); |
||
960 | foreach (TableBorderLine tbl, tbRight.borderLines()) |
||
961 | { |
||
962 | docu.writeStartElement("TableBorderLine"); |
||
963 | docu.writeAttribute("Width", tbl.width()); |
||
964 | docu.writeAttribute("PenStyle", tbl.style()); |
||
965 | docu.writeAttribute("Color", tbl.color()); |
||
966 | docu.writeAttribute("Shade", tbl.shade()); |
||
967 | docu.writeEndElement(); |
||
968 | } |
||
17318 | fschmid | 969 | docu.writeEndElement(); |
970 | } |
||
17319 | fschmid | 971 | if ( ! style.isInhTopBorder()) |
17318 | fschmid | 972 | { |
17319 | fschmid | 973 | TableBorder tbTop = style.topBorder(); |
974 | docu.writeStartElement("TableBorderTop"); |
||
975 | foreach (TableBorderLine tbl, tbTop.borderLines()) |
||
976 | { |
||
977 | docu.writeStartElement("TableBorderLine"); |
||
978 | docu.writeAttribute("Width", tbl.width()); |
||
979 | docu.writeAttribute("PenStyle", tbl.style()); |
||
980 | docu.writeAttribute("Color", tbl.color()); |
||
981 | docu.writeAttribute("Shade", tbl.shade()); |
||
982 | docu.writeEndElement(); |
||
983 | } |
||
17318 | fschmid | 984 | docu.writeEndElement(); |
985 | } |
||
17319 | fschmid | 986 | if ( ! style.isInhBottomBorder()) |
17318 | fschmid | 987 | { |
17319 | fschmid | 988 | TableBorder tbBottom = style.bottomBorder(); |
989 | docu.writeStartElement("TableBorderBottom"); |
||
990 | foreach (TableBorderLine tbl, tbBottom.borderLines()) |
||
991 | { |
||
992 | docu.writeStartElement("TableBorderLine"); |
||
993 | docu.writeAttribute("Width", tbl.width()); |
||
994 | docu.writeAttribute("PenStyle", tbl.style()); |
||
995 | docu.writeAttribute("Color", tbl.color()); |
||
996 | docu.writeAttribute("Shade", tbl.shade()); |
||
997 | docu.writeEndElement(); |
||
998 | } |
||
17318 | fschmid | 999 | docu.writeEndElement(); |
1000 | } |
||
16859 | craig | 1001 | } |
1002 | |||
13746 | jghali | 1003 | void Scribus150Format::writeLayers(ScXmlStreamWriter & docu) |
1004 | { |
||
1005 | uint layerCount=m_Doc->layerCount(); |
||
1006 | for (uint lay = 0; lay < layerCount; ++lay) |
||
1007 | { |
||
1008 | docu.writeEmptyElement("LAYERS"); |
||
13875 | jghali | 1009 | docu.writeAttribute("NUMMER",m_Doc->Layers[lay].ID); |
13746 | jghali | 1010 | docu.writeAttribute("LEVEL",m_Doc->Layers[lay].Level); |
1011 | docu.writeAttribute("NAME",m_Doc->Layers[lay].Name); |
||
1012 | docu.writeAttribute("SICHTBAR", static_cast<int>(m_Doc->Layers[lay].isViewable)); |
||
1013 | docu.writeAttribute("DRUCKEN", static_cast<int>(m_Doc->Layers[lay].isPrintable)); |
||
1014 | docu.writeAttribute("EDIT", static_cast<int>(m_Doc->Layers[lay].isEditable)); |
||
17454 | fschmid | 1015 | docu.writeAttribute("SELECT", static_cast<int>(m_Doc->Layers[lay].isSelectable)); |
13746 | jghali | 1016 | docu.writeAttribute("FLOW", static_cast<int>(m_Doc->Layers[lay].flowControl)); |
1017 | docu.writeAttribute("TRANS", m_Doc->Layers[lay].transparency); |
||
1018 | docu.writeAttribute("BLEND", m_Doc->Layers[lay].blendMode); |
||
1019 | docu.writeAttribute("OUTL", static_cast<int>(m_Doc->Layers[lay].outlineMode)); |
||
1020 | docu.writeAttribute("LAYERC",m_Doc->Layers[lay].markerColor.name()); |
||
1021 | } |
||
1022 | } |
||
1023 | |||
1024 | void Scribus150Format::writePrintOptions(ScXmlStreamWriter & docu) |
||
1025 | { |
||
1026 | docu.writeStartElement("Printer"); |
||
1027 | docu.writeAttribute("firstUse", static_cast<int>(m_Doc->Print_Options.firstUse)); |
||
1028 | docu.writeAttribute("toFile", static_cast<int>(m_Doc->Print_Options.toFile)); |
||
1029 | docu.writeAttribute("useAltPrintCommand", static_cast<int>(m_Doc->Print_Options.useAltPrintCommand)); |
||
1030 | docu.writeAttribute("outputSeparations", static_cast<int>(m_Doc->Print_Options.outputSeparations)); |
||
1031 | docu.writeAttribute("useSpotColors", static_cast<int>(m_Doc->Print_Options.useSpotColors)); |
||
1032 | docu.writeAttribute("useColor", static_cast<int>(m_Doc->Print_Options.useColor)); |
||
1033 | docu.writeAttribute("mirrorH", static_cast<int>(m_Doc->Print_Options.mirrorH)); |
||
1034 | docu.writeAttribute("mirrorV", static_cast<int>(m_Doc->Print_Options.mirrorV)); |
||
1035 | docu.writeAttribute("useICC", static_cast<int>(m_Doc->Print_Options.useICC)); |
||
1036 | docu.writeAttribute("doGCR", static_cast<int>(m_Doc->Print_Options.doGCR)); |
||
1037 | docu.writeAttribute("doClip", static_cast<int>(m_Doc->Print_Options.doClip)); |
||
1038 | docu.writeAttribute("setDevParam", static_cast<int>(m_Doc->Print_Options.setDevParam)); |
||
1039 | docu.writeAttribute("useDocBleeds", static_cast<int>(m_Doc->Print_Options.useDocBleeds)); |
||
1040 | docu.writeAttribute("cropMarks", static_cast<int>(m_Doc->Print_Options.cropMarks)); |
||
1041 | docu.writeAttribute("bleedMarks", static_cast<int>(m_Doc->Print_Options.bleedMarks)); |
||
1042 | docu.writeAttribute("registrationMarks", static_cast<int>(m_Doc->Print_Options.registrationMarks)); |
||
1043 | docu.writeAttribute("colorMarks", static_cast<int>(m_Doc->Print_Options.colorMarks)); |
||
1044 | docu.writeAttribute("includePDFMarks", static_cast<int>(m_Doc->Print_Options.includePDFMarks)); |
||
1045 | docu.writeAttribute("PSLevel", (m_Doc->Print_Options.prnEngine < WindowsGDI) ? m_Doc->Print_Options.prnEngine : PostScript3); |
||
1046 | docu.writeAttribute("PDLanguage" , m_Doc->Print_Options.prnEngine); |
||
17401 | jghali | 1047 | docu.writeAttribute("markLength" , m_Doc->Print_Options.markLength); |
13746 | jghali | 1048 | docu.writeAttribute("markOffset" , m_Doc->Print_Options.markOffset); |
1049 | docu.writeAttribute("BleedTop" , m_Doc->Print_Options.bleeds.Top); |
||
1050 | docu.writeAttribute("BleedLeft" , m_Doc->Print_Options.bleeds.Left); |
||
1051 | docu.writeAttribute("BleedRight" , m_Doc->Print_Options.bleeds.Right); |
||
1052 | docu.writeAttribute("BleedBottom", m_Doc->Print_Options.bleeds.Bottom); |
||
1053 | docu.writeAttribute("printer" , m_Doc->Print_Options.printer); |
||
1054 | docu.writeAttribute("filename", m_Doc->Print_Options.filename); |
||
1055 | docu.writeAttribute("separationName", m_Doc->Print_Options.separationName); |
||
1056 | docu.writeAttribute("printerCommand", m_Doc->Print_Options.printerCommand); |
||
1057 | for (int p = 0; p < m_Doc->Print_Options.allSeparations.count(); ++p) |
||
1058 | { |
||
1059 | docu.writeEmptyElement("Separation"); |
||
1060 | docu.writeAttribute("Name", m_Doc->Print_Options.allSeparations[p]); |
||
1061 | } |
||
1062 | docu.writeEndElement(); |
||
1063 | } |
||
1064 | |||
1065 | void Scribus150Format::writePdfOptions(ScXmlStreamWriter & docu) |
||
1066 | { |
||
1067 | docu.writeStartElement("PDF"); |
||
14925 | cbradney | 1068 | docu.writeAttribute("firstUse", static_cast<int>(m_Doc->pdfOptions().firstUse)); |
1069 | docu.writeAttribute("Thumbnails", static_cast<int>(m_Doc->pdfOptions().Thumbnails)); |
||
1070 | docu.writeAttribute("Articles", static_cast<int>(m_Doc->pdfOptions().Articles)); |
||
1071 | docu.writeAttribute("Bookmarks", static_cast<int>(m_Doc->pdfOptions().Bookmarks)); |
||
1072 | docu.writeAttribute("Compress", static_cast<int>(m_Doc->pdfOptions().Compress)); |
||
1073 | docu.writeAttribute("CMethod", m_Doc->pdfOptions().CompressMethod); |
||
1074 | docu.writeAttribute("Quality", m_Doc->pdfOptions().Quality); |
||
18412 | jghali | 1075 | docu.writeAttribute("EmbedPDF", static_cast<int>(m_Doc->pdfOptions().embedPDF)); |
14925 | cbradney | 1076 | docu.writeAttribute("MirrorH", static_cast<int>(m_Doc->pdfOptions().MirrorH)); |
1077 | docu.writeAttribute("MirrorV", static_cast<int>(m_Doc->pdfOptions().MirrorV)); |
||
1078 | docu.writeAttribute("Clip", static_cast<int>(m_Doc->pdfOptions().doClip)); |
||
17925 | fschmid | 1079 | docu.writeAttribute("rangeSel", m_Doc->pdfOptions().pageRangeSelection); |
1080 | docu.writeAttribute("rangeTxt", m_Doc->pdfOptions().pageRangeString); |
||
14925 | cbradney | 1081 | docu.writeAttribute("RotateDeg", static_cast<int>(m_Doc->pdfOptions().RotateDeg)); |
1082 | docu.writeAttribute("PresentMode", static_cast<int>(m_Doc->pdfOptions().PresentMode)); |
||
1083 | docu.writeAttribute("RecalcPic", static_cast<int>(m_Doc->pdfOptions().RecalcPic)); |
||
1084 | docu.writeAttribute("Grayscale", static_cast<int>(m_Doc->pdfOptions().isGrayscale)); |
||
1085 | docu.writeAttribute("RGBMode", static_cast<int>(m_Doc->pdfOptions().UseRGB)); |
||
1086 | docu.writeAttribute("UseProfiles", static_cast<int>(m_Doc->pdfOptions().UseProfiles)); |
||
1087 | docu.writeAttribute("UseProfiles2", static_cast<int>(m_Doc->pdfOptions().UseProfiles2)); |
||
1088 | docu.writeAttribute("Binding", m_Doc->pdfOptions().Binding); |
||
1089 | docu.writeAttribute("PicRes", m_Doc->pdfOptions().PicRes); |
||
1090 | docu.writeAttribute("Resolution", m_Doc->pdfOptions().Resolution); |
||
1091 | docu.writeAttribute("Version", m_Doc->pdfOptions().Version); |
||
1092 | docu.writeAttribute("Intent", m_Doc->pdfOptions().Intent); |
||
1093 | docu.writeAttribute("Intent2", m_Doc->pdfOptions().Intent2); |
||
1094 | docu.writeAttribute("SolidP", m_Doc->pdfOptions().SolidProf); |
||
1095 | docu.writeAttribute("ImageP", m_Doc->pdfOptions().ImageProf); |
||
1096 | docu.writeAttribute("PrintP", m_Doc->pdfOptions().PrintProf); |
||
1097 | docu.writeAttribute("InfoString", m_Doc->pdfOptions().Info); |
||
1098 | docu.writeAttribute("BTop", m_Doc->pdfOptions().bleeds.Top); |
||
1099 | docu.writeAttribute("BLeft", m_Doc->pdfOptions().bleeds.Left); |
||
1100 | docu.writeAttribute("BRight", m_Doc->pdfOptions().bleeds.Right); |
||
1101 | docu.writeAttribute("BBottom", m_Doc->pdfOptions().bleeds.Bottom); |
||
1102 | docu.writeAttribute("useDocBleeds", static_cast<int>(m_Doc->pdfOptions().useDocBleeds)); |
||
1103 | docu.writeAttribute("cropMarks", static_cast<int>(m_Doc->pdfOptions().cropMarks)); |
||
1104 | docu.writeAttribute("bleedMarks", static_cast<int>(m_Doc->pdfOptions().bleedMarks)); |
||
1105 | docu.writeAttribute("registrationMarks", static_cast<int>(m_Doc->pdfOptions().registrationMarks)); |
||
1106 | docu.writeAttribute("colorMarks", static_cast<int>(m_Doc->pdfOptions().colorMarks)); |
||
1107 | docu.writeAttribute("docInfoMarks", static_cast<int>(m_Doc->pdfOptions().docInfoMarks)); |
||
17401 | jghali | 1108 | docu.writeAttribute("markLength", m_Doc->pdfOptions().markLength); |
14925 | cbradney | 1109 | docu.writeAttribute("markOffset", m_Doc->pdfOptions().markOffset); |
1110 | docu.writeAttribute("ImagePr", static_cast<int>(m_Doc->pdfOptions().EmbeddedI)); |
||
1111 | docu.writeAttribute("PassOwner", m_Doc->pdfOptions().PassOwner); |
||
1112 | docu.writeAttribute("PassUser", m_Doc->pdfOptions().PassUser); |
||
1113 | docu.writeAttribute("Permissions", m_Doc->pdfOptions().Permissions); |
||
1114 | docu.writeAttribute("Encrypt", static_cast<int>(m_Doc->pdfOptions().Encrypt)); |
||
1115 | docu.writeAttribute("UseLayers", static_cast<int>(m_Doc->pdfOptions().useLayers)); |
||
1116 | docu.writeAttribute("UseLpi", static_cast<int>(m_Doc->pdfOptions().UseLPI)); |
||
1117 | docu.writeAttribute("UseSpotColors", static_cast<int>(m_Doc->pdfOptions().UseSpotColors)); |
||
1118 | docu.writeAttribute("doMultiFile", static_cast<int>(m_Doc->pdfOptions().doMultiFile)); |
||
1119 | docu.writeAttribute("displayBookmarks", static_cast<int>(m_Doc->pdfOptions().displayBookmarks)); |
||
1120 | docu.writeAttribute("displayFullscreen", static_cast<int>(m_Doc->pdfOptions().displayFullscreen)); |
||
1121 | docu.writeAttribute("displayLayers", static_cast<int>(m_Doc->pdfOptions().displayLayers)); |
||
1122 | docu.writeAttribute("displayThumbs", static_cast<int>(m_Doc->pdfOptions().displayThumbs)); |
||
1123 | docu.writeAttribute("hideMenuBar", static_cast<int>(m_Doc->pdfOptions().hideMenuBar)); |
||
1124 | docu.writeAttribute("hideToolBar", static_cast<int>(m_Doc->pdfOptions().hideToolBar)); |
||
1125 | docu.writeAttribute("fitWindow", static_cast<int>(m_Doc->pdfOptions().fitWindow)); |
||
16204 | fschmid | 1126 | docu.writeAttribute("openAfterExport", static_cast<int>(m_Doc->pdfOptions().openAfterExport)); |
14925 | cbradney | 1127 | docu.writeAttribute("PageLayout", m_Doc->pdfOptions().PageLayout); |
1128 | docu.writeAttribute("openAction", m_Doc->pdfOptions().openAction); |
||
1129 | for (int pdoF = 0; pdoF < m_Doc->pdfOptions().EmbedList.count(); ++pdoF) |
||
13746 | jghali | 1130 | { |
1131 | docu.writeEmptyElement("Fonts"); |
||
14925 | cbradney | 1132 | docu.writeAttribute("Name", m_Doc->pdfOptions().EmbedList[pdoF]); |
13746 | jghali | 1133 | } |
14925 | cbradney | 1134 | for (int pdoS = 0; pdoS < m_Doc->pdfOptions().SubsetList.count(); ++pdoS) |
13746 | jghali | 1135 | { |
1136 | docu.writeEmptyElement("Subset"); |
||
14925 | cbradney | 1137 | docu.writeAttribute("Name", m_Doc->pdfOptions().SubsetList[pdoS]); |
13746 | jghali | 1138 | } |
1139 | QMap<QString,LPIData>::Iterator itlp; |
||
14925 | cbradney | 1140 | for (itlp = m_Doc->pdfOptions().LPISettings.begin(); itlp != m_Doc->pdfOptions().LPISettings.end(); ++itlp) |
13746 | jghali | 1141 | { |
1142 | docu.writeEmptyElement("LPI"); |
||
1143 | docu.writeAttribute("Color", itlp.key()); |
||
1144 | docu.writeAttribute("Frequency", itlp.value().Frequency); |
||
1145 | docu.writeAttribute("Angle", itlp.value().Angle); |
||
1146 | docu.writeAttribute("SpotFunction", itlp.value().SpotFunc); |
||
1147 | } |
||
1148 | docu.writeEndElement(); |
||
1149 | } |
||
1150 | |||
1151 | void Scribus150Format::writeDocItemAttributes(ScXmlStreamWriter & docu) |
||
1152 | { |
||
1153 | docu.writeStartElement("DocItemAttributes"); |
||
14927 | cbradney | 1154 | for(ObjAttrVector::Iterator objAttrIt = m_Doc->itemAttributes().begin() ; objAttrIt != m_Doc->itemAttributes().end(); ++objAttrIt ) |
13746 | jghali | 1155 | { |
1156 | docu.writeEmptyElement("ItemAttribute"); |
||
1157 | docu.writeAttribute("Name", (*objAttrIt).name); |
||
1158 | docu.writeAttribute("Type", (*objAttrIt).type); |
||
1159 | docu.writeAttribute("Value", (*objAttrIt).value); |
||
1160 | docu.writeAttribute("Parameter", (*objAttrIt).parameter); |
||
1161 | docu.writeAttribute("Relationship", (*objAttrIt).relationship); |
||
1162 | docu.writeAttribute("RelationshipTo", (*objAttrIt).relationshipto); |
||
1163 | docu.writeAttribute("AutoAddTo", (*objAttrIt).autoaddto); |
||
1164 | } |
||
1165 | docu.writeEndElement(); |
||
1166 | } |
||
1167 | |||
1168 | |||
1169 | void Scribus150Format::writeTOC(ScXmlStreamWriter & docu) |
||
1170 | { |
||
1171 | docu.writeStartElement("TablesOfContents"); |
||
14927 | cbradney | 1172 | for(ToCSetupVector::Iterator tocSetupIt = m_Doc->tocSetups().begin() ; tocSetupIt != m_Doc->tocSetups().end(); ++tocSetupIt ) |
13746 | jghali | 1173 | { |
1174 | docu.writeEmptyElement("TableOfContents"); |
||
1175 | docu.writeAttribute("Name", (*tocSetupIt).name); |
||
1176 | docu.writeAttribute("ItemAttributeName", (*tocSetupIt).itemAttrName); |
||
1177 | docu.writeAttribute("FrameName", (*tocSetupIt).frameName); |
||
1178 | docu.writeAttribute("ListNonPrinting", (*tocSetupIt).listNonPrintingFrames); |
||
1179 | docu.writeAttribute("Style", (*tocSetupIt).textStyle); |
||
1180 | switch ((*tocSetupIt).pageLocation) |
||
1181 | { |
||
1182 | case Beginning: |
||
1183 | docu.writeAttribute("NumberPlacement", "Beginning"); |
||
1184 | break; |
||
1185 | case End: |
||
1186 | docu.writeAttribute("NumberPlacement", "End"); |
||
1187 | break; |
||
1188 | case NotShown: |
||
1189 | docu.writeAttribute("NumberPlacement", "NotShown"); |
||
1190 | break; |
||
1191 | } |
||
1192 | } |
||
1193 | docu.writeEndElement(); |
||
1194 | } |
||
1195 | |||
1196 | |||
1197 | void Scribus150Format::writeSections(ScXmlStreamWriter & docu) |
||
1198 | { |
||
1199 | docu.writeStartElement("Sections"); |
||
15037 | cbradney | 1200 | for(DocumentSectionMap::Iterator it = m_Doc->sections().begin() ; it != m_Doc->sections().end(); ++it ) |
13746 | jghali | 1201 | { |
1202 | docu.writeEmptyElement("Section"); |
||
1203 | docu.writeAttribute("Number", (*it).number); |
||
1204 | docu.writeAttribute("Name", (*it).name); |
||
1205 | docu.writeAttribute("From", (*it).fromindex); |
||
1206 | docu.writeAttribute("To", (*it).toindex); |
||
1207 | switch ((*it).type) |
||
1208 | { |
||
1209 | case Type_1_2_3: |
||
1210 | docu.writeAttribute("Type", "Type_1_2_3"); |
||
1211 | break; |
||
1212 | case Type_i_ii_iii: |
||
1213 | docu.writeAttribute("Type", "Type_i_ii_iii"); |
||
1214 | break; |
||
1215 | case Type_I_II_III: |
||
1216 | docu.writeAttribute("Type", "Type_I_II_III"); |
||
1217 | break; |
||
1218 | case Type_a_b_c: |
||
1219 | docu.writeAttribute("Type", "Type_a_b_c"); |
||
1220 | break; |
||
1221 | case Type_A_B_C: |
||
1222 | docu.writeAttribute("Type", "Type_A_B_C"); |
||
1223 | break; |
||
17826 | craig | 1224 | case Type_asterix: |
1225 | docu.writeAttribute("Type", "Type_asterix"); |
||
1226 | break; |
||
13746 | jghali | 1227 | case Type_None: |
1228 | docu.writeAttribute("Type", "Type_None"); |
||
1229 | break; |
||
1230 | } |
||
1231 | docu.writeAttribute("Start", (*it).sectionstartindex); |
||
1232 | docu.writeAttribute("Reversed", (*it).reversed); |
||
1233 | docu.writeAttribute("Active", (*it).active); |
||
15621 | fschmid | 1234 | docu.writeAttribute("FillChar", (*it).pageNumberFillChar.unicode()); |
15534 | craig | 1235 | docu.writeAttribute("FieldWidth", (*it).pageNumberWidth); |
13746 | jghali | 1236 | } |
1237 | docu.writeEndElement(); |
||
1238 | } |
||
1239 | |||
17826 | craig | 1240 | void Scribus150Format::writeMarks(ScXmlStreamWriter & docu) |
1241 | { |
||
1242 | //write list of definied marks to SLA |
||
1243 | if (m_Doc->marksList().isEmpty()) |
||
1244 | return; |
||
1245 | docu.writeStartElement("Marks"); |
||
1246 | foreach(Mark* mrk, m_Doc->marksList()) |
||
1247 | { |
||
1248 | if (mrk->isType(MARKNoteFrameType)) |
||
1249 | continue; |
||
1250 | docu.writeEmptyElement("Mark"); |
||
1251 | docu.writeAttribute("label", mrk->label); |
||
1252 | docu.writeAttribute("type", mrk->getType()); |
||
1253 | if (mrk->isType(MARK2ItemType) && mrk->hasItemPtr()) |
||
1254 | { |
||
1255 | const PageItem* item = mrk->getItemPtr(); |
||
1256 | assert(item != NULL); |
||
1257 | docu.writeAttribute("ItemID", qHash(item)); |
||
1258 | //docu.writeAttribute("itemName", item->itemName()); |
||
1259 | } |
||
1260 | else if (mrk->isType(MARKVariableTextType) && mrk->hasString()) |
||
1261 | docu.writeAttribute("str", mrk->getString()); |
||
1262 | else if (mrk->isType(MARK2MarkType) && mrk->hasMark()) |
||
1263 | { |
||
1264 | QString label; |
||
1265 | MarkType type; |
||
1266 | mrk->getMark(label, type); |
||
1267 | docu.writeAttribute("MARKlabel", label); |
||
1268 | docu.writeAttribute("MARKtype", type); |
||
1269 | } |
||
1270 | } |
||
1271 | docu.writeEndElement(); |
||
1272 | } |
||
13746 | jghali | 1273 | |
17826 | craig | 1274 | void Scribus150Format::writeNotesStyles(ScXmlStreamWriter & docu) |
1275 | { |
||
1276 | //write notes styles |
||
1277 | docu.writeStartElement("NotesStyles"); |
||
1278 | QList<NotesStyle*>::Iterator itNS; |
||
1279 | QList<NotesStyle*>::Iterator end = m_Doc->m_docNotesStylesList.end(); |
||
1280 | for (itNS = m_Doc->m_docNotesStylesList.begin(); itNS != end; ++itNS) |
||
1281 | { |
||
1282 | NotesStyle* NS = (*itNS); |
||
1283 | docu.writeEmptyElement("notesStyle"); |
||
1284 | docu.writeAttribute("Name", NS->name()); |
||
1285 | docu.writeAttribute("Start", NS->start()); |
||
1286 | docu.writeAttribute("Endnotes", NS->isEndNotes()); |
||
1287 | switch (NS->getType()) |
||
1288 | { |
||
1289 | case Type_1_2_3: |
||
1290 | docu.writeAttribute("Type", "Type_1_2_3"); |
||
1291 | break; |
||
1292 | case Type_i_ii_iii: |
||
1293 | docu.writeAttribute("Type", "Type_i_ii_iii"); |
||
1294 | break; |
||
1295 | case Type_I_II_III: |
||
1296 | docu.writeAttribute("Type", "Type_I_II_III"); |
||
1297 | break; |
||
1298 | case Type_a_b_c: |
||
1299 | docu.writeAttribute("Type", "Type_a_b_c"); |
||
1300 | break; |
||
1301 | case Type_A_B_C: |
||
1302 | docu.writeAttribute("Type", "Type_A_B_C"); |
||
1303 | break; |
||
1304 | case Type_asterix: |
||
1305 | docu.writeAttribute("Type", "Type_asterix"); |
||
1306 | break; |
||
1307 | case Type_None: |
||
1308 | docu.writeAttribute("Type", "Type_None"); |
||
1309 | break; |
||
1310 | } |
||
1311 | docu.writeAttribute("Range", (int) NS->range()); |
||
1312 | docu.writeAttribute("Prefix", NS->prefix()); |
||
1313 | docu.writeAttribute("Suffix", NS->suffix()); |
||
1314 | docu.writeAttribute("AutoHeight", NS->isAutoNotesHeight()); |
||
1315 | docu.writeAttribute("AutoWidth", NS->isAutoNotesWidth()); |
||
1316 | docu.writeAttribute("AutoRemove", NS->isAutoRemoveEmptyNotesFrames()); |
||
1317 | docu.writeAttribute("AutoWeld", NS->isAutoWeldNotesFrames()); |
||
1318 | docu.writeAttribute("SuperNote", NS->isSuperscriptInNote()); |
||
1319 | docu.writeAttribute("SuperMaster", NS->isSuperscriptInMaster()); |
||
1320 | docu.writeAttribute("MarksStyle", NS->marksChStyle()); |
||
1321 | docu.writeAttribute("NotesStyle", NS->notesParStyle()); |
||
1322 | } |
||
1323 | docu.writeEndElement(); |
||
1324 | } |
||
1325 | |||
1326 | void Scribus150Format::writeNotesFrames(ScXmlStreamWriter &docu) |
||
1327 | { |
||
1328 | docu.writeStartElement("NotesFrames"); |
||
1329 | |||
1330 | QList<PageItem_NoteFrame*> NFList; |
||
1331 | foreach (NotesStyle* NS, m_Doc->m_docNotesStylesList) |
||
1332 | NFList.append(m_Doc->listNotesFrames(NS)); |
||
1333 | |||
1334 | for (int it = 0; it < NFList.count(); ++it) |
||
1335 | { |
||
1336 | PageItem_NoteFrame* nF = NFList.at(it); |
||
1337 | NotesStyle* NS = nF->notesStyle(); |
||
1338 | if (NS->isEndNotes()) |
||
1339 | { |
||
1340 | docu.writeEmptyElement("ENDNOTEFRAME"); |
||
1341 | docu.writeAttribute("NSname", NS->name()); |
||
1342 | docu.writeAttribute("range", (int) NS->range()); |
||
1343 | docu.writeAttribute("myID", qHash(nF)); |
||
1344 | //docu.writeAttribute("name", nF->itemName()); |
||
1345 | |||
1346 | rangeItem rI = m_Doc->m_docEndNotesFramesMap.value(nF); |
||
1347 | if (NS->range() == NSRsection) |
||
1348 | docu.writeAttribute("index", rI.sectionIndex); |
||
1349 | else if (NS->range() == NSRpage) |
||
1350 | docu.writeAttribute("index", rI.page->pageNr()); |
||
1351 | else if (NS->range() == NSRstory) |
||
1352 | docu.writeAttribute("ItemID", qHash(rI.firstStoryFrame)); |
||
1353 | //docu.writeAttribute("item", rI.firstStoryFrame->itemName()); |
||
1354 | } |
||
1355 | else //footnotes frame |
||
1356 | { |
||
1357 | docu.writeEmptyElement("FOOTNOTEFRAME"); |
||
1358 | docu.writeAttribute("NSname", NS->name()); |
||
1359 | docu.writeAttribute("myID", qHash(nF)); |
||
1360 | //docu.writeAttribute("name", nF->itemName()); |
||
1361 | docu.writeAttribute("MasterID", qHash(nF->masterFrame())); |
||
1362 | //docu.writeAttribute("master",nF->masterFrame()->itemName()); |
||
1363 | } |
||
1364 | } |
||
1365 | docu.writeEndElement(); |
||
1366 | } |
||
1367 | |||
1368 | void Scribus150Format::writeNotes(ScXmlStreamWriter & docu) |
||
1369 | { |
||
1370 | //write notes |
||
1371 | if (m_Doc->notesList().isEmpty()) |
||
1372 | return; |
||
1373 | docu.writeStartElement("Notes"); |
||
1374 | QList<TextNote*>::const_iterator itTN; |
||
1375 | QList<TextNote*>::const_iterator end = m_Doc->notesList().end(); |
||
1376 | for (itTN = m_Doc->notesList().begin(); itTN != end; ++itTN) |
||
1377 | { |
||
1378 | TextNote* TN = (*itTN); |
||
1379 | if (TN->masterMark() == NULL) |
||
1380 | continue; |
||
1381 | docu.writeEmptyElement("Note"); |
||
1382 | docu.writeAttribute("Master", TN->masterMark()->label); |
||
1383 | docu.writeAttribute("NStyle", TN->notesStyle()->name()); |
||
1384 | docu.writeAttribute("Text", TN->saxedText()); |
||
1385 | } |
||
1386 | docu.writeEndElement(); |
||
1387 | } |
||
1388 | |||
13746 | jghali | 1389 | void Scribus150Format::writePageSets(ScXmlStreamWriter & docu) |
1390 | { |
||
1391 | docu.writeStartElement("PageSets"); |
||
1392 | QList<PageSet>::Iterator itpgset; |
||
14924 | cbradney | 1393 | QList<PageSet> pageSet(m_Doc->pageSets()); |
1394 | for(itpgset = pageSet.begin(); itpgset != pageSet.end(); ++itpgset ) |
||
13746 | jghali | 1395 | { |
1396 | docu.writeStartElement("Set"); |
||
1397 | docu.writeAttribute("Name", (*itpgset).Name); |
||
1398 | docu.writeAttribute("FirstPage", (*itpgset).FirstPage); |
||
1399 | docu.writeAttribute("Rows", (*itpgset).Rows); |
||
1400 | docu.writeAttribute("Columns", (*itpgset).Columns); |
||
1401 | // docu.writeAttribute("GapHorizontal", (*itpgset).GapHorizontal); |
||
1402 | // docu.writeAttribute("GapVertical", (*itpgset).GapVertical); |
||
1403 | // docu.writeAttribute("GapBelow", (*itpgset).GapBelow); |
||
1404 | QStringList pNames = (*itpgset).pageNames; |
||
1405 | QStringList::Iterator itpgsetN; |
||
1406 | for(itpgsetN = pNames.begin(); itpgsetN != pNames.end(); ++itpgsetN ) |
||
1407 | { |
||
1408 | docu.writeEmptyElement("PageNames"); |
||
1409 | docu.writeAttribute("Name", (*itpgsetN)); |
||
1410 | } |
||
1411 | docu.writeEndElement(); |
||
1412 | } |
||
1413 | docu.writeEndElement(); |
||
1414 | } |
||
1415 | |||
16162 | fschmid | 1416 | void Scribus150Format::writePatterns(ScXmlStreamWriter & docu, const QString& baseDir, bool part, Selection* selection) |
13746 | jghali | 1417 | { |
16162 | fschmid | 1418 | QStringList patterns; |
1419 | if (part) |
||
1420 | patterns = m_Doc->getPatternDependencyList(m_Doc->getUsedPatternsSelection(selection)); |
||
1421 | else |
||
1422 | patterns = m_Doc->getPatternDependencyList(m_Doc->docPatterns.keys()); |
||
16052 | fschmid | 1423 | for (int a = 0; a < patterns.count(); a++) |
13746 | jghali | 1424 | { |
1425 | docu.writeStartElement("Pattern"); |
||
16052 | fschmid | 1426 | docu.writeAttribute("Name", patterns[a]); |
1427 | ScPattern pa = m_Doc->docPatterns[patterns[a]]; |
||
13746 | jghali | 1428 | docu.writeAttribute("width", pa.width); |
1429 | docu.writeAttribute("height", pa.height); |
||
1430 | docu.writeAttribute("scaleX", pa.scaleX); |
||
1431 | docu.writeAttribute("scaleY", pa.scaleY); |
||
1432 | docu.writeAttribute("xoffset", pa.xoffset); |
||
1433 | docu.writeAttribute("yoffset", pa.yoffset); |
||
1434 | WriteObjects(m_Doc, docu, baseDir, 0, 0, ItemSelectionPattern, &pa.items); |
||
1435 | docu.writeEndElement(); |
||
1436 | } |
||
1437 | } |
||
1438 | |||
1439 | void Scribus150Format::writeContent(ScXmlStreamWriter & docu, const QString& baseDir) |
||
1440 | { |
||
1441 | if (m_mwProgressBar != 0) |
||
1442 | { |
||
1443 | m_mwProgressBar->setMaximum(m_Doc->DocPages.count()+m_Doc->MasterPages.count()+m_Doc->DocItems.count()+m_Doc->MasterItems.count()+m_Doc->FrameItems.count()); |
||
1444 | m_mwProgressBar->setValue(0); |
||
1445 | } |
||
1446 | WritePages(m_Doc, docu, m_mwProgressBar, 0, true); |
||
1447 | WritePages(m_Doc, docu, m_mwProgressBar, m_Doc->MasterPages.count(), false); |
||
1448 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count(), ItemSelectionFrame); |
||
1449 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count()+m_Doc->FrameItems.count(), ItemSelectionMaster); |
||
1450 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count()+m_Doc->MasterItems.count()+m_Doc->FrameItems.count(), ItemSelectionPage); |
||
1451 | } |
||
1452 | |||
1453 | void Scribus150Format::WritePages(ScribusDoc *doc, ScXmlStreamWriter& docu, QProgressBar *dia2, uint maxC, bool master) |
||
1454 | { |
||
1455 | uint ObCount = maxC; |
||
16729 | fschmid | 1456 | ScPage *page; |
13746 | jghali | 1457 | uint pages; |
1458 | QString tmp; |
||
1459 | if (master) |
||
1460 | pages = doc->MasterPages.count(); |
||
1461 | else |
||
1462 | pages = doc->DocPages.count(); |
||
1463 | for(uint i = 0; i < pages; ++i) |
||
1464 | { |
||
1465 | ObCount++; |
||
1466 | if (dia2 != 0) |
||
1467 | dia2->setValue(ObCount); |
||
1468 | if (master) |
||
1469 | { |
||
1470 | docu.writeStartElement("MASTERPAGE"); |
||
1471 | page = doc->MasterPages.at(i); |
||
1472 | } |
||
1473 | else |
||
1474 | { |
||
1475 | docu.writeStartElement("PAGE"); |
||
1476 | page = doc->DocPages.at(i); |
||
1477 | } |
||
1478 | docu.writeAttribute("PAGEXPOS",page->xOffset()); |
||
1479 | docu.writeAttribute("PAGEYPOS",page->yOffset()); |
||
1480 | docu.writeAttribute("PAGEWIDTH",page->width()); |
||
1481 | docu.writeAttribute("PAGEHEIGHT",page->height()); |
||
1482 | docu.writeAttribute("BORDERLEFT",page->initialMargins.Left); |
||
1483 | docu.writeAttribute("BORDERRIGHT",page->initialMargins.Right); |
||
1484 | docu.writeAttribute("BORDERTOP",page->initialMargins.Top); |
||
1485 | docu.writeAttribute("BORDERBOTTOM",page->initialMargins.Bottom); |
||
1486 | docu.writeAttribute("NUM",page->pageNr()); |
||
1487 | docu.writeAttribute("NAM",page->pageName()); |
||
1488 | docu.writeAttribute("MNAM",page->MPageNam); |
||
1489 | docu.writeAttribute("Size", page->m_pageSize); |
||
1490 | docu.writeAttribute("Orientation", page->orientation()); |
||
1491 | docu.writeAttribute("LEFT", page->LeftPg); |
||
1492 | docu.writeAttribute("PRESET", page->marginPreset); |
||
1493 | docu.writeAttribute("VerticalGuides", GuideManagerIO::writeVerticalGuides( |
||
1494 | page, GuideManagerCore::Standard)); |
||
1495 | docu.writeAttribute("HorizontalGuides", GuideManagerIO::writeHorizontalGuides( |
||
1496 | page, GuideManagerCore::Standard)); |
||
1497 | docu.writeAttribute("AGhorizontalAutoGap", page->guides.horizontalAutoGap()); |
||
1498 | docu.writeAttribute("AGverticalAutoGap", page->guides.verticalAutoGap()); |
||
1499 | docu.writeAttribute("AGhorizontalAutoCount", page->guides.horizontalAutoCount()); |
||
1500 | docu.writeAttribute("AGverticalAutoCount", page->guides.verticalAutoCount()); |
||
1501 | docu.writeAttribute("AGhorizontalAutoRefer", page->guides.horizontalAutoRefer()); |
||
1502 | docu.writeAttribute("AGverticalAutoRefer", page->guides.verticalAutoRefer()); |
||
1503 | docu.writeAttribute("AGSelection", GuideManagerIO::writeSelection(page)); |
||
18394 | fschmid | 1504 | docu.writeAttribute("pageEffectDuration", page->PresentVals.pageEffectDuration); |
1505 | docu.writeAttribute("pageViewDuration", page->PresentVals.pageViewDuration); |
||
1506 | docu.writeAttribute("effectType", page->PresentVals.effectType); |
||
1507 | docu.writeAttribute("Dm", page->PresentVals.Dm); |
||
1508 | docu.writeAttribute("M", page->PresentVals.M); |
||
1509 | docu.writeAttribute("Di", page->PresentVals.Di); |
||
13746 | jghali | 1510 | docu.writeEndElement(); |
1511 | } |
||
1512 | } |
||
1513 | |||
1514 | |||
1515 | namespace { // anon |
||
15009 | jghali | 1516 | QString textWithSoftHyphens(StoryText& itemText, int from, int to) |
13746 | jghali | 1517 | { |
1518 | QString result(""); |
||
1519 | int lastPos = from; |
||
1520 | for (int i = from; i < to; ++i) |
||
1521 | { |
||
18524 | avox | 1522 | if (itemText.hasFlag(i, ScLayout_HyphenationPossible) |
13746 | jghali | 1523 | // duplicate SHYPHEN if already present to indicate a user provided SHYPHEN: |
1524 | || itemText.text(i) == SpecialChars::SHYPHEN) |
||
1525 | { |
||
1526 | result += itemText.text(lastPos, i + 1 - lastPos); |
||
1527 | result += SpecialChars::SHYPHEN; |
||
1528 | lastPos = i+1; |
||
1529 | } |
||
1530 | } |
||
1531 | if (lastPos < to) |
||
1532 | result += itemText.text(lastPos, to - lastPos); |
||
1533 | return result; |
||
1534 | } |
||
1535 | } // namespace anon |
||
1536 | |||
1537 | |||
1538 | void Scribus150Format::writeITEXTs(ScribusDoc *doc, ScXmlStreamWriter &docu, PageItem* item) |
||
1539 | { |
||
1540 | CharStyle lastStyle; |
||
1541 | int lastPos = 0; |
||
1542 | QString tmpnum; |
||
17826 | craig | 1543 | int iTLen = item->itemText.length(); |
1544 | if (item->isNoteFrame()) |
||
1545 | iTLen = 0; //used for saving empty endnotes frames, as they will be filled automatically |
||
1546 | for(int k = 0; k < iTLen; ++k) |
||
13746 | jghali | 1547 | { |
1548 | const CharStyle& style1(item->itemText.charStyle(k)); |
||
1549 | const QChar ch = item->itemText.text(k); |
||
1550 | |||
1551 | if (ch == SpecialChars::OBJECT || |
||
1552 | ch == SpecialChars::TAB || |
||
1553 | ch == SpecialChars::PARSEP || |
||
1554 | ch == SpecialChars::LINEBREAK || |
||
1555 | ch == SpecialChars::COLBREAK || |
||
1556 | ch == SpecialChars::FRAMEBREAK || |
||
1557 | ch == SpecialChars::PAGENUMBER || |
||
1558 | ch == SpecialChars::PAGECOUNT || |
||
1559 | ch == SpecialChars::NBHYPHEN || |
||
1560 | ch == SpecialChars::NBSPACE || |
||
1561 | ch == SpecialChars::ZWNBSPACE || |
||
1562 | ch == SpecialChars::ZWSPACE || |
||
1563 | ch.unicode() < 32 || |
||
1564 | (0xd800 <= ch.unicode() && ch.unicode() < 0xe000) || |
||
1565 | ch.unicode() == 0xfffe || ch.unicode() == 0xffff || |
||
1566 | style1 != lastStyle) |
||
1567 | { |
||
1568 | // something new, write pending chars |
||
1569 | if (k - lastPos > 0) |
||
1570 | { |
||
1571 | docu.writeEmptyElement("ITEXT"); |
||
1572 | /*if (item->asPathText()) // seems to cause problems when loading pathtext elements |
||
1573 | putCStylePT(docu, lastStyle); |
||
1574 | else*/ |
||
1575 | putCStyle(docu, lastStyle); |
||
15009 | jghali | 1576 | docu.writeAttribute("CH", textWithSoftHyphens(item->itemText, lastPos, k)); |
13746 | jghali | 1577 | } |
1578 | lastStyle = style1; |
||
1579 | lastPos = k; |
||
1580 | } |
||
1581 | |||
1582 | if (ch == SpecialChars::OBJECT && item->itemText.object(k) != NULL) |
||
1583 | { |
||
1584 | // each obj in its own ITEXT for now |
||
1585 | docu.writeEmptyElement("ITEXT"); |
||
1586 | /*if (item->asPathText()) // seems to cause problems when loading pathtext elements |
||
1587 | putCStylePT(docu, lastStyle); |
||
1588 | else*/ |
||
1589 | putCStyle(docu, lastStyle); |
||
13900 | jghali | 1590 | tmpnum.setNum(ch.unicode()); |
1591 | docu.writeAttribute("Unicode", tmpnum); |
||
17407 | fschmid | 1592 | docu.writeAttribute("COBJ", item->itemText.object(k)->inlineCharID); |
13746 | jghali | 1593 | } |
18524 | avox | 1594 | else if (ch == SpecialChars::OBJECT && item->itemText.hasMark(k)) |
17826 | craig | 1595 | { |
18524 | avox | 1596 | Mark* mark = item->itemText.mark(k); |
18047 | craig | 1597 | if (!mark->isType(MARKBullNumType)) |
1598 | { //dont save marks for bullets and numbering |
||
1599 | docu.writeEmptyElement("MARK"); |
||
1600 | docu.writeAttribute("label", mark->label); |
||
1601 | docu.writeAttribute("type", mark->getType()); |
||
1602 | } |
||
17826 | craig | 1603 | } |
13746 | jghali | 1604 | else if (ch == SpecialChars::PARSEP) // stores also the paragraphstyle for preceding chars |
1605 | putPStyle(docu, item->itemText.paragraphStyle(k), "para"); |
||
1606 | else if (ch == SpecialChars::TAB) |
||
13971 | jghali | 1607 | { |
13746 | jghali | 1608 | docu.writeEmptyElement("tab"); |
13971 | jghali | 1609 | putCStyle(docu, lastStyle); |
1610 | } |
||
13746 | jghali | 1611 | else if (ch == SpecialChars::LINEBREAK) |
1612 | docu.writeEmptyElement("breakline"); |
||
1613 | else if (ch == SpecialChars::COLBREAK) |
||
1614 | docu.writeEmptyElement("breakcol"); |
||
1615 | else if (ch == SpecialChars::FRAMEBREAK) |
||
1616 | docu.writeEmptyElement("breakframe"); |
||
1617 | else if (ch == SpecialChars::NBHYPHEN) |
||
1618 | docu.writeEmptyElement("nbhyphen"); |
||
1619 | else if (ch == SpecialChars::NBSPACE) |
||
1620 | docu.writeEmptyElement("nbspace"); |
||
1621 | else if (ch == SpecialChars::ZWNBSPACE) |
||
1622 | docu.writeEmptyElement("zwnbspace"); |
||
1623 | else if (ch == SpecialChars::ZWSPACE) |
||
1624 | docu.writeEmptyElement("zwspace"); |
||
1625 | else if (ch == SpecialChars::PAGENUMBER) |
||
1626 | { |
||
1627 | docu.writeEmptyElement("var"); |
||
1628 | docu.writeAttribute("name", "pgno"); |
||
1629 | putCStyle(docu, lastStyle); |
||
1630 | } |
||
1631 | else if (ch == SpecialChars::PAGECOUNT) |
||
1632 | { |
||
1633 | docu.writeEmptyElement("var"); |
||
1634 | docu.writeAttribute("name", "pgco"); |
||
1635 | putCStyle(docu, lastStyle); |
||
1636 | } |
||
1637 | else if (ch.unicode() < 32 || |
||
1638 | (0xd800 <= ch.unicode() && ch.unicode() < 0xe000) || |
||
1639 | ch.unicode() == 0xfffe || ch.unicode() == 0xffff) |
||
1640 | { |
||
1641 | docu.writeEmptyElement("ITEXT"); |
||
1642 | putCStyle(docu, lastStyle); |
||
1643 | tmpnum.setNum(ch.unicode()); |
||
1644 | docu.writeAttribute("Unicode", tmpnum); |
||
1645 | } |
||
1646 | else |
||
1647 | { |
||
1648 | continue; |
||
1649 | } |
||
1650 | // otherwise we just wrote something special and are done with position 'k' |
||
1651 | lastPos = k + 1; |
||
1652 | } |
||
1653 | // write pending chars |
||
1654 | if ( item->itemText.length() - lastPos > 0) |
||
1655 | { |
||
1656 | docu.writeEmptyElement("ITEXT"); |
||
1657 | /*if (item->asPathText()) |
||
1658 | putCStylePT(docu, lastStyle); |
||
1659 | else*/ |
||
1660 | putCStyle(docu, lastStyle); |
||
15009 | jghali | 1661 | docu.writeAttribute("CH", textWithSoftHyphens(item->itemText, lastPos, item->itemText.length())); |
13746 | jghali | 1662 | } |
1663 | // paragraphstyle for trailing chars |
||
1664 | if (item->itemText.length() == 0 || item->itemText.text(item->itemText.length()-1) != SpecialChars::PARSEP) |
||
1665 | { |
||
1666 | putPStyle(docu, item->itemText.paragraphStyle(item->itemText.length()), "trail"); |
||
1667 | } |
||
1668 | } |
||
1669 | |||
1670 | void Scribus150Format::WriteObjects(ScribusDoc *doc, ScXmlStreamWriter& docu, const QString& baseDir, QProgressBar *dia2, uint maxC, ItemSelection master, QList<PageItem*> *some_items) |
||
1671 | { |
||
1672 | uint ObCount = maxC; |
||
1673 | QList<PageItem*> *items = NULL; |
||
17407 | fschmid | 1674 | QList<PageItem*> itemList; |
13746 | jghali | 1675 | PageItem *item = NULL; |
1676 | uint objects = 0; |
||
1677 | switch (master) |
||
1678 | { |
||
1679 | case ItemSelectionMaster: |
||
1680 | items = &doc->MasterItems; |
||
1681 | break; |
||
1682 | case ItemSelectionPage: |
||
1683 | items = &doc->DocItems; |
||
1684 | break; |
||
1685 | case ItemSelectionFrame: |
||
17147 | fschmid | 1686 | if (some_items != NULL) |
1687 | items = some_items; |
||
1688 | else |
||
17407 | fschmid | 1689 | { |
1690 | itemList = doc->FrameItems.values(); |
||
1691 | items = &itemList; |
||
1692 | } |
||
13746 | jghali | 1693 | break; |
16105 | fschmid | 1694 | case ItemSelectionGroup: |
13746 | jghali | 1695 | case ItemSelectionPattern: |
16162 | fschmid | 1696 | case ItemSelectionElements: |
13746 | jghali | 1697 | items = some_items; |
1698 | break; |
||
1699 | default: |
||
1700 | assert(false); |
||
1701 | } |
||
1702 | objects = items->count(); |
||
1703 | for(uint j = 0; j < objects;++j) |
||
1704 | { |
||
1705 | ObCount++; |
||
1706 | if (dia2 != 0) |
||
1707 | dia2->setValue(ObCount); |
||
1708 | item = items->at(j); |
||
1709 | switch (master) |
||
1710 | { |
||
1711 | case ItemSelectionMaster: |
||
1712 | // item = doc->MasterItems.at(j); |
||
1713 | docu.writeStartElement("MASTEROBJECT"); |
||
1714 | break; |
||
16105 | fschmid | 1715 | case ItemSelectionGroup: |
13746 | jghali | 1716 | case ItemSelectionPage: |
1717 | // item = doc->DocItems.at(j); |
||
1718 | docu.writeStartElement("PAGEOBJECT"); |
||
1719 | break; |
||
1720 | case ItemSelectionFrame: |
||
1721 | // item = doc->FrameItems.at(j); |
||
1722 | docu.writeStartElement("FRAMEOBJECT"); |
||
1723 | break; |
||
1724 | case ItemSelectionPattern: |
||
1725 | docu.writeStartElement("PatternItem"); |
||
1726 | break; |
||
16162 | fschmid | 1727 | case ItemSelectionElements: |
1728 | docu.writeStartElement("ITEM"); |
||
1729 | break; |
||
13746 | jghali | 1730 | } |
17407 | fschmid | 1731 | if (master == ItemSelectionFrame) |
1732 | docu.writeAttribute("InID", item->inlineCharID); |
||
16162 | fschmid | 1733 | if (master == ItemSelectionElements) |
1734 | { |
||
1735 | docu.writeAttribute("XPOS", item->xPos() - doc->currentPage()->xOffset()); |
||
1736 | docu.writeAttribute("YPOS", item->yPos() - doc->currentPage()->yOffset()); |
||
1737 | } |
||
1738 | else |
||
1739 | { |
||
1740 | docu.writeAttribute("XPOS", item->xPos()); |
||
1741 | docu.writeAttribute("YPOS", item->yPos()); |
||
1742 | } |
||
13746 | jghali | 1743 | SetItemProps(docu, item, baseDir, true); |
16251 | fschmid | 1744 | if (!item->OnMasterPage.isEmpty()) |
1745 | docu.writeAttribute("OnMasterPage", item->OnMasterPage); |
||
1746 | if (!item->pixm.imgInfo.usedPath.isEmpty()) |
||
1747 | docu.writeAttribute("ImageClip", item->pixm.imgInfo.usedPath); |
||
16252 | fschmid | 1748 | if (item->pixm.imgInfo.lowResType != 1) |
1749 | docu.writeAttribute("ImageRes", item->pixm.imgInfo.lowResType); |
||
1750 | if (item->isEmbedded) |
||
1751 | docu.writeAttribute("isInline", 1); |
||
16251 | fschmid | 1752 | if (!item->fillRule) |
1753 | docu.writeAttribute("fillRule", 0); |
||
1754 | if (item->doOverprint) |
||
1755 | docu.writeAttribute("doOverprint", 1); |
||
13746 | jghali | 1756 | docu.writeAttribute("gXpos", item->gXpos); |
1757 | docu.writeAttribute("gYpos", item->gYpos); |
||
1758 | docu.writeAttribute("gWidth", item->gWidth); |
||
1759 | docu.writeAttribute("gHeight", item->gHeight); |
||
15060 | fschmid | 1760 | if (item->itemType() == PageItem::Symbol) |
1761 | docu.writeAttribute("pattern", item->pattern()); |
||
13746 | jghali | 1762 | if (item->GrType != 0) |
1763 | { |
||
1764 | if (item->GrType == 8) |
||
1765 | { |
||
1766 | docu.writeAttribute("pattern", item->pattern()); |
||
14260 | fschmid | 1767 | double patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY; |
1768 | item->patternTransform(patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY); |
||
14276 | fschmid | 1769 | bool mirrorX, mirrorY; |
1770 | item->patternFlip(mirrorX, mirrorY); |
||
13746 | jghali | 1771 | docu.writeAttribute("pScaleX", patternScaleX); |
1772 | docu.writeAttribute("pScaleY", patternScaleY); |
||
1773 | docu.writeAttribute("pOffsetX", patternOffsetX); |
||
1774 | docu.writeAttribute("pOffsetY", patternOffsetY); |
||
1775 | docu.writeAttribute("pRotation", patternRotation); |
||
14260 | fschmid | 1776 | docu.writeAttribute("pSkewX", patternSkewX); |
1777 | docu.writeAttribute("pSkewY", patternSkewY); |
||
14276 | fschmid | 1778 | docu.writeAttribute("pMirrorX" , mirrorX); |
1779 | docu.writeAttribute("pMirrorY" , mirrorY); |
||
13746 | jghali | 1780 | } |
1781 | else |
||
1782 | { |
||
15024 | fschmid | 1783 | if (item->GrType == 11) |
14952 | fschmid | 1784 | { |
15024 | fschmid | 1785 | docu.writeAttribute("GMAY", item->meshGradientArray[0].count()); |
1786 | docu.writeAttribute("GMAX", item->meshGradientArray.count()); |
||
14952 | fschmid | 1787 | } |
16729 | fschmid | 1788 | else if (item->GrType == 12) |
1789 | { |
||
1790 | docu.writeAttribute("GMAX", item->meshGradientPatches.count()); |
||
1791 | } |
||
15024 | fschmid | 1792 | else |
1793 | { |
||
1794 | docu.writeAttribute("GRSTARTX", item->GrStartX); |
||
1795 | docu.writeAttribute("GRSTARTY", item->GrStartY); |
||
1796 | docu.writeAttribute("GRENDX", item->GrEndX); |
||
1797 | docu.writeAttribute("GRENDY", item->GrEndY); |
||
1798 | docu.writeAttribute("GRFOCALX", item->GrFocalX); |
||
1799 | docu.writeAttribute("GRFOCALY", item->GrFocalY); |
||
1800 | docu.writeAttribute("GRSCALE" , item->GrScale); |
||
1801 | docu.writeAttribute("GRSKEW" , item->GrSkew); |
||
1802 | if ((item->GrType == 9) || (item->GrType == 10)) |
||
1803 | { |
||
1804 | docu.writeAttribute("GRC1X" , item->GrControl1.x()); |
||
1805 | docu.writeAttribute("GRC1Y" , item->GrControl1.y()); |
||
1806 | docu.writeAttribute("GRCOLP1" , item->GrColorP1); |
||
1807 | docu.writeAttribute("GRC2X" , item->GrControl2.x()); |
||
1808 | docu.writeAttribute("GRC2Y" , item->GrControl2.y()); |
||
1809 | docu.writeAttribute("GRCOLP2" , item->GrColorP2); |
||
1810 | docu.writeAttribute("GRC3X" , item->GrControl3.x()); |
||
1811 | docu.writeAttribute("GRC3Y" , item->GrControl3.y()); |
||
1812 | docu.writeAttribute("GRCOLP3" , item->GrColorP3); |
||
1813 | docu.writeAttribute("GRC4X" , item->GrControl4.x()); |
||
1814 | docu.writeAttribute("GRC4Y" , item->GrControl4.y()); |
||
1815 | docu.writeAttribute("GRC5X" , item->GrControl5.x()); |
||
1816 | docu.writeAttribute("GRC5Y" , item->GrControl5.y()); |
||
1817 | docu.writeAttribute("GRCOLP4" , item->GrColorP4); |
||
1818 | docu.writeAttribute("GRCOLT1" , item->GrCol1transp); |
||
1819 | docu.writeAttribute("GRCOLT2" , item->GrCol2transp); |
||
1820 | docu.writeAttribute("GRCOLT3" , item->GrCol3transp); |
||
1821 | docu.writeAttribute("GRCOLT4" , item->GrCol4transp); |
||
1822 | docu.writeAttribute("GRCOLS1" , item->GrCol1Shade); |
||
1823 | docu.writeAttribute("GRCOLS2" , item->GrCol1Shade); |
||
1824 | docu.writeAttribute("GRCOLS3" , item->GrCol1Shade); |
||
1825 | docu.writeAttribute("GRCOLS4" , item->GrCol1Shade); |
||
1826 | } |
||
1827 | } |
||
13746 | jghali | 1828 | } |
1829 | } |
||
14168 | fschmid | 1830 | if (!item->gradient().isEmpty()) |
1831 | docu.writeAttribute("GRNAME", item->gradient()); |
||
14231 | fschmid | 1832 | if (!item->strokeGradient().isEmpty()) |
1833 | docu.writeAttribute("GRNAMES", item->strokeGradient()); |
||
14297 | fschmid | 1834 | if (!item->gradientMask().isEmpty()) |
1835 | docu.writeAttribute("GRNAMEM", item->gradientMask()); |
||
14231 | fschmid | 1836 | if (item->GrTypeStroke > 0) |
1837 | { |
||
1838 | docu.writeAttribute("GRSTARTXS", item->GrStrokeStartX); |
||
1839 | docu.writeAttribute("GRSTARTYS", item->GrStrokeStartY); |
||
1840 | docu.writeAttribute("GRENDXS", item->GrStrokeEndX); |
||
1841 | docu.writeAttribute("GRENDYS", item->GrStrokeEndY); |
||
14278 | fschmid | 1842 | docu.writeAttribute("GRFOCALXS", item->GrStrokeFocalX); |
1843 | docu.writeAttribute("GRFOCALYS", item->GrStrokeFocalY); |
||
1844 | docu.writeAttribute("GRSCALES" , item->GrStrokeScale); |
||
14284 | fschmid | 1845 | docu.writeAttribute("GRSKEWS" , item->GrStrokeSkew); |
14231 | fschmid | 1846 | } |
14168 | fschmid | 1847 | if (!item->strokePattern().isEmpty()) |
1848 | { |
||
1849 | docu.writeAttribute("patternS", item->strokePattern()); |
||
14398 | fschmid | 1850 | double patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY, patternSpace; |
1851 | item->strokePatternTransform(patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY, patternSpace); |
||
1852 | bool mirrorX, mirrorY, atPath; |
||
14276 | fschmid | 1853 | item->strokePatternFlip(mirrorX, mirrorY); |
14398 | fschmid | 1854 | atPath = item->isStrokePatternToPath(); |
14168 | fschmid | 1855 | docu.writeAttribute("pScaleXS", patternScaleX); |
1856 | docu.writeAttribute("pScaleYS", patternScaleY); |
||
1857 | docu.writeAttribute("pOffsetXS", patternOffsetX); |
||
1858 | docu.writeAttribute("pOffsetYS", patternOffsetY); |
||
1859 | docu.writeAttribute("pRotationS", patternRotation); |
||
14260 | fschmid | 1860 | docu.writeAttribute("pSkewXS", patternSkewX); |
1861 | docu.writeAttribute("pSkewYS", patternSkewY); |
||
14398 | fschmid | 1862 | docu.writeAttribute("pSpaceS", patternSpace); |
14276 | fschmid | 1863 | docu.writeAttribute("pMirrorXS" , mirrorX); |
1864 | docu.writeAttribute("pMirrorYS" , mirrorY); |
||
14398 | fschmid | 1865 | docu.writeAttribute("pAtPathS" , atPath); |
14168 | fschmid | 1866 | } |
14297 | fschmid | 1867 | if (item->GrMask > 0) |
1868 | { |
||
16251 | fschmid | 1869 | docu.writeAttribute("GRTYPM", item->GrMask); |
14297 | fschmid | 1870 | docu.writeAttribute("GRSTARTXM", item->GrMaskStartX); |
1871 | docu.writeAttribute("GRSTARTYM", item->GrMaskStartY); |
||
1872 | docu.writeAttribute("GRENDXM", item->GrMaskEndX); |
||
1873 | docu.writeAttribute("GRENDYM", item->GrMaskEndY); |
||
1874 | docu.writeAttribute("GRFOCALXM", item->GrMaskFocalX); |
||
1875 | docu.writeAttribute("GRFOCALYM", item->GrMaskFocalY); |
||
1876 | docu.writeAttribute("GRSCALEM" , item->GrMaskScale); |
||
1877 | docu.writeAttribute("GRSKEWM" , item->GrMaskSkew); |
||
1878 | } |
||
1879 | if (!item->patternMask().isEmpty()) |
||
1880 | { |
||
1881 | docu.writeAttribute("patternM", item->patternMask()); |
||
1882 | double patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY; |
||
1883 | item->maskTransform(patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY); |
||
1884 | bool mirrorX, mirrorY; |
||
1885 | item->maskFlip(mirrorX, mirrorY); |
||
1886 | docu.writeAttribute("pScaleXM", patternScaleX); |
||
1887 | docu.writeAttribute("pScaleYM", patternScaleY); |
||
1888 | docu.writeAttribute("pOffsetXM", patternOffsetX); |
||
1889 | docu.writeAttribute("pOffsetYM", patternOffsetY); |
||
1890 | docu.writeAttribute("pRotationM", patternRotation |