Subversion Repositories Scribus

Rev

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

Rev Author Line No. Line
3 paul 1
/***************************************************************************
2
                          scribusdoc.h  -  description
3
                             -------------------
4
    begin                : Fre Apr  6 21:47:55 CEST 2001
5
    copyright            : (C) 2001 by Franz Schmid
6
    email                : Franz.Schmid@altmuehlnet.de
7
 ***************************************************************************/
8
 
9
/***************************************************************************
10
 *                                                                         *
11
 *   This program is free software; you can redistribute it and/or modify  *
12
 *   it under the terms of the GNU General Public License as published by  *
13
 *   the Free Software Foundation; either version 2 of the License, or     *
14
 *   (at your option) any later version.                                   *
15
 *                                                                         *
16
 ***************************************************************************/
17
#ifndef SCRIBUSDOC_H
18
#define SCRIBUSDOC_H
19
#ifdef HAVE_CONFIG_H
20
#include <config.h>
21
#endif
22
// include files for QT
23
#include <qobject.h>
24
#include <qdict.h>
25
#include <qcolor.h>
26
#include <qvaluelist.h>
27
#include <qvaluestack.h>
27 Franz 28
#include <qvaluevector.h>
3 paul 29
#include <qptrlist.h>
30
#include <qfont.h>
31
#include <qmap.h>
32
#include <qpointarray.h>
33
#include <qstringlist.h>
34
#include <qtimer.h>
35
#include "cmykcolor.h"
36
#include "scfonts.h"
37
#include "fpointarray.h"
38
#include "hyphenator.h"
39
#ifdef HAVE_CMS
44 Franz 40
        #include CMS_INC
3 paul 41
#endif
42
 
68 Franz 43
#include <ft2build.h>
44
#include FT_FREETYPE_H
3 paul 45
 
46
class PageItem;
47
class Page;
48
 
49
/* Struktur fuer Pageitem Text */
168 Franz 50
struct Pti {
51
                        QString ch;
52
                        double xp;
53
                        double yp;
54
                    int csize;
55
                    QString cfont;
56
                    QString ccolor;
57
                        QString cstroke;
58
                    bool cselect;
59
                    double cextra;
60
                    int cshade;
61
                    int cshade2;
62
                    int cstyle;
63
                    int cab;
64
                    int PtransX;
65
                        int PtransY;
66
                        int cscale;
67
                        double PRot;
68
                   };
3 paul 69
 
168 Franz 70
struct CLBuf {
71
                                int PType;
72
                                double Xpos;
73
                                double Ypos;
74
                                double Width;
75
                                double Height;
76
                                double RadRect;
77
                                int FrameType;
78
                                bool ClipEdited;
79
                                double Pwidth;
80
                                QString Pcolor;
81
                                QString Pcolor2;
82
                                int Shade;
83
                                int Shade2;
84
                                QString GrColor;
85
                                QString GrColor2;
86
                                int GrShade;
87
                                int GrShade2;
88
                                int GrType;
89
                                QString TxtStroke;
90
                                QString TxtFill;
91
                                int ShTxtStroke;
92
                                int ShTxtFill;
93
                                int TxtScale;
94
                                int TxTStyle;
95
                                double Rot;
96
                                int PLineArt;
97
                                int PLineJoin;
98
                                int PLineEnd;
99
                                double LineSp;
100
                                double ExtraV;
101
                                double LocalScX;
102
                                double LocalScY;
103
                                double LocalX;
104
                                double LocalY;
105
                                bool PicArt;
106
                                int flippedH;
107
                                int flippedV;
108
                                double BBoxX;
109
                                double BBoxH;
110
                                bool isPrintable;
111
                                bool isBookmark;
112
                                int BMnr;
113
                                bool isAnnotation;
114
                                int AnType;
115
                                QString AnAction;
116
                                QString An_E_act;
117
                                QString An_X_act;
118
                                QString An_D_act;
119
                                QString An_Fo_act;
120
                                QString An_Bl_act;
121
                                QString An_K_act;
122
                                QString An_F_act;
123
                                QString An_V_act;
124
                                QString An_C_act;
125
                                QString An_Extern;
126
                                int AnZiel;
127
                                int AnActType;
128
                                QString AnName;
129
                                QString AnToolTip;
130
                                QString AnRollOver;
131
                                QString AnDown;
132
                                QString AnBColor;
133
                                int AnBwid;
134
                                int AnBsty;
135
                                int AnFeed;
136
                                int AnFlag;
137
                                int AnMaxChar;
138
                                int AnVis;
139
                                int AnFont;
140
                                int AnChkStil;
141
                                int AnFormat;
142
                                bool AnIsChk;
143
                                bool AnAAact;
144
                                bool AnHTML;
145
                                bool AnUseIcons;
146
                                int AnIPlace;
147
                                int AnScaleW;
148
                                double Extra;
149
                                double TExtra;
150
                                double BExtra;
151
                                double RExtra;
152
                                QString Pfile;
153
                                QString Pfile2;
154
                                QString Pfile3;
155
                                QString IProfile;
156
                                QString EmProfile;
157
                                int IRender;
158
                                bool UseEmbedded;
159
                                QString Ptext;
160
                                QPointArray Clip;
161
                                FPointArray PoLine;
162
                                bool PoShow;
163
                                double BaseOffs;
164
                                bool Textflow;
165
                                bool Textflow2;
166
                                int Ausrich;
167
                                QString IFont;
168
                                int ISize;
169
                                QValueStack<int> Groups;
170
                                int LayerNr;
171
                                bool ScaleType;
172
                                bool AspectRatio;
173
                                bool Locked;
205 Franz 174
                                bool LockRes;
168 Franz 175
                                double Transparency;
176
                                double TranspStroke;
177
                                bool Reverse;
178
                                bool InvPict;
179
                                QString NamedLStyle;
180
                                QString Language;
181
                                int Cols;
182
                                double ColGap;
183
                                QValueList<double> TabValues;
184
                                QValueList<double> DashValues;
185
                                double DashOffset;
232 Franz 186
                                bool isTableItem;
187
                                bool TopLine;
188
                                bool LeftLine;
189
                                bool RightLine;
190
                                bool BottomLine;
234 Franz 191
                                int LeftLinkID;
192
                                int RightLinkID;
193
                                int TopLinkID;
194
                                int BottomLinkID;
168 Franz 195
                        };
