Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                        scribusXml.cpp the document xml library for scribus
3
                             -------------------
4
    begin                : Sam Jul 14 10:00:00 CEST 2001
5
    copyright            : (C) 2001 by Christian Töpp
6
    email                : christian.toepp@mr-ct@gmx.de
7
 ***************************************************************************/
75 Franz 8
 
3 paul 9
#include "scribusXml.h"
10
#include "scribusXml.moc"
11
#include <qfile.h>
12
#include <qtextstream.h>
13
#include <qapplication.h>
14
#include <qstylefactory.h>
15
#include <qtl.h>
16
#include <qcursor.h>
17
#include <qregexp.h>
18
#include <qdir.h>
19
#include <qtextcodec.h>
20
#include <cstdlib>
21
#include <cmath>
22
#include "missing.h"
23
#include "config.h"
24
#ifdef HAVE_LIBZ
25
#include <zlib.h>
26
#endif
80 Franz 27
extern double QStodouble(QString in);
3 paul 28
extern int QStoInt(QString in);
29
extern bool loadText(QString nam, QString *Buffer);
19 Franz 30
extern QString Path2Relative(QString Path);
3 paul 31
 
32
QString ScriXmlDoc::ReadDatei(QString fileName)
33
{
34
/**
35
  * added to support gz docs
36
  * 2.7.2002 C.Toepp
37
  * <c.toepp@gmx.de>
38
  */
39
QString f = "";
40
#ifdef HAVE_LIBZ
41
if(fileName.right(2) == "gz")
42
        {
43
        gzFile gzDoc;
44
        char buff[4097];
45
        int i;
46
        gzDoc = gzopen(fileName.latin1(),"rb");
47
        if(gzDoc == NULL)
48
                {
49
                return "";
50
                }
51
        while((i = gzread(gzDoc,&buff,4096)) > 0)
52
                {
53
                buff[i] = '\0';
54
                f.append(buff);
55
                }
56
        gzclose(gzDoc);
57
        }
58
else
59
        {
60
// a normal document
61
        loadText(fileName, &f);
62
        }
63
#else
64
loadText(fileName, &f);
65
#endif
66
QString ff = "";
67
if (f.startsWith("<SCRIBUSUTF8"))
68
        ff = QString::fromUtf8(f);
69
else
70
        ff = f;
71
return ff;
72
/** end changes */
73
}
74
 
75
bool ScriXmlDoc::ReadColors(QString fileName)
76
{
77
        QDomDocument docu("scridoc");
78
        QString f = "";
79
        f = ReadDatei(fileName);
80
        if (f == "")
81
                return false;
82
        if(!docu.setContent(f))
83
                return false;
84
        Farben.clear();
85
        CMYKColor lf = CMYKColor();
86
        QDomElement elem=docu.documentElement();
87
        if ((elem.tagName() != "SCRIBUS") && (elem.tagName() != "SCRIBUSUTF8"))
88
                return false;
89
        QDomNode DOC=elem.firstChild();
90
        while(!DOC.isNull())
91
                {
92
                QDomElement dc=DOC.toElement();
93
                QDomNode PAGE=DOC.firstChild();
94
                while(!PAGE.isNull())
95
                        {
96
                        QDomElement pg=PAGE.toElement();
97
                        if(pg.tagName()=="COLOR")
98
                                {
99
                                if (pg.hasAttribute("CMYK"))
100
                                        lf.setNamedColor(pg.attribute("CMYK"));
101
                                else
102
                                        lf.fromQColor(QColor(pg.attribute("RGB")));
103
                        Farben[pg.attribute("NAME")] = lf;
104
                                }
105
                        PAGE=PAGE.nextSibling();
106
                        }
107
                DOC=DOC.nextSibling();
108
                }
109
        return true;
110
}
111
 
112
int ScriXmlDoc::ReadPageCount(QString fileName)
113
{
114
QString PgNam;
115
int counter = 0;
116
QDomDocument docu("scridoc");
117
QString f = "";
118
f = ReadDatei(fileName);
119
if (f == "")
120
        return 0;
121
if(!docu.setContent(f))
122
        return 0;
123
QDomElement elem=docu.documentElement();
124
if ((elem.tagName() != "SCRIBUS") && (elem.tagName() != "SCRIBUSUTF8"))
125
        return 0;
126
QDomNode DOC=elem.firstChild();
127
while(!DOC.isNull())
128
        {
129
        QDomNode PAGE=DOC.firstChild();
130
        while(!PAGE.isNull())
131
                {
132
                QDomElement pg=PAGE.toElement();
133
                if(pg.tagName()=="PAGE")
134
                        {
135
                        PgNam = pg.attribute("NAM", "");
136
                        if (PgNam == "")
137
                                counter++;
138
                        }
139
                PAGE=PAGE.nextSibling();
140
                }
141
        DOC=DOC.nextSibling();
142
        }
143
return counter;
144
}
145
 
