Subversion Repositories Scribus

Rev

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