3 paul 196
 
197
  /** Seitenraender */
168 Franz 198
struct Margs {
199
                                double Top;
200
                        double Left;
201
                        double Right;
202
                        double Bottom;
203
                 };
3 paul 204
 
168 Franz 205
struct StVorL {
206
                                QString Vname;
207
                                double LineSpa;
208
                                int Ausri;
209
                                double Indent;
210
                                double First;
211
                                double Avor;
212
                                double Anach;
213
                                QString Font;
214
                                int FontSize;
215
                                QValueList<double> TabValues;
216
                                bool Drop;
217
                                int DropLin;
173 Franz 218
                                int FontEffect;
219
                                QString FColor;
220
                                int FShade;
221
                                QString SColor;
222
                                int SShade;
168 Franz 223
                          };
3 paul 224
 
225
struct CMSset {
168 Franz 226
                                QString DefaultMonitorProfile;
227
                                QString DefaultPrinterProfile;
228
                                QString DefaultInputProfile;
229
                                QString DefaultInputProfile2;
230
                                int ComponentsInput2;
231
                                int ComponentsPrinter;
232
                                int DefaultIntentMonitor;
233
                                int DefaultIntentMonitor2;
234
                                int DefaultIntentPrinter;
235
                                bool CMSinUse;
236
                                bool SoftProofOn;
237
                                bool GamutCheck;
238
                                bool BlackPoint;
239
                                } ;
3 paul 240
 
241
struct UndoData {
168 Franz 242
                                         PageItem* Item;
243
                                         uint PageNr;
244
                                         uint ItemNr;
245
                                         double Xpos;
246
                                         double Ypos;
247
                                         double Width;
248
                                         double Height;
249
                                         double Rot;
250
                                         double Gx;
251
                                         double Gy;
252
                                         double Gw;
253
                                         double Gh;
254
                                         int UnCode;
255
                                };
3 paul 256
 
257
/** Definition der Farbenlisten */
258
typedef QMap<QString,CMYKColor> CListe;
259
typedef QMap<QString,QString> ProfilesL;
260
 
168 Franz 261
struct singleLine {
262
                                        double Width;
263
                                        int Dash;
264
                                        int LineEnd;
265
                                        int LineJoin;
266
                                        QString Color;
267
                                        int Shade;
268
                                        };
269
 
27 Franz 270
typedef QValueVector<singleLine> multiLine;
271
 
168 Franz 272
struct Layer {
273
                                int LNr;
274
                                int Level;
275
                                QString Name;
276
                                bool Sichtbar;
277
                                bool Drucken;
278
                        };
3 paul 279
 
