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