146
bool ScriXmlDoc::ReadPage(QString fileName, SCFonts &avail, ScribusDoc *doc, ScribusView *view, int PageToLoad)
147
{
148
struct CLBuf OB;
149
struct StVorL vg;
150
struct Layer la;
151
struct ScribusDoc::BookMa bok;
31 Franz 152
struct Linked Link;
153
PageItem *Neu;
154
LFrames.clear();
3 paul 155
QString tmp, tmpf, tmp2, tmp3, tmp4, PgNam, f, Defont;
156
QFont fo;
157
QMap<QString,QString> DoFonts;
31 Franz 158
int x, y, a, counter;
80 Franz 159
double xf, yf;
68 Franz 160
bool newVersion = false;
3 paul 161
QDomDocument docu("scridoc");
162
f = "";
163
f = ReadDatei(fileName);
164
if (f == "")
165
        return false;
166
if(!docu.setContent(f))
167
        return false;
168
CMYKColor lf = CMYKColor();
169
QDomElement elem=docu.documentElement();
170
if ((elem.tagName() != "SCRIBUS") && (elem.tagName() != "SCRIBUSUTF8"))
171
        return false;
68 Franz 172
if (elem.hasAttribute("Version"))
173
        newVersion = true;
3 paul 174
QDomNode DOC=elem.firstChild();
175
while(!DOC.isNull())
176
{
177
        QDomElement dc=DOC.toElement();
178
        /*
179
        * Attribute von DOCUMENT auslesen
180
        */
181
        DoFonts.clear();
182
        QDomNode PAGE=DOC.firstChild();
183
        while(!PAGE.isNull())
184
        {
185
                QDomElement pg=PAGE.toElement();
186
                if(pg.tagName()=="FONT")
187
                {
188
                        /*
189
                        * Attribute von FONT auslesen
190
                        */
191
                        tmpf = pg.attribute("NAME");
192
                        if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
193
                                {
194
                                if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
195
                                        {
196
                                qApp->setOverrideCursor(QCursor(arrowCursor), true);
33 Franz 197
                                        DmF *dia = new DmF(view, tmpf, view->Prefs);
3 paul 198
                                        dia->exec();
199
                                        tmpf = dia->Ersatz;
200
                                        delete dia;
201
                                qApp->setOverrideCursor(QCursor(waitCursor), true);
202
                                        view->Prefs->GFontSub[pg.attribute("NAME")] = tmpf;
203
                                        }
204
                                else
205
                                        tmpf = view->Prefs->GFontSub[tmpf];
206
                                }
207
                        fo = avail[tmpf]->Font;
208
                        fo.setPointSize(doc->Dsize);
209
                        doc->AddFont(tmpf, fo);
210
                        DoFonts[pg.attribute("NAME")] = tmpf;
211
                }
212
                if(pg.tagName()=="COLOR")
213
                        {
214
                        if (pg.hasAttribute("CMYK"))
215
                                lf.setNamedColor(pg.attribute("CMYK"));
216
                        else
217
                                lf.fromQColor(QColor(pg.attribute("RGB")));
218
                  doc->PageColors[pg.attribute("NAME")] = lf;
219
                        }
220
                if(pg.tagName()=="STYLE")
221
                        {
222
                        vg.Vname = pg.attribute("NAME");
80 Franz 223
                        vg.LineSpa = QStodouble(pg.attribute("LINESP"));
224
                        vg.Indent = QStodouble(pg.attribute("INDENT","0"));
225
                        vg.First = QStodouble(pg.attribute("FIRST","0"));
3 paul 226
                        vg.Ausri = QStoInt(pg.attribute("ALIGN"));
80 Franz 227
                        vg.Avor = QStodouble(pg.attribute("VOR","0"));
228
                        vg.Anach = QStodouble(pg.attribute("NACH","0"));
3 paul 229
                        if (pg.hasAttribute("FONT"))
230
                                vg.Font = DoFonts[pg.attribute("FONT")];
231
                        else
232
                                vg.Font = DoFonts[Defont];
233
                        vg.FontSize = QStoInt(pg.attribute("FONTSIZE","12"));
234
                        doc->Vorlagen.append(vg);
235
                        }
236
                if(pg.tagName()=="JAVA")
237
                        doc->JavaScripts[pg.attribute("NAME")] = pg.attribute("SCRIPT");
238
                if(pg.tagName()=="LAYERS")
239
                        {
240
                        la.LNr = QStoInt(pg.attribute("NUMMER"));
241
                        la.Level = QStoInt(pg.attribute("LEVEL"));
242
                        la.Name = pg.attribute("NAME");
243
                        la.Sichtbar = QStoInt(pg.attribute("SICHTBAR"));
244
                        la.Drucken = QStoInt(pg.attribute("DRUCKEN"));
245
                        bool laex = false;
246
                        for (uint la2 = 0; la2 < doc->Layers.count(); ++la2)
247
                                {
248
                                if (doc->Layers[la2].Name == la.Name)
249
                                        laex = true;
250
                                }
251
                        if (!laex)
252
                                doc->Layers.append(la);
253
                        }
254
                if(pg.tagName()=="Bookmark")
255
                        {
256
                        bok.Title = pg.attribute("Title");
257
                        bok.Text = pg.attribute("Text");
258
                        bok.Aktion = pg.attribute("Aktion");
259
                        bok.ItemNr = QStoInt(pg.attribute("ItemNr"));
260
                        bok.Seite = QStoInt(pg.attribute("Seite"));
261
                        bok.Element = QStoInt(pg.attribute("Element"));
262
                        bok.First = QStoInt(pg.attribute("First"));
263
                        bok.Last = QStoInt(pg.attribute("Last"));
264
                        bok.Prev = QStoInt(pg.attribute("Prev"));
265
                        bok.Next = QStoInt(pg.attribute("Next"));
266
                        bok.Parent = QStoInt(pg.attribute("Parent"));
267
                        doc->BookMarks.append(bok);
268
                        }
31 Franz 269
                if(pg.tagName()=="MultiLine")
270
                        {
271
                        multiLine ml;
272
                        QDomNode MuLn = PAGE.firstChild();
273
                        while(!MuLn.isNull())
274
                                {
275
                                QDomElement MuL = MuLn.toElement();
276
                                struct singleLine sl;
277
                                sl.Color = MuL.attribute("Color");
278
                                sl.Dash = QStoInt(MuL.attribute("Dash"));
279
                                sl.LineEnd = QStoInt(MuL.attribute("LineEnd"));
280
                                sl.LineJoin = QStoInt(MuL.attribute("LineJoin"));
281
                                sl.Shade = QStoInt(MuL.attribute("Shade"));
80 Franz 282
                                sl.Width = QStodouble(MuL.attribute("Width"));
33 Franz 283
                                ml.push_back(sl);
31 Franz 284
                                MuLn = MuLn.nextSibling();
285
                                }
286
                        doc->MLineStyles.insert(pg.attribute("Name"), ml);
287
                        }
3 paul 288
                if ((pg.tagName()=="PAGE") && (QStoInt(pg.attribute("NUM")) == PageToLoad))
289
                {
290
                        /*
291
                        * Attribute von PAGE auslesen
292
                        */
293
                        a = doc->ActPage->PageNr;
294
                        if ((pg.hasAttribute("NumVGuides")) && (QStoInt(pg.attribute("NumVGuides","0")) != 0))
295
                                {
296
                                tmp = pg.attribute("VerticalGuides");
297
                                QTextStream fgv(&tmp, IO_ReadOnly);
298
                                view->Pages.at(a)->YGuides.clear();
299
                                for (int cxv = 0; cxv < QStoInt(pg.attribute("NumVGuides","0")); ++cxv)
300
                                        {
301
                                        fgv >> xf;
302
                                        view->Pages.at(a)->YGuides.append(xf);
303
                                        }
304
                                qHeapSort(view->Pages.at(a)->YGuides);
305
                                tmp = "";
306
                                }
307
                        else
308
                                view->Pages.at(a)->YGuides.clear();
309
                        if ((pg.hasAttribute("NumHGuides")) && (QStoInt(pg.attribute("NumHGuides","0")) != 0))
310
                                {
311
                                tmp = pg.attribute("HorizontalGuides");
312
                                QTextStream fgh(&tmp, IO_ReadOnly);
313
                                view->Pages.at(a)->XGuides.clear();
314
                                for (int cxh = 0; cxh < QStoInt(pg.attribute("NumHGuides","0")); ++cxh)
315
                                        {
316
                                        fgh >> xf;
317
                                        view->Pages.at(a)->XGuides.append(xf);
318
                                        }
319
                                qHeapSort(view->Pages.at(a)->XGuides);
320
                                tmp = "";
321
                                }
322
                        else
323
                                view->Pages.at(a)->XGuides.clear();
324
                        QDomNode OBJ=PAGE.firstChild();
31 Franz 325
                        counter = 0;
3 paul 326
                        while(!OBJ.isNull())
327
                        {
328
                                QDomElement obj=OBJ.toElement();
329
                                /*
330
                                * Attribute von OBJECT auslesen
331
                                */
31 Franz 332
                                if ((QStoInt(obj.attribute("NEXTITEM")) != -1) && (QStoInt(obj.attribute("NEXTPAGE")) == PageToLoad))
333
                                        {
334
                                        if (QStoInt(obj.attribute("BACKITEM")) == -1)
335
                                                {
336
                                                Link.Start = counter;
337
                                                Link.StPag = a;
338
                                                LFrames.append(Link);
339
                                                }
340
                                        }
3 paul 341
                                OB.PType = QStoInt(obj.attribute("PTYPE"));
80 Franz 342
                                OB.Xpos = QStodouble(obj.attribute("XPOS"));
343
                                OB.Ypos=QStodouble(obj.attribute("YPOS"));
344
                                OB.Width=QStodouble(obj.attribute("WIDTH"));
345
                                OB.Height=QStodouble(obj.attribute("HEIGHT"));
346
                                OB.RadRect = QStodouble(obj.attribute("RADRECT","0"));
3 paul 347
                                OB.ClipEdited = QStoInt(obj.attribute("CLIPEDIT", "0"));
348
                                OB.FrameType = QStoInt(obj.attribute("FRTYPE", "0"));
80 Franz 349
                                OB.Pwidth=QStodouble(obj.attribute("PWIDTH"));
3 paul 350
                                OB.Pcolor=obj.attribute("PCOLOR");
68 Franz 351
                                if ((!newVersion) && (OB.PType == 4))
352
                                        {
353
                                        OB.TxtFill = obj.attribute("PCOLOR2");
354
                                        OB.Pcolor2 = "None";
355
                                        }
356
                                else
357
                                        {
358
                                        OB.Pcolor2 = obj.attribute("PCOLOR2");
359
                                        OB.TxtFill = obj.attribute("TXTFILL", "Black");
360
                                        }
27 Franz 361
                                OB.NamedLStyle = obj.attribute("NAMEDLST", "");
362
                                if (!doc->MLineStyles.contains(OB.NamedLStyle))
363
                                        OB.NamedLStyle = "";
3 paul 364
                                OB.Shade=QStoInt(obj.attribute("SHADE"));
365
                                OB.Shade2=QStoInt(obj.attribute("SHADE2"));
68 Franz 366
                                OB.TxtStroke=obj.attribute("TXTSTROKE", "None");
367
                                OB.ShTxtFill=QStoInt(obj.attribute("TXTFILLSH", "100"));
368
                                OB.ShTxtStroke=QStoInt(obj.attribute("TXTSTRSH", "100"));
369
                                OB.TxtScale=QStoInt(obj.attribute("TXTSCALE", "100"));
370
                                OB.TxTStyle=QStoInt(obj.attribute("TXTSTYLE", "0"));
3 paul 371
                                OB.GrColor = obj.attribute("GRCOLOR","");
372
                                OB.GrColor2 = obj.attribute("GRCOLOR2","");
373
                                OB.GrShade = QStoInt(obj.attribute("GRSHADE","100"));
374
                                OB.GrShade2 = QStoInt(obj.attribute("GRSHADE2","100"));
375
                                OB.GrType = QStoInt(obj.attribute("GRTYP","0"));
80 Franz 376
                                OB.Rot=QStodouble(obj.attribute("ROT"));
3 paul 377
                                OB.PLineArt=Qt::PenStyle(QStoInt(obj.attribute("PLINEART")));
378
                                OB.PLineEnd=Qt::PenCapStyle(QStoInt(obj.attribute("PLINEEND","0")));
379
                                OB.PLineJoin=Qt::PenJoinStyle(QStoInt(obj.attribute("PLINEJOIN","0")));
80 Franz 380
                                OB.LineSp=QStodouble(obj.attribute("LINESP"));
381
                                OB.ExtraV=QStodouble(obj.attribute("EXTRAV","0"));
382
                                OB.LocalScX=QStodouble(obj.attribute("LOCALSCX"));
383
                                OB.LocalScY=QStodouble(obj.attribute("LOCALSCY"));
384
                                OB.LocalX=QStodouble(obj.attribute("LOCALX"));
385
                                OB.LocalY=QStodouble(obj.attribute("LOCALY"));
3 paul 386
                                OB.PicArt=QStoInt(obj.attribute("PICART"));
387
                                OB.flippedH=QStoInt(obj.attribute("FLIPPEDH"));
388
                                OB.flippedV=QStoInt(obj.attribute("FLIPPEDV"));
80 Franz 389
                                OB.BBoxX=QStodouble(obj.attribute("BBOXX"));
390
                                OB.BBoxH=QStodouble(obj.attribute("BBOXH"));
3 paul 391
                                OB.ScaleType = QStoInt(obj.attribute("SCALETYPE","1"));
392
                                OB.AspectRatio = QStoInt(obj.attribute("RATIO","0"));
393
                                OB.isPrintable=QStoInt(obj.attribute("PRINTABLE"));
394
                                OB.isBookmark=QStoInt(obj.attribute("BOOKMARK"));
395
                                if ((OB.isBookmark) && (doc->BookMarks.count() == 0))
396
                                        doc->OldBM = true;
397
                                OB.BMnr = QStoInt(obj.attribute("BookNr","0"));
398
                                OB.isAnnotation=QStoInt(obj.attribute("ANNOTATION","0"));
399
                                OB.AnType = QStoInt(obj.attribute("ANTYPE","0"));
400
                                OB.AnAction = obj.attribute("ANACTION","");
401
                                OB.An_E_act = obj.attribute("ANEACT","");
402
                                OB.An_X_act = obj.attribute("ANXACT","");
403
                                OB.An_D_act = obj.attribute("ANDACT","");
404
                                OB.An_Fo_act = obj.attribute("ANFOACT","");
405
                                OB.An_Bl_act = obj.attribute("ANBLACT","");
406
                                OB.An_K_act = obj.attribute("ANKACT","");
407
                                OB.An_F_act = obj.attribute("ANFACT","");
408
                                OB.An_V_act = obj.attribute("ANVACT","");
409
                                OB.An_C_act = obj.attribute("ANCACT","");
19 Franz 410
                                OB.An_Extern = obj.attribute("ANEXTERN","");
411
                                if (OB.An_Extern != "")
412
                                        {
413
                                        QFileInfo efp(OB.An_Extern);
414
                                        OB.An_Extern = efp.absFilePath();
415
                                        }
3 paul 416
                                OB.AnZiel = QStoInt(obj.attribute("ANZIEL","0"));
417
                                OB.AnActType = QStoInt(obj.attribute("ANACTYP","0"));
418
                                OB.AnName = obj.attribute("ANNAME","");
419
                                OB.AnToolTip = obj.attribute("ANTOOLTIP","");
420
                                OB.AnRollOver = obj.attribute("ANROLL","");
421
                                OB.AnDown = obj.attribute("ANDOWN","");
422
                                OB.AnBwid = QStoInt(obj.attribute("ANBWID","1"));
423
                                OB.AnBsty = QStoInt(obj.attribute("ANBSTY","0"));
424
                                OB.AnFeed = QStoInt(obj.attribute("ANFEED","1"));
425
                                OB.AnFlag = QStoInt(obj.attribute("ANFLAG","0"));
426
                                OB.AnFont = QStoInt(obj.attribute("ANFONT","4"));
427
                                OB.AnFormat = QStoInt(obj.attribute("ANFORMAT","0"));
428
                                OB.AnVis = QStoInt(obj.attribute("ANVIS","0"));
80 Franz 429
                                OB.AnIsChk = static_cast<bool>(QStoInt(obj.attribute("ANCHK","0")));
430
                                OB.AnAAact = static_cast<bool>(QStoInt(obj.attribute("ANAA","0")));
431
                                OB.AnHTML = static_cast<bool>(QStoInt(obj.attribute("ANHTML","0")));
432
                                OB.AnUseIcons = static_cast<bool>(QStoInt(obj.attribute("ANICON","0")));
3 paul 433
                                OB.AnChkStil = QStoInt(obj.attribute("ANCHKS","0"));
434
                                OB.AnMaxChar = QStoInt(obj.attribute("ANMC","-1"));
435
                                OB.AnBColor = obj.attribute("ANBCOL","None");
436
                                OB.AnIPlace = QStoInt(obj.attribute("ANPLACE","1"));
437
                                OB.AnScaleW = QStoInt(obj.attribute("ANSCALE","0"));
438
                                if (QStoInt(obj.attribute("TRANSPARENT","0")) == 1)
439
                                        OB.Pcolor = "None";
440
                                OB.Textflow=QStoInt(obj.attribute("TEXTFLOW"));
17 Franz 441
                                OB.Textflow2=QStoInt(obj.attribute("TEXTFLOW2","0"));
80 Franz 442
                                OB.Extra=QStodouble(obj.attribute("EXTRA"));
443
                                OB.TExtra=QStodouble(obj.attribute("TEXTRA", "1"));
444
                                OB.BExtra=QStodouble(obj.attribute("BEXTRA", "1"));
445
                                OB.RExtra=QStodouble(obj.attribute("REXTRA", "1"));
3 paul 446
                                OB.PoShow = QStoInt(obj.attribute("PTLSHOW","0"));
80 Franz 447
                                OB.BaseOffs = QStodouble(obj.attribute("BASEOF","0"));
3 paul 448
                                OB.Ausrich = QStoInt(obj.attribute("ALIGN","0"));
449
                                OB.IFont = DoFonts[obj.attribute("IFONT", doc->Dfont)];
450
                                OB.ISize = QStoInt(obj.attribute("ISIZE","12"));
451
                                OB.Pfile=obj.attribute("PFILE");
452
                                OB.Pfile2=obj.attribute("PFILE2","");
453
                                OB.Pfile3=obj.attribute("PFILE3","");
454
                                OB.IProfile=obj.attribute("PRFILE","");
455
                                OB.EmProfile=obj.attribute("EPROF","");
456
                                OB.IRender = QStoInt(obj.attribute("IRENDER","1"));
457
                                OB.UseEmbedded = QStoInt(obj.attribute("EMBEDDED","1"));
458
                                OB.Locked = static_cast<bool>(QStoInt(obj.attribute("LOCK","0")));
459
                                OB.Reverse = static_cast<bool>(QStoInt(obj.attribute("REVERS","0")));
20 Franz 460
                                OB.InvPict = static_cast<bool>(QStoInt(obj.attribute("INVERS","0")));
3 paul 461
                                OB.LayerNr = QStoInt(obj.attribute("LAYER","0"));
68 Franz 462
                                OB.Language = obj.attribute("LANGUAGE", doc->Language);
80 Franz 463
                                OB.Transparency = QStodouble(obj.attribute("TransValue","0.0"));
68 Franz 464
                                if (obj.hasAttribute("TransValueS"))
80 Franz 465
                                        OB.TranspStroke = QStodouble(obj.attribute("TransValueS","0.0"));
68 Franz 466
                                else
467
                                        OB.TranspStroke = OB.Transparency;
3 paul 468
                                if (obj.hasAttribute("NUMCLIP"))
469
                                        {
470
                                        OB.Clip.resize(obj.attribute("NUMCLIP").toUInt());
471
                                        tmp = obj.attribute("CLIPCOOR");
472
                                        QTextStream fc(&tmp, IO_ReadOnly);
473
                                        for (uint c=0; c<obj.attribute("NUMCLIP").toUInt(); ++c)
474
                                                {
475
                                                fc >> x;
476
                                                fc >> y;
477
                                                OB.Clip.setPoint(c, x, y);
478
                                                }
479
                                        }
480
                                else
481
                                        OB.Clip.resize(0);
482
                                if (obj.hasAttribute("NUMPO"))
483
                                        {
484
                                        OB.PoLine.resize(obj.attribute("NUMPO").toUInt());
485
                                        tmp = obj.attribute("POCOOR");
486
                                                QTextStream fp(&tmp, IO_ReadOnly);
487
                                        for (uint cx=0; cx<obj.attribute("NUMPO").toUInt(); ++cx)
488
                                                {
489
                                                fp >> xf;
490
                                                fp >> yf;
491
                                                OB.PoLine.setPoint(cx, xf, yf);
492
                                                }
493
                                        }
494
                                else
495
                                        OB.PoLine.resize(0);
496
                                tmp = "";
497
                                if ((obj.hasAttribute("GROUPS")) && (QStoInt(obj.attribute("NUMGROUP","0")) != 0))
498
                                        {
499
                                        tmp = obj.attribute("GROUPS");
500
                                        QTextStream fg(&tmp, IO_ReadOnly);
501
                                        OB.Groups.clear();
502
                                        for (int cx = 0; cx < QStoInt(obj.attribute("NUMGROUP","0")); ++cx)
503
                                                {
504
                                                fg >> x;
505
                                                OB.Groups.push(x);
506
                                                }
507
                                        tmp = "";
508
                                        }
509
                                else
510
                                        OB.Groups.clear();
511
                                QDomNode IT=OBJ.firstChild();
512
                                while(!IT.isNull())
513
                                {
514
                                        QDomElement it=IT.toElement();
515
                                        if (it.tagName()=="ITEXT")
516
                                                {
517
                                                tmp2 = it.attribute("CH");
518
                                                tmp2.replace(QRegExp("\r"), QChar(5));
519
                                                tmp2.replace(QRegExp("\n"), QChar(5));
520
                                                tmp3 = "\t" + DoFonts[it.attribute("CFONT")] + "\t";
521
                                                tmp3 += it.attribute("CSIZE") + "\t";
522
                                                tmp3 += it.attribute("CCOLOR") + "\t";
523
                                                tmp3 += it.attribute("CEXTRA") + "\t";
524
                                                tmp3 += it.attribute("CSHADE") + "\t";
525
                                                tmp3 += it.attribute("CSTYLE") + "\t";
68 Franz 526
                                                tmp3 += it.attribute("CAB","0") + "\t";
527
                                                tmp3 += it.attribute("CSTROKE","None") + "\t";
528
                                                tmp3 += it.attribute("CSHADE2","100") + "\t";
529
                                                tmp3 += it.attribute("CSCALE","100") + "\n";
3 paul 530
                                                for (uint cxx=0; cxx<tmp2.length(); ++cxx)
531
                                                        {
532
                                                        tmp += tmp2.at(cxx)+tmp3;
533
                                                        }
534
                                                }
75 Franz 535
/*                                      else
3 paul 536
                                                {
537
                                                tmp += QString(QChar(QStoInt(it.attribute("CH")))) + "\t";
538
                                                tmp += DoFonts[it.attribute("CFONT")] + "\t";
539
                                                tmp += it.attribute("CSIZE") + "\t";
540
                                                tmp += it.attribute("CCOLOR") + "\t";
541
                                                tmp += it.attribute("CEXTRA") + "\t";
542
                                                tmp += it.attribute("CSHADE") + "\t";
543
                                                tmp += it.attribute("CSTYLE") + "\t";
68 Franz 544
                                                tmp += it.attribute("CAB","0") + "\t";
545
                                                tmp += it.attribute("CCOLOR") + "\t";
546
                                                tmp += it.attribute("CSHADE") + "\t";
547
                                                tmp += it.attribute("CSTROKE","None") + "\t";
548
                                                tmp += it.attribute("CSHADE2","100") + "\t";
549
                                                tmp += it.attribute("CSCALE","100") + "\n";
75 Franz 550
                                                }         */
3 paul 551
                                        IT=IT.nextSibling();
552
                                }
553
                                OB.Ptext = tmp;
554
                                if ((OB.PType == 5) && (OB.Height != 0))
555
                                        {
556
                                        OB.Rot += atan2(OB.Height,OB.Width)*(180.0/3.1415927);
557
                                        OB.Width = sqrt(pow(OB.Width,2)+pow(OB.Height,2));
558
                                        OB.Height = 0;
559
                                        OB.Clip.setPoints(4, -1,-1, static_cast<int>(OB.Width+1),-1, static_cast<int>(OB.Width+1), static_cast<int>(OB.Height+1), -1, static_cast<int>(OB.Height+1));
560
                                        }
561
                                view->Pages.at(a)->PasteItem(&OB, true);
31 Franz 562
                                Neu = view->Pages.at(a)->Items.at(counter);
563
                                if (QStoInt(obj.attribute("NEXTPAGE")) == PageToLoad)
564
                                        {
565
                                        Neu->NextIt = QStoInt(obj.attribute("NEXTITEM"));
566
                                        Neu->NextPg = QStoInt(obj.attribute("NEXTPAGE"));
567
                                        }
3 paul 568
                                OBJ=OBJ.nextSibling();
569
                        }
31 Franz 570
                        if (LFrames.count() != 0)
571
                                {
572
                                PageItem *Its;
573
                                PageItem *Itn;
574
                                PageItem *Itr;
575
                                QValueList<Linked>::Iterator lc;
576
                                for (lc = LFrames.begin(); lc != LFrames.end(); ++lc)
577
                                        {
578
                                        Its = view->Pages.at((*lc).StPag)->Items.at((*lc).Start);
579
                                        Itr = Its;
580
                                        Its->BackBox = 0;
581
                                while (Its->NextIt != -1)
582
                                        {
583
                                        if (Its->NextPg == PageToLoad)
584
                                                {
585
                                                Itn = view->Pages.at(Its->NextPg)->Items.at(Its->NextIt);
586
                                                Its->NextBox = Itn;
587
                                                Itn->BackBox = Its;
588
                                                Its = Itn;
589
                                                }
590
                                        else
591
                                                break;
592
                                        }
593
                                Its->NextBox = 0;
594
                                Itr->Dirty = true;
595
                                Itr->paintObj();
596
                                }
597
                        }
3 paul 598
                        view->reformPages();
599
                        return true;
600
                }
601
                PAGE=PAGE.nextSibling();
602
        }
603
        DOC=DOC.nextSibling();
604
}
605
return false;
606
}
607
 