168 Franz 280
struct PreSet {
281
                                int EffektLen;
282
                                int AnzeigeLen;
283
                                int Effekt;
284
                                int Dm;
285
                                int M;
286
                                int Di;
287
                                };
80 Franz 288
 
168 Franz 289
struct PDFOpt {
290
                                bool Thumbnails;
291
                                bool Articles;
292
                                bool Compress;
202 Franz 293
                                int CompressMethod;
294
                                int Quality;
168 Franz 295
                                bool RecalcPic;
296
                                bool Bookmarks;
297
                                int PicRes;
298
                                int Version;
299
                                int Resolution;
300
                                int Binding;
301
                                QValueList<QString> EmbedList;
302
                                bool PresentMode;
303
                                QValueList<PreSet> PresentVals;
304
                                QString Datei;
305
                                bool UseRGB;
306
                                bool UseProfiles;
307
                                bool UseProfiles2;
308
                                QString SolidProf;
309
                                int SComp;
310
                                QString ImageProf;
311
                                bool EmbeddedI;
312
                                int Intent2;
313
                                QString PrintProf;
314
                                QString Info;
315
                                int Intent;
316
                                double BleedTop;
317
                                double BleedLeft;
318
                                double BleedRight;
319
                                double BleedBottom;
320
                                bool Encrypt;
321
                                QString PassOwner;
322
                                QString PassUser;
323
                                int Permissions;
324
                                };
80 Franz 325
 
168 Franz 326
struct Keys {
327
                                QString Name;
328
                                int MenuID;
329
                                int KeyID;
330
                        };
80 Franz 331
 
168 Franz 332
struct preV  {
333
                                SCFonts AvailFonts;
334
                                QString DefFont;
335
                                int DefSize;
336
                                CListe DColors;
337
                                int Wheelval;
338
                                int AppFontSize;
339
                                int GrabRad;
340
                                double GuideRad;
341
                                double DminGrid;
342
                                double DmajGrid;
343
                                QColor DminColor;
344
                                QColor DmajColor;
345
                                QColor DpapColor;
346
                                QColor DmargColor;
347
                                QColor guideColor;
348
                                QString GUI;
349
                                int DVHoch;
350
                                int DVHochSc;
351
                                int DVTief;
352
                                int DVTiefSc;
353
                                int DVKapit;
354
                                QString Dpen;
355
                                QString Dbrush;
356
                                int Dshade;
357
                                int Dshade2;
358
                                int DLineArt;
359
                                double Dwidth;
360
                                QString DpenLine;
361
                                QString DpenText;
362
                                int DshadeLine;
363
                                double DwidthLine;
364
                                int DLstyleLine;
365
                                int MagMin;
366
                                int MagMax;
367
                                int MagStep;
368
                                QString DbrushPict;
369
                                int ShadePict;
370
                                double ScaleX;
371
                                double ScaleY;
372
                                bool Before;
373
                                int Einheit;
374
                                bool Werkv;
375
                                bool WerkvP;
376
                                bool Mpalv;
377
                                int Mpalx;
378
                                int Mpaly;
379
                                bool Tpalv;
380
                                int Tpalx;
381
                                int Tpaly;
382
                                int Npalx;
383
                                int Npaly;
384
                                int MainX;
385
                                int MainY;
386
                                int MainW;
387
                                int MainH;
388
                                bool SCpalv;
389
                                int SCpalx;
390
                                int SCpaly;
391
                                int SCpalw;
392
                                int SCpalh;
393
                                bool Lpalv;
394
                                int Lpalx;
395
                                int Lpaly;
396
                                bool Sepalv;
397
                                int Sepalx;
398
                                int Sepaly;
399
                                bool Bopalv;
400
                                int Bopalx;
401
                                int Bopaly;
402
                                bool SepalT;
403
                                bool SepalN;
404
                                int PSize;
405
                                bool SaveAtQ;
406
                                bool PagesSbS;
407
                                bool RandFarbig;
408
                                QStringList RecentDocs;
409
                                uint RecentDCount;
410
                                int AutoLine;
411
                                CMSset DCMSset;
412
                        QMap<int,Keys> KeyActions;
413
                                int PolyC;
414
                                int PolyFd;
415
                                double PolyF;
416
                                bool PolyS;
417
                                double PolyR;
418
                                QString PrinterName;
419
                                QString PrinterFile;
420
                                QString PrinterCommand;
421
                                int PageFormat;
422
                                int Ausrichtung;
423
                                double PageBreite;
424
                                double PageHoehe;
425
                                double RandOben;
426
                                double RandUnten;
427
                                double RandLinks;
428
                                double RandRechts;
429
                                bool DoppelSeiten;
430
                                bool ErsteLinks;
431
                                bool ScaleType;
432
                                bool AspectRatio;
433
                                int MinWordLen;
434
                                QString Language;
435
                                bool Automatic;
436
                                bool AutoCheck;
437
                                QString DocDir;
438
                                QString ProfileDir;
439
                                QString ScriptDir;
440
                                QMap<QString,QString> GFontSub;
441
                                bool PDFTransparency;
442
                                bool AutoSave;
443
                                int AutoSaveTime;
444
                                double DisScale;
445
                                int DCols;
446
                                double DGap;
447
                                QString DColorSet;
448
                                QStringList CustomColorSets;
213 Franz 449
                                bool PrPr_Mode;
450
                                bool PrPr_AlphaText;
451
                                bool PrPr_AlphaGraphics;
452
                                bool PrPr_Transparency;
453
                                bool PrPr_C;
454
                                bool PrPr_M;
455
                                bool PrPr_Y;
456
                                bool PrPr_K;
220 Franz 457
                                QString gs_exe;
458
                                bool gs_antiText;
459
                                bool gs_antiGraph;
460
                                QString gimp_exe;
222 Franz 461
                                bool FramesShown;
462
                                bool GuidesShown;
463
                                bool MarginsShown;
464
                                bool GridShown;
465
                                bool ClipMargin;
168 Franz 466
                        };
