Subversion Repositories Scribus

Rev

Rev 227 | Rev 234 | 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;
168 Franz 191
                        };
3 paul 192
 
193
  /** Seitenraender */
168 Franz 194
struct Margs {
195
                                double Top;
196
                        double Left;
197
                        double Right;
198
                        double Bottom;
199
                 };
3 paul 200
 
168 Franz 201
struct StVorL {
202
                                QString Vname;
203
                                double LineSpa;
204
                                int Ausri;
205
                                double Indent;
206
                                double First;
207
                                double Avor;
208
                                double Anach;
209
                                QString Font;
210
                                int FontSize;
211
                                QValueList<double> TabValues;
212
                                bool Drop;
213
                                int DropLin;
173 Franz 214
                                int FontEffect;
215
                                QString FColor;
216
                                int FShade;
217
                                QString SColor;
218
                                int SShade;
168 Franz 219
                          };
3 paul 220
 
221
struct CMSset {
168 Franz 222
                                QString DefaultMonitorProfile;
223
                                QString DefaultPrinterProfile;
224
                                QString DefaultInputProfile;
225
                                QString DefaultInputProfile2;
226
                                int ComponentsInput2;
227
                                int ComponentsPrinter;
228
                                int DefaultIntentMonitor;
229
                                int DefaultIntentMonitor2;
230
                                int DefaultIntentPrinter;
231
                                bool CMSinUse;
232
                                bool SoftProofOn;
233
                                bool GamutCheck;
234
                                bool BlackPoint;
235
                                } ;
3 paul 236
 
237
struct UndoData {
168 Franz 238
                                         PageItem* Item;
239
                                         uint PageNr;
240
                                         uint ItemNr;
241
                                         double Xpos;
242
                                         double Ypos;
243
                                         double Width;
244
                                         double Height;
245
                                         double Rot;
246
                                         double Gx;
247
                                         double Gy;
248
                                         double Gw;
249
                                         double Gh;
250
                                         int UnCode;
251
                                };
3 paul 252
 
253
/** Definition der Farbenlisten */
254
typedef QMap<QString,CMYKColor> CListe;
255
typedef QMap<QString,QString> ProfilesL;
256
 
168 Franz 257
struct singleLine {
258
                                        double Width;
259
                                        int Dash;
260
                                        int LineEnd;
261
                                        int LineJoin;
262
                                        QString Color;
263
                                        int Shade;
264
                                        };
265
 
27 Franz 266
typedef QValueVector<singleLine> multiLine;
267
 
168 Franz 268
struct Layer {
269
                                int LNr;
270
                                int Level;
271
                                QString Name;
272
                                bool Sichtbar;
273
                                bool Drucken;
274
                        };
3 paul 275
 
168 Franz 276
struct PreSet {
277
                                int EffektLen;
278
                                int AnzeigeLen;
279
                                int Effekt;
280
                                int Dm;
281
                                int M;
282
                                int Di;
283
                                };
80 Franz 284
 
168 Franz 285
struct PDFOpt {
286
                                bool Thumbnails;
287
                                bool Articles;
288
                                bool Compress;
202 Franz 289
                                int CompressMethod;
290
                                int Quality;
168 Franz 291
                                bool RecalcPic;
292
                                bool Bookmarks;
293
                                int PicRes;
294
                                int Version;
295
                                int Resolution;
296
                                int Binding;
297
                                QValueList<QString> EmbedList;
298
                                bool PresentMode;
299
                                QValueList<PreSet> PresentVals;
300
                                QString Datei;
301
                                bool UseRGB;
302
                                bool UseProfiles;
303
                                bool UseProfiles2;
304
                                QString SolidProf;
305
                                int SComp;
306
                                QString ImageProf;
307
                                bool EmbeddedI;
308
                                int Intent2;
309
                                QString PrintProf;
310
                                QString Info;
311
                                int Intent;
312
                                double BleedTop;
313
                                double BleedLeft;
314
                                double BleedRight;
315
                                double BleedBottom;
316
                                bool Encrypt;
317
                                QString PassOwner;
318
                                QString PassUser;
319
                                int Permissions;
320
                                };