608
bool ScriXmlDoc::ReadDoc(QString fileName, SCFonts &avail, ScribusDoc *doc, ScribusView *view, QProgressBar *dia2)
609
{
610
struct CLBuf OB;
611
struct StVorL vg;
612
struct Layer la;
613
struct ScribusDoc::BookMa bok;
614
int counter, Pgc;
615
bool AtFl;
68 Franz 616
bool newVersion = false;
3 paul 617
struct Linked Link;
618
QString tmp, tmpf, tmp2, tmp3, tmp4, PgNam, Defont;
619
QFont fo;
620
QMap<QString,QString> DoFonts;
621
int x, y, a;
80 Franz 622
double xf, yf;
3 paul 623
PageItem *Neu;
624
LFrames.clear();
625
QDomDocument docu("scridoc");
626
QString f = "";
627
f = ReadDatei(fileName);
628
if (f == "")
629
        return false;
630
if (!f.startsWith("<SCRIBUS"))
631
        return false;
632
if(!docu.setContent(f))
633
        return false;
634
doc->PageColors.clear();
635
doc->Layers.clear();
636
CMYKColor lf = CMYKColor();
637
QDomElement elem=docu.documentElement();
638
if ((elem.tagName() != "SCRIBUS") && (elem.tagName() != "SCRIBUSUTF8"))
639
        return false;
68 Franz 640
if (elem.hasAttribute("Version"))
641
        newVersion = true;
3 paul 642
QDomNode DOC=elem.firstChild();
643
dia2->setTotalSteps(DOC.childNodes().count());
644
dia2->setProgress(0);
645
int ObCount = 0;
646
while(!DOC.isNull())
647
{
648
        QDomElement dc=DOC.toElement();
649
        /*
650
        * Attribute von DOCUMENT auslesen
651
        */
80 Franz 652
        doc->PageB=QStodouble(dc.attribute("PAGEWITH"));
653
        doc->PageH=QStodouble(dc.attribute("PAGEHEIGHT"));
654
        doc->PageM.Left=QStodouble(dc.attribute("BORDERLEFT"));
655
        doc->PageM.Right=QStodouble(dc.attribute("BORDERRIGHT"));
656
        doc->PageM.Top=QStodouble(dc.attribute("BORDERTOP"));
657
        doc->PageM.Bottom=QStodouble(dc.attribute("BORDERBOTTOM"));
3 paul 658
        doc->PageOri = QStoInt(dc.attribute("ORIENTATION","0"));
659
        doc->FirstPnum = QStoInt(dc.attribute("FIRSTNUM","1"));
660
        doc->PageFP=QStoInt(dc.attribute("BOOK"));
661
        doc->FirstPageLeft=QStoInt(dc.attribute("FIRSTLEFT"));
662
        doc->PageAT=QStoInt(dc.attribute("AUTOTEXT"));
663
        doc->PageSp=QStoInt(dc.attribute("AUTOSPALTEN"));
80 Franz 664
        doc->PageSpa=QStodouble(dc.attribute("ABSTSPALTEN"));
3 paul 665
        doc->Einheit = QStoInt(dc.attribute("UNITS","0"));
666
        Defont=dc.attribute("DFONT");
667
        doc->Dsize=QStoInt(dc.attribute("DSIZE"));
668
        doc->DocAutor=dc.attribute("AUTHOR");
669
        doc->DocComments=dc.attribute("COMMENTS");
68 Franz 670
        doc->DocKeyWords=dc.attribute("KEYWORDS","");
3 paul 671
        doc->DocTitel=dc.attribute("TITLE");
672
        doc->VHoch=QStoInt(dc.attribute("VHOCH"));
673
        doc->VHochSc=QStoInt(dc.attribute("VHOCHSC"));
674
        doc->VTief=QStoInt(dc.attribute("VTIEF"));
675
        doc->VTiefSc=QStoInt(dc.attribute("VTIEFSC"));
676
        doc->VKapit=QStoInt(dc.attribute("VKAPIT"));
677
        doc->GroupCounter=QStoInt(dc.attribute("GROUPC","1"));
678
        doc->HasCMS = static_cast<bool>(QStoInt(dc.attribute("HCMS","0")));
679
        doc->CMSSettings.SoftProofOn = static_cast<bool>(QStoInt(dc.attribute("DPSo","0")));
680
        doc->CMSSettings.CMSinUse = static_cast<bool>(QStoInt(dc.attribute("DPuse","0")));
681
        doc->CMSSettings.GamutCheck = static_cast<bool>(QStoInt(dc.attribute("DPgam","0")));
682
        doc->CMSSettings.DefaultMonitorProfile = dc.attribute("DPMo","");
683
        doc->CMSSettings.DefaultPrinterProfile = dc.attribute("DPPr","");
684
        doc->CMSSettings.DefaultInputProfile = dc.attribute("DPIn","");
685
        doc->CMSSettings.DefaultInputProfile2 = dc.attribute("DPIn2","");
686
        doc->CMSSettings.DefaultIntentPrinter = QStoInt(dc.attribute("DIPr","0"));
687
        doc->CMSSettings.DefaultIntentMonitor = QStoInt(dc.attribute("DIMo","1"));
688
        doc->CMSSettings.DefaultIntentMonitor2 = QStoInt(dc.attribute("DIMo2","1"));
689
        doc->ActiveLayer = QStoInt(dc.attribute("ALAYER","0"));
690
        doc->Language = dc.attribute("LANGUAGE", "");
691
        doc->MinWordLen = QStoInt(dc.attribute("MINWORDLEN", "3"));
692
        doc->Automatic = static_cast<bool>(QStoInt(dc.attribute("AUTOMATIC", "1")));
693
        doc->AutoCheck = static_cast<bool>(QStoInt(dc.attribute("AUTOCHECK", "0")));
694
        doc->GuideLock = static_cast<bool>(QStoInt(dc.attribute("GUIDELOCK", "0")));
695
        DoFonts.clear();
696
        QDomNode PAGE=DOC.firstChild();
697
        while(!PAGE.isNull())
698
        {
699
                ObCount++;
700
                dia2->setProgress(ObCount);
701
                QDomElement pg=PAGE.toElement();
702
                if(pg.tagName()=="FONT")
703
                {
704
                        /*
705
                        * Attribute von FONT auslesen
706
                        */
707
                        tmpf = pg.attribute("NAME");
708
                        if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
709
                                {
710
                                if ((!view->Prefs->GFontSub.contains(tmpf)) || (!avail[view->Prefs->GFontSub[tmpf]]->UseFont))
711
                                        {
712
                                qApp->setOverrideCursor(QCursor(arrowCursor), true);
33 Franz 713
                                        DmF *dia = new DmF(view, tmpf, view->Prefs);
3 paul 714
                                        dia->exec();
715
                                        tmpf = dia->Ersatz;
716
                                        delete dia;
717
                                qApp->setOverrideCursor(QCursor(waitCursor), true);
718
                                        view->Prefs->GFontSub[pg.attribute("NAME")] = tmpf;
719
                                        }
720
                                else
721
                                        tmpf = view->Prefs->GFontSub[tmpf];
722
                                }
723
                        fo = avail[tmpf]->Font;
724
                        fo.setPointSize(doc->Dsize);
725
                        doc->AddFont(tmpf, fo);
726
                        DoFonts[pg.attribute("NAME")] = tmpf;
727
                }
728
                if(pg.tagName()=="COLOR")
729
                        {
730
                        if (pg.hasAttribute("CMYK"))
731
                                lf.setNamedColor(pg.attribute("CMYK"));
732
                        else
733
                                lf.fromQColor(QColor(pg.attribute("RGB")));
734
                  doc->PageColors[pg.attribute("NAME")] = lf;
735
                        }
736
                if(pg.tagName()=="STYLE")
737
                        {
738
                        vg.Vname = pg.attribute("NAME");
80 Franz 739
                        vg.LineSpa = QStodouble(pg.attribute("LINESP"));
740
                        vg.Indent = QStodouble(pg.attribute("INDENT","0"));
741
                        vg.First = QStodouble(pg.attribute("FIRST","0"));
3 paul 742
                        vg.Ausri = QStoInt(pg.attribute("ALIGN"));
80 Franz 743
                        vg.Avor = QStodouble(pg.attribute("VOR","0"));
744
                        vg.Anach = QStodouble(pg.attribute("NACH","0"));
3 paul 745
                        if (pg.hasAttribute("FONT"))
746
                                vg.Font = DoFonts[pg.attribute("FONT")];
747
                        else
748
                                vg.Font = DoFonts[Defont];
80 Franz 749
                        vg.FontSize = QStoInt(pg.attribute("FONTSIZE","12"));
3 paul 750
                        doc->Vorlagen.append(vg);
751
                        }
752
                if(pg.tagName()=="JAVA")
753
                        doc->JavaScripts[pg.attribute("NAME")] = pg.attribute("SCRIPT");
754
                if(pg.tagName()=="LAYERS")
755
                        {
756
                        la.LNr = QStoInt(pg.attribute("NUMMER"));
757
                        la.Level = QStoInt(pg.attribute("LEVEL"));
758
                        la.Name = pg.attribute("NAME");
759
                        la.Sichtbar = QStoInt(pg.attribute("SICHTBAR"));
80 Franz 760
                        la.Drucken = QStoInt(pg.attribute("DRUCKEN"));
3 paul 761
                        doc->Layers.append(la);
762
                        }
763
                if(pg.tagName()=="Bookmark")
764
                        {
765
                        bok.Title = pg.attribute("Title");
766
                        bok.Text = pg.attribute("Text");
767
                        bok.Aktion = pg.attribute("Aktion");
768
                        bok.ItemNr = QStoInt(pg.attribute("ItemNr"));
769
                        bok.Seite = QStoInt(pg.attribute("Seite"));
770
                        bok.Element = QStoInt(pg.attribute("Element"));
771
                        bok.First = QStoInt(pg.attribute("First"));
772
                        bok.Last = QStoInt(pg.attribute("Last"));
773
                        bok.Prev = QStoInt(pg.attribute("Prev"));
774
                        bok.Next = QStoInt(pg.attribute("Next"));
775
                        bok.Parent = QStoInt(pg.attribute("Parent"));
776
                        doc->BookMarks.append(bok);
777
                        }
778
                if(pg.tagName()=="PDF")
779
                        {
780
                        doc->PDF_Optionen.Articles = static_cast<bool>(QStoInt(pg.attribute("Articles")));
781
                        doc->PDF_Optionen.Thumbnails = static_cast<bool>(QStoInt(pg.attribute("Thumbnails")));
782
                        doc->PDF_Optionen.Compress = static_cast<bool>(QStoInt(pg.attribute("Compress")));
783
                        doc->PDF_Optionen.RecalcPic = static_cast<bool>(QStoInt(pg.attribute("RecalcPic")));
784
                        doc->PDF_Optionen.Bookmarks = static_cast<bool>(QStoInt(pg.attribute("Bookmarks")));
785
                        doc->PDF_Optionen.PresentMode = static_cast<bool>(QStoInt(pg.attribute("PresentMode")));
786
                        doc->PDF_Optionen.PicRes = QStoInt(pg.attribute("PicRes"));
787
                        doc->PDF_Optionen.Version = QStoInt(pg.attribute("Version"));
788
                        doc->PDF_Optionen.Resolution = QStoInt(pg.attribute("Resolution"));
789
                        doc->PDF_Optionen.Binding = QStoInt(pg.attribute("Binding"));
790
                        doc->PDF_Optionen.Datei = "";
791
                        doc->PDF_Optionen.UseRGB = static_cast<bool>(QStoInt(pg.attribute("RGBMode","0")));
792
                        doc->PDF_Optionen.UseProfiles = static_cast<bool>(QStoInt(pg.attribute("UseProfiles","0")));
793
                        doc->PDF_Optionen.UseProfiles2 = static_cast<bool>(QStoInt(pg.attribute("UseProfiles2","0")));
794
                        doc->PDF_Optionen.Intent = QStoInt(pg.attribute("Intent","1"));
795
                        doc->PDF_Optionen.Intent2 = QStoInt(pg.attribute("Intent2","1"));
796
                        doc->PDF_Optionen.SolidProf = pg.attribute("SolidP", "");
797
                        doc->PDF_Optionen.ImageProf = pg.attribute("ImageP", "");
798
                        doc->PDF_Optionen.PrintProf = pg.attribute("PrintP", "");
799
                        doc->PDF_Optionen.Info = pg.attribute("InfoString", "");
80 Franz 800
                        doc->PDF_Optionen.BleedTop = QStodouble(pg.attribute("BTop","0"));
801
                        doc->PDF_Optionen.BleedLeft = QStodouble(pg.attribute("BLeft","0"));
802
                        doc->PDF_Optionen.BleedRight = QStodouble(pg.attribute("BRight","0"));
803
                        doc->PDF_Optionen.BleedBottom = QStodouble(pg.attribute("BBottom","0"));
3 paul 804
                        doc->PDF_Optionen.EmbeddedI = static_cast<bool>(QStoInt(pg.attribute("ImagePr","0")));
805
                        doc->PDF_Optionen.PassOwner = pg.attribute("PassOwner", "");
806
                        doc->PDF_Optionen.PassUser = pg.attribute("PassUser", "");
807
                        doc->PDF_Optionen.Permissions = QStoInt(pg.attribute("Permissions","-4"));
808
                        doc->PDF_Optionen.Encrypt = static_cast<bool>(QStoInt(pg.attribute("Encrypt","0")));
809
                        QDomNode PFO = PAGE.firstChild();
810
                        while(!PFO.isNull())
811
                                {
812
                                QDomElement pdfF = PFO.toElement();
813
                                if(pdfF.tagName() == "Fonts")
814
                                        {
815
                                        if (!doc->PDF_Optionen.EmbedList.contains(DoFonts[pdfF.attribute("Name")]))
816
                                                doc->PDF_Optionen.EmbedList.append(DoFonts[pdfF.attribute("Name")]);
817
                                        }
818
                                if(pdfF.tagName() == "Effekte")
819
                                        {
820
                        struct PreSet ef;
821
                        ef.EffektLen = QStoInt(pdfF.attribute("EffektLen"));
822
                        ef.AnzeigeLen = QStoInt(pdfF.attribute("AnzeigeLen"));
823
                        ef.Effekt = QStoInt(pdfF.attribute("Effekt"));
824
                        ef.Dm = QStoInt(pdfF.attribute("Dm"));
825
                        ef.M = QStoInt(pdfF.attribute("M"));
826
                        ef.Di = QStoInt(pdfF.attribute("Di"));
827
                                        doc->PDF_Optionen.PresentVals.append(ef);
828
                                        }
829
                                PFO = PFO.nextSibling();
830
                                }
831
                        }
27 Franz 832
                if(pg.tagName()=="MultiLine")
833
                        {
834
                        multiLine ml;
835
                        QDomNode MuLn = PAGE.firstChild();
836
                        while(!MuLn.isNull())
837
                                {
838
                                QDomElement MuL = MuLn.toElement();
839
                                struct singleLine sl;
840
                                sl.Color = MuL.attribute("Color");
841
                                sl.Dash = QStoInt(MuL.attribute("Dash"));
842
                                sl.LineEnd = QStoInt(MuL.attribute("LineEnd"));
843
                                sl.LineJoin = QStoInt(MuL.attribute("LineJoin"));
844
                                sl.Shade = QStoInt(MuL.attribute("Shade"));
80 Franz 845
                                sl.Width = QStodouble(MuL.attribute("Width"));
33 Franz 846
                                ml.push_back(sl);
27 Franz 847
                                MuLn = MuLn.nextSibling();
848
                                }
849
                        doc->MLineStyles.insert(pg.attribute("Name"), ml);
850
                        }
3 paul 851
                if(pg.tagName()=="PAGE")
852
                {
853
                        /*
854
                        * Attribute von PAGE auslesen
855
                        */
856
                        a = QStoInt(pg.attribute("NUM"));
857
                        PgNam = "";
858
                        PgNam = pg.attribute("NAM", "");
859
                        Pgc = doc->PageC;
860
                        AtFl = doc->PageAT;
861
                        if (PgNam == "")
862
                                {
863
                                doc->PageC = Pgc;
864
                                view->Pages = view->DocPages;
865
                                doc->PageAT = AtFl;
866
                                doc->MasterP = false;
867
                                }
868
                        else
869
                                {
870
                                doc->PageC = 0;
871
                                doc->PageAT = false;
872
                                view->Pages = view->MasterPages;
873
                                doc->MasterP = true;
874
                                }
875
                        emit NewPage(a);
876
                        view->Pages.at(a)->LeftPg=QStoInt(pg.attribute("LEFT","0"));
877
                        QString Mus = "";
878
                        Mus = pg.attribute("MNAM","Normal");
879
                        if (!doc->MasterP)
880
                                view->Pages.at(a)->MPageNam = Mus;
881
                        else
882
                                view->Pages.at(a)->MPageNam = "";
883
                        if ((pg.hasAttribute("NumVGuides")) && (QStoInt(pg.attribute("NumVGuides","0")) != 0))
884
                                {
885
                                tmp = pg.attribute("VerticalGuides");
886
                                QTextStream fgv(&tmp, IO_ReadOnly);
887
                                view->Pages.at(a)->YGuides.clear();
888
                                for (int cxv = 0; cxv < QStoInt(pg.attribute("NumVGuides","0")); ++cxv)
889
                                        {
890
                                        fgv >> xf;
891
                                        view->Pages.at(a)->YGuides.append(xf);
892
                                        }
893
                                qHeapSort(view->Pages.at(a)->YGuides);
894
                                tmp = "";
895
                                }
896
                        else
897
                                view->Pages.at(a)->YGuides.clear();
898
                        if ((pg.hasAttribute("NumHGuides")) && (QStoInt(pg.attribute("NumHGuides","0")) != 0))
899
                                {
900
                                tmp = pg.attribute("HorizontalGuides");
901
                                QTextStream fgh(&tmp, IO_ReadOnly);
902
                                view->Pages.at(a)->XGuides.clear();
903
                                for (int cxh = 0; cxh < QStoInt(pg.attribute("NumHGuides","0")); ++cxh)
904
                                        {
905
                                        fgh >> xf;
906
                                        view->Pages.at(a)->XGuides.append(xf);
907
                                        }
908
                                qHeapSort(view->Pages.at(a)->XGuides);
909
                                tmp = "";
910
                                }
911
                        else
912
                                view->Pages.at(a)->XGuides.clear();
913
                        counter = 0;
914
                        QDomNode OBJ=PAGE.firstChild();
915
                        while(!OBJ.isNull())
916
                        {
917
                                QDomElement obj=OBJ.toElement();
918
                                /*
919
                                * Attribute von OBJECT auslesen
920
                                */
921
                                if (QStoInt(obj.attribute("NEXTITEM")) != -1)
922
                                        {
923
                                        if (QStoInt(obj.attribute("BACKITEM")) == -1)
924
                                                {
925
                                                Link.Start = counter;
926
                                                Link.StPag = a;
927
                                                LFrames.append(Link);
928
                                                }
929
                                        }
930
                                OB.PType = QStoInt(obj.attribute("PTYPE"));
80 Franz 931
                                OB.Xpos = QStodouble(obj.attribute("XPOS"));
932
                                OB.Ypos=QStodouble(obj.attribute("YPOS"));
933
                                OB.Width=QStodouble(obj.attribute("WIDTH"));
934
                                OB.Height=QStodouble(obj.attribute("HEIGHT"));
935
                                OB.RadRect = QStodouble(obj.attribute("RADRECT","0"));
3 paul 936
                                OB.ClipEdited = QStoInt(obj.attribute("CLIPEDIT", "0"));
937
                                OB.FrameType = QStoInt(obj.attribute("FRTYPE", "0"));
80 Franz 938
                                OB.Pwidth=QStodouble(obj.attribute("PWIDTH"));
3 paul 939
                                OB.Pcolor=obj.attribute("PCOLOR");
68 Franz 940
                                if ((!newVersion) && (OB.PType == 4))
941
                                        {
942
                                        OB.TxtFill = obj.attribute("PCOLOR2");
943
                                        OB.Pcolor2 = "None";
944
                                        }
945
                                else
946
                                        {
947
                                        OB.Pcolor2 = obj.attribute("PCOLOR2");
948
                                        OB.TxtFill = obj.attribute("TXTFILL", "Black");
949
                                        }
27 Franz 950
                                OB.NamedLStyle = obj.attribute("NAMEDLST", "");
3 paul 951
                                OB.Shade=QStoInt(obj.attribute("SHADE"));
952
                                OB.Shade2=QStoInt(obj.attribute("SHADE2"));
68 Franz 953
                                OB.TxtStroke=obj.attribute("TXTSTROKE", "None");
954
                                OB.ShTxtFill=QStoInt(obj.attribute("TXTFILLSH", "100"));
955
                                OB.ShTxtStroke=QStoInt(obj.attribute("TXTSTRSH", "100"));
956
                                OB.TxtScale=QStoInt(obj.attribute("TXTSCALE", "100"));
957
                                OB.TxTStyle=QStoInt(obj.attribute("TXTSTYLE", "0"));
3 paul 958
                                OB.GrColor = obj.attribute("GRCOLOR","");
959
                                OB.GrColor2 = obj.attribute("GRCOLOR2","");
960
                                OB.GrShade = QStoInt(obj.attribute("GRSHADE","100"));
961
                                OB.GrShade2 = QStoInt(obj.attribute("GRSHADE2","100"));
962
                                OB.GrType = QStoInt(obj.attribute("GRTYP","0"));
80 Franz 963
                                OB.Rot=QStodouble(obj.attribute("ROT"));
3 paul 964
                                OB.PLineArt=Qt::PenStyle(QStoInt(obj.attribute("PLINEART")));
965
                                OB.PLineEnd=Qt::PenCapStyle(QStoInt(obj.attribute("PLINEEND","0")));
966
                                OB.PLineJoin=Qt::PenJoinStyle(QStoInt(obj.attribute("PLINEJOIN","0")));
80 Franz 967
                                OB.LineSp=QStodouble(obj.attribute("LINESP"));
968
                                OB.ExtraV=QStodouble(obj.attribute("EXTRAV","0"));
969
                                OB.LocalScX=QStodouble(obj.attribute("LOCALSCX"));
970
                                OB.LocalScY=QStodouble(obj.attribute("LOCALSCY"));
971
                                OB.LocalX=QStodouble(obj.attribute("LOCALX"));
972
                                OB.LocalY=QStodouble(obj.attribute("LOCALY"));
3 paul 973
                                OB.PicArt=QStoInt(obj.attribute("PICART"));
974
                                OB.flippedH=QStoInt(obj.attribute("FLIPPEDH"));
975
                                OB.flippedV=QStoInt(obj.attribute("FLIPPEDV"));
80 Franz 976
                                OB.BBoxX=QStodouble(obj.attribute("BBOXX"));
977
                                OB.BBoxH=QStodouble(obj.attribute("BBOXH"));
3 paul 978
                                OB.ScaleType = QStoInt(obj.attribute("SCALETYPE","1"));
979
                                OB.AspectRatio = QStoInt(obj.attribute("RATIO","0"));
980
                                OB.isPrintable=QStoInt(obj.attribute("PRINTABLE"));
981
                                OB.isBookmark=QStoInt(obj.attribute("BOOKMARK"));
982
                                if ((OB.isBookmark) && (doc->BookMarks.count() == 0))
983
                                        doc->OldBM = true;
984
                                OB.BMnr = QStoInt(obj.attribute("BookNr","0"));
985
                                OB.isAnnotation=QStoInt(obj.attribute("ANNOTATION","0"));
986
                                OB.AnType = QStoInt(obj.attribute("ANTYPE","0"));
987
                                OB.AnAction = obj.attribute("ANACTION","");
988
                                OB.An_E_act = obj.attribute("ANEACT","");
989
                                OB.An_X_act = obj.attribute("ANXACT","");
990
                                OB.An_D_act = obj.attribute("ANDACT","");
991
                                OB.An_Fo_act = obj.attribute("ANFOACT","");
992
                                OB.An_Bl_act = obj.attribute("ANBLACT","");
993
                                OB.An_K_act = obj.attribute("ANKACT","");
994
                                OB.An_F_act = obj.attribute("ANFACT","");
995
                                OB.An_V_act = obj.attribute("ANVACT","");
996
                                OB.An_C_act = obj.attribute("ANCACT","");
19 Franz 997
                                OB.An_Extern = obj.attribute("ANEXTERN","");
998
                                if (OB.An_Extern != "")
999
                                        {
1000
                                        QFileInfo efp(OB.An_Extern);
1001
                                        OB.An_Extern = efp.absFilePath();
1002
                                        }
3 paul 1003
                                OB.AnZiel = QStoInt(obj.attribute("ANZIEL","0"));
1004
                                OB.AnActType = QStoInt(obj.attribute("ANACTYP","0"));
1005
                                OB.AnName = obj.attribute("ANNAME","");
1006
                                OB.AnToolTip = obj.attribute("ANTOOLTIP","");
1007
                                OB.AnRollOver = obj.attribute("ANROLL","");
1008
                                OB.AnDown = obj.attribute("ANDOWN","");
1009
                                OB.AnBwid = QStoInt(obj.attribute("ANBWID","1"));
1010
                                OB.AnBsty = QStoInt(obj.attribute("ANBSTY","0"));
1011
                                OB.AnFeed = QStoInt(obj.attribute("ANFEED","1"));
1012
                                OB.AnFlag = QStoInt(obj.attribute("ANFLAG","0"));
1013
                                OB.AnFont = QStoInt(obj.attribute("ANFONT","4"));
1014
                                OB.AnFormat = QStoInt(obj.attribute("ANFORMAT","0"));
1015
                                OB.AnVis = QStoInt(obj.attribute("ANVIS","0"));
80 Franz 1016
                                OB.AnIsChk = static_cast<bool>(QStoInt(obj.attribute("ANCHK","0")));
1017
                                OB.AnAAact = static_cast<bool>(QStoInt(obj.attribute("ANAA","0")));
1018
                                OB.AnHTML = static_cast<bool>(QStoInt(obj.attribute("ANHTML","0")));
1019
                                OB.AnUseIcons = static_cast<bool>(QStoInt(obj.attribute("ANICON","0")));
3 paul 1020
                                OB.AnChkStil = QStoInt(obj.attribute("ANCHKS","0"));
1021
                                OB.AnMaxChar = QStoInt(obj.attribute("ANMC","-1"));
1022
                                OB.AnBColor = obj.attribute("ANBCOL","None");
1023
                                OB.AnIPlace = QStoInt(obj.attribute("ANPLACE","1"));
1024
                                OB.AnScaleW = QStoInt(obj.attribute("ANSCALE","0"));
1025
                                if (QStoInt(obj.attribute("TRANSPARENT","0")) == 1)
1026
                                        OB.Pcolor = "None";
1027
                                OB.Textflow=QStoInt(obj.attribute("TEXTFLOW"));
17 Franz 1028
                                OB.Textflow2=QStoInt(obj.attribute("TEXTFLOW2","0"));
80 Franz 1029
                                OB.Extra=QStodouble(obj.attribute("EXTRA"));
1030
                                OB.TExtra=QStodouble(obj.attribute("TEXTRA", "1"));
1031
                                OB.BExtra=QStodouble(obj.attribute("BEXTRA", "1"));
1032
                                OB.RExtra=QStodouble(obj.attribute("REXTRA", "1"));
3 paul 1033
                                OB.PoShow = QStoInt(obj.attribute("PTLSHOW","0"));
80 Franz 1034
                                OB.BaseOffs = QStodouble(obj.attribute("BASEOF","0"));
3 paul 1035
                                OB.Ausrich = QStoInt(obj.attribute("ALIGN","0"));
1036
                                OB.IFont = DoFonts[obj.attribute("IFONT", doc->Dfont)];
1037
                                OB.ISize = QStoInt(obj.attribute("ISIZE","12"));
1038
                                OB.Pfile=obj.attribute("PFILE");
1039
                                OB.Pfile2=obj.attribute("PFILE2","");
1040
                                OB.Pfile3=obj.attribute("PFILE3","");
1041
                                OB.IProfile=obj.attribute("PRFILE","");
1042
                                OB.EmProfile=obj.attribute("EPROF","");
1043
                                OB.IRender = QStoInt(obj.attribute("IRENDER","1"));
1044
                                OB.UseEmbedded = QStoInt(obj.attribute("EMBEDDED","1"));
1045
                                OB.Locked = static_cast<bool>(QStoInt(obj.attribute("LOCK","0")));
1046
                                OB.Reverse = static_cast<bool>(QStoInt(obj.attribute("REVERS","0")));
20 Franz 1047
                                OB.InvPict = static_cast<bool>(QStoInt(obj.attribute("INVERS","0")));
3 paul 1048
                                OB.LayerNr = QStoInt(obj.attribute("LAYER","0"));
68 Franz 1049
                                OB.Language = obj.attribute("LANGUAGE", doc->Language);
80 Franz 1050
                                OB.Transparency = QStodouble(obj.attribute("TransValue","0.0"));
68 Franz 1051
                                if (obj.hasAttribute("TransValueS"))
80 Franz 1052
                                        OB.TranspStroke = QStodouble(obj.attribute("TransValueS","0.0"));
68 Franz 1053
                                else
1054
                                        OB.TranspStroke = OB.Transparency;
3 paul 1055
                                if (obj.hasAttribute("NUMCLIP"))
1056
                                        {
1057
                                        OB.Clip.resize(obj.attribute("NUMCLIP").toUInt());
1058
                                        tmp = obj.attribute("CLIPCOOR");
1059
                                        QTextStream fc(&tmp, IO_ReadOnly);
1060
                                        for (uint c=0; c<obj.attribute("NUMCLIP").toUInt(); ++c)
1061
                                                {
1062
                                                fc >> x;
1063
                                                fc >> y;
1064
                                                OB.Clip.setPoint(c, x, y);
1065
                                                }
1066
                                        }
1067
                                else
1068
                                        OB.Clip.resize(0);
1069
                                if (obj.hasAttribute("NUMPO"))
1070
                                        {
1071
                                        OB.PoLine.resize(obj.attribute("NUMPO").toUInt());
1072
                                        tmp = obj.attribute("POCOOR");
1073
                                                QTextStream fp(&tmp, IO_ReadOnly);
1074
                                        for (uint cx=0; cx<obj.attribute("NUMPO").toUInt(); ++cx)
1075
                                                {
1076
                                                fp >> xf;
1077
                                                fp >> yf;
1078
                                                OB.PoLine.setPoint(cx, xf, yf);
1079
                                                }
1080
                                        }
1081
                                else
1082
                                        OB.PoLine.resize(0);
1083
                                tmp = "";
1084
                                if ((obj.hasAttribute("GROUPS")) && (QStoInt(obj.attribute("NUMGROUP","0")) != 0))
1085
                                        {
1086
                                        tmp = obj.attribute("GROUPS");
1087
                                        QTextStream fg(&tmp, IO_ReadOnly);
1088
                                        OB.Groups.clear();
1089
                                        for (int cx = 0; cx < QStoInt(obj.attribute("NUMGROUP","0")); ++cx)
1090
                                                {
1091
                                                fg >> x;
1092
                                                OB.Groups.push(x);
1093
                                                }
1094
                                        tmp = "";
1095
                                        }
1096
                                else
1097
                                        OB.Groups.clear();
1098
                                QDomNode IT=OBJ.firstChild();
1099
                                while(!IT.isNull())
1100
                                {
1101
                                        QDomElement it=IT.toElement();
1102
                                        if (it.tagName()=="ITEXT")
1103
                                                {
1104
                                                tmp2 = it.attribute("CH");
1105
                                                tmp2.replace(QRegExp("\r"), QChar(5));
1106
                                                tmp2.replace(QRegExp("\n"), QChar(5));
1107
                                                tmp3 = "\t" + DoFonts[it.attribute("CFONT")] + "\t";
1108
                                                tmp3 += it.attribute("CSIZE") + "\t";
1109
                                                tmp3 += it.attribute("CCOLOR") + "\t";
1110
                                                tmp3 += it.attribute("CEXTRA") + "\t";
1111
                                                tmp3 += it.attribute("CSHADE") + "\t";
1112
                                                tmp3 += it.attribute("CSTYLE") + "\t";
68 Franz 1113
                                                tmp3 += it.attribute("CAB","0") + "\t";
1114
                                                tmp3 += it.attribute("CSTROKE","None") + "\t";
1115
                                                tmp3 += it.attribute("CSHADE2","100") + "\t";
1116
                                                tmp3 += it.attribute("CSCALE","100") + "\n";
3 paul 1117
                                                for (uint cxx=0; cxx<tmp2.length(); ++cxx)
1118
                                                        {
1119
                                                        tmp += tmp2.at(cxx)+tmp3;
1120
                                                        }
1121
                                                }
75 Franz 1122
/*                                      else
3 paul 1123
                                                {
1124
                                                tmp += QString(QChar(QStoInt(it.attribute("CH")))) + "\t";
1125
                                                tmp += DoFonts[it.attribute("CFONT")] + "\t";
1126
                                                tmp += it.attribute("CSIZE") + "\t";
1127
                                                tmp += it.attribute("CCOLOR") + "\t";
1128
                                                tmp += it.attribute("CEXTRA") + "\t";
1129
                                                tmp += it.attribute("CSHADE") + "\t";
1130
                                                tmp += it.attribute("CSTYLE") + "\t";
68 Franz 1131
                                                tmp += it.attribute("CAB","0") + "\t";
1132
                                                tmp += it.attribute("CSTROKE","None") + "\t";
1133
                                                tmp += it.attribute("CSHADE2","100") + "\t";
1134
                                                tmp += it.attribute("CSCALE","100") + "\n";
75 Franz 1135
                                                }               */
3 paul 1136
                                        IT=IT.nextSibling();
1137
                                }
1138
                                OB.Ptext = tmp;
1139
                                int docGc = doc->GroupCounter;
1140
                                doc->GroupCounter = 0;
1141
                                doc->Dfont = DoFonts[Defont];
1142
                                if ((OB.PType == 5) && (OB.Height != 0))
1143
                                        {
1144
                                        OB.Rot += atan2(OB.Height,OB.Width)*(180.0/3.1415927);
1145
                                        OB.Width = sqrt(pow(OB.Width,2)+pow(OB.Height,2));
1146
                                        OB.Height = 0;
1147
                                        OB.Clip.setPoints(4, -1,-1, static_cast<int>(OB.Width+1),-1, static_cast<int>(OB.Width+1), static_cast<int>(OB.Height+1), -1, static_cast<int>(OB.Height+1));
1148
                                        }
1149
                                view->Pages.at(a)->PasteItem(&OB, true);
1150
                                doc->GroupCounter = docGc;
1151
                                Neu = view->Pages.at(a)->Items.at(counter);
1152
                                Neu->isAutoText=QStoInt(obj.attribute("AUTOTEXT"));
1153
                                if (Neu->isAutoText)
1154
                                        doc->LastAuto = Neu;
1155
                                Neu->NextIt = QStoInt(obj.attribute("NEXTITEM"));
1156
                                Neu->NextPg = QStoInt(obj.attribute("NEXTPAGE"));
1157
                                counter++;
1158
                                OBJ=OBJ.nextSibling();
1159
                        }
1160
                        if (PgNam == "")
1161
                                {
1162
                                view->DocPages = view->Pages;
1163
                                }
1164
                        else
1165
                                {
1166
                                view->Pages.at(a)->PageNam = PgNam;
1167
                                view->MasterNames[PgNam] = a;
1168
                                view->MasterPages = view->Pages;
1169
                                }
1170
                        doc->MasterP = false;
1171
                        doc->PageC = Pgc+1;
1172
                        doc->PageAT = AtFl;
1173
                }
1174
                PAGE=PAGE.nextSibling();
1175
        }
1176
        DOC=DOC.nextSibling();
1177
}
1178
for (uint ap=0; ap<view->MasterPages.count(); ++ap)
1179
        {
1180
        view->MasterPages.at(ap)->parentWidget()->hide();
1181
        }
1182
view->Pages = view->DocPages;
1183
doc->PageC = view->Pages.count();
1184
view->reformPages();
1185
if (doc->Layers.count() == 0)
80 Franz 1186
        {
3 paul 1187
        la.LNr = 0;
1188
        la.Level = 0;
1189
        la.Name = tr("Background");
1190
        la.Sichtbar = true;
80 Franz 1191
        la.Drucken = true;
3 paul 1192
        doc->Layers.append(la);
1193
        }
1194
if (LFrames.count() != 0)
1195
        {
1196
        PageItem *Its;
1197
        PageItem *Itn;
1198
        PageItem *Itr;
1199
        QValueList<Linked>::Iterator lc;
1200
        for (lc = LFrames.begin(); lc != LFrames.end(); ++lc)
1201
                {
1202
                Its = view->Pages.at((*lc).StPag)->Items.at((*lc).Start);
1203
                Itr = Its;
1204
                Its->BackBox = 0;
1205
                if (Its->isAutoText)
1206
                        doc->FirstAuto = Its;
1207
                while (Its->NextIt != -1)
1208
                        {
1209
                        Itn = view->Pages.at(Its->NextPg)->Items.at(Its->NextIt);
1210
                        Its->NextBox = Itn;
1211
                        Itn->BackBox = Its;
1212
                        Its = Itn;
1213
                        }
1214
                Its->NextBox = 0;
1215
                Itr->Dirty = true;
1216
                Itr->paintObj();
1217
                }
1218
        }
1219
if (doc->Einheit == 0)
1220
        view->UN->setText("pt");
1221
else
1222
        view->UN->setText("mm");
1223
dia2->setProgress(DOC.childNodes().count());
1224
return true;
1225
}
1226
 
