Rev 13839 | Go to most recent revision | Details | 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 | |||
10 | #include <memory> |
||
11 | |||
12 | #include "../../formatidlist.h" |
||
13 | #include "commonstrings.h" |
||
14 | #include "ui/missing.h" |
||
15 | #include "prefsmanager.h" |
||
16 | #include "scconfig.h" |
||
17 | #include "scpattern.h" |
||
18 | #include "scribusdoc.h" |
||
19 | #include "scribusview.h" |
||
20 | #include "hyphenator.h" |
||
21 | #include "pageitem_latexframe.h" |
||
22 | |||
23 | #include "units.h" |
||
24 | #include "util.h" |
||
25 | #include "util_math.h" |
||
26 | #include "util_color.h" |
||
27 | #include "scgzfile.h" |
||
28 | #include "scpattern.h" |
||
29 | #include <QCursor> |
||
30 | #include <QFileInfo> |
||
31 | #include <QList> |
||
32 | #include <QDataStream> |
||
33 | |||
34 | #include "scxmlstreamwriter.h" |
||
35 | |||
36 | bool Scribus150Format::saveFile(const QString & fileName, const FileFormat & /* fmt */) |
||
37 | { |
||
38 | QString text, tf, tf2, tc, tc2; |
||
39 | QString fileDir = QFileInfo(fileName).absolutePath(); |
||
40 | m_lastSavedFile = ""; |
||
41 | |||
42 | // Create a random temporary file name |
||
43 | srand(time(NULL)); // initialize random sequence each time |
||
44 | long randt = 0, randn = 1 + (int) (((double) rand() / ((double) RAND_MAX + 1)) * 10000); |
||
45 | QString tmpFileName = QString("%1.%2").arg(fileName).arg(randn); |
||
46 | while (QFile::exists(tmpFileName) && (randt < 100)) |
||
47 | { |
||
48 | randn = 1 + (int) (((double) rand() / ((double) RAND_MAX + 1)) * 10000); |
||
49 | tmpFileName = QString("%1.%2").arg(fileName).arg(randn); |
||
50 | ++randt; |
||
51 | } |
||
52 | if (QFile::exists(tmpFileName)) |
||
53 | return false; |
||
54 | |||
55 | /*QDomDocument docu("scribus"); |
||
56 | QString st="<SCRIBUSUTF8NEW></SCRIBUSUTF8NEW>"; |
||
57 | docu.setContent(st); |
||
58 | QDomElement elem=docu.documentElement(); |
||
59 | elem.setAttribute("Version", QString(VERSION)); |
||
60 | QDomElement dc=docu.createElement("DOCUMENT");*/ |
||
61 | |||
62 | std::auto_ptr<QIODevice> outputFile; |
||
63 | if (fileName.toLower().right(2) == "gz") |
||
64 | outputFile.reset( new ScGzFile(tmpFileName) ); |
||
65 | else |
||
66 | outputFile.reset( new QFile(tmpFileName) ); |
||
67 | |||
68 | if (!outputFile->open(QIODevice::WriteOnly)) |
||
69 | return false; |
||
70 | |||
71 | ScXmlStreamWriter docu; |
||
72 | docu.setAutoFormatting(true); |
||
73 | docu.setDevice(outputFile.get()); |
||
74 | docu.writeStartDocument(); |
||
75 | docu.writeStartElement("SCRIBUSUTF8NEW"); |
||
76 | docu.writeAttribute("Version", QString(VERSION)); |
||
77 | |||
78 | docu.writeStartElement("DOCUMENT"); |
||
79 | docu.writeAttribute("ANZPAGES" , m_Doc->DocPages.count()); |
||
80 | docu.writeAttribute("PAGEWIDTH" , m_Doc->pageWidth); |
||
81 | docu.writeAttribute("PAGEHEIGHT" , m_Doc->pageHeight); |
||
82 | docu.writeAttribute("BORDERLEFT" , m_Doc->pageMargins.Left); |
||
83 | docu.writeAttribute("BORDERRIGHT" , m_Doc->pageMargins.Right); |
||
84 | docu.writeAttribute("BORDERTOP" , m_Doc->pageMargins.Top); |
||
85 | docu.writeAttribute("BORDERBOTTOM", m_Doc->pageMargins.Bottom); |
||
86 | docu.writeAttribute("PRESET" ,m_Doc->marginPreset); |
||
87 | docu.writeAttribute("BleedTop" , m_Doc->bleeds.Top); |
||
88 | docu.writeAttribute("BleedLeft" , m_Doc->bleeds.Left); |
||
89 | docu.writeAttribute("BleedRight" , m_Doc->bleeds.Right); |
||
90 | docu.writeAttribute("BleedBottom" , m_Doc->bleeds.Bottom); |
||
91 | docu.writeAttribute("ORIENTATION" , m_Doc->PageOri); |
||
92 | docu.writeAttribute("PAGESIZE" , m_Doc->m_pageSize); |
||
93 | docu.writeAttribute("FIRSTNUM" , m_Doc->FirstPnum); |
||
94 | docu.writeAttribute("BOOK" , m_Doc->currentPageLayout); |
||
95 | if(m_Doc->usesAutomaticTextFrames()) |
||
96 | docu.writeAttribute("AUTOTEXT", 1); |
||
97 | docu.writeAttribute("AUTOSPALTEN" ,m_Doc->PageSp); |
||
98 | docu.writeAttribute("ABSTSPALTEN" ,m_Doc->PageSpa); |
||
99 | docu.writeAttribute("UNITS" , m_Doc->unitIndex()); |
||
100 | docu.writeAttribute("DFONT" ,m_Doc->toolSettings.defFont); |
||
101 | docu.writeAttribute("DSIZE" ,m_Doc->toolSettings.defSize / 10.0); |
||
102 | docu.writeAttribute("DCOL" ,m_Doc->toolSettings.dCols); |
||
103 | docu.writeAttribute("DGAP" ,m_Doc->toolSettings.dGap); |
||
104 | docu.writeAttribute("TabFill" ,m_Doc->toolSettings.tabFillChar); |
||
105 | docu.writeAttribute("TabWidth" ,m_Doc->toolSettings.dTabWidth); |
||
106 | docu.writeAttribute("AUTHOR" ,m_Doc->documentInfo.getAuthor()); |
||
107 | docu.writeAttribute("COMMENTS" ,m_Doc->documentInfo.getComments()); |
||
108 | docu.writeAttribute("KEYWORDS" ,m_Doc->documentInfo.getKeywords()); |
||
109 | docu.writeAttribute("PUBLISHER",m_Doc->documentInfo.getPublisher()); |
||
110 | docu.writeAttribute("DOCDATE",m_Doc->documentInfo.getDate()); |
||
111 | docu.writeAttribute("DOCTYPE",m_Doc->documentInfo.getType()); |
||
112 | docu.writeAttribute("DOCFORMAT",m_Doc->documentInfo.getFormat()); |
||
113 | docu.writeAttribute("DOCIDENT",m_Doc->documentInfo.getIdent()); |
||
114 | docu.writeAttribute("DOCSOURCE",m_Doc->documentInfo.getSource()); |
||
115 | docu.writeAttribute("DOCLANGINFO",m_Doc->documentInfo.getLangInfo()); |
||
116 | docu.writeAttribute("DOCRELATION",m_Doc->documentInfo.getRelation()); |
||
117 | docu.writeAttribute("DOCCOVER",m_Doc->documentInfo.getCover()); |
||
118 | docu.writeAttribute("DOCRIGHTS",m_Doc->documentInfo.getRights()); |
||
119 | docu.writeAttribute("DOCCONTRIB",m_Doc->documentInfo.getContrib()); |
||
120 | docu.writeAttribute("TITLE",m_Doc->documentInfo.getTitle()); |
||
121 | docu.writeAttribute("SUBJECT",m_Doc->documentInfo.getSubject()); |
||
122 | docu.writeAttribute("VHOCH" , m_Doc->typographicSettings.valueSuperScript); |
||
123 | docu.writeAttribute("VHOCHSC", m_Doc->typographicSettings.scalingSuperScript); |
||
124 | docu.writeAttribute("VTIEF" , m_Doc->typographicSettings.valueSubScript); |
||
125 | docu.writeAttribute("VTIEFSC", m_Doc->typographicSettings.scalingSubScript); |
||
126 | docu.writeAttribute("VKAPIT" , m_Doc->typographicSettings.valueSmallCaps); |
||
127 | docu.writeAttribute("BASEGRID",m_Doc->typographicSettings.valueBaseGrid); |
||
128 | docu.writeAttribute("BASEO" , m_Doc->typographicSettings.offsetBaseGrid); |
||
129 | docu.writeAttribute("AUTOL" , m_Doc->typographicSettings.autoLineSpacing); |
||
130 | docu.writeAttribute("UnderlinePos" , m_Doc->typographicSettings.valueUnderlinePos); |
||
131 | docu.writeAttribute("UnderlineWidth" , m_Doc->typographicSettings.valueUnderlineWidth); |
||
132 | docu.writeAttribute("StrikeThruPos" , m_Doc->typographicSettings.valueStrikeThruPos); |
||
133 | docu.writeAttribute("StrikeThruWidth", m_Doc->typographicSettings.valueStrikeThruWidth); |
||
134 | docu.writeAttribute("GROUPC",m_Doc->GroupCounter); |
||
135 | docu.writeAttribute("HCMS" , static_cast<int>(m_Doc->HasCMS)); |
||
136 | docu.writeAttribute("DPSo" , static_cast<int>(m_Doc->CMSSettings.SoftProofOn)); |
||
137 | docu.writeAttribute("DPSFo", static_cast<int>(m_Doc->CMSSettings.SoftProofFullOn)); |
||
138 | docu.writeAttribute("DPuse", static_cast<int>(m_Doc->CMSSettings.CMSinUse)); |
||
139 | docu.writeAttribute("DPgam", static_cast<int>(m_Doc->CMSSettings.GamutCheck)); |
||
140 | docu.writeAttribute("DPbla", static_cast<int>(m_Doc->CMSSettings.BlackPoint)); |
||
141 | docu.writeAttribute("DPMo",m_Doc->CMSSettings.DefaultMonitorProfile); |
||
142 | docu.writeAttribute("DPPr",m_Doc->CMSSettings.DefaultPrinterProfile); |
||
143 | docu.writeAttribute("DPIn",m_Doc->CMSSettings.DefaultImageRGBProfile); |
||
144 | docu.writeAttribute("DPInCMYK",m_Doc->CMSSettings.DefaultImageCMYKProfile); |
||
145 | docu.writeAttribute("DPIn2",m_Doc->CMSSettings.DefaultSolidColorRGBProfile); |
||
146 | docu.writeAttribute("DPIn3",m_Doc->CMSSettings.DefaultSolidColorCMYKProfile); |
||
147 | docu.writeAttribute("DISc",m_Doc->CMSSettings.DefaultIntentColors); |
||
148 | docu.writeAttribute("DIIm",m_Doc->CMSSettings.DefaultIntentImages); |
||
149 | docu.writeAttribute("ALAYER", m_Doc->activeLayer()); |
||
150 | docu.writeAttribute("LANGUAGE", m_Doc->Language); |
||
151 | docu.writeAttribute("MINWORDLEN", m_Doc->MinWordLen); |
||
152 | docu.writeAttribute("HYCOUNT", m_Doc->HyCount); |
||
153 | docu.writeAttribute("AUTOMATIC", static_cast<int>(m_Doc->Automatic)); |
||
154 | docu.writeAttribute("AUTOCHECK", static_cast<int>(m_Doc->AutoCheck)); |
||
155 | docu.writeAttribute("GUIDELOCK", static_cast<int>(m_Doc->GuideLock)); |
||
156 | docu.writeAttribute("SnapToGuides", static_cast<int>(m_Doc->SnapGuides)); |
||
157 | docu.writeAttribute("SnapToGrid", static_cast<int>(m_Doc->useRaster)); |
||
158 | docu.writeAttribute("MINGRID", m_Doc->guidesSettings.minorGrid); |
||
159 | docu.writeAttribute("MAJGRID", m_Doc->guidesSettings.majorGrid); |
||
160 | docu.writeAttribute("SHOWGRID", static_cast<int>(m_Doc->guidesSettings.gridShown)); |
||
161 | docu.writeAttribute("SHOWGUIDES", static_cast<int>(m_Doc->guidesSettings.guidesShown)); |
||
162 | docu.writeAttribute("showcolborders", static_cast<int>(m_Doc->guidesSettings.colBordersShown)); |
||
163 | docu.writeAttribute("SHOWFRAME", static_cast<int>(m_Doc->guidesSettings.framesShown)); |
||
164 | docu.writeAttribute("SHOWLAYERM", static_cast<int>(m_Doc->guidesSettings.layerMarkersShown)); |
||
165 | docu.writeAttribute("SHOWMARGIN", static_cast<int>(m_Doc->guidesSettings.marginsShown)); |
||
166 | docu.writeAttribute("SHOWBASE", static_cast<int>(m_Doc->guidesSettings.baseShown)); |
||
167 | docu.writeAttribute("SHOWPICT", static_cast<int>(m_Doc->guidesSettings.showPic)); |
||
168 | docu.writeAttribute("SHOWControl", static_cast<int>(m_Doc->guidesSettings.showControls)); |
||
169 | docu.writeAttribute("SHOWLINK", static_cast<int>(m_Doc->guidesSettings.linkShown)); |
||
170 | docu.writeAttribute("rulerMode", static_cast<int>(m_Doc->guidesSettings.rulerMode)); |
||
171 | docu.writeAttribute("showrulers", static_cast<int>(m_Doc->guidesSettings.rulersShown)); |
||
172 | docu.writeAttribute("showBleed", static_cast<int>(m_Doc->guidesSettings.showBleed)); |
||
173 | docu.writeAttribute("rulerXoffset", m_Doc->rulerXoffset); |
||
174 | docu.writeAttribute("rulerYoffset", m_Doc->rulerYoffset); |
||
175 | docu.writeAttribute("GuideRad", m_Doc->guidesSettings.guideRad); |
||
176 | docu.writeAttribute("GRAB",m_Doc->guidesSettings.grabRad); |
||
177 | docu.writeAttribute("POLYC", m_Doc->toolSettings.polyC); |
||
178 | docu.writeAttribute("POLYF", m_Doc->toolSettings.polyF); |
||
179 | docu.writeAttribute("POLYR", m_Doc->toolSettings.polyR); |
||
180 | docu.writeAttribute("POLYCUR", m_Doc->toolSettings.polyCurvature); |
||
181 | docu.writeAttribute("POLYFD", m_Doc->toolSettings.polyFd); |
||
182 | docu.writeAttribute("POLYS", static_cast<int>(m_Doc->toolSettings.polyS)); |
||
183 | docu.writeAttribute("AutoSave", static_cast<int>(m_Doc->AutoSave)); |
||
184 | docu.writeAttribute("AutoSaveTime", m_Doc->AutoSaveTime); |
||
185 | docu.writeAttribute("ScratchBottom", m_Doc->scratch.Bottom); |
||
186 | docu.writeAttribute("ScratchLeft", m_Doc->scratch.Left); |
||
187 | docu.writeAttribute("ScratchRight", m_Doc->scratch.Right); |
||
188 | docu.writeAttribute("ScratchTop", m_Doc->scratch.Top); |
||
189 | docu.writeAttribute("GapHorizontal", m_Doc->GapHorizontal); |
||
190 | docu.writeAttribute("GapVertical", m_Doc->GapVertical); |
||
191 | docu.writeAttribute("StartArrow", m_Doc->toolSettings.dStartArrow); |
||
192 | docu.writeAttribute("EndArrow", m_Doc->toolSettings.dEndArrow); |
||
193 | docu.writeAttribute("PEN",m_Doc->toolSettings.dPen); |
||
194 | docu.writeAttribute("BRUSH",m_Doc->toolSettings.dBrush); |
||
195 | docu.writeAttribute("PENLINE",m_Doc->toolSettings.dPenLine); |
||
196 | docu.writeAttribute("PENTEXT",m_Doc->toolSettings.dPenText); |
||
197 | docu.writeAttribute("StrokeText",m_Doc->toolSettings.dStrokeText); |
||
198 | docu.writeAttribute("TextBackGround", m_Doc->toolSettings.dTextBackGround); |
||
199 | docu.writeAttribute("TextLineColor", m_Doc->toolSettings.dTextLineColor); |
||
200 | docu.writeAttribute("TextBackGroundShade", m_Doc->toolSettings.dTextBackGroundShade); |
||
201 | docu.writeAttribute("TextLineShade", m_Doc->toolSettings.dTextLineShade); |
||
202 | docu.writeAttribute("TextPenShade", m_Doc->toolSettings.dTextPenShade); |
||
203 | docu.writeAttribute("TextStrokeShade", m_Doc->toolSettings.dTextStrokeShade); |
||
204 | docu.writeAttribute("STIL",m_Doc->toolSettings.dLineArt); |
||
205 | docu.writeAttribute("STILLINE",m_Doc->toolSettings.dLstyleLine); |
||
206 | docu.writeAttribute("WIDTH",m_Doc->toolSettings.dWidth); |
||
207 | docu.writeAttribute("WIDTHLINE",m_Doc->toolSettings.dWidthLine); |
||
208 | docu.writeAttribute("PENSHADE",m_Doc->toolSettings.dShade2); |
||
209 | docu.writeAttribute("LINESHADE",m_Doc->toolSettings.dShadeLine); |
||
210 | docu.writeAttribute("BRUSHSHADE",m_Doc->toolSettings.dShade); |
||
211 | docu.writeAttribute("MAGMIN",m_Doc->toolSettings.magMin); |
||
212 | docu.writeAttribute("MAGMAX",m_Doc->toolSettings.magMax); |
||
213 | docu.writeAttribute("MAGSTEP",m_Doc->toolSettings.magStep); |
||
214 | docu.writeAttribute("CPICT",m_Doc->toolSettings.dBrushPict); |
||
215 | docu.writeAttribute("PICTSHADE",m_Doc->toolSettings.shadePict); |
||
216 | docu.writeAttribute("PICTSCX",m_Doc->toolSettings.scaleX); |
||
217 | docu.writeAttribute("PICTSCY",m_Doc->toolSettings.scaleY); |
||
218 | docu.writeAttribute("PSCALE", static_cast<int>(m_Doc->toolSettings.scaleType)); |
||
219 | docu.writeAttribute("PASPECT", static_cast<int>(m_Doc->toolSettings.aspectRatio)); |
||
220 | docu.writeAttribute("EmbeddedPath", static_cast<int>(m_Doc->toolSettings.useEmbeddedPath)); |
||
221 | docu.writeAttribute("HalfRes", m_Doc->toolSettings.lowResType); |
||
222 | docu.writeAttribute("dispX", m_Doc->toolSettings.dispX); |
||
223 | docu.writeAttribute("dispY", m_Doc->toolSettings.dispY); |
||
224 | docu.writeAttribute("constrain", m_Doc->toolSettings.constrain); |
||
225 | docu.writeAttribute("MINORC",m_Doc->guidesSettings.minorColor.name()); |
||
226 | docu.writeAttribute("MAJORC",m_Doc->guidesSettings.majorColor.name()); |
||
227 | docu.writeAttribute("GuideC", m_Doc->guidesSettings.guideColor.name()); |
||
228 | docu.writeAttribute("BaseC", m_Doc->guidesSettings.baseColor.name()); |
||
229 | docu.writeAttribute("GuideZ", m_Doc->guidesSettings.guideRad); |
||
230 | docu.writeAttribute("BACKG", static_cast<int>(m_Doc->guidesSettings.before)); |
||
231 | docu.writeAttribute("PAGEC",m_Doc->papColor.name()); |
||
232 | docu.writeAttribute("MARGC",m_Doc->guidesSettings.margColor.name()); |
||
233 | docu.writeAttribute("RANDF", static_cast<int>(m_Doc->marginColored)); |
||
234 | docu.writeAttribute("currentProfile", m_Doc->curCheckProfile); |
||
235 | |||
236 | writeCheckerProfiles(docu); |
||
237 | writeLinestyles(docu); |
||
238 | writeJavascripts(docu); |
||
239 | writeBookmarks(docu); |
||
240 | writeColors(docu); |
||
241 | writeHyphenatorLists(docu); |
||
242 | writePStyles(docu); |
||
243 | writeCStyles(docu); |
||
244 | writeLayers(docu); |
||
245 | writePrintOptions(docu); |
||
246 | writePdfOptions(docu); |
||
247 | writeDocItemAttributes(docu); |
||
248 | writeTOC(docu); |
||
249 | writePageSets(docu); |
||
250 | writeSections(docu); |
||
251 | writePatterns(docu, fileDir); |
||
252 | writeContent (docu, fileDir); |
||
253 | |||
254 | docu.writeEndElement(); |
||
255 | docu.writeEndDocument(); |
||
256 | |||
257 | bool writeSucceed = false; |
||
258 | const QFile* qFile = dynamic_cast<QFile*>(outputFile.get()); |
||
259 | const ScGzFile* gzFile = dynamic_cast<ScGzFile*>(outputFile.get()); |
||
260 | if (qFile) |
||
261 | writeSucceed = (qFile->error() == QFile::NoError); |
||
262 | else if (gzFile) |
||
263 | writeSucceed = !gzFile->errorOccurred(); |
||
264 | outputFile->close(); |
||
265 | |||
266 | if (writeSucceed) |
||
267 | { |
||
268 | if (QFile::exists(fileName)) |
||
269 | writeSucceed = QFile::remove(fileName) ? QFile::rename(tmpFileName, fileName) : false; |
||
270 | else |
||
271 | writeSucceed = QFile::rename(tmpFileName, fileName); |
||
272 | m_lastSavedFile = writeSucceed ? fileName : tmpFileName; |
||
273 | } |
||
274 | else if (QFile::exists(tmpFileName)) |
||
275 | QFile::remove(tmpFileName); |
||
276 | if (writeSucceed) |
||
277 | QFile::remove(tmpFileName); |
||
278 | return writeSucceed; |
||
279 | } |
||
280 | |||
281 | void Scribus150Format::writeCheckerProfiles(ScXmlStreamWriter & docu) |
||
282 | { |
||
283 | CheckerPrefsList::Iterator itcp; |
||
284 | CheckerPrefsList::Iterator itcpend=m_Doc->checkerProfiles.end(); |
||
285 | for (itcp = m_Doc->checkerProfiles.begin(); itcp != itcpend; ++itcp) |
||
286 | { |
||
287 | docu.writeEmptyElement("CheckProfile"); |
||
288 | docu.writeAttribute("Name",itcp.key()); |
||
289 | docu.writeAttribute("ignoreErrors", static_cast<int>(itcp.value().ignoreErrors)); |
||
290 | docu.writeAttribute("autoCheck", static_cast<int>(itcp.value().autoCheck)); |
||
291 | docu.writeAttribute("checkGlyphs", static_cast<int>(itcp.value().checkGlyphs)); |
||
292 | docu.writeAttribute("checkOrphans", static_cast<int>(itcp.value().checkOrphans)); |
||
293 | docu.writeAttribute("checkOverflow", static_cast<int>(itcp.value().checkOverflow)); |
||
294 | docu.writeAttribute("checkPictures", static_cast<int>(itcp.value().checkPictures)); |
||
295 | docu.writeAttribute("checkResolution", static_cast<int>(itcp.value().checkResolution)); |
||
296 | docu.writeAttribute("checkTransparency", static_cast<int>(itcp.value().checkTransparency)); |
||
297 | docu.writeAttribute("minResolution",itcp.value().minResolution); |
||
298 | docu.writeAttribute("maxResolution",itcp.value().maxResolution); |
||
299 | docu.writeAttribute("checkAnnotations", static_cast<int>(itcp.value().checkAnnotations)); |
||
300 | docu.writeAttribute("checkRasterPDF", static_cast<int>(itcp.value().checkRasterPDF)); |
||
301 | docu.writeAttribute("checkForGIF", static_cast<int>(itcp.value().checkForGIF)); |
||
302 | docu.writeAttribute("ignoreOffLayers", static_cast<int>(itcp.value().ignoreOffLayers)); |
||
303 | //docu.writeEndElement(); |
||
304 | } |
||
305 | } |
||
306 | |||
307 | void Scribus150Format::writeLinestyles(ScXmlStreamWriter& docu) |
||
308 | { |
||
309 | QMap<QString,multiLine>::Iterator itMU; |
||
310 | for (itMU = m_Doc->MLineStyles.begin(); itMU != m_Doc->MLineStyles.end(); ++itMU) |
||
311 | { |
||
312 | docu.writeStartElement("MultiLine"); |
||
313 | docu.writeAttribute("Name",itMU.key()); |
||
314 | multiLine ml = itMU.value(); |
||
315 | multiLine::iterator itMU2; |
||
316 | for (itMU2 = ml.begin(); itMU2 != ml.end(); ++itMU2) |
||
317 | { |
||
318 | docu.writeEmptyElement("SubLine"); |
||
319 | docu.writeAttribute("Color", (*itMU2).Color); |
||
320 | docu.writeAttribute("Shade", (*itMU2).Shade); |
||
321 | docu.writeAttribute("Dash", (*itMU2).Dash); |
||
322 | docu.writeAttribute("LineEnd", (*itMU2).LineEnd); |
||
323 | docu.writeAttribute("LineJoin", (*itMU2).LineJoin); |
||
324 | docu.writeAttribute("Width", (*itMU2).Width); |
||
325 | docu.writeAttribute("Shortcut", ml.shortcut); |
||
326 | } |
||
327 | docu.writeEndElement(); |
||
328 | } |
||
329 | QList<ArrowDesc>::Iterator itar; |
||
330 | for (itar = m_Doc->arrowStyles.begin(); itar != m_Doc->arrowStyles.end(); ++itar) |
||
331 | { |
||
332 | if ((*itar).userArrow) |
||
333 | { |
||
334 | docu.writeEmptyElement("Arrows"); |
||
335 | docu.writeAttribute("NumPoints", (*itar).points.size()); |
||
336 | QString arp = ""; |
||
337 | QString tmp, tmpy; |
||
338 | double xa, ya; |
||
339 | for (uint nxx = 0; nxx < (*itar).points.size(); ++nxx) |
||
340 | { |
||
341 | (*itar).points.point(nxx, &xa, &ya); |
||
342 | arp += tmp.setNum(xa) + " " + tmpy.setNum(ya) + " "; |
||
343 | } |
||
344 | docu.writeAttribute("Points", arp); |
||
345 | docu.writeAttribute("Name", (*itar).name); |
||
346 | } |
||
347 | } |
||
348 | } |
||
349 | |||
350 | |||
351 | void Scribus150Format::writeJavascripts(ScXmlStreamWriter & docu) |
||
352 | { |
||
353 | QMap<QString,QString>::Iterator itja; |
||
354 | for (itja = m_Doc->JavaScripts.begin(); itja != m_Doc->JavaScripts.end(); ++itja) |
||
355 | { |
||
356 | docu.writeEmptyElement("JAVA"); |
||
357 | docu.writeAttribute("NAME",itja.key()); |
||
358 | docu.writeAttribute("SCRIPT",itja.value()); |
||
359 | } |
||
360 | |||
361 | } |
||
362 | |||
363 | |||
364 | void Scribus150Format::writeBookmarks(ScXmlStreamWriter & docu) |
||
365 | { |
||
366 | QList<ScribusDoc::BookMa>::Iterator itbm; |
||
367 | for (itbm = m_Doc->BookMarks.begin(); itbm != m_Doc->BookMarks.end(); ++itbm) |
||
368 | { |
||
369 | docu.writeEmptyElement("Bookmark"); |
||
370 | docu.writeAttribute("Title",(*itbm).Title); |
||
371 | docu.writeAttribute("Text",(*itbm).Text); |
||
372 | docu.writeAttribute("Aktion",(*itbm).Aktion); |
||
373 | docu.writeAttribute("ItemNr", (*itbm).ItemNr); |
||
374 | docu.writeAttribute("Element", (*itbm).PageObject->ItemNr); |
||
375 | docu.writeAttribute("First", (*itbm).First); |
||
376 | docu.writeAttribute("Last", (*itbm).Last); |
||
377 | docu.writeAttribute("Prev", (*itbm).Prev); |
||
378 | docu.writeAttribute("Next", (*itbm).Next); |
||
379 | docu.writeAttribute("Parent", (*itbm).Parent); |
||
380 | } |
||
381 | } |
||
382 | |||
383 | |||
384 | void Scribus150Format::writeColors(ScXmlStreamWriter & docu) |
||
385 | { |
||
386 | ColorList::Iterator itc; |
||
387 | for (itc = m_Doc->PageColors.begin(); itc != m_Doc->PageColors.end(); ++itc) |
||
388 | { |
||
389 | docu.writeEmptyElement("COLOR"); |
||
390 | docu.writeAttribute("NAME",itc.key()); |
||
391 | if (m_Doc->PageColors[itc.key()].getColorModel() == colorModelRGB) |
||
392 | docu.writeAttribute("RGB",m_Doc->PageColors[itc.key()].nameRGB()); |
||
393 | else |
||
394 | docu.writeAttribute("CMYK",m_Doc->PageColors[itc.key()].nameCMYK()); |
||
395 | docu.writeAttribute("Spot",static_cast<int>(m_Doc->PageColors[itc.key()].isSpotColor())); |
||
396 | docu.writeAttribute("Register",static_cast<int>(m_Doc->PageColors[itc.key()].isRegistrationColor())); |
||
397 | } |
||
398 | |||
399 | } |
||
400 | |||
401 | void Scribus150Format::writeHyphenatorLists(ScXmlStreamWriter &docu) |
||
402 | { |
||
403 | docu.writeStartElement("HYPHEN"); |
||
404 | for (QHash<QString, QString>::Iterator hyit = m_Doc->docHyphenator->specialWords.begin(); hyit != m_Doc->docHyphenator->specialWords.end(); ++hyit) |
||
405 | { |
||
406 | docu.writeEmptyElement("EXCEPTION"); |
||
407 | docu.writeAttribute("WORD", hyit.key()); |
||
408 | docu.writeAttribute("HYPHENATED", hyit.value()); |
||
409 | } |
||
410 | for (QSet<QString>::Iterator hyit2 = m_Doc->docHyphenator->ignoredWords.begin(); hyit2 != m_Doc->docHyphenator->ignoredWords.end(); ++hyit2) |
||
411 | { |
||
412 | docu.writeEmptyElement("IGNORE"); |
||
413 | docu.writeAttribute("WORD", (*hyit2)); |
||
414 | } |
||
415 | docu.writeEndElement(); |
||
416 | } |
||
417 | |||
418 | void Scribus150Format::writePStyles(ScXmlStreamWriter & docu) |
||
419 | { |
||
420 | // if (m_Doc->docParagraphStyles.count() > 5) |
||
421 | { |
||
422 | for (int ff = 0; ff < m_Doc->paragraphStyles().count(); ++ff) |
||
423 | putPStyle(docu, m_Doc->paragraphStyles()[ff], "STYLE"); |
||
424 | } |
||
425 | } |
||
426 | |||
427 | void Scribus150Format::putPStyle(ScXmlStreamWriter & docu, const ParagraphStyle & style, const QString &nodeName) |
||
428 | { |
||
429 | bool styleHasTabs = (!style.isInhTabValues() && (style.tabValues().count() > 0)); |
||
430 | if (styleHasTabs) |
||
431 | docu.writeStartElement(nodeName); |
||
432 | else |
||
433 | docu.writeEmptyElement(nodeName); |
||
434 | if ( ! style.name().isEmpty() ) |
||
435 | docu.writeAttribute("NAME", style.name()); |
||
436 | if ( ! style.parent().isEmpty()) |
||
437 | docu.writeAttribute("PARENT", style.parent()); |
||
438 | if ( style.isDefaultStyle()) |
||
439 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
440 | |||
441 | if ( ! style.isInhAlignment()) |
||
442 | docu.writeAttribute("ALIGN", style.alignment()); |
||
443 | if ( ! style.isInhLineSpacingMode()) |
||
444 | docu.writeAttribute("LINESPMode", style.lineSpacingMode()); |
||
445 | if ( ! style.isInhLineSpacing()) |
||
446 | docu.writeAttribute("LINESP", style.lineSpacing()); |
||
447 | if ( ! style.isInhLeftMargin()) |
||
448 | docu.writeAttribute("INDENT", style.leftMargin()); |
||
449 | if ( ! style.isInhRightMargin()) |
||
450 | docu.writeAttribute("RMARGIN", style.rightMargin()); |
||
451 | if ( ! style.isInhFirstIndent()) |
||
452 | docu.writeAttribute("FIRST", style.firstIndent()); |
||
453 | if ( ! style.isInhGapBefore()) |
||
454 | docu.writeAttribute("VOR", style.gapBefore()); |
||
455 | if ( ! style.isInhGapAfter()) |
||
456 | docu.writeAttribute("NACH", style.gapAfter()); |
||
457 | if ( ! style.isInhHasDropCap()) |
||
458 | docu.writeAttribute("DROP", static_cast<int>(style.hasDropCap())); |
||
459 | if ( ! style.isInhDropCapLines()) |
||
460 | docu.writeAttribute("DROPLIN", style.dropCapLines()); |
||
461 | if ( ! style.isInhDropCapOffset()) |
||
462 | docu.writeAttribute("DROPDIST", style.dropCapOffset()); |
||
463 | if ( ! style.isInhOpticalMargins()) |
||
464 | docu.writeAttribute("OpticalMargins", style.opticalMargins()); |
||
465 | if ( ! style.isInhHyphenationMode()) |
||
466 | docu.writeAttribute("HyphenationMode", style.hyphenationMode()); |
||
467 | if ( ! style.isInhMinWordTracking()) |
||
468 | docu.writeAttribute("MinWordTrack", style.minWordTracking()); |
||
469 | if ( ! style.isInhMinGlyphExtension()) |
||
470 | docu.writeAttribute("MinGlyphShrink", style.minGlyphExtension()); |
||
471 | if ( ! style.isInhMaxGlyphExtension()) |
||
472 | docu.writeAttribute("MaxGlyphExtend", style.maxGlyphExtension()); |
||
473 | |||
474 | if ( ! style.shortcut().isEmpty() ) |
||
475 | docu.writeAttribute("PSHORTCUT", style.shortcut()); // shortcuts won't be inherited |
||
476 | |||
477 | putCStyle(docu, style.charStyle()); |
||
478 | |||
479 | if ( ! style.isInhTabValues()) |
||
480 | { |
||
481 | for (int a = 0; a < style.tabValues().count(); ++a) |
||
482 | { |
||
483 | docu.writeEmptyElement("Tabs"); |
||
484 | docu.writeAttribute("Type", (style.tabValues().at(a)).tabType); |
||
485 | docu.writeAttribute("Pos", (style.tabValues().at(a)).tabPosition); |
||
486 | QString tabCh = ""; |
||
487 | if (!(style.tabValues().at(a)).tabFillChar.isNull()) |
||
488 | tabCh = QString((style.tabValues().at(a)).tabFillChar); |
||
489 | docu.writeAttribute("Fill", tabCh); |
||
490 | } |
||
491 | } |
||
492 | |||
493 | if (styleHasTabs) |
||
494 | docu.writeEndElement(); |
||
495 | } |
||
496 | |||
497 | |||
498 | void Scribus150Format::writeCStyles(ScXmlStreamWriter & docu) |
||
499 | { |
||
500 | for (int ff = 0; ff < m_Doc->charStyles().count(); ++ff) |
||
501 | { |
||
502 | docu.writeStartElement("CHARSTYLE"); |
||
503 | putNamedCStyle(docu, m_Doc->charStyles()[ff]); |
||
504 | docu.writeEndElement(); |
||
505 | } |
||
506 | } |
||
507 | |||
508 | void Scribus150Format::putCStylePT(ScXmlStreamWriter & docu, const CharStyle & style) |
||
509 | { |
||
510 | docu.writeAttribute("CNAME", style.name()); |
||
511 | docu.writeAttribute("CPARENT", style.parent()); |
||
512 | docu.writeAttribute("FONT", style.font().scName()); |
||
513 | docu.writeAttribute("FONTSIZE", style.fontSize() / 10.0); |
||
514 | docu.writeAttribute("FEATURES", style.features().join(" ")); |
||
515 | docu.writeAttribute("FCOLOR", style.fillColor()); |
||
516 | docu.writeAttribute("FSHADE", style.fillShade()); |
||
517 | docu.writeAttribute("SCOLOR", style.strokeColor()); |
||
518 | docu.writeAttribute("SSHADE", style.strokeShade()); |
||
519 | docu.writeAttribute("TXTSHX", style.shadowXOffset() / 10.0); |
||
520 | docu.writeAttribute("TXTSHY", style.shadowYOffset() / 10.0); |
||
521 | docu.writeAttribute("TXTOUT", style.outlineWidth() / 10.0); |
||
522 | docu.writeAttribute("TXTULP", style.underlineOffset() / 10.0); |
||
523 | docu.writeAttribute("TXTULW", style.underlineWidth() / 10.0); |
||
524 | docu.writeAttribute("TXTSTP", style.strikethruOffset() / 10.0); |
||
525 | docu.writeAttribute("TXTSTW", style.strikethruWidth() / 10.0); |
||
526 | docu.writeAttribute("SCALEH", style.scaleH() / 10.0); |
||
527 | docu.writeAttribute("SCALEV", style.scaleV() / 10.0); |
||
528 | docu.writeAttribute("BASEO", style.baselineOffset() / 10.0); |
||
529 | docu.writeAttribute("KERN", style.tracking() / 10.0); |
||
530 | docu.writeAttribute("wordTrack", style.wordTracking()); |
||
531 | docu.writeAttribute("SHORTCUT", style.shortcut()); // shortcuts won't be inherited |
||
532 | } |
||
533 | |||
534 | void Scribus150Format::putCStyle(ScXmlStreamWriter & docu, const CharStyle & style) |
||
535 | { |
||
536 | if ( ! style.parent().isEmpty() ) |
||
537 | docu.writeAttribute("CPARENT", style.parent()); |
||
538 | if ( ! style.isInhFont()) |
||
539 | docu.writeAttribute("FONT", style.font().scName()); |
||
540 | if ( ! style.isInhFontSize()) |
||
541 | docu.writeAttribute("FONTSIZE", style.fontSize() / 10.0); |
||
542 | if ( ! style.isInhFeatures()) |
||
543 | docu.writeAttribute("FEATURES", style.features().join(" ")); |
||
544 | if ( ! style.isInhFillColor()) |
||
545 | docu.writeAttribute("FCOLOR", style.fillColor()); |
||
546 | if ( ! style.isInhFillShade()) |
||
547 | docu.writeAttribute("FSHADE", style.fillShade()); |
||
548 | if ( ! style.isInhStrokeColor()) |
||
549 | docu.writeAttribute("SCOLOR", style.strokeColor()); |
||
550 | if ( ! style.isInhStrokeShade()) |
||
551 | docu.writeAttribute("SSHADE", style.strokeShade()); |
||
552 | if ( ! style.isInhShadowXOffset()) |
||
553 | docu.writeAttribute("TXTSHX", style.shadowXOffset() / 10.0); |
||
554 | if ( ! style.isInhShadowYOffset()) |
||
555 | docu.writeAttribute("TXTSHY", style.shadowYOffset() / 10.0); |
||
556 | if ( ! style.isInhOutlineWidth()) |
||
557 | docu.writeAttribute("TXTOUT", style.outlineWidth() / 10.0); |
||
558 | if ( ! style.isInhUnderlineOffset()) |
||
559 | docu.writeAttribute("TXTULP", style.underlineOffset() / 10.0); |
||
560 | if ( ! style.isInhUnderlineWidth()) |
||
561 | docu.writeAttribute("TXTULW", style.underlineWidth() / 10.0); |
||
562 | if ( ! style.isInhStrikethruOffset()) |
||
563 | docu.writeAttribute("TXTSTP", style.strikethruOffset() / 10.0); |
||
564 | if ( ! style.isInhStrikethruWidth()) |
||
565 | docu.writeAttribute("TXTSTW", style.strikethruWidth() / 10.0); |
||
566 | if ( ! style.isInhScaleH()) |
||
567 | docu.writeAttribute("SCALEH", style.scaleH() / 10.0); |
||
568 | if ( ! style.isInhScaleV()) |
||
569 | docu.writeAttribute("SCALEV", style.scaleV() / 10.0); |
||
570 | if ( ! style.isInhBaselineOffset()) |
||
571 | docu.writeAttribute("BASEO", style.baselineOffset() / 10.0); |
||
572 | if ( ! style.isInhTracking()) |
||
573 | docu.writeAttribute("KERN", style.tracking() / 10.0); |
||
574 | if ( ! style.isInhWordTracking()) |
||
575 | docu.writeAttribute("wordTrack", style.wordTracking()); |
||
576 | if ( ! style.shortcut().isEmpty() ) |
||
577 | docu.writeAttribute("SHORTCUT", style.shortcut()); // shortcuts won't be inherited |
||
578 | } |
||
579 | |||
580 | void Scribus150Format::putNamedCStyle(ScXmlStreamWriter& docu, const CharStyle & style) |
||
581 | { |
||
582 | if ( ! style.name().isEmpty() ) |
||
583 | docu.writeAttribute("CNAME", style.name()); |
||
584 | if ( style.hasName() && style.isDefaultStyle()) |
||
585 | docu.writeAttribute("DefaultStyle", style.isDefaultStyle()); |
||
586 | putCStyle(docu, style); |
||
587 | } |
||
588 | |||
589 | void Scribus150Format::writeLayers(ScXmlStreamWriter & docu) |
||
590 | { |
||
591 | uint layerCount=m_Doc->layerCount(); |
||
592 | for (uint lay = 0; lay < layerCount; ++lay) |
||
593 | { |
||
594 | docu.writeEmptyElement("LAYERS"); |
||
595 | docu.writeAttribute("NUMMER",m_Doc->Layers[lay].LNr); |
||
596 | docu.writeAttribute("LEVEL",m_Doc->Layers[lay].Level); |
||
597 | docu.writeAttribute("NAME",m_Doc->Layers[lay].Name); |
||
598 | docu.writeAttribute("SICHTBAR", static_cast<int>(m_Doc->Layers[lay].isViewable)); |
||
599 | docu.writeAttribute("DRUCKEN", static_cast<int>(m_Doc->Layers[lay].isPrintable)); |
||
600 | docu.writeAttribute("EDIT", static_cast<int>(m_Doc->Layers[lay].isEditable)); |
||
601 | docu.writeAttribute("FLOW", static_cast<int>(m_Doc->Layers[lay].flowControl)); |
||
602 | docu.writeAttribute("TRANS", m_Doc->Layers[lay].transparency); |
||
603 | docu.writeAttribute("BLEND", m_Doc->Layers[lay].blendMode); |
||
604 | docu.writeAttribute("OUTL", static_cast<int>(m_Doc->Layers[lay].outlineMode)); |
||
605 | docu.writeAttribute("LAYERC",m_Doc->Layers[lay].markerColor.name()); |
||
606 | } |
||
607 | } |
||
608 | |||
609 | void Scribus150Format::writePrintOptions(ScXmlStreamWriter & docu) |
||
610 | { |
||
611 | docu.writeStartElement("Printer"); |
||
612 | docu.writeAttribute("firstUse", static_cast<int>(m_Doc->Print_Options.firstUse)); |
||
613 | docu.writeAttribute("toFile", static_cast<int>(m_Doc->Print_Options.toFile)); |
||
614 | docu.writeAttribute("useAltPrintCommand", static_cast<int>(m_Doc->Print_Options.useAltPrintCommand)); |
||
615 | docu.writeAttribute("outputSeparations", static_cast<int>(m_Doc->Print_Options.outputSeparations)); |
||
616 | docu.writeAttribute("useSpotColors", static_cast<int>(m_Doc->Print_Options.useSpotColors)); |
||
617 | docu.writeAttribute("useColor", static_cast<int>(m_Doc->Print_Options.useColor)); |
||
618 | docu.writeAttribute("mirrorH", static_cast<int>(m_Doc->Print_Options.mirrorH)); |
||
619 | docu.writeAttribute("mirrorV", static_cast<int>(m_Doc->Print_Options.mirrorV)); |
||
620 | docu.writeAttribute("useICC", static_cast<int>(m_Doc->Print_Options.useICC)); |
||
621 | docu.writeAttribute("doGCR", static_cast<int>(m_Doc->Print_Options.doGCR)); |
||
622 | docu.writeAttribute("doClip", static_cast<int>(m_Doc->Print_Options.doClip)); |
||
623 | docu.writeAttribute("setDevParam", static_cast<int>(m_Doc->Print_Options.setDevParam)); |
||
624 | docu.writeAttribute("useDocBleeds", static_cast<int>(m_Doc->Print_Options.useDocBleeds)); |
||
625 | docu.writeAttribute("cropMarks", static_cast<int>(m_Doc->Print_Options.cropMarks)); |
||
626 | docu.writeAttribute("bleedMarks", static_cast<int>(m_Doc->Print_Options.bleedMarks)); |
||
627 | docu.writeAttribute("registrationMarks", static_cast<int>(m_Doc->Print_Options.registrationMarks)); |
||
628 | docu.writeAttribute("colorMarks", static_cast<int>(m_Doc->Print_Options.colorMarks)); |
||
629 | docu.writeAttribute("includePDFMarks", static_cast<int>(m_Doc->Print_Options.includePDFMarks)); |
||
630 | docu.writeAttribute("PSLevel", (m_Doc->Print_Options.prnEngine < WindowsGDI) ? m_Doc->Print_Options.prnEngine : PostScript3); |
||
631 | docu.writeAttribute("PDLanguage" , m_Doc->Print_Options.prnEngine); |
||
632 | docu.writeAttribute("markOffset" , m_Doc->Print_Options.markOffset); |
||
633 | docu.writeAttribute("BleedTop" , m_Doc->Print_Options.bleeds.Top); |
||
634 | docu.writeAttribute("BleedLeft" , m_Doc->Print_Options.bleeds.Left); |
||
635 | docu.writeAttribute("BleedRight" , m_Doc->Print_Options.bleeds.Right); |
||
636 | docu.writeAttribute("BleedBottom", m_Doc->Print_Options.bleeds.Bottom); |
||
637 | docu.writeAttribute("printer" , m_Doc->Print_Options.printer); |
||
638 | docu.writeAttribute("filename", m_Doc->Print_Options.filename); |
||
639 | docu.writeAttribute("separationName", m_Doc->Print_Options.separationName); |
||
640 | docu.writeAttribute("printerCommand", m_Doc->Print_Options.printerCommand); |
||
641 | for (int p = 0; p < m_Doc->Print_Options.allSeparations.count(); ++p) |
||
642 | { |
||
643 | docu.writeEmptyElement("Separation"); |
||
644 | docu.writeAttribute("Name", m_Doc->Print_Options.allSeparations[p]); |
||
645 | } |
||
646 | docu.writeEndElement(); |
||
647 | } |
||
648 | |||
649 | void Scribus150Format::writePdfOptions(ScXmlStreamWriter & docu) |
||
650 | { |
||
651 | docu.writeStartElement("PDF"); |
||
652 | docu.writeAttribute("firstUse", static_cast<int>(m_Doc->PDF_Options.firstUse)); |
||
653 | docu.writeAttribute("Thumbnails", static_cast<int>(m_Doc->PDF_Options.Thumbnails)); |
||
654 | docu.writeAttribute("Articles", static_cast<int>(m_Doc->PDF_Options.Articles)); |
||
655 | docu.writeAttribute("Bookmarks", static_cast<int>(m_Doc->PDF_Options.Bookmarks)); |
||
656 | docu.writeAttribute("Compress", static_cast<int>(m_Doc->PDF_Options.Compress)); |
||
657 | docu.writeAttribute("CMethod", m_Doc->PDF_Options.CompressMethod); |
||
658 | docu.writeAttribute("Quality", m_Doc->PDF_Options.Quality); |
||
659 | docu.writeAttribute("MirrorH", static_cast<int>(m_Doc->PDF_Options.MirrorH)); |
||
660 | docu.writeAttribute("MirrorV", static_cast<int>(m_Doc->PDF_Options.MirrorV)); |
||
661 | docu.writeAttribute("Clip", static_cast<int>(m_Doc->PDF_Options.doClip)); |
||
662 | docu.writeAttribute("RotateDeg", static_cast<int>(m_Doc->PDF_Options.RotateDeg)); |
||
663 | docu.writeAttribute("PresentMode", static_cast<int>(m_Doc->PDF_Options.PresentMode)); |
||
664 | docu.writeAttribute("RecalcPic", static_cast<int>(m_Doc->PDF_Options.RecalcPic)); |
||
665 | docu.writeAttribute("Grayscale", static_cast<int>(m_Doc->PDF_Options.isGrayscale)); |
||
666 | docu.writeAttribute("RGBMode", static_cast<int>(m_Doc->PDF_Options.UseRGB)); |
||
667 | docu.writeAttribute("UseProfiles", static_cast<int>(m_Doc->PDF_Options.UseProfiles)); |
||
668 | docu.writeAttribute("UseProfiles2", static_cast<int>(m_Doc->PDF_Options.UseProfiles2)); |
||
669 | docu.writeAttribute("Binding", m_Doc->PDF_Options.Binding); |
||
670 | docu.writeAttribute("PicRes", m_Doc->PDF_Options.PicRes); |
||
671 | docu.writeAttribute("Resolution", m_Doc->PDF_Options.Resolution); |
||
672 | docu.writeAttribute("Version", m_Doc->PDF_Options.Version); |
||
673 | docu.writeAttribute("Intent", m_Doc->PDF_Options.Intent); |
||
674 | docu.writeAttribute("Intent2", m_Doc->PDF_Options.Intent2); |
||
675 | docu.writeAttribute("SolidP", m_Doc->PDF_Options.SolidProf); |
||
676 | docu.writeAttribute("ImageP", m_Doc->PDF_Options.ImageProf); |
||
677 | docu.writeAttribute("PrintP", m_Doc->PDF_Options.PrintProf); |
||
678 | docu.writeAttribute("InfoString", m_Doc->PDF_Options.Info); |
||
679 | docu.writeAttribute("BTop", m_Doc->PDF_Options.bleeds.Top); |
||
680 | docu.writeAttribute("BLeft", m_Doc->PDF_Options.bleeds.Left); |
||
681 | docu.writeAttribute("BRight", m_Doc->PDF_Options.bleeds.Right); |
||
682 | docu.writeAttribute("BBottom", m_Doc->PDF_Options.bleeds.Bottom); |
||
683 | docu.writeAttribute("useDocBleeds", static_cast<int>(m_Doc->PDF_Options.useDocBleeds)); |
||
684 | docu.writeAttribute("cropMarks", static_cast<int>(m_Doc->PDF_Options.cropMarks)); |
||
685 | docu.writeAttribute("bleedMarks", static_cast<int>(m_Doc->PDF_Options.bleedMarks)); |
||
686 | docu.writeAttribute("registrationMarks", static_cast<int>(m_Doc->PDF_Options.registrationMarks)); |
||
687 | docu.writeAttribute("colorMarks", static_cast<int>(m_Doc->PDF_Options.colorMarks)); |
||
688 | docu.writeAttribute("docInfoMarks", static_cast<int>(m_Doc->PDF_Options.docInfoMarks)); |
||
689 | docu.writeAttribute("markOffset", m_Doc->PDF_Options.markOffset); |
||
690 | docu.writeAttribute("ImagePr", static_cast<int>(m_Doc->PDF_Options.EmbeddedI)); |
||
691 | docu.writeAttribute("PassOwner", m_Doc->PDF_Options.PassOwner); |
||
692 | docu.writeAttribute("PassUser", m_Doc->PDF_Options.PassUser); |
||
693 | docu.writeAttribute("Permissions", m_Doc->PDF_Options.Permissions); |
||
694 | docu.writeAttribute("Encrypt", static_cast<int>(m_Doc->PDF_Options.Encrypt)); |
||
695 | docu.writeAttribute("UseLayers", static_cast<int>(m_Doc->PDF_Options.useLayers)); |
||
696 | docu.writeAttribute("UseLpi", static_cast<int>(m_Doc->PDF_Options.UseLPI)); |
||
697 | docu.writeAttribute("UseSpotColors", static_cast<int>(m_Doc->PDF_Options.UseSpotColors)); |
||
698 | docu.writeAttribute("doMultiFile", static_cast<int>(m_Doc->PDF_Options.doMultiFile)); |
||
699 | docu.writeAttribute("displayBookmarks", static_cast<int>(m_Doc->PDF_Options.displayBookmarks)); |
||
700 | docu.writeAttribute("displayFullscreen", static_cast<int>(m_Doc->PDF_Options.displayFullscreen)); |
||
701 | docu.writeAttribute("displayLayers", static_cast<int>(m_Doc->PDF_Options.displayLayers)); |
||
702 | docu.writeAttribute("displayThumbs", static_cast<int>(m_Doc->PDF_Options.displayThumbs)); |
||
703 | docu.writeAttribute("hideMenuBar", static_cast<int>(m_Doc->PDF_Options.hideMenuBar)); |
||
704 | docu.writeAttribute("hideToolBar", static_cast<int>(m_Doc->PDF_Options.hideToolBar)); |
||
705 | docu.writeAttribute("fitWindow", static_cast<int>(m_Doc->PDF_Options.fitWindow)); |
||
706 | docu.writeAttribute("PageLayout", m_Doc->PDF_Options.PageLayout); |
||
707 | docu.writeAttribute("openAction", m_Doc->PDF_Options.openAction); |
||
708 | for (int pdoF = 0; pdoF < m_Doc->PDF_Options.EmbedList.count(); ++pdoF) |
||
709 | { |
||
710 | docu.writeEmptyElement("Fonts"); |
||
711 | docu.writeAttribute("Name", m_Doc->PDF_Options.EmbedList[pdoF]); |
||
712 | } |
||
713 | for (int pdoS = 0; pdoS < m_Doc->PDF_Options.SubsetList.count(); ++pdoS) |
||
714 | { |
||
715 | docu.writeEmptyElement("Subset"); |
||
716 | docu.writeAttribute("Name", m_Doc->PDF_Options.SubsetList[pdoS]); |
||
717 | } |
||
718 | for (int pdoE = 0; pdoE < m_Doc->PDF_Options.PresentVals.count(); ++pdoE) |
||
719 | { |
||
720 | docu.writeEmptyElement("Effekte"); |
||
721 | docu.writeAttribute("pageEffectDuration", m_Doc->PDF_Options.PresentVals[pdoE].pageEffectDuration); |
||
722 | docu.writeAttribute("pageViewDuration", m_Doc->PDF_Options.PresentVals[pdoE].pageViewDuration); |
||
723 | docu.writeAttribute("effectType", m_Doc->PDF_Options.PresentVals[pdoE].effectType); |
||
724 | docu.writeAttribute("Dm", m_Doc->PDF_Options.PresentVals[pdoE].Dm); |
||
725 | docu.writeAttribute("M", m_Doc->PDF_Options.PresentVals[pdoE].M); |
||
726 | docu.writeAttribute("Di", m_Doc->PDF_Options.PresentVals[pdoE].Di); |
||
727 | } |
||
728 | QMap<QString,LPIData>::Iterator itlp; |
||
729 | for (itlp = m_Doc->PDF_Options.LPISettings.begin(); itlp != m_Doc->PDF_Options.LPISettings.end(); ++itlp) |
||
730 | { |
||
731 | docu.writeEmptyElement("LPI"); |
||
732 | docu.writeAttribute("Color", itlp.key()); |
||
733 | docu.writeAttribute("Frequency", itlp.value().Frequency); |
||
734 | docu.writeAttribute("Angle", itlp.value().Angle); |
||
735 | docu.writeAttribute("SpotFunction", itlp.value().SpotFunc); |
||
736 | } |
||
737 | docu.writeEndElement(); |
||
738 | } |
||
739 | |||
740 | void Scribus150Format::writeDocItemAttributes(ScXmlStreamWriter & docu) |
||
741 | { |
||
742 | docu.writeStartElement("DocItemAttributes"); |
||
743 | for(ObjAttrVector::Iterator objAttrIt = m_Doc->docItemAttributes.begin() ; objAttrIt != m_Doc->docItemAttributes.end(); ++objAttrIt ) |
||
744 | { |
||
745 | docu.writeEmptyElement("ItemAttribute"); |
||
746 | docu.writeAttribute("Name", (*objAttrIt).name); |
||
747 | docu.writeAttribute("Type", (*objAttrIt).type); |
||
748 | docu.writeAttribute("Value", (*objAttrIt).value); |
||
749 | docu.writeAttribute("Parameter", (*objAttrIt).parameter); |
||
750 | docu.writeAttribute("Relationship", (*objAttrIt).relationship); |
||
751 | docu.writeAttribute("RelationshipTo", (*objAttrIt).relationshipto); |
||
752 | docu.writeAttribute("AutoAddTo", (*objAttrIt).autoaddto); |
||
753 | } |
||
754 | docu.writeEndElement(); |
||
755 | } |
||
756 | |||
757 | |||
758 | void Scribus150Format::writeTOC(ScXmlStreamWriter & docu) |
||
759 | { |
||
760 | docu.writeStartElement("TablesOfContents"); |
||
761 | for(ToCSetupVector::Iterator tocSetupIt = m_Doc->docToCSetups.begin() ; tocSetupIt != m_Doc->docToCSetups.end(); ++tocSetupIt ) |
||
762 | { |
||
763 | docu.writeEmptyElement("TableOfContents"); |
||
764 | docu.writeAttribute("Name", (*tocSetupIt).name); |
||
765 | docu.writeAttribute("ItemAttributeName", (*tocSetupIt).itemAttrName); |
||
766 | docu.writeAttribute("FrameName", (*tocSetupIt).frameName); |
||
767 | docu.writeAttribute("ListNonPrinting", (*tocSetupIt).listNonPrintingFrames); |
||
768 | docu.writeAttribute("Style", (*tocSetupIt).textStyle); |
||
769 | switch ((*tocSetupIt).pageLocation) |
||
770 | { |
||
771 | case Beginning: |
||
772 | docu.writeAttribute("NumberPlacement", "Beginning"); |
||
773 | break; |
||
774 | case End: |
||
775 | docu.writeAttribute("NumberPlacement", "End"); |
||
776 | break; |
||
777 | case NotShown: |
||
778 | docu.writeAttribute("NumberPlacement", "NotShown"); |
||
779 | break; |
||
780 | } |
||
781 | } |
||
782 | docu.writeEndElement(); |
||
783 | } |
||
784 | |||
785 | |||
786 | void Scribus150Format::writeSections(ScXmlStreamWriter & docu) |
||
787 | { |
||
788 | docu.writeStartElement("Sections"); |
||
789 | for(DocumentSectionMap::Iterator it = m_Doc->sections.begin() ; it != m_Doc->sections.end(); ++it ) |
||
790 | { |
||
791 | docu.writeEmptyElement("Section"); |
||
792 | docu.writeAttribute("Number", (*it).number); |
||
793 | docu.writeAttribute("Name", (*it).name); |
||
794 | docu.writeAttribute("From", (*it).fromindex); |
||
795 | docu.writeAttribute("To", (*it).toindex); |
||
796 | switch ((*it).type) |
||
797 | { |
||
798 | case Type_1_2_3: |
||
799 | docu.writeAttribute("Type", "Type_1_2_3"); |
||
800 | break; |
||
801 | case Type_i_ii_iii: |
||
802 | docu.writeAttribute("Type", "Type_i_ii_iii"); |
||
803 | break; |
||
804 | case Type_I_II_III: |
||
805 | docu.writeAttribute("Type", "Type_I_II_III"); |
||
806 | break; |
||
807 | case Type_a_b_c: |
||
808 | docu.writeAttribute("Type", "Type_a_b_c"); |
||
809 | break; |
||
810 | case Type_A_B_C: |
||
811 | docu.writeAttribute("Type", "Type_A_B_C"); |
||
812 | break; |
||
813 | case Type_None: |
||
814 | docu.writeAttribute("Type", "Type_None"); |
||
815 | break; |
||
816 | } |
||
817 | docu.writeAttribute("Start", (*it).sectionstartindex); |
||
818 | docu.writeAttribute("Reversed", (*it).reversed); |
||
819 | docu.writeAttribute("Active", (*it).active); |
||
820 | } |
||
821 | docu.writeEndElement(); |
||
822 | } |
||
823 | |||
824 | |||
825 | void Scribus150Format::writePageSets(ScXmlStreamWriter & docu) |
||
826 | { |
||
827 | docu.writeStartElement("PageSets"); |
||
828 | QList<PageSet>::Iterator itpgset; |
||
829 | for(itpgset = m_Doc->pageSets.begin(); itpgset != m_Doc->pageSets.end(); ++itpgset ) |
||
830 | { |
||
831 | docu.writeStartElement("Set"); |
||
832 | docu.writeAttribute("Name", (*itpgset).Name); |
||
833 | docu.writeAttribute("FirstPage", (*itpgset).FirstPage); |
||
834 | docu.writeAttribute("Rows", (*itpgset).Rows); |
||
835 | docu.writeAttribute("Columns", (*itpgset).Columns); |
||
836 | // docu.writeAttribute("GapHorizontal", (*itpgset).GapHorizontal); |
||
837 | // docu.writeAttribute("GapVertical", (*itpgset).GapVertical); |
||
838 | // docu.writeAttribute("GapBelow", (*itpgset).GapBelow); |
||
839 | QStringList pNames = (*itpgset).pageNames; |
||
840 | QStringList::Iterator itpgsetN; |
||
841 | for(itpgsetN = pNames.begin(); itpgsetN != pNames.end(); ++itpgsetN ) |
||
842 | { |
||
843 | docu.writeEmptyElement("PageNames"); |
||
844 | docu.writeAttribute("Name", (*itpgsetN)); |
||
845 | } |
||
846 | docu.writeEndElement(); |
||
847 | } |
||
848 | docu.writeEndElement(); |
||
849 | } |
||
850 | |||
851 | void Scribus150Format::writePatterns(ScXmlStreamWriter & docu, const QString& baseDir) |
||
852 | { |
||
853 | QMap<QString, ScPattern>::Iterator itPat; |
||
854 | for (itPat = m_Doc->docPatterns.begin(); itPat != m_Doc->docPatterns.end(); ++itPat) |
||
855 | { |
||
856 | docu.writeStartElement("Pattern"); |
||
857 | docu.writeAttribute("Name",itPat.key()); |
||
858 | ScPattern pa = itPat.value(); |
||
859 | docu.writeAttribute("width", pa.width); |
||
860 | docu.writeAttribute("height", pa.height); |
||
861 | docu.writeAttribute("scaleX", pa.scaleX); |
||
862 | docu.writeAttribute("scaleY", pa.scaleY); |
||
863 | docu.writeAttribute("xoffset", pa.xoffset); |
||
864 | docu.writeAttribute("yoffset", pa.yoffset); |
||
865 | WriteObjects(m_Doc, docu, baseDir, 0, 0, ItemSelectionPattern, &pa.items); |
||
866 | docu.writeEndElement(); |
||
867 | } |
||
868 | } |
||
869 | |||
870 | void Scribus150Format::writeContent(ScXmlStreamWriter & docu, const QString& baseDir) |
||
871 | { |
||
872 | if (m_mwProgressBar != 0) |
||
873 | { |
||
874 | m_mwProgressBar->setMaximum(m_Doc->DocPages.count()+m_Doc->MasterPages.count()+m_Doc->DocItems.count()+m_Doc->MasterItems.count()+m_Doc->FrameItems.count()); |
||
875 | m_mwProgressBar->setValue(0); |
||
876 | } |
||
877 | WritePages(m_Doc, docu, m_mwProgressBar, 0, true); |
||
878 | WritePages(m_Doc, docu, m_mwProgressBar, m_Doc->MasterPages.count(), false); |
||
879 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count(), ItemSelectionFrame); |
||
880 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count()+m_Doc->FrameItems.count(), ItemSelectionMaster); |
||
881 | WriteObjects(m_Doc, docu, baseDir, m_mwProgressBar, m_Doc->MasterPages.count()+m_Doc->DocPages.count()+m_Doc->MasterItems.count()+m_Doc->FrameItems.count(), ItemSelectionPage); |
||
882 | } |
||
883 | |||
884 | void Scribus150Format::WritePages(ScribusDoc *doc, ScXmlStreamWriter& docu, QProgressBar *dia2, uint maxC, bool master) |
||
885 | { |
||
886 | uint ObCount = maxC; |
||
887 | Page *page; |
||
888 | uint pages; |
||
889 | QString tmp; |
||
890 | if (master) |
||
891 | pages = doc->MasterPages.count(); |
||
892 | else |
||
893 | pages = doc->DocPages.count(); |
||
894 | for(uint i = 0; i < pages; ++i) |
||
895 | { |
||
896 | ObCount++; |
||
897 | if (dia2 != 0) |
||
898 | dia2->setValue(ObCount); |
||
899 | if (master) |
||
900 | { |
||
901 | docu.writeStartElement("MASTERPAGE"); |
||
902 | page = doc->MasterPages.at(i); |
||
903 | } |
||
904 | else |
||
905 | { |
||
906 | docu.writeStartElement("PAGE"); |
||
907 | page = doc->DocPages.at(i); |
||
908 | } |
||
909 | docu.writeAttribute("PAGEXPOS",page->xOffset()); |
||
910 | docu.writeAttribute("PAGEYPOS",page->yOffset()); |
||
911 | docu.writeAttribute("PAGEWIDTH",page->width()); |
||
912 | docu.writeAttribute("PAGEHEIGHT",page->height()); |
||
913 | docu.writeAttribute("BORDERLEFT",page->initialMargins.Left); |
||
914 | docu.writeAttribute("BORDERRIGHT",page->initialMargins.Right); |
||
915 | docu.writeAttribute("BORDERTOP",page->initialMargins.Top); |
||
916 | docu.writeAttribute("BORDERBOTTOM",page->initialMargins.Bottom); |
||
917 | docu.writeAttribute("NUM",page->pageNr()); |
||
918 | docu.writeAttribute("NAM",page->pageName()); |
||
919 | docu.writeAttribute("MNAM",page->MPageNam); |
||
920 | docu.writeAttribute("Size", page->m_pageSize); |
||
921 | docu.writeAttribute("Orientation", page->orientation()); |
||
922 | docu.writeAttribute("LEFT", page->LeftPg); |
||
923 | docu.writeAttribute("PRESET", page->marginPreset); |
||
924 | docu.writeAttribute("VerticalGuides", GuideManagerIO::writeVerticalGuides( |
||
925 | page, GuideManagerCore::Standard)); |
||
926 | docu.writeAttribute("HorizontalGuides", GuideManagerIO::writeHorizontalGuides( |
||
927 | page, GuideManagerCore::Standard)); |
||
928 | docu.writeAttribute("AGhorizontalAutoGap", page->guides.horizontalAutoGap()); |
||
929 | docu.writeAttribute("AGverticalAutoGap", page->guides.verticalAutoGap()); |
||
930 | docu.writeAttribute("AGhorizontalAutoCount", page->guides.horizontalAutoCount()); |
||
931 | docu.writeAttribute("AGverticalAutoCount", page->guides.verticalAutoCount()); |
||
932 | docu.writeAttribute("AGhorizontalAutoRefer", page->guides.horizontalAutoRefer()); |
||
933 | docu.writeAttribute("AGverticalAutoRefer", page->guides.verticalAutoRefer()); |
||
934 | docu.writeAttribute("AGSelection", GuideManagerIO::writeSelection(page)); |
||
935 | docu.writeEndElement(); |
||
936 | } |
||
937 | } |
||
938 | |||
939 | |||
940 | namespace { // anon |
||
941 | QString textWithSmartHyphens(StoryText& itemText, int from, int to) |
||
942 | { |
||
943 | QString result(""); |
||
944 | int lastPos = from; |
||
945 | for (int i = from; i < to; ++i) |
||
946 | { |
||
947 | if (itemText.charStyle(i).effects() & ScStyle_HyphenationPossible |
||
948 | // duplicate SHYPHEN if already present to indicate a user provided SHYPHEN: |
||
949 | || itemText.text(i) == SpecialChars::SHYPHEN) |
||
950 | { |
||
951 | result += itemText.text(lastPos, i + 1 - lastPos); |
||
952 | result += SpecialChars::SHYPHEN; |
||
953 | lastPos = i+1; |
||
954 | } |
||
955 | } |
||
956 | if (lastPos < to) |
||
957 | result += itemText.text(lastPos, to - lastPos); |
||
958 | return result; |
||
959 | } |
||
960 | } // namespace anon |
||
961 | |||
962 | |||
963 | void Scribus150Format::writeITEXTs(ScribusDoc *doc, ScXmlStreamWriter &docu, PageItem* item) |
||
964 | { |
||
965 | CharStyle lastStyle; |
||
966 | int lastPos = 0; |
||
967 | QString tmpnum; |
||
968 | for(int k = 0; k < item->itemText.length(); ++k) |
||
969 | { |
||
970 | const CharStyle& style1(item->itemText.charStyle(k)); |
||
971 | const QChar ch = item->itemText.text(k); |
||
972 | |||
973 | if (ch == SpecialChars::OBJECT || |
||
974 | ch == SpecialChars::TAB || |
||
975 | ch == SpecialChars::PARSEP || |
||
976 | ch == SpecialChars::LINEBREAK || |
||
977 | ch == SpecialChars::COLBREAK || |
||
978 | ch == SpecialChars::FRAMEBREAK || |
||
979 | ch == SpecialChars::PAGENUMBER || |
||
980 | ch == SpecialChars::PAGECOUNT || |
||
981 | ch == SpecialChars::NBHYPHEN || |
||
982 | ch == SpecialChars::NBSPACE || |
||
983 | ch == SpecialChars::ZWNBSPACE || |
||
984 | ch == SpecialChars::ZWSPACE || |
||
985 | ch.unicode() < 32 || |
||
986 | (0xd800 <= ch.unicode() && ch.unicode() < 0xe000) || |
||
987 | ch.unicode() == 0xfffe || ch.unicode() == 0xffff || |
||
988 | style1 != lastStyle) |
||
989 | { |
||
990 | // something new, write pending chars |
||
991 | if (k - lastPos > 0) |
||
992 | { |
||
993 | docu.writeEmptyElement("ITEXT"); |
||
994 | /*if (item->asPathText()) // seems to cause problems when loading pathtext elements |
||
995 | putCStylePT(docu, lastStyle); |
||
996 | else*/ |
||
997 | putCStyle(docu, lastStyle); |
||
998 | docu.writeAttribute("CH", textWithSmartHyphens(item->itemText, lastPos, k)); |
||
999 | } |
||
1000 | lastStyle = style1; |
||
1001 | lastPos = k; |
||
1002 | } |
||
1003 | |||
1004 | if (ch == SpecialChars::OBJECT && item->itemText.object(k) != NULL) |
||
1005 | { |
||
1006 | // each obj in its own ITEXT for now |
||
1007 | docu.writeEmptyElement("ITEXT"); |
||
1008 | /*if (item->asPathText()) // seems to cause problems when loading pathtext elements |
||
1009 | putCStylePT(docu, lastStyle); |
||
1010 | else*/ |
||
1011 | putCStyle(docu, lastStyle); |
||
1012 | docu.writeAttribute("CH", QString(ch)); |
||
1013 | docu.writeAttribute("COBJ", item->itemText.object(k)->ItemNr); |
||
1014 | } |
||
1015 | else if (ch == SpecialChars::PARSEP) // stores also the paragraphstyle for preceding chars |
||
1016 | putPStyle(docu, item->itemText.paragraphStyle(k), "para"); |
||
1017 | else if (ch == SpecialChars::TAB) |
||
1018 | docu.writeEmptyElement("tab"); |
||
1019 | else if (ch == SpecialChars::LINEBREAK) |
||
1020 | docu.writeEmptyElement("breakline"); |
||
1021 | else if (ch == SpecialChars::COLBREAK) |
||
1022 | docu.writeEmptyElement("breakcol"); |
||
1023 | else if (ch == SpecialChars::FRAMEBREAK) |
||
1024 | docu.writeEmptyElement("breakframe"); |
||
1025 | else if (ch == SpecialChars::NBHYPHEN) |
||
1026 | docu.writeEmptyElement("nbhyphen"); |
||
1027 | else if (ch == SpecialChars::NBSPACE) |
||
1028 | docu.writeEmptyElement("nbspace"); |
||
1029 | else if (ch == SpecialChars::ZWNBSPACE) |
||
1030 | docu.writeEmptyElement("zwnbspace"); |
||
1031 | else if (ch == SpecialChars::ZWSPACE) |
||
1032 | docu.writeEmptyElement("zwspace"); |
||
1033 | else if (ch == SpecialChars::PAGENUMBER) |
||
1034 | { |
||
1035 | docu.writeEmptyElement("var"); |
||
1036 | docu.writeAttribute("name", "pgno"); |
||
1037 | putCStyle(docu, lastStyle); |
||
1038 | } |
||
1039 | else if (ch == SpecialChars::PAGECOUNT) |
||
1040 | { |
||
1041 | docu.writeEmptyElement("var"); |
||
1042 | docu.writeAttribute("name", "pgco"); |
||
1043 | putCStyle(docu, lastStyle); |
||
1044 | } |
||
1045 | else if (ch.unicode() < 32 || |
||
1046 | (0xd800 <= ch.unicode() && ch.unicode() < 0xe000) || |
||
1047 | ch.unicode() == 0xfffe || ch.unicode() == 0xffff) |
||
1048 | { |
||
1049 | docu.writeEmptyElement("ITEXT"); |
||
1050 | putCStyle(docu, lastStyle); |
||
1051 | tmpnum.setNum(ch.unicode()); |
||
1052 | docu.writeAttribute("Unicode", tmpnum); |
||
1053 | } |
||
1054 | else |
||
1055 | { |
||
1056 | continue; |
||
1057 | } |
||
1058 | // otherwise we just wrote something special and are done with position 'k' |
||
1059 | lastPos = k + 1; |
||
1060 | } |
||
1061 | // write pending chars |
||
1062 | if ( item->itemText.length() - lastPos > 0) |
||
1063 | { |
||
1064 | docu.writeEmptyElement("ITEXT"); |
||
1065 | /*if (item->asPathText()) |
||
1066 | putCStylePT(docu, lastStyle); |
||
1067 | else*/ |
||
1068 | putCStyle(docu, lastStyle); |
||
1069 | docu.writeAttribute("CH", textWithSmartHyphens(item->itemText, lastPos, item->itemText.length())); |
||
1070 | } |
||
1071 | // paragraphstyle for trailing chars |
||
1072 | if (item->itemText.length() == 0 || item->itemText.text(item->itemText.length()-1) != SpecialChars::PARSEP) |
||
1073 | { |
||
1074 | putPStyle(docu, item->itemText.paragraphStyle(item->itemText.length()), "trail"); |
||
1075 | } |
||
1076 | } |
||
1077 | |||
1078 | void Scribus150Format::WriteObjects(ScribusDoc *doc, ScXmlStreamWriter& docu, const QString& baseDir, QProgressBar *dia2, uint maxC, ItemSelection master, QList<PageItem*> *some_items) |
||
1079 | { |
||
1080 | uint ObCount = maxC; |
||
1081 | QList<PageItem*> *items = NULL; |
||
1082 | PageItem *item = NULL; |
||
1083 | uint objects = 0; |
||
1084 | switch (master) |
||
1085 | { |
||
1086 | case ItemSelectionMaster: |
||
1087 | items = &doc->MasterItems; |
||
1088 | break; |
||
1089 | case ItemSelectionPage: |
||
1090 | items = &doc->DocItems; |
||
1091 | break; |
||
1092 | case ItemSelectionFrame: |
||
1093 | items = &doc->FrameItems; |
||
1094 | break; |
||
1095 | case ItemSelectionPattern: |
||
1096 | items = some_items; |
||
1097 | break; |
||
1098 | default: |
||
1099 | assert(false); |
||
1100 | } |
||
1101 | objects = items->count(); |
||
1102 | for(uint j = 0; j < objects;++j) |
||
1103 | { |
||
1104 | ObCount++; |
||
1105 | if (dia2 != 0) |
||
1106 | dia2->setValue(ObCount); |
||
1107 | item = items->at(j); |
||
1108 | switch (master) |
||
1109 | { |
||
1110 | case ItemSelectionMaster: |
||
1111 | // item = doc->MasterItems.at(j); |
||
1112 | docu.writeStartElement("MASTEROBJECT"); |
||
1113 | break; |
||
1114 | case ItemSelectionPage: |
||
1115 | // item = doc->DocItems.at(j); |
||
1116 | docu.writeStartElement("PAGEOBJECT"); |
||
1117 | break; |
||
1118 | case ItemSelectionFrame: |
||
1119 | // item = doc->FrameItems.at(j); |
||
1120 | docu.writeStartElement("FRAMEOBJECT"); |
||
1121 | break; |
||
1122 | case ItemSelectionPattern: |
||
1123 | docu.writeStartElement("PatternItem"); |
||
1124 | break; |
||
1125 | } |
||
1126 | SetItemProps(docu, item, baseDir, true); |
||
1127 | docu.writeAttribute("OnMasterPage", item->OnMasterPage); |
||
1128 | docu.writeAttribute("ImageClip", item->pixm.imgInfo.usedPath); |
||
1129 | docu.writeAttribute("ImageRes", item->pixm.imgInfo.lowResType); |
||
1130 | docu.writeAttribute("Pagenumber", item->pixm.imgInfo.actualPageNumber); |
||
1131 | docu.writeAttribute("isInline", static_cast<int>(item->isEmbedded)); |
||
1132 | docu.writeAttribute("fillRule", static_cast<int>(item->fillRule)); |
||
1133 | docu.writeAttribute("doOverprint", static_cast<int>(item->doOverprint)); |
||
1134 | docu.writeAttribute("gXpos", item->gXpos); |
||
1135 | docu.writeAttribute("gYpos", item->gYpos); |
||
1136 | docu.writeAttribute("gWidth", item->gWidth); |
||
1137 | docu.writeAttribute("gHeight", item->gHeight); |
||
1138 | if (item->GrType != 0) |
||
1139 | { |
||
1140 | if (item->GrType == 8) |
||
1141 | { |
||
1142 | docu.writeAttribute("pattern", item->pattern()); |
||
1143 | double patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation; |
||
1144 | item->patternTransform(patternScaleX, patternScaleY, patternOffsetX, patternOffsetY, patternRotation); |
||
1145 | docu.writeAttribute("pScaleX", patternScaleX); |
||
1146 | docu.writeAttribute("pScaleY", patternScaleY); |
||
1147 | docu.writeAttribute("pOffsetX", patternOffsetX); |
||
1148 | docu.writeAttribute("pOffsetY", patternOffsetY); |
||
1149 | docu.writeAttribute("pRotation", patternRotation); |
||
1150 | } |
||
1151 | else |
||
1152 | { |
||
1153 | docu.writeAttribute("GRSTARTX", item->GrStartX); |
||
1154 | docu.writeAttribute("GRSTARTY", item->GrStartY); |
||
1155 | docu.writeAttribute("GRENDX", item->GrEndX); |
||
1156 | docu.writeAttribute("GRENDY", item->GrEndY); |
||
1157 | } |
||
1158 | } |
||
1159 | if (item->itemText.defaultStyle().hasParent()) |
||
1160 | docu.writeAttribute("PSTYLE", item->itemText.defaultStyle().parent()); |
||
1161 | if (! item->itemText.defaultStyle().isInhAlignment()) |
||
1162 | docu.writeAttribute("ALIGN", item->itemText.defaultStyle().alignment()); |
||
1163 | |||
1164 | docu.writeAttribute("LAYER", item->LayerNr); |
||
1165 | docu.writeAttribute("BOOKMARK", item->isBookmark ? 1 : 0); |
||
1166 | |||
1167 | if (item->nextInChain() != 0) |
||
1168 | docu.writeAttribute("NEXTITEM", item->nextInChain()->ItemNr); |
||
1169 | else |
||
1170 | docu.writeAttribute("NEXTITEM", -1); |
||
1171 | |||
1172 | if (item->prevInChain() != 0 && items->contains(item->prevInChain())) |
||
1173 | docu.writeAttribute("BACKITEM", item->prevInChain()->ItemNr); |
||
1174 | else |
||
1175 | { |
||
1176 | docu.writeAttribute("BACKITEM", -1); |
||
1177 | writeITEXTs(doc, docu, item); |
||
1178 | } |
||
1179 | |||
1180 | if (item->effectsInUse.count() != 0) |
||
1181 | { |
||
1182 | for (int a = 0; a < item->effectsInUse.count(); ++a) |
||
1183 | { |
||
1184 | docu.writeEmptyElement("ImageEffect"); |
||
1185 | docu.writeAttribute("Code", item->effectsInUse.at(a).effectCode); |
||
1186 | docu.writeAttribute("Param", item->effectsInUse.at(a).effectParameters); |
||
1187 | } |
||
1188 | } |
||
1189 | if (((item->asImageFrame()) || (item->asTextFrame())) && (!item->Pfile.isEmpty()) && (item->pixm.imgInfo.layerInfo.count() != 0) && (item->pixm.imgInfo.isRequest)) |
||
1190 | { |
||
1191 | QMap<int, ImageLoadRequest>::iterator it2; |
||
1192 | for (it2 = item->pixm.imgInfo.RequestProps.begin(); it2 != item->pixm.imgInfo.RequestProps.end(); ++it2) |
||
1193 | { |
||
1194 | docu.writeEmptyElement("PSDLayer"); |
||
1195 | docu.writeAttribute("Layer",it2.key()); |
||
1196 | docu.writeAttribute("Visible", static_cast<int>(it2.value().visible)); |
||
1197 | docu.writeAttribute("useMask", static_cast<int>(it2.value().useMask)); |
||
1198 | docu.writeAttribute("Opacity", it2.value().opacity); |
||
1199 | docu.writeAttribute("Blend", it2.value().blend); |
||
1200 | } |
||
1201 | } |
||
1202 | if (item->itemText.defaultStyle().tabValues().count() != 0) |
||
1203 | { |
||
1204 | for (int a = 0; a < item->itemText.defaultStyle().tabValues().count(); ++a) |
||
1205 | { |
||
1206 | docu.writeEmptyElement("Tabs"); |
||
1207 | docu.writeAttribute("Type", (item->itemText.defaultStyle().tabValues().at(a)).tabType); |
||
1208 | docu.writeAttribute("Pos", (item->itemText.defaultStyle().tabValues().at(a)).tabPosition); |
||
1209 | QString tabCh = ""; |
||
1210 | if (!(item->itemText.defaultStyle().tabValues().at(a)).tabFillChar.isNull()) |
||
1211 | tabCh = QString((item->itemText.defaultStyle().tabValues().at(a)).tabFillChar); |
||
1212 | docu.writeAttribute("Fill", tabCh); |
||
1213 | } |
||
1214 | } |
||
1215 | if ((item->GrType > 0) && (item->GrType != 8)) |
||
1216 | { |
||
1217 | QList<VColorStop*> cstops = item->fill_gradient.colorStops(); |
||
1218 | for (uint cst = 0; cst < item->fill_gradient.Stops(); ++cst) |
||
1219 | { |
||
1220 | docu.writeEmptyElement("CSTOP"); |
||
1221 | docu.writeAttribute("RAMP", cstops.at(cst)->rampPoint); |
||
1222 | docu.writeAttribute("NAME", cstops.at(cst)->name); |
||
1223 | docu.writeAttribute("SHADE", cstops.at(cst)->shade); |
||
1224 | docu.writeAttribute("TRANS", cstops.at(cst)->opacity); |
||
1225 | } |
||
1226 | } |
||
1227 | |||
1228 | if (item->asLatexFrame()) |
||
1229 | { |
||
1230 | docu.writeStartElement("LATEX"); |
||
1231 | PageItem_LatexFrame *latexitem = item->asLatexFrame(); |
||
1232 | QFileInfo fi(latexitem->configFile()); |
||
1233 | docu.writeAttribute("ConfigFile", fi.fileName()); |
||
1234 | docu.writeAttribute("DPI", latexitem->dpi()); |
||
1235 | docu.writeAttribute("USE_PREAMBLE", latexitem->usePreamble()); |
||
1236 | QMapIterator<QString, QString> i(latexitem->editorProperties); |
||
1237 | while (i.hasNext()) |
||
1238 | { |
||
1239 | i.next(); |
||
1240 | docu.writeStartElement("PROPERTY"); |
||
1241 | docu.writeAttribute("name", i.key()); |
||
1242 | docu.writeAttribute("value", i.value()); |
||
1243 | docu.writeEndElement(); |
||
1244 | } |
||
1245 | docu.writeCharacters(latexitem->formula()); |
||
1246 | docu.writeEndElement(); |
||
1247 | /*QDomText latextext = docu->createTextNode(latexitem->formula()); |
||
1248 | latexinfo.appendChild(latextext); |
||
1249 | ob.appendChild(latexinfo);*/ |
||
1250 | } |
||
1251 | |||
1252 | //CB PageItemAttributes |
||
1253 | docu.writeStartElement("PageItemAttributes"); |
||
1254 | ObjAttrVector *attributes=item->getObjectAttributes(); |
||
1255 | for(ObjAttrVector::Iterator objAttrIt = attributes->begin() ; objAttrIt != attributes->end(); ++objAttrIt ) |
||
1256 | { |
||
1257 | docu.writeEmptyElement("ItemAttribute"); |
||
1258 | docu.writeAttribute("Name", (*objAttrIt).name); |
||
1259 | docu.writeAttribute("Type", (*objAttrIt).type); |
||
1260 | docu.writeAttribute("Value", (*objAttrIt).value); |
||
1261 | docu.writeAttribute("Parameter", (*objAttrIt).parameter); |
||
1262 | docu.writeAttribute("Relationship", (*objAttrIt).relationship); |
||
1263 | docu.writeAttribute("RelationshipTo", (*objAttrIt).relationshipto); |
||
1264 | docu.writeAttribute("AutoAddTo", (*objAttrIt).autoaddto); |
||
1265 | } |
||
1266 | docu.writeEndElement(); |
||
1267 | |||
1268 | docu.writeEndElement(); |
||
1269 | } |
||
1270 | } |
||
1271 | |||
1272 | void Scribus150Format::SetItemProps(ScXmlStreamWriter& docu, PageItem* item, const QString& baseDir, bool newFormat) |
||
1273 | { |
||
1274 | double xf, yf; |
||
1275 | QString tmp, tmpy; |
||
1276 | if (newFormat) |
||
1277 | docu.writeAttribute("OwnPage", item->OwnPage); |
||
1278 | docu.writeAttribute("PTYPE",item->realItemType()); |
||
1279 | docu.writeAttribute("XPOS",item->xPos()); |
||
1280 | docu.writeAttribute("YPOS",item->yPos()); |
||
1281 | docu.writeAttribute("WIDTH",item->width()); |
||
1282 | docu.writeAttribute("HEIGHT",item->height()); |
||
1283 | docu.writeAttribute("RADRECT",item->cornerRadius()); |
||
1284 | docu.writeAttribute("FRTYPE", item->FrameType); |
||
1285 | docu.writeAttribute("CLIPEDIT", item->ClipEdited ? 1 : 0); |
||
1286 | docu.writeAttribute("PWIDTH",item->lineWidth()); |
||
1287 | docu.writeAttribute("PCOLOR",item->fillColor()); |
||
1288 | docu.writeAttribute("PCOLOR2",item->lineColor()); |
||
1289 | if ( ! item->itemText.defaultStyle().charStyle().isInhFillColor()) |
||
1290 | docu.writeAttribute("TXTFILL",item->itemText.defaultStyle().charStyle().fillColor()); |
||
1291 | if ( ! item->itemText.defaultStyle().charStyle().isInhStrokeColor()) |
||
1292 | docu.writeAttribute("TXTSTROKE",item->itemText.defaultStyle().charStyle().strokeColor()); |
||
1293 | if ( ! item->itemText.defaultStyle().charStyle().isInhStrokeShade()) |
||
1294 | docu.writeAttribute("TXTSTRSH",item->itemText.defaultStyle().charStyle().strokeShade()); |
||
1295 | if ( ! item->itemText.defaultStyle().charStyle().isInhFillShade()) |
||
1296 | docu.writeAttribute("TXTFILLSH",item->itemText.defaultStyle().charStyle().fillShade()); |
||
1297 | if ( ! item->itemText.defaultStyle().charStyle().isInhScaleH()) |
||
1298 | docu.writeAttribute("TXTSCALE",item->itemText.defaultStyle().charStyle().scaleH() / 10.0); |
||
1299 | if ( ! item->itemText.defaultStyle().charStyle().isInhScaleV()) |
||
1300 | docu.writeAttribute("TXTSCALEV",item->itemText.defaultStyle().charStyle().scaleV() / 10.0); |
||
1301 | if ( ! item->itemText.defaultStyle().charStyle().isInhBaselineOffset()) |
||
1302 | docu.writeAttribute("TXTBASE",item->itemText.defaultStyle().charStyle().baselineOffset() / 10.0); |
||
1303 | if ( ! item->itemText.defaultStyle().charStyle().isInhShadowXOffset()) |
||
1304 | docu.writeAttribute("TXTSHX",item->itemText.defaultStyle().charStyle().shadowXOffset() / 10.0); |
||
1305 | if ( ! item->itemText.defaultStyle().charStyle().isInhShadowYOffset()) |
||
1306 | docu.writeAttribute("TXTSHY",item->itemText.defaultStyle().charStyle().shadowYOffset() / 10.0); |
||
1307 | if ( ! item->itemText.defaultStyle().charStyle().isInhOutlineWidth()) |
||
1308 | docu.writeAttribute("TXTOUT",item->itemText.defaultStyle().charStyle().outlineWidth() / 10.0); |
||
1309 | if ( ! item->itemText.defaultStyle().charStyle().isInhUnderlineOffset()) |
||
1310 | docu.writeAttribute("TXTULP",item->itemText.defaultStyle().charStyle().underlineOffset() / 10.0); |
||
1311 | if ( ! item->itemText.defaultStyle().charStyle().isInhUnderlineWidth()) |
||
1312 | docu.writeAttribute("TXTULW",item->itemText.defaultStyle().charStyle().underlineWidth() / 10.0); |
||
1313 | if ( ! item->itemText.defaultStyle().charStyle().isInhStrikethruOffset()) |
||
1314 | docu.writeAttribute("TXTSTP",item->itemText.defaultStyle().charStyle().strikethruOffset() / 10.0); |
||
1315 | if ( ! item->itemText.defaultStyle().charStyle().isInhStrikethruWidth()) |
||
1316 | docu.writeAttribute("TXTSTW",item->itemText.defaultStyle().charStyle().strikethruWidth() / 10.0); |
||
1317 | if ( ! item->itemText.defaultStyle().charStyle().isInhTracking()) |
||
1318 | docu.writeAttribute("TXTKERN",item->itemText.defaultStyle().charStyle().tracking() / 10.0); |
||
1319 | if ( ! item->itemText.defaultStyle().charStyle().isInhWordTracking()) |
||
1320 | docu.writeAttribute("wordTrack",item->itemText.defaultStyle().charStyle().wordTracking()); |
||
1321 | if ( ! item->itemText.defaultStyle().isInhMinWordTracking()) |
||
1322 | docu.writeAttribute("MinWordTrack", item->itemText.defaultStyle().minWordTracking()); |
||
1323 | if ( ! item->itemText.defaultStyle().isInhMinGlyphExtension()) |
||
1324 | docu.writeAttribute("MinGlyphShrink", item->itemText.defaultStyle().minGlyphExtension()); |
||
1325 | if ( ! item->itemText.defaultStyle().isInhMaxGlyphExtension()) |
||
1326 | docu.writeAttribute("MaxGlyphExtend", item->itemText.defaultStyle().maxGlyphExtension()); |
||
1327 | if ( ! item->itemText.defaultStyle().isInhOpticalMargins()) |
||
1328 | docu.writeAttribute("OpticalMargins", item->itemText.defaultStyle().opticalMargins()); |
||
1329 | if ( ! item->itemText.defaultStyle().isInhHyphenationMode()) |
||
1330 | docu.writeAttribute("HyphenationMode", item->itemText.defaultStyle().hyphenationMode()); |
||
1331 | if ( ! item->itemText.defaultStyle().isInhLeftMargin() ) |
||
1332 | docu.writeAttribute("leftMargin", item->itemText.defaultStyle().leftMargin()); |
||
1333 | if ( ! item->itemText.defaultStyle().isInhRightMargin()) |
||
1334 | docu.writeAttribute("rightMargin", item->itemText.defaultStyle().rightMargin()); |
||
1335 | if ( ! item->itemText.defaultStyle().isInhFirstIndent()) |
||
1336 | docu.writeAttribute("firstIndent", item->itemText.defaultStyle().firstIndent()); |
||
1337 | docu.writeAttribute("COLUMNS", item->columns()); |
||
1338 | docu.writeAttribute("COLGAP", item->columnGap()); |
||
1339 | docu.writeAttribute("NAMEDLST",item->NamedLStyle); |
||
1340 | docu.writeAttribute("SHADE",item->fillShade()); |
||
1341 | docu.writeAttribute("SHADE2",item->lineShade()); |
||
1342 | docu.writeAttribute("GRTYP",item->GrType); |
||
1343 | docu.writeAttribute("ROT",item->rotation()); |
||
1344 | docu.writeAttribute("PLINEART",item->PLineArt); |
||
1345 | docu.writeAttribute("PLINEEND", item->PLineEnd); |
||
1346 | docu.writeAttribute("PLINEJOIN", item->PLineJoin); |
||
1347 | if ( ! item->itemText.defaultStyle().isInhLineSpacing()) |
||
1348 | docu.writeAttribute("LINESP",item->itemText.defaultStyle().lineSpacing()); |
||
1349 | if ( ! item->itemText.defaultStyle().isInhLineSpacingMode()) |
||
1350 | docu.writeAttribute("LINESPMode", item->itemText.defaultStyle().lineSpacingMode()); |
||
1351 | docu.writeAttribute("LOCALSCX",item->imageXScale()); |
||
1352 | docu.writeAttribute("LOCALSCY",item->imageYScale()); |
||
1353 | docu.writeAttribute("LOCALX",item->imageXOffset()); |
||
1354 | docu.writeAttribute("LOCALY",item->imageYOffset()); |
||
1355 | docu.writeAttribute("PICART", item->imageShown() ? 1 : 0); |
||
1356 | docu.writeAttribute("PLTSHOW", item->PoShow ? 1 : 0); |
||
1357 | docu.writeAttribute("BASEOF", item->BaseOffs); |
||
1358 | docu.writeAttribute("textPathType", item->textPathType); |
||
1359 | docu.writeAttribute("textPathFlipped", static_cast<int>(item->textPathFlipped)); |
||
1360 | docu.writeAttribute("FLIPPEDH", item->imageFlippedH()); |
||
1361 | docu.writeAttribute("FLIPPEDV", item->imageFlippedV()); |
||
1362 | /* docu.writeAttribute("BBOXX",item->BBoxX); |
||
1363 | docu.writeAttribute("BBOXH",item->BBoxH); */ |
||
1364 | if ( ! item->itemText.defaultStyle().charStyle().isInhFont()) |
||
1365 | docu.writeAttribute("IFONT",item->itemText.defaultStyle().charStyle().font().scName()); |
||
1366 | if ( ! item->itemText.defaultStyle().charStyle().isInhFontSize()) |
||
1367 | docu.writeAttribute("ISIZE",item->itemText.defaultStyle().charStyle().fontSize() / 10.0 ); |
||
1368 | docu.writeAttribute("SCALETYPE", item->ScaleType ? 1 : 0); |
||
1369 | docu.writeAttribute("RATIO", item->AspectRatio ? 1 : 0); |
||
1370 | docu.writeAttribute("PRINTABLE", item->printEnabled() ? 1 : 0); |
||
1371 | if(item->isAnnotation()) |
||
1372 | { |
||
1373 | docu.writeAttribute("ANNOTATION",1); |
||
1374 | docu.writeAttribute("ANTYPE", item->annotation().Type()); |
||
1375 | docu.writeAttribute("ANACTION", item->annotation().Action()); |
||
1376 | docu.writeAttribute("ANEACT", item->annotation().E_act()); |
||
1377 | docu.writeAttribute("ANXACT", item->annotation().X_act()); |
||
1378 | docu.writeAttribute("ANDACT", item->annotation().D_act()); |
||
1379 | docu.writeAttribute("ANFOACT", item->annotation().Fo_act()); |
||
1380 | docu.writeAttribute("ANBLACT", item->annotation().Bl_act()); |
||
1381 | docu.writeAttribute("ANKACT", item->annotation().K_act()); |
||
1382 | docu.writeAttribute("ANFACT", item->annotation().F_act()); |
||
1383 | docu.writeAttribute("ANVACT", item->annotation().V_act()); |
||
1384 | docu.writeAttribute("ANCACT", item->annotation().C_act()); |
||
1385 | if (item->annotation().ActionType() == 8) |
||
1386 | docu.writeAttribute("ANEXTERN", item->annotation().Extern()); |
||
1387 | else |
||
1388 | docu.writeAttribute("ANEXTERN", Path2Relative(item->annotation().Extern(), baseDir)); |
||
1389 | docu.writeAttribute("ANZIEL", item->annotation().Ziel()); |
||
1390 | docu.writeAttribute("ANACTYP", item->annotation().ActionType()); |
||
1391 | docu.writeAttribute("ANTOOLTIP", item->annotation().ToolTip()); |
||
1392 | docu.writeAttribute("ANBWID", item->annotation().Bwid()); |
||
1393 | docu.writeAttribute("ANBSTY", item->annotation().Bsty()); |
||
1394 | docu.writeAttribute("ANFEED", item->annotation().Feed()); |
||
1395 | docu.writeAttribute("ANFLAG", item->annotation().Flag()); |
||
1396 | docu.writeAttribute("ANFONT", item->annotation().Font()); |
||
1397 | docu.writeAttribute("ANFORMAT", item->annotation().Format()); |
||
1398 | docu.writeAttribute("ANROLL", item->annotation().RollOver()); |
||
1399 | docu.writeAttribute("ANDOWN", item->annotation().Down()); |
||
1400 | docu.writeAttribute("ANVIS", item->annotation().Vis()); |
||
1401 | docu.writeAttribute("ANMC", item->annotation().MaxChar()); |
||
1402 | docu.writeAttribute("ANCHK", item->annotation().IsChk()); |
||
1403 | docu.writeAttribute("ANAA", item->annotation().AAact()); |
||
1404 | docu.writeAttribute("ANCHKS", item->annotation().ChkStil()); |
||
1405 | docu.writeAttribute("ANBCOL", item->annotation().borderColor()); |
||
1406 | docu.writeAttribute("ANHTML", item->annotation().HTML()); |
||
1407 | docu.writeAttribute("ANICON", item->annotation().UseIcons()); |
||
1408 | docu.writeAttribute("ANPLACE", item->annotation().IPlace()); |
||
1409 | docu.writeAttribute("ANSCALE", item->annotation().ScaleW()); |
||
1410 | } |
||
1411 | else |
||
1412 | docu.writeAttribute("ANNOTATION",0); |
||
1413 | docu.writeAttribute("ANNAME", !item->AutoName ? item->itemName() : QString("")); |
||
1414 | // "TEXTFLOWMODE" succeed to "TEXTFLOW" "TEXTFLOW2" and "TEXTFLOW3" attributes |
||
1415 | docu.writeAttribute("TEXTFLOWMODE", (int) item->textFlowMode() ); |
||
1416 | // Set "TEXTFLOW" "TEXTFLOW2" and "TEXTFLOW3" attributes for compatibility |
||
1417 | // with versions prior to 1.3.4 |
||
1418 | docu.writeAttribute("TEXTFLOW" , item->textFlowAroundObject() ? 1 : 0); |
||
1419 | docu.writeAttribute("TEXTFLOW2", item->textFlowUsesBoundingBox() ? 1 : 0); |
||
1420 | docu.writeAttribute("TEXTFLOW3", item->textFlowUsesContourLine() ? 1 : 0); |
||
1421 | docu.writeAttribute("AUTOTEXT", item->isAutoText ? 1 : 0); |
||
1422 | docu.writeAttribute("EXTRA",item->textToFrameDistLeft()); |
||
1423 | docu.writeAttribute("TEXTRA",item->textToFrameDistTop()); |
||
1424 | docu.writeAttribute("BEXTRA",item->textToFrameDistBottom()); |
||
1425 | docu.writeAttribute("REXTRA",item->textToFrameDistRight()); |
||
1426 | docu.writeAttribute("FLOP",item->firstLineOffset()); // here I think this FLOP "cher à mon cœur" is legitimate! |
||
1427 | if (((item->asImageFrame() && !item->asLatexFrame()) || (item->asTextFrame())) && (!item->Pfile.isEmpty())) |
||
1428 | { |
||
1429 | if (item->isInlineImage) |
||
1430 | { |
||
1431 | docu.writeAttribute("PFILE", ""); |
||
1432 | docu.writeAttribute("isInlineImage", static_cast<int>(item->isInlineImage)); |
||
1433 | QFileInfo inlFi(item->Pfile); |
||
1434 | docu.writeAttribute("inlineImageExt", inlFi.suffix()); |
||
1435 | QFile inFil(item->Pfile); |
||
1436 | if (inFil.open(QIODevice::ReadOnly)) |
||
1437 | { |
||
1438 | QByteArray ba = qCompress(inFil.readAll()).toBase64(); |
||
1439 | docu.writeAttribute("ImageData", QString(ba)); |
||
1440 | inFil.close(); |
||
1441 | } |
||
1442 | } |
||
1443 | else |
||
1444 | docu.writeAttribute("PFILE",Path2Relative(item->Pfile, baseDir)); |
||
1445 | } |
||
1446 | else |
||
1447 | docu.writeAttribute("PFILE",""); |
||
1448 | if (!item->Pfile2.isEmpty()) |
||
1449 | docu.writeAttribute("PFILE2",Path2Relative(item->Pfile2, baseDir)); |
||
1450 | else |
||
1451 | docu.writeAttribute("PFILE2",""); |
||
1452 | if (!item->Pfile3.isEmpty()) |
||
1453 | docu.writeAttribute("PFILE3",Path2Relative(item->Pfile3, baseDir)); |
||
1454 | else |
||
1455 | docu.writeAttribute("PFILE3",""); |
||
1456 | docu.writeAttribute("PRFILE",item->IProfile); |
||
1457 | docu.writeAttribute("EPROF", item->EmProfile); |
||
1458 | docu.writeAttribute("IRENDER",item->IRender); |
||
1459 | docu.writeAttribute("EMBEDDED", item->UseEmbedded ? 1 : 0); |
||
1460 | docu.writeAttribute("LOCK", item->locked() ? 1 : 0); |
||
1461 | docu.writeAttribute("LOCKR", item->sizeLocked() ? 1 : 0); |
||
1462 | docu.writeAttribute("REVERS", item->reversed() ? 1 : 0); |
||
1463 | docu.writeAttribute("TransValue", item->fillTransparency()); |
||
1464 | docu.writeAttribute("TransValueS", item->lineTransparency()); |
||
1465 | docu.writeAttribute("TransBlend", item->fillBlendmode()); |
||
1466 | docu.writeAttribute("TransBlendS", item->lineBlendmode()); |
||
1467 | docu.writeAttribute("isTableItem", static_cast<int>(item->isTableItem)); |
||
1468 | docu.writeAttribute("TopLine", static_cast<int>(item->TopLine)); |
||
1469 | docu.writeAttribute("LeftLine", static_cast<int>(item->LeftLine)); |
||
1470 | docu.writeAttribute("RightLine", static_cast<int>(item->RightLine)); |
||
1471 | docu.writeAttribute("BottomLine", static_cast<int>(item->BottomLine)); |
||
1472 | if (item->isTableItem) |
||
1473 | { |
||
1474 | if (item->TopLink != 0) |
||
1475 | docu.writeAttribute("TopLINK", item->TopLink->ItemNr); |
||
1476 | else |
||
1477 | docu.writeAttribute("TopLINK", -1); |
||
1478 | if (item->LeftLink != 0) |
||
1479 | docu.writeAttribute("LeftLINK", item->LeftLink->ItemNr); |
||
1480 | else |
||
1481 | docu.writeAttribute("LeftLINK", -1); |
||
1482 | if (item->RightLink != 0) |
||
1483 | docu.writeAttribute("RightLINK", item->RightLink->ItemNr); |
||
1484 | else |
||
1485 | docu.writeAttribute("RightLINK", -1); |
||
1486 | if (item->BottomLink != 0) |
||
1487 | docu.writeAttribute("BottomLINK", item->BottomLink->ItemNr); |
||
1488 | else |
||
1489 | docu.writeAttribute("BottomLINK", -1); |
||
1490 | docu.writeAttribute("OwnLINK", item->ItemNr); |
||
1491 | } |
||
1492 | docu.writeAttribute("isGroupControl", static_cast<int>(item->isGroupControl)); |
||
1493 | if (item->isGroupControl) |
||
1494 | { |
||
1495 | if (item->groupsLastItem != 0) |
||
1496 | docu.writeAttribute("groupsLastItem", item->groupsLastItem->ItemNr - item->ItemNr); |
||
1497 | } |
||
1498 | docu.writeAttribute("NUMDASH", static_cast<int>(item->DashValues.count())); |
||
1499 | QString dlp = ""; |
||
1500 | QVector<double>::Iterator dax; |
||
1501 | for (dax = item->DashValues.begin(); dax != item->DashValues.end(); ++dax) |
||
1502 | dlp += tmp.setNum((*dax)) + " "; |
||
1503 | docu.writeAttribute("DASHS", dlp); |
||
1504 | docu.writeAttribute("DASHOFF", item->DashOffset); |
||
1505 | docu.writeAttribute("NUMPO",item->PoLine.size()); |
||
1506 | QString polp = ""; |
||
1507 | for (uint nxx=0; nxx<item->PoLine.size(); ++nxx) |
||
1508 | { |
||
1509 | item->PoLine.point(nxx, &xf, &yf); |
||
1510 | polp += tmp.setNum(xf) + " " + tmpy.setNum(yf) + " "; |
||
1511 | } |
||
1512 | docu.writeAttribute("POCOOR", polp); |
||
1513 | docu.writeAttribute("NUMCO",item->ContourLine.size()); |
||
1514 | QString colp = ""; |
||
1515 | for (uint nxx=0; nxx<item->ContourLine.size(); ++nxx) |
||
1516 | { |
||
1517 | item->ContourLine.point(nxx, &xf, &yf); |
||
1518 | colp += tmp.setNum(xf) + " " + tmpy.setNum(yf) + " "; |
||
1519 | } |
||
1520 | docu.writeAttribute("COCOOR", colp); |
||
1521 | docu.writeAttribute("NUMGROUP", static_cast<int>(item->Groups.count())); |
||
1522 | QString glp = ""; |
||
1523 | QStack<int>::Iterator nx; |
||
1524 | for (nx = item->Groups.begin(); nx != item->Groups.end(); ++nx) |
||
1525 | glp += tmp.setNum((*nx)) + " "; |
||
1526 | docu.writeAttribute("GROUPS", glp); |
||
1527 | if ( ! item->itemText.defaultStyle().charStyle().isInhLanguage()) |
||
1528 | docu.writeAttribute("LANGUAGE", item->itemText.defaultStyle().charStyle().language()); |
||
1529 | docu.writeAttribute("startArrowIndex", item->startArrowIndex()); |
||
1530 | docu.writeAttribute("endArrowIndex", item->endArrowIndex()); |
||
1531 | } |