80 Franz 321
 
168 Franz 322
struct Keys {
323
                                QString Name;
324
                                int MenuID;
325
                                int KeyID;
326
                        };
80 Franz 327
 
168 Franz 328
struct preV  {
329
                                SCFonts AvailFonts;
330
                                QString DefFont;
331
                                int DefSize;
332
                                CListe DColors;
333
                                int Wheelval;
334
                                int AppFontSize;
335
                                int GrabRad;
336
                                double GuideRad;
337
                                double DminGrid;
338
                                double DmajGrid;
339
                                QColor DminColor;
340
                                QColor DmajColor;
341
                                QColor DpapColor;
342
                                QColor DmargColor;
343
                                QColor guideColor;
344
                                QString GUI;
345
                                int DVHoch;
346
                                int DVHochSc;
347
                                int DVTief;
348
                                int DVTiefSc;
349
                                int DVKapit;
350
                                QString Dpen;
351
                                QString Dbrush;
352
                                int Dshade;
353
                                int Dshade2;
354
                                int DLineArt;
355
                                double Dwidth;
356
                                QString DpenLine;
357
                                QString DpenText;
358
                                int DshadeLine;
359
                                double DwidthLine;
360
                                int DLstyleLine;
361
                                int MagMin;
362
                                int MagMax;
363
                                int MagStep;
364
                                QString DbrushPict;
365
                                int ShadePict;
366
                                double ScaleX;
367
                                double ScaleY;
368
                                bool Before;
369
                                int Einheit;
370
                                bool Werkv;
371
                                bool WerkvP;
372
                                bool Mpalv;
373
                                int Mpalx;
374
                                int Mpaly;
375
                                bool Tpalv;
376
                                int Tpalx;
377
                                int Tpaly;
378
                                int Npalx;
379
                                int Npaly;
380
                                int MainX;
381
                                int MainY;
382
                                int MainW;
383
                                int MainH;
384
                                bool SCpalv;
385
                                int SCpalx;
386
                                int SCpaly;
387
                                int SCpalw;
388
                                int SCpalh;
389
                                bool Lpalv;
390
                                int Lpalx;
391
                                int Lpaly;
392
                                bool Sepalv;
393
                                int Sepalx;
394
                                int Sepaly;
395
                                bool Bopalv;
396
                                int Bopalx;
397
                                int Bopaly;
398
                                bool SepalT;
399
                                bool SepalN;
400
                                int PSize;
401
                                bool SaveAtQ;
402
                                bool PagesSbS;
403
                                bool RandFarbig;
404
                                QStringList RecentDocs;
405
                                uint RecentDCount;
406
                                int AutoLine;
407
                                CMSset DCMSset;
408
                        QMap<int,Keys> KeyActions;
409
                                int PolyC;
410
                                int PolyFd;
411
                                double PolyF;
412
                                bool PolyS;
413
                                double PolyR;
414
                                QString PrinterName;
415
                                QString PrinterFile;
416
                                QString PrinterCommand;
417
                                int PageFormat;
418
                                int Ausrichtung;
419
                                double PageBreite;
420
                                double PageHoehe;
421
                                double RandOben;
422
                                double RandUnten;
423
                                double RandLinks;
424
                                double RandRechts;
425
                                bool DoppelSeiten;
426
                                bool ErsteLinks;
427
                                bool ScaleType;
428
                                bool AspectRatio;
429
                                int MinWordLen;
430
                                QString Language;
431
                                bool Automatic;
432
                                bool AutoCheck;
433
                                QString DocDir;
434
                                QString ProfileDir;
435
                                QString ScriptDir;
436
                                QMap<QString,QString> GFontSub;
437
                                bool PDFTransparency;
438
                                bool AutoSave;
439
                                int AutoSaveTime;
440
                                double DisScale;
441
                                int DCols;
442
                                double DGap;
443
                                QString DColorSet;
444
                                QStringList CustomColorSets;
213 Franz 445
                                bool PrPr_Mode;
446
                                bool PrPr_AlphaText;
447
                                bool PrPr_AlphaGraphics;
448
                                bool PrPr_Transparency;
449
                                bool PrPr_C;
450
                                bool PrPr_M;
451
                                bool PrPr_Y;
452
                                bool PrPr_K;
220 Franz 453
                                QString gs_exe;
454
                                bool gs_antiText;
455
                                bool gs_antiGraph;
456
                                QString gimp_exe;
222 Franz 457
                                bool FramesShown;
458
                                bool GuidesShown;
459
                                bool MarginsShown;
460
                                bool GridShown;
461
                                bool ClipMargin;
168 Franz 462
                        };