80 Franz 1227
bool ScriXmlDoc::ReadElemHeader(QString file, bool isFile, double *x, double *y, double *w, double *h)
3 paul 1228
{
1229
        QString f;
1230
        QDomDocument docu("scridoc");
1231
        if (isFile)
1232
                {
1233
                if (!loadText(file, &f))
1234
                        return false;
1235
                QString ff = "";
1236
                if (f.startsWith("<SCRIBUSELEMUTF8"))
1237
                        ff = QString::fromUtf8(f);
1238
                else
1239
                        ff = f;
1240
                if(!docu.setContent(ff))
1241
                        return false;
1242
                }
1243
        else
1244
                {
1245
                QString ff = "";
1246
                if (file.startsWith("<SCRIBUSELEMUTF8"))
1247
                        ff = QString::fromUtf8(file);
1248
                else
1249
                        ff = file;
1250
                if(!docu.setContent(ff))
1251
                        return false;
1252
                }
1253
        QDomElement elem=docu.documentElement();
1254
        if ((elem.tagName() != "SCRIBUSELEM") && (elem.tagName() != "SCRIBUSELEMUTF8"))
1255
                return false;
80 Franz 1256
        *x = QStodouble(elem.attribute("XP"));
1257
        *y = QStodouble(elem.attribute("YP"));
1258
        *w = QStodouble(elem.attribute("W","0"));
1259
        *h = QStodouble(elem.attribute("H","0"));
3 paul 1260
        return true;
1261
}
1262
 