3 paul 467
/**
468
  * the Document Class
469
  */
470
 
471
class ScribusDoc : public QObject
472
{
473
 
474
public:
475
    ScribusDoc();
476
    ~ScribusDoc();
477
    void setModified();
478
    void setUnModified();
479
    bool isModified() const;
480
  /** Setzt die Seitenattribute */
168 Franz 481
        void setPage(double b, double h, double t, double l, double r, double bo, double sp, double ab,
482
                                        bool atf, bool fp);
483
        void resetPage(double t, double l, double r, double bo, bool fp);
220 Franz 484
        bool AddFont(QString name, QFont fo);
168 Franz 485
 
486
protected:
3 paul 487
    bool modified;
168 Franz 488
 
489
public: // Public attributes
3 paul 490
  /** Vergroesserungsfaktor fuer das Dokument */
168 Franz 491
        double Scale;
492
        bool Marks;
3 paul 493
        bool Guides;
494
        bool SnapGuides;
80 Franz 495
        double GuideRad;
3 paul 496
        bool GuideLock;
168 Franz 497
        bool loading;
3 paul 498
  /** Breite der Seite  */
168 Franz 499
        double PageB;
3 paul 500
  /** Hoehe der Seite */
168 Franz 501
        double PageH;
3 paul 502
  /** Anzahl der Seiten */
168 Franz 503
        int PageC;
3 paul 504
  /** Seitenraender */
168 Franz 505
        Margs PageM;
3 paul 506
  /** Anzahl der Spalten */
168 Franz 507
        double PageSp;
3 paul 508
  /** Abstand der Spalten */
168 Franz 509
        double PageSpa;
3 paul 510
  /** Flag fuer AutoTextrahmen */
168 Franz 511
        bool PageAT;
3 paul 512
  /** Flag fuer Doppelseiten */
168 Franz 513
        bool PageFP;
3 paul 514
        /** Flag fuer Hoch- oder Querformat 0 = Hochformat */
515
        int PageOri;
516
        /** Erste Seitennummer im Dokument */
517
        int FirstPnum;
518
  /** Flag fuer Raster */
168 Franz 519
        bool Raster;
3 paul 520
  /** Flag fuer Rasterbenutzung */
168 Franz 521
        bool useRaster;
3 paul 522
  /** Flag fuer Bilder */
168 Franz 523
        bool ShowPic;
3 paul 524
  /** Im Dokument benutzte Farben */
168 Franz 525
        CListe PageColors;
526
        Page* ActPage;
3 paul 527
  /** InfoStrings fuer das aktuelle Dokument */
168 Franz 528
        QString DocAutor;
529
        QString DocTitel;
530
        QString DocComments;
68 Franz 531
        QString DocKeyWords;
168 Franz 532
        int AppMode;
123 Franz 533
        int SubMode;
534
        double *ShapeValues;
535
        int ValCount;
168 Franz 536
        QString Dpen;
537
        QString Dbrush;
538
        double Dwidth;
539
        int Dshade;
540
        int Dshade2;
541
        PenStyle DLineArt;
542
        QString DpenLine;
543
        QString DpenText;
139 Franz 544
        int DCols;
545
        double DGap;
168 Franz 546
        int DshadeLine;
547
        PenStyle DLstyleLine;
548
        double DwidthLine;
549
        QString Dfont;
550
        QString DocName;
551
        QMap<QString,QFont> UsedFonts;
552
        SCFonts *AllFonts;
553
        int Dsize;
554
        QColor minorColor;
555
        QColor majorColor;
556
        QColor papColor;
557
        QColor margColor;
3 paul 558
        QColor guideColor;
168 Franz 559
        double minorGrid;
560
        double majorGrid;
561
        int CurrentSel;
562
        int CurrentStyle;
563
        int CurrentABStil;
68 Franz 564
        QString CurrFont;
565
        int CurrFontSize;
566
        QString CurrTextFill;
567
        int CurrTextFillSh;
568
        QString CurrTextStroke;
569
        int CurrTextStrokeSh;
570
        int CurrTextScale;
168 Franz 571
        bool EditClip;
572
        int EditClipMode;
3 paul 573
  /** um wieviel Prozent wird hochgestellt */
168 Franz 574
        int VHoch;
3 paul 575
  /** Verkleinerung in Prozent bei Hochstellung */
168 Franz 576
        int VHochSc;
3 paul 577
  /** um wieviel Prozent wird tiefgestellt */
168 Franz 578
        int VTief;
3 paul 579
  /** Verkleinerung in Prozent bei Tiefstellung */
168 Franz 580
        int VTiefSc;
3 paul 581
  /** Verkleinerunug in Prozent bei Kapitaelchen */
168 Franz 582
        int VKapit;
3 paul 583
  /** Letztes Element fuer AutoTextrahmen */
168 Franz 584
        PageItem *LastAuto;
3 paul 585
  /** Erstes Element fuer AutoTextrahmen */
168 Franz 586
        PageItem *FirstAuto;
587
        int MagMin;
588
        int MagMax;
589
        int MagStep;
590
        int GrabRad;
3 paul 591
        QString DbrushPict;
592
        int ShadePict;
80 Franz 593
        double ScaleX;
594
        double ScaleY;
3 paul 595
        bool ScaleType;
596
        bool AspectRatio;
597
        bool Before;
598
        int Einheit;
168 Franz 599
        bool DragP;
227 Franz 600
        bool leaveDrag;
168 Franz 601
        PageItem *DraggedElem;
602
        PageItem *ElemToLink;
603
        QValueList<uint> DragElements;
604
        QValueList<StVorL> Vorlagen;
3 paul 605
        QValueList<Layer> Layers;
168 Franz 606
        bool MasterP;
607
        bool FirstPageLeft;
608
        bool PagesSbS;
609
        bool ShFrames;
610
        bool RandFarbig;
611
        int GroupCounter;
612
        int AutoLine;
613
        CMSset CMSSettings;
3 paul 614
        int ActiveLayer;
615
#ifdef HAVE_CMS
616
        cmsHPROFILE DocInputProf;
617
        cmsHPROFILE DocOutputProf;
618
        cmsHPROFILE DocPrinterProf;
619
#endif
168 Franz 620
        bool HasCMS;
3 paul 621
        QMap<QString,QString> JavaScripts;
622
        bool UnDoValid;
623
        UndoData UnData;
624
        int TotalItems;
625
        Hyphenator *Trenner;
626
        int MinWordLen;
627
        QString Language;
628
        bool Automatic;
629
        bool AutoCheck;
168 Franz 630
        bool TemplateMode;
3 paul 631
        struct PDFOpt PDF_Optionen;
632
        bool RePos;
168 Franz 633
        struct BookMa {
634
                                        QString Title;
635
                                        QString Text;
636
                                        QString Aktion;
637
                                        int Parent;
638
                                        int Seite;
639
                                        int Element;
640
                                        int ItemNr;
641
                                        int First;
642
                                        int Last;
643
                                        int Prev;
644
                                        int Next;
645
                                        };
3 paul 646
        QValueList<BookMa> BookMarks;
647
        bool OldBM;
648
        bool hasName;
649
        int RotMode;
650
        bool AutoSave;
651
        QTimer *ASaveTimer;
652
        FT_Library   library;
168 Franz 653
        QMap<QString,FT_Face> FFonts;
27 Franz 654
        QMap<QString,multiLine> MLineStyles;
59 Franz 655
        QWidget* WinHan;
63 Franz 656
        bool DoDrawing;
168 Franz 657
        QValueList<int> OpenNodes;
139 Franz 658
        QTimer *CurTimer;
3 paul 659
};
660
 
661
#endif