3 paul 463
/**
464
  * the Document Class
465
  */
466
 
467
class ScribusDoc : public QObject
468
{
469
 
470
public:
471
    ScribusDoc();
472
    ~ScribusDoc();
473
    void setModified();
474
    void setUnModified();
475
    bool isModified() const;
476
  /** Setzt die Seitenattribute */
168 Franz 477
        void setPage(double b, double h, double t, double l, double r, double bo, double sp, double ab,
478
                                        bool atf, bool fp);
479
        void resetPage(double t, double l, double r, double bo, bool fp);
220 Franz 480
        bool AddFont(QString name, QFont fo);
168 Franz 481
 
482
protected:
3 paul 483
    bool modified;
168 Franz 484
 
485
public: // Public attributes
3 paul 486
  /** Vergroesserungsfaktor fuer das Dokument */
168 Franz 487
        double Scale;
488
        bool Marks;
3 paul 489
        bool Guides;
490
        bool SnapGuides;
80 Franz 491
        double GuideRad;
3 paul 492
        bool GuideLock;
168 Franz 493
        bool loading;
3 paul 494
  /** Breite der Seite  */
168 Franz 495
        double PageB;
3 paul 496
  /** Hoehe der Seite */
168 Franz 497
        double PageH;
3 paul 498
  /** Anzahl der Seiten */
168 Franz 499
        int PageC;
3 paul 500
  /** Seitenraender */
168 Franz 501
        Margs PageM;
3 paul 502
  /** Anzahl der Spalten */
168 Franz 503
        double PageSp;
3 paul 504
  /** Abstand der Spalten */
168 Franz 505
        double PageSpa;
3 paul 506
  /** Flag fuer AutoTextrahmen */
168 Franz 507
        bool PageAT;
3 paul 508
  /** Flag fuer Doppelseiten */
168 Franz 509
        bool PageFP;
3 paul 510
        /** Flag fuer Hoch- oder Querformat 0 = Hochformat */
511
        int PageOri;
512
        /** Erste Seitennummer im Dokument */
513
        int FirstPnum;
514
  /** Flag fuer Raster */
168 Franz 515
        bool Raster;
3 paul 516
  /** Flag fuer Rasterbenutzung */
168 Franz 517
        bool useRaster;
3 paul 518
  /** Flag fuer Bilder */
168 Franz 519
        bool ShowPic;
3 paul 520
  /** Im Dokument benutzte Farben */
168 Franz 521
        CListe PageColors;
522
        Page* ActPage;
3 paul 523
  /** InfoStrings fuer das aktuelle Dokument */
168 Franz 524
        QString DocAutor;
525
        QString DocTitel;
526
        QString DocComments;
68 Franz 527
        QString DocKeyWords;
168 Franz 528
        int AppMode;
123 Franz 529
        int SubMode;
530
        double *ShapeValues;
531
        int ValCount;
168 Franz 532
        QString Dpen;
533
        QString Dbrush;
534
        double Dwidth;
535
        int Dshade;
536
        int Dshade2;
537
        PenStyle DLineArt;
538
        QString DpenLine;
539
        QString DpenText;
139 Franz 540
        int DCols;
541
        double DGap;
168 Franz 542
        int DshadeLine;
543
        PenStyle DLstyleLine;
544
        double DwidthLine;
545
        QString Dfont;
546
        QString DocName;
547
        QMap<QString,QFont> UsedFonts;
548
        SCFonts *AllFonts;
549
        int Dsize;
550
        QColor minorColor;
551
        QColor majorColor;
552
        QColor papColor;
553
        QColor margColor;
3 paul 554
        QColor guideColor;
168 Franz 555
        double minorGrid;
556
        double majorGrid;
557
        int CurrentSel;
558
        int CurrentStyle;
559
        int CurrentABStil;
68 Franz 560
        QString CurrFont;
561
        int CurrFontSize;
562
        QString CurrTextFill;
563
        int CurrTextFillSh;
564
        QString CurrTextStroke;
565
        int CurrTextStrokeSh;
566
        int CurrTextScale;
168 Franz 567
        bool EditClip;
568
        int EditClipMode;
3 paul 569
  /** um wieviel Prozent wird hochgestellt */
168 Franz 570
        int VHoch;
3 paul 571
  /** Verkleinerung in Prozent bei Hochstellung */
168 Franz 572
        int VHochSc;
3 paul 573
  /** um wieviel Prozent wird tiefgestellt */
168 Franz 574
        int VTief;
3 paul 575
  /** Verkleinerung in Prozent bei Tiefstellung */
168 Franz 576
        int VTiefSc;
3 paul 577
  /** Verkleinerunug in Prozent bei Kapitaelchen */
168 Franz 578
        int VKapit;
3 paul 579
  /** Letztes Element fuer AutoTextrahmen */
168 Franz 580
        PageItem *LastAuto;
3 paul 581
  /** Erstes Element fuer AutoTextrahmen */
168 Franz 582
        PageItem *FirstAuto;
583
        int MagMin;
584
        int MagMax;
585
        int MagStep;
586
        int GrabRad;
3 paul 587
        QString DbrushPict;
588
        int ShadePict;
80 Franz 589
        double ScaleX;
590
        double ScaleY;
3 paul 591
        bool ScaleType;
592
        bool AspectRatio;
593
        bool Before;
594
        int Einheit;
168 Franz 595
        bool DragP;
227 Franz 596
        bool leaveDrag;
168 Franz 597
        PageItem *DraggedElem;
598
        PageItem *ElemToLink;
599
        QValueList<uint> DragElements;
600
        QValueList<StVorL> Vorlagen;
3 paul 601
        QValueList<Layer> Layers;
168 Franz 602
        bool MasterP;
603
        bool FirstPageLeft;
604
        bool PagesSbS;
605
        bool ShFrames;
606
        bool RandFarbig;
607
        int GroupCounter;
608
        int AutoLine;
609
        CMSset CMSSettings;
3 paul 610
        int ActiveLayer;
611
#ifdef HAVE_CMS
612
        cmsHPROFILE DocInputProf;
613
        cmsHPROFILE DocOutputProf;
614
        cmsHPROFILE DocPrinterProf;
615
#endif
168 Franz 616
        bool HasCMS;
3 paul 617
        QMap<QString,QString> JavaScripts;
618
        bool UnDoValid;
619
        UndoData UnData;
620
        int TotalItems;
621
        Hyphenator *Trenner;
622
        int MinWordLen;
623
        QString Language;
624
        bool Automatic;
625
        bool AutoCheck;
168 Franz 626
        bool TemplateMode;
3 paul 627
        struct PDFOpt PDF_Optionen;
628
        bool RePos;
168 Franz 629
        struct BookMa {
630
                                        QString Title;
631
                                        QString Text;
632
                                        QString Aktion;
633
                                        int Parent;
634
                                        int Seite;
635
                                        int Element;
636
                                        int ItemNr;
637
                                        int First;
638
                                        int Last;
639
                                        int Prev;
640
                                        int Next;
641
                                        };
3 paul 642
        QValueList<BookMa> BookMarks;
643
        bool OldBM;
644
        bool hasName;
645
        int RotMode;
646
        bool AutoSave;
647
        QTimer *ASaveTimer;
648
        FT_Library   library;
168 Franz 649
        QMap<QString,FT_Face> FFonts;
27 Franz 650
        QMap<QString,multiLine> MLineStyles;
59 Franz 651
        QWidget* WinHan;
63 Franz 652
        bool DoDrawing;
168 Franz 653
        QValueList<int> OpenNodes;
139 Franz 654
        QTimer *CurTimer;
3 paul 655
};
656
 
657
#endif