33 Franz 1263
bool ScriXmlDoc::ReadElem(QString fileName, SCFonts &avail, ScribusDoc *doc, int Xp, int Yp, bool Fi, bool loc, QMap<QString,QString> &FontSub, preV *Prefs)
3 paul 1264
{
1265
        struct CLBuf OB;
1266
        struct StVorL vg;
1267
        QString tmp, tmpf, tmp2, tmp3, tmp4, f, tmV;
1268
        QFont fo;
1269
        QMap<QString,QString> DoFonts;
1270
        QMap<uint,QString> DoVorl;
28 Franz 1271
        QMap<QString,QString> DoMul;
3 paul 1272
        uint VorlC;
1273
        bool fou;
1274
        bool VorLFound = false;
68 Franz 1275
        bool newVersion = false;
3 paul 1276
        int x, y;
80 Franz 1277
        double GrX, GrY, xf, yf;
3 paul 1278
        int GrMax = doc->GroupCounter;
1279
        CMYKColor lf = CMYKColor();
1280
        QDomDocument docu("scridoc");
1281
        if (Fi)
1282
                {
1283
                if (!loadText(fileName, &f))
1284
                        return false;
1285
                QString ff = "";
1286
                if (f.startsWith("<SCRIBUSELEMUTF8"))
1287
                        ff = QString::fromUtf8(f);
1288
                else
1289
                        ff = f;
1290
                if(!docu.setContent(ff))
1291
                        return false;
1292
                }
1293
        else
1294
                {
1295
                QString ff = "";
1296
                if (fileName.startsWith("<SCRIBUSELEMUTF8"))
1297
                        ff = QString::fromUtf8(fileName);
1298
                else
1299
                        ff = fileName;
1300
                if(!docu.setContent(ff))
1301
                        return false;
1302
                }
1303
        QDomElement elem=docu.documentElement();
1304
        if ((elem.tagName() != "SCRIBUSELEM") && (elem.tagName() != "SCRIBUSELEMUTF8"))
1305
                return false;
1306
        if (loc)
1307
                {
1308
                GrX = 0;
1309
                GrY = 0;
1310
                }
1311
        else
1312
                {
80 Franz 1313
                GrX = QStodouble(elem.attribute("XP"));
1314
                GrY = QStodouble(elem.attribute("YP"));
3 paul 1315
                }
68 Franz 1316
        if (elem.hasAttribute("Version"))
1317
                newVersion = true;
3 paul 1318
        QDomNode DOC=elem.firstChild();
1319
        DoFonts.clear();
1320
        DoVorl.clear();
1321
        VorlC = 5;
63 Franz 1322
        QString CurDirP = QDir::currentDirPath();
1323
        QDir::setCurrent(QString(getenv("HOME")));
3 paul 1324
        while(!DOC.isNull())
1325
                {
1326
                QDomElement pg=DOC.toElement();
1327
                if(pg.tagName()=="FONT")
1328
                        {
1329
                        tmpf = pg.attribute("NAME");
1330
                        if ((!avail.find(tmpf)) || (!avail[tmpf]->UseFont))
1331
                                {
1332
                                if (!FontSub.contains(tmpf) || (!avail[FontSub[tmpf]]->UseFont))
1333
                                        {
33 Franz 1334
                                        DmF *dia = new DmF(0, tmpf, Prefs);
3 paul 1335
                                        dia->exec();
1336
                                        tmpf = dia->Ersatz;
1337
                                        FontSub[pg.attribute("NAME")] = tmpf;
1338
                                        delete dia;
1339
                                        }
1340
                                else
1341
                                        tmpf = FontSub[tmpf];
1342
                                }
1343
                        fo = avail[tmpf]->Font;
1344
                        fo.setPointSize(doc->Dsize);
1345
                        if(!doc->UsedFonts.contains(tmpf))
1346
                                doc->AddFont(tmpf, fo);
1347
                        DoFonts[pg.attribute("NAME")] = tmpf;
1348
                        }
1349
                if(pg.tagName()=="COLOR")
1350
                        {
28 Franz 1351
                        if (pg.hasAttribute("CMYK"))
1352
                                lf.setNamedColor(pg.attribute("CMYK"));
1353
                        else
1354
                                lf.fromQColor(QColor(pg.attribute("RGB")));
3 paul 1355
                        if (!doc->PageColors.contains(pg.attribute("NAME")))
28 Franz 1356
                        doc->PageColors[pg.attribute("NAME")] = lf;
1357
                        }
1358
                if(pg.tagName()=="MultiLine")
1359
                        {
1360
                        multiLine ml;
1361
                        QDomNode MuLn = DOC.firstChild();
1362
                        while(!MuLn.isNull())
3 paul 1363
                                {
28 Franz 1364
                                QDomElement MuL = MuLn.toElement();
1365
                                struct singleLine sl;
1366
                                sl.Color = MuL.attribute("Color");
1367
                                sl.Dash = QStoInt(MuL.attribute("Dash"));
1368
                                sl.LineEnd = QStoInt(MuL.attribute("LineEnd"));
1369
                                sl.LineJoin = QStoInt(MuL.attribute("LineJoin"));
1370
                                sl.Shade = QStoInt(MuL.attribute("Shade"));
80 Franz 1371
                                sl.Width = QStodouble(MuL.attribute("Width"));
33 Franz 1372
                                ml.push_back(sl);
28 Franz 1373
                                MuLn = MuLn.nextSibling();
3 paul 1374
                                }
28 Franz 1375
                        if (!doc->MLineStyles.contains(pg.attribute("Name")))
1376
                                doc->MLineStyles.insert(pg.attribute("Name"), ml);
3 paul 1377
                        }
1378
                if(pg.tagName()=="STYLE")
1379
                        {
1380
                        fou = false;
1381
                        VorLFound = true;
1382
                        vg.Vname = pg.attribute("NAME");
80 Franz 1383
                        vg.LineSpa = QStodouble(pg.attribute("LINESP"));
1384
                        vg.Indent = QStodouble(pg.attribute("INDENT","0"));
1385
                        vg.First = QStodouble(pg.attribute("FIRST","0"));
3 paul 1386
                        vg.Ausri = QStoInt(pg.attribute("ALIGN"));
80 Franz 1387
                        vg.Avor = QStodouble(pg.attribute("VOR","0"));
1388
                        vg.Anach = QStodouble(pg.attribute("NACH","0"));
3 paul 1389
                        if (pg.hasAttribute("FONT"))
1390
                                vg.Font = DoFonts[pg.attribute("FONT")];
1391
                        else
1392
                                vg.Font = doc->Dfont;
80 Franz 1393
                        vg.FontSize = QStoInt(pg.attribute("FONTSIZE","12"));
3 paul 1394
                        for (uint xx=0; xx<doc->Vorlagen.count(); ++xx)
1395
                                {
1396
                                if (vg.Vname == doc->Vorlagen[xx].Vname)
1397
                                        {
1398
                                        DoVorl[VorlC] = tmV.setNum(xx);
1399
                                        VorlC++;
1400
                                        fou = true;
1401
                                        break;
1402
                                        }
1403
                                }
1404
                        if (!fou)
1405
                                {
1406
                                doc->Vorlagen.append(vg);
1407
                                DoVorl[VorlC] = tmV.setNum(doc->Vorlagen.count()-1);
1408
                                VorlC++;
1409
                                }
1410
                        }
1411
                DOC=DOC.nextSibling();
1412
                }
1413
        DOC=elem.firstChild();
1414
        while(!DOC.isNull())
1415
                {
1416
                QDomElement pg=DOC.toElement();
1417
                if(pg.tagName()=="ITEM")
1418
                        {
1419
                        OB.PType = QStoInt(pg.attribute("PTYPE"));
80 Franz 1420
                        OB.Xpos = static_cast<double>(Xp) + QStodouble(pg.attribute("XPOS")) - GrX;
1421
                        OB.Ypos = static_cast<double>(Yp) + QStodouble(pg.attribute("YPOS")) - GrY;
1422
                        OB.Width = QStodouble(pg.attribute("WIDTH"));
1423
                        OB.Height = QStodouble(pg.attribute("HEIGHT"));
1424
                        OB.RadRect = QStodouble(pg.attribute("RADRECT","0"));
3 paul 1425
                        OB.ClipEdited = QStoInt(pg.attribute("CLIPEDIT", "0"));
1426
                        OB.FrameType = QStoInt(pg.attribute("FRTYPE", "0"));
80 Franz 1427
                        OB.Pwidth = QStodouble(pg.attribute("PWIDTH"));
3 paul 1428
                        OB.Pcolor = pg.attribute("PCOLOR");
68 Franz 1429
                        if ((!newVersion) && (OB.PType == 4))
1430
                                {
1431
                                OB.TxtFill = pg.attribute("PCOLOR2");
1432
                                OB.Pcolor2 = "None";
1433
                                }
1434
                        else
1435
                                {
1436
                                OB.Pcolor2 = pg.attribute("PCOLOR2");
1437
                                OB.TxtFill = pg.attribute("TXTFILL", "Black");
1438
                                }
27 Franz 1439
                        OB.NamedLStyle = pg.attribute("NAMEDLST", "");
1440
                        if (!doc->MLineStyles.contains(OB.NamedLStyle))
1441
                                OB.NamedLStyle = "";
3 paul 1442
                        OB.Shade = QStoInt(pg.attribute("SHADE"));
1443
                        OB.Shade2 = QStoInt(pg.attribute("SHADE2"));
68 Franz 1444
                        OB.TxtStroke = pg.attribute("TXTSTROKE", "None");
1445
                        OB.ShTxtFill = QStoInt(pg.attribute("TXTFILLSH", "100"));
1446
                        OB.ShTxtStroke = QStoInt(pg.attribute("TXTSTRSH", "100"));
1447
                        OB.TxtScale = QStoInt(pg.attribute("TXTSCALE", "100"));
1448
                        OB.TxTStyle = QStoInt(pg.attribute("TXTSTYLE", "0"));
3 paul 1449
                        OB.GrColor = pg.attribute("GRCOLOR","");
1450
                        OB.GrColor2 = pg.attribute("GRCOLOR2","");
1451
                        OB.GrShade = QStoInt(pg.attribute("GRSHADE","100"));
1452
                        OB.GrShade2 = QStoInt(pg.attribute("GRSHADE2","100"));
1453
                        OB.GrType = QStoInt(pg.attribute("GRTYP","0"));
80 Franz 1454
                        OB.Rot = QStodouble(pg.attribute("ROT"));
3 paul 1455
                        OB.PLineArt = Qt::PenStyle(QStoInt(pg.attribute("PLINEART")));
1456
                        OB.PLineEnd = Qt::PenCapStyle(QStoInt(pg.attribute("PLINEEND","0")));
1457
                        OB.PLineJoin = Qt::PenJoinStyle(QStoInt(pg.attribute("PLINEJOIN","0")));
80 Franz 1458
                        OB.LineSp = QStodouble(pg.attribute("LINESP"));
1459
                        OB.ExtraV = QStodouble(pg.attribute("EXTRAV","0"));
1460
                        OB.LocalScX = QStodouble(pg.attribute("LOCALSCX"));
1461
                        OB.LocalScY = QStodouble(pg.attribute("LOCALSCY"));
1462
                        OB.LocalX = QStodouble(pg.attribute("LOCALX"));
1463
                        OB.LocalY = QStodouble(pg.attribute("LOCALY"));
3 paul 1464
                        OB.PicArt = QStoInt(pg.attribute("PICART"));
1465
                        OB.flippedH = QStoInt(pg.attribute("FLIPPEDH"));
1466
                        OB.flippedV = QStoInt(pg.attribute("FLIPPEDV"));
1467
                        OB.ScaleType = QStoInt(pg.attribute("SCALETYPE","1"));
1468
                        OB.AspectRatio = QStoInt(pg.attribute("RATIO","0"));
80 Franz 1469
                        OB.BBoxX = QStodouble(pg.attribute("BBOXX"));
1470
                        OB.BBoxH = QStodouble(pg.attribute("BBOXH"));
3 paul 1471
                        OB.isPrintable = QStoInt(pg.attribute("PRINTABLE"));
1472
                        OB.isBookmark = false;
1473
                        OB.BMnr = 0;
1474
                        OB.isAnnotation = QStoInt(pg.attribute("ANNOTATION","0"));
1475
                        OB.AnType = QStoInt(pg.attribute("ANTYPE","0"));
1476
                        OB.AnAction = pg.attribute("ANACTION","");
1477
                        OB.An_E_act = pg.attribute("ANEACT","");
1478
                        OB.An_X_act = pg.attribute("ANXACT","");
1479
                        OB.An_D_act = pg.attribute("ANDACT","");
1480
                        OB.An_Fo_act = pg.attribute("ANFOACT","");
1481
                        OB.An_Bl_act = pg.attribute("ANBLACT","");
1482
                        OB.An_K_act = pg.attribute("ANKACT","");
1483
                        OB.An_F_act = pg.attribute("ANFACT","");
1484
                        OB.An_V_act = pg.attribute("ANVACT","");
1485
                        OB.An_C_act = pg.attribute("ANCACT","");
19 Franz 1486
                        OB.An_Extern = pg.attribute("ANEXTERN","");
1487
                        if (OB.An_Extern != "")
1488
                                {
1489
                                QFileInfo efp(OB.An_Extern);
1490
                                OB.An_Extern = efp.absFilePath();
1491
                                }
3 paul 1492
                        OB.AnZiel = QStoInt(pg.attribute("ANZIEL","0"));
1493
                        OB.AnActType = QStoInt(pg.attribute("ANACTYP","0"));
1494
                        OB.AnName = pg.attribute("ANNAME","");
1495
                        OB.AnToolTip = pg.attribute("ANTOOLTIP","");
1496
                        OB.AnRollOver = pg.attribute("ANROLL","");
1497
                        OB.AnDown = pg.attribute("ANDOWN","");
1498
                        OB.AnBwid = QStoInt(pg.attribute("ANBWID","1"));
1499
                        OB.AnBsty = QStoInt(pg.attribute("ANBSTY","0"));
1500
                        OB.AnFeed = QStoInt(pg.attribute("ANFEED","1"));
1501
                        OB.AnFlag = QStoInt(pg.attribute("ANFLAG","0"));
1502
                        OB.AnFont = QStoInt(pg.attribute("ANFONT","4"));
1503
                        OB.AnFormat = QStoInt(pg.attribute("ANFORMAT","0"));
1504
                        OB.AnVis = QStoInt(pg.attribute("ANVIS","0"));
1505
                        OB.AnMaxChar = QStoInt(pg.attribute("ANMC","-1"));
1506
                        OB.AnIsChk = static_cast<bool>(QStoInt(pg.attribute("ANCHK","0")));
1507
                        OB.AnAAact = static_cast<bool>(QStoInt(pg.attribute("ANAA","0")));
1508
                        OB.AnHTML = static_cast<bool>(QStoInt(pg.attribute("ANHTML","0")));
1509
                        OB.AnUseIcons = static_cast<bool>(QStoInt(pg.attribute("ANICON","0")));
1510
                        OB.AnChkStil = QStoInt(pg.attribute("ANCHKS","0"));
1511
                        OB.AnIPlace = QStoInt(pg.attribute("ANPLACE","1"));
1512
                        OB.AnScaleW = QStoInt(pg.attribute("ANSCALE","0"));
1513
                        OB.AnBColor = pg.attribute("ANBCOL","None");
1514
                        if (QStoInt(pg.attribute("TRANSPARENT","0")) == 1)
1515
                                OB.Pcolor = "None";
1516
                        OB.Textflow = QStoInt(pg.attribute("TEXTFLOW"));
17 Franz 1517
                        OB.Textflow2 = QStoInt(pg.attribute("TEXTFLOW2","0"));
80 Franz 1518
                        OB.Extra = QStodouble(pg.attribute("EXTRA"));
1519
                        OB.TExtra = QStodouble(pg.attribute("TEXTRA", "1"));
1520
                        OB.BExtra = QStodouble(pg.attribute("BEXTRA", "1"));
1521
                        OB.RExtra = QStodouble(pg.attribute("REXTRA", "1"));
3 paul 1522
                        OB.PoShow = QStoInt(pg.attribute("PTLSHOW","0"));
80 Franz 1523
                        OB.BaseOffs = QStodouble(pg.attribute("BASEOF","0"));
3 paul 1524
                        OB.Ausrich = QStoInt(pg.attribute("ALIGN","0"));
1525
                        OB.IFont = DoFonts[pg.attribute("IFONT")];
1526
                        OB.ISize = QStoInt(pg.attribute("ISIZE","12"));
1527
                        OB.Pfile = pg.attribute("PFILE");
1528
                        OB.Pfile2 = pg.attribute("PFILE2","");
1529
                        OB.Pfile3 = pg.attribute("PFILE3","");
1530
                        OB.IProfile = pg.attribute("PRFILE","");
1531
                        OB.EmProfile = pg.attribute("EPROF","");
1532
                        OB.IRender = QStoInt(pg.attribute("IRENDER","1"));
1533
                        OB.UseEmbedded = QStoInt(pg.attribute("EMBEDDED","1"));
1534
                        OB.Locked = static_cast<bool>(QStoInt(pg.attribute("LOCK","0")));
1535
                        OB.Reverse = static_cast<bool>(QStoInt(pg.attribute("REVERS","0")));
20 Franz 1536
                        OB.InvPict = static_cast<bool>(QStoInt(pg.attribute("INVERS","0")));
75 Franz 1537
                        OB.Language = pg.attribute("LANGUAGE", doc->Language);
80 Franz 1538
                        OB.Transparency = QStodouble(pg.attribute("TransValue","0.0"));
68 Franz 1539
                        if (pg.hasAttribute("TransValueS"))
80 Franz 1540
                                OB.TranspStroke = QStodouble(pg.attribute("TransValueS","0.0"));
68 Franz 1541
                        else
1542
                                OB.TranspStroke = OB.Transparency;
3 paul 1543
                        if (pg.hasAttribute("NUMCLIP"))
1544
                                {
1545
                                OB.Clip.resize(pg.attribute("NUMCLIP").toUInt());
1546
                                tmp = pg.attribute("CLIPCOOR");
1547
                                QTextStream f(&tmp, IO_ReadOnly);
1548
                                for (uint c=0; c<pg.attribute("NUMCLIP").toUInt(); ++c)
1549
                                        {
1550
                                        f >> x;
1551
                                        f >> y;
1552
                                        OB.Clip.setPoint(c, x, y);
1553
                                        }
1554
                                }
1555
                        else
1556
                                OB.Clip.resize(0);
1557
                        if (pg.hasAttribute("NUMPO"))
1558
                                {
1559
                                OB.PoLine.resize(pg.attribute("NUMPO").toUInt());
1560
                                tmp = pg.attribute("POCOOR");
1561
                                QTextStream fp(&tmp, IO_ReadOnly);
1562
                                for (uint cx=0; cx<pg.attribute("NUMPO").toUInt(); ++cx)
1563
                                        {
1564
                                        fp >> xf;
1565
                                        fp >> yf;
1566
                                        OB.PoLine.setPoint(cx, xf, yf);
1567
                                        }
1568
                                }
1569
                        else
1570
                                OB.PoLine.resize(0);
1571
                        tmp = "";
1572
                        if ((pg.hasAttribute("GROUPS")) && (QStoInt(pg.attribute("NUMGROUP","0")) != 0))
1573
                                {
1574
                                tmp = pg.attribute("GROUPS");
1575
                                QTextStream fg(&tmp, IO_ReadOnly);
1576
                                OB.Groups.clear();
1577
                                for (int cx = 0; cx < QStoInt(pg.attribute("NUMGROUP","0")); ++cx)
1578
                                        {
1579
                                        fg >> x;
1580
                                        OB.Groups.push(x+doc->GroupCounter);
1581
                                        GrMax = QMAX(GrMax, x+doc->GroupCounter);
1582
                                        }
1583
                                tmp = "";
1584
                                }
1585
                        else
1586
                                OB.Groups.clear();
1587
                        tmp = "";
1588
                        QDomNode IT=DOC.firstChild();
1589
                        while(!IT.isNull())
1590
                                {
1591
                                QDomElement it=IT.toElement();
1592
                                if (it.tagName()=="ITEXT")
1593
                                                {
1594
                                                tmp2 = it.attribute("CH");
1595
                                                tmp2.replace(QRegExp("\r"), QChar(5));
1596
                                                tmp2.replace(QRegExp("\n"), QChar(5));
1597
                                                tmp3 = "\t" + DoFonts[it.attribute("CFONT")] + "\t";
1598
                                                tmp3 += it.attribute("CSIZE") + "\t";
1599
                                                tmp3 += it.attribute("CCOLOR") + "\t";
1600
                                                tmp3 += it.attribute("CEXTRA") + "\t";
1601
                                                tmp3 += it.attribute("CSHADE") + "\t";
1602
                                                tmp3 += it.attribute("CSTYLE") + "\t";
1603
                                                if (VorLFound)
68 Franz 1604
                                                        tmp3 += DoVorl[it.attribute("CAB","0").toUInt()] + "\t";
3 paul 1605
                                                else
1606
                                                        {
1607
                                                        if (it.attribute("CAB","0").toUInt() < 5)
68 Franz 1608
                                                                tmp3 += it.attribute("CAB","0")+"\t";
3 paul 1609
                                                        else
68 Franz 1610
                                                                tmp3 += "0\t";
3 paul 1611
                                                                }
68 Franz 1612
                                                tmp3 += it.attribute("CSTROKE","None") + "\t";
1613
                                                tmp3 += it.attribute("CSHADE2","100") + "\t";
1614
                                                tmp3 += it.attribute("CSCALE","100") + "\n";
3 paul 1615
                                                for (uint cxx=0; cxx<tmp2.length(); ++cxx)
1616
                                                        {
1617
                                                        tmp += tmp2.at(cxx)+tmp3;
1618
                                                        }
1619
                                                }
75 Franz 1620
/*                                      else if (it.tagName()=="TEXT")
3 paul 1621
                                                {
1622
                                                tmp += QString(QChar(QStoInt(it.attribute("CH")))) + "\t";
1623
                                                tmp += DoFonts[it.attribute("CFONT")] + "\t";
1624
                                                tmp += it.attribute("CSIZE") + "\t";
1625
                                                tmp += it.attribute("CCOLOR") + "\t";
1626
                                                tmp += it.attribute("CEXTRA") + "\t";
1627
                                                tmp += it.attribute("CSHADE") + "\t";
1628
                                                tmp += it.attribute("CSTYLE") + "\t";
1629
                                                if ((VorLFound) || (it.attribute("CAB","0").toUInt() < 5))
68 Franz 1630
                                                        tmp += DoVorl[it.attribute("CAB","0").toUInt()] + "\t";
3 paul 1631
                                                else
1632
                                                        {
1633
                                                        if (it.attribute("CAB","0").toUInt() < 5)
68 Franz 1634
                                                                tmp += it.attribute("CAB","0")+"\t";
3 paul 1635
                                                        else
68 Franz 1636
                                                                tmp += "0\t";
3 paul 1637
                                                        }
68 Franz 1638
                                                tmp += it.attribute("CSTROKE","None") + "\t";
1639
                                                tmp += it.attribute("CSHADE2","100") + "\t";
1640
                                                tmp += it.attribute("CSCALE","100") + "\n";
75 Franz 1641
                                                }     */
3 paul 1642
                                        IT=IT.nextSibling();
1643
                                }
1644
                        OB.Ptext = tmp;
1645
                        if ((OB.PType == 5) && (OB.Height != 0))
1646
                                {
1647
                                OB.Rot += atan2(OB.Height,OB.Width)*(180.0/3.1415927);
1648
                                OB.Width = sqrt(pow(OB.Width,2)+pow(OB.Height,2));
1649
                                OB.Height = 0;
1650
                                OB.Clip.setPoints(4, -1,-1, static_cast<int>(OB.Width+1),-1, static_cast<int>(OB.Width+1), static_cast<int>(OB.Height+1), -1, static_cast<int>(OB.Height+1));
1651
                                }
1652
                        OB.LayerNr = -1;
40 Franz 1653
                        doc->ActPage->PasteItem(&OB, true, true);
3 paul 1654
                        }
1655
                DOC=DOC.nextSibling();
1656
                }
1657
        doc->GroupCounter = GrMax + 1;
63 Franz 1658
        QDir::setCurrent(CurDirP);
3 paul 1659
        return true;
1660
}
1661
 
1662
QString ScriXmlDoc::WriteElem(QPtrList<PageItem> *Selitems, ScribusDoc *doc)
1663
{
68 Franz 1664
        int ts, ts2, tsh, tsh2, tst, tst2, tsb, tsb2, tshs, tshs2, tsc, tsc2;
1665
        QString text, tf, tf2, tc, tc2, tcs, tcs2, tmp;
80 Franz 1666
        double te, te2, xf, yf;
3 paul 1667
        PageItem *item;
1668
        QDomDocument docu("scribus");
1669
        QString st="<SCRIBUSELEMUTF8></SCRIBUSELEMUTF8>";
1670
        docu.setContent(st);
1671
        QDomElement elem=docu.documentElement();
1672
        item = Selitems->at(0);
1673
        QValueList<uint> ELL;
1674
        for (uint cor=0; cor<Selitems->count(); ++cor)
1675
                {
1676
                ELL.append(Selitems->at(cor)->ItemNr);
1677
                }
1678
        qHeapSort(ELL);
1679
        if (doc->ActPage->GroupSel)
1680
                {
1681
                elem.setAttribute("XP", doc->ActPage->GroupX);
1682
                elem.setAttribute("YP", doc->ActPage->GroupY);
1683
                elem.setAttribute("W", doc->ActPage->GroupW);
1684
                elem.setAttribute("H", doc->ActPage->GroupH);
1685
                }
1686
        else
1687
                {
30 Franz 1688
                if (item->Rot == 0)
1689
                        {
1690
                        elem.setAttribute("XP", item->Xpos);
1691
                        elem.setAttribute("YP", item->Ypos);
1692
                        elem.setAttribute("W", item->Width);
1693
                        elem.setAttribute("H", item->Height);
1694
                        }
1695
                else
1696
                        {
1697
                        QPainter p;
1698
                        p.begin(doc->ActPage);
1699
                        p.translate(static_cast<int>(item->Xpos), static_cast<int>(item->Ypos));
1700
                        p.rotate(item->Rot);
1701
                        QRect apr = QRegion(p.xForm(QRect(0, 0, static_cast<int>(item->Width), static_cast<int>(QMAX(item->Height, 1))))).boundingRect();
1702
                        p.end();
1703
                        elem.setAttribute("XP", apr.x());
1704
                        elem.setAttribute("YP", apr.y());
1705
                        elem.setAttribute("W", apr.width());
1706
                        elem.setAttribute("H", apr.height());
1707
                        }
3 paul 1708
                }
68 Franz 1709
        elem.setAttribute("COUNT", Selitems->count());
80 Franz 1710
        elem.setAttribute("Version", "1.1.1");
3 paul 1711
        for (uint co=0; co<Selitems->count(); ++co)
1712
                {
31 Franz 1713
                QString CurDirP = QDir::currentDirPath();
1714
                QDir::setCurrent(QString(getenv("HOME")));
3 paul 1715
                item = doc->ActPage->Items.at(ELL[co]);
1716
                QDomElement ob=docu.createElement("ITEM");
1717
                ob.setAttribute("PTYPE",item->PType);
1718
                ob.setAttribute("XPOS",item->Xpos);
1719
                ob.setAttribute("YPOS",item->Ypos);
1720
                ob.setAttribute("WIDTH",item->Width);
1721
                ob.setAttribute("HEIGHT",item->Height);
1722
                ob.setAttribute("RADRECT",item->RadRect);
1723
                ob.setAttribute("FRTYPE", item->FrameType);
1724
                if(item->ClipEdited)
1725
                        ob.setAttribute("CLIPEDIT",1);
1726
                else
1727
                        ob.setAttribute("CLIPEDIT",0);
1728
                ob.setAttribute("PWIDTH",item->Pwidth);
1729
                ob.setAttribute("PCOLOR",item->Pcolor);
1730
                ob.setAttribute("PCOLOR2",item->Pcolor2);
68 Franz 1731
                ob.setAttribute("TXTFILL",item->TxtFill);
1732
                ob.setAttribute("TXTSTROKE",item->TxtStroke);
1733
                ob.setAttribute("TXTSTRSH",item->ShTxtStroke);
1734
                ob.setAttribute("TXTFILLSH",item->ShTxtFill);
1735
                ob.setAttribute("TXTSCALE",item->TxtScale);
1736
                ob.setAttribute("TXTSTYLE",item->TxTStyle);
27 Franz 1737
                ob.setAttribute("NAMEDLST",item->NamedLStyle);
3 paul 1738
                ob.setAttribute("SHADE",item->Shade);
1739
                ob.setAttribute("SHADE2",item->Shade2);
1740
                ob.setAttribute("GRCOLOR",item->GrColor);
1741
                ob.setAttribute("GRCOLOR2",item->GrColor2);
1742
                ob.setAttribute("GRSHADE",item->GrShade);
1743
                ob.setAttribute("GRSHADE2",item->GrShade2);
1744
                ob.setAttribute("GRTYP",item->GrType);
1745
                ob.setAttribute("ROT",item->Rot);
1746
                ob.setAttribute("PLINEART",item->PLineArt);
1747
                ob.setAttribute("PLINEEND", item->PLineEnd);
1748
                ob.setAttribute("PLINEJOIN", item->PLineJoin);
1749
                ob.setAttribute("LINESP",item->LineSp);
1750
                ob.setAttribute("EXTRAV",item->ExtraV);
1751
                ob.setAttribute("LOCALSCX",item->LocalScX);
1752
                ob.setAttribute("LOCALSCY",item->LocalScY);
1753
                ob.setAttribute("LOCALX",item->LocalX);
1754
                ob.setAttribute("LOCALY",item->LocalY);
1755
                if(item->PicArt)
1756
                        ob.setAttribute("PICART",1);
1757
                else
1758
                        ob.setAttribute("PICART",0);
1759
                if(item->PoShow)
1760
                        ob.setAttribute("PTLSHOW",1);
1761
                else
1762
                        ob.setAttribute("PTLSHOW",0);
1763
                ob.setAttribute("BASEOF", item->BaseOffs);
1764
                ob.setAttribute("FLIPPEDH",item->flippedH);
1765
                ob.setAttribute("FLIPPEDV",item->flippedV);
1766
                ob.setAttribute("BBOXX",item->BBoxX);
1767
                ob.setAttribute("BBOXH",item->BBoxH);
1768
                if(item->ScaleType)
1769
                        ob.setAttribute("SCALETYPE", 1);
1770
                else
1771
                        ob.setAttribute("SCALETYPE", 0);
1772
                if(item->AspectRatio)
1773
                        ob.setAttribute("RATIO", 1);
1774
                else
1775
                        ob.setAttribute("RATIO", 0);
1776
                if(item->isPrintable)
1777
                        ob.setAttribute("PRINTABLE",1);
1778
                else
1779
                        ob.setAttribute("PRINTABLE",0);
1780
                if(item->isAnnotation)
1781
                        {
1782
                        ob.setAttribute("ANNOTATION",1);
1783
                        ob.setAttribute("ANTYPE", item->AnType);
1784
                        ob.setAttribute("ANACTION", item->AnAction);
1785
                        ob.setAttribute("ANEACT", item->An_E_act);
1786
                        ob.setAttribute("ANXACT", item->An_X_act);
1787
                        ob.setAttribute("ANDACT", item->An_D_act);
1788
                        ob.setAttribute("ANFOACT", item->An_Fo_act);
1789
                        ob.setAttribute("ANBLACT", item->An_Bl_act);
1790
                        ob.setAttribute("ANKACT", item->An_K_act);
1791
                        ob.setAttribute("ANFACT", item->An_F_act);
1792
                        ob.setAttribute("ANVACT", item->An_V_act);
1793
                        ob.setAttribute("ANCACT", item->An_C_act);
19 Franz 1794
                        ob.setAttribute("ANEXTERN", Path2Relative(item->An_Extern));
3 paul 1795
                        ob.setAttribute("ANZIEL", item->AnZiel);
1796
                        ob.setAttribute("ANACTYP", item->AnActType);
1797
                        ob.setAttribute("ANTOOLTIP", item->AnToolTip);
1798
                        ob.setAttribute("ANBWID", item->AnBwid);
1799
                        ob.setAttribute("ANBSTY", item->AnBsty);
1800
                        ob.setAttribute("ANFEED", item->AnFeed);
1801
                        ob.setAttribute("ANFLAG", item->AnFlag);
1802
                        ob.setAttribute("ANFONT", item->AnFont);
1803
                        ob.setAttribute("ANFORMAT", item->AnFormat);
1804
                        ob.setAttribute("ANROLL", item->AnRollOver);
1805
                        ob.setAttribute("ANDOWN", item->AnDown);
1806
                        ob.setAttribute("ANVIS", item->AnVis);
1807
                        ob.setAttribute("ANMC", item->AnMaxChar);
1808
                        ob.setAttribute("ANCHK", item->AnIsChk);
1809
                        ob.setAttribute("ANAA", item->AnAAact);
1810
                        ob.setAttribute("ANCHKS", item->AnChkStil);
1811
                        ob.setAttribute("ANBCOL", item->AnBColor);
1812
                        ob.setAttribute("ANHTML", item->AnHTML);
1813
                        ob.setAttribute("ANICON", item->AnUseIcons);
1814
                        ob.setAttribute("ANPLACE", item->AnIPlace);
1815
                        ob.setAttribute("ANSCALE", item->AnScaleW);
1816
                        }
1817
                else
1818
                        ob.setAttribute("ANNOTATION",0);
1819
                ob.setAttribute("ANNAME", item->AnName);
1820
                if(item->Textflow)
1821
                        ob.setAttribute("TEXTFLOW",1);
1822
                else
1823
                        ob.setAttribute("TEXTFLOW",0);
17 Franz 1824
                if(item->Textflow2)
1825
                        ob.setAttribute("TEXTFLOW2",1);
1826
                else
1827
                        ob.setAttribute("TEXTFLOW2",0);
3 paul 1828
                if(item->isAutoText)
1829
                        ob.setAttribute("AUTOTEXT",1);
1830
                else
1831
                        ob.setAttribute("AUTOTEXT",0);
1832
                ob.setAttribute("EXTRA",item->Extra);
1833
                ob.setAttribute("TEXTRA",item->TExtra);
1834
                ob.setAttribute("BEXTRA",item->BExtra);
1835
                ob.setAttribute("REXTRA",item->RExtra);
1836
                ob.setAttribute("ALIGN",item->Ausrich);
1837
                ob.setAttribute("IFONT",item->IFont);
1838
                ob.setAttribute("ISIZE",item->ISize);
1839
                if (item->Pfile != "")
16 Franz 1840
                        ob.setAttribute("PFILE",Path2Relative(item->Pfile));
3 paul 1841
                else
1842
                        ob.setAttribute("PFILE","");
1843
                if (item->Pfile2 != "")
16 Franz 1844
                        ob.setAttribute("PFILE2",Path2Relative(item->Pfile2));
3 paul 1845
                else
1846
                        ob.setAttribute("PFILE2","");
1847
                if (item-