Subversion Repositories Scribus

Rev

Rev 9390 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4430 cbradney 1
/*
2
For general Scribus (>=1.3.2) copyright and licensing information please refer
3
to the COPYING file provided with the program. Following this notice may exist
4
a copyright and/or license notice that predates the release of Scribus 1.3.2
5
for which a new license (GPL+exception) is in place.
6
*/
838 cbradney 7
#ifndef SCRIBUSSTRUCTS_H
8
#define SCRIBUSSTRUCTS_H
9
 
10
#ifdef HAVE_CONFIG_H
2688 craig 11
#include "scconfig.h"
838 cbradney 12
#endif
13
 
14
#include <qvaluestack.h>
15
#include <qvaluelist.h>
1429 subik 16
#include <qvaluevector.h>
838 cbradney 17
#include <qstring.h>
1208 cbradney 18
#include <qaction.h>
3933 avox 19
#include <qkeysequence.h>
839 cbradney 20
#include <vector>
838 cbradney 21
 
9390 jghali 22
#include "scribusapi.h"
3878 cbradney 23
#include "sctextstruct.h"
838 cbradney 24
#include "scfonts.h"
25
#include "fpointarray.h"
26
#include "vgradient.h"
4084 cbradney 27
#include "annotation.h"
838 cbradney 28
#include "pageitem.h"
29
 
9390 jghali 30
extern bool SCRIBUS_API compareDouble(double, double);
31
 
7478 jghali 32
typedef struct
33
{
34
        int r;
35
        int g;
36
        int b;
37
        void getValues(int& vr, int& vg, int& vb) {vr = r; vg = g; vb = b;}
38
} RGBColor;
39
 
40
typedef struct
41
{
42
        int c;
43
        int m;
44
        int y;
45
        int k;
46
        void getValues(int& vc, int& vm, int& vy, int& vk) {vc = c; vm = m; vy = y; vk = k;}
47
} CMYKColor;
48
 
1065 cbradney 49
struct CopyPasteBuffer
1429 subik 50
{
1460 cbradney 51
        PageItem::ItemType PType;
844 fschmid 52
        double Xpos;
53
        double Ypos;
54
        double Width;
55
        double Height;
56
        double RadRect;
57
        int FrameType;
58
        bool ClipEdited;
59
        double Pwidth;
60
        QString Pcolor;
61
        QString Pcolor2;
62
        int Shade;
63
        int Shade2;
6454 jghali 64
        int FillRule;
844 fschmid 65
        QString GrColor;
66
        QString GrColor2;
67
        int GrShade;
68
        int GrShade2;
69
        VGradient fill_gradient;
70
        int GrType;
6369 fschmid 71
        QString pattern;
6414 fschmid 72
        double patternScaleX;
73
        double patternScaleY;
74
        double patternOffsetX;
75
        double patternOffsetY;
76
        double patternRotation;
844 fschmid 77
        double GrStartX;
78
        double GrStartY;
79
        double GrEndX;
80
        double GrEndY;
81
        QString TxtStroke;
82
        QString TxtFill;
83
        int ShTxtStroke;
84
        int ShTxtFill;
85
        int TxtScale;
2230 fschmid 86
        int TxtScaleV;
844 fschmid 87
        int TxTStyle;
2234 fschmid 88
        int TxTBase;
2247 fschmid 89
        int TxtShadowX;
90
        int TxtShadowY;
2257 fschmid 91
        int TxtOutline;
2262 fschmid 92
        int TxtUnderPos;
93
        int TxtUnderWidth;
2272 fschmid 94
        int TxtStrikePos;
95
        int TxtStrikeWidth;
844 fschmid 96
        double Rot;
97
        int PLineArt;
98
        int PLineJoin;
99
        int PLineEnd;
100
        double LineSp;
2309 fschmid 101
        int LineSpMode;
2382 fschmid 102
        int ExtraV;
844 fschmid 103
        double LocalScX;
104
        double LocalScY;
105
        double LocalX;
106
        double LocalY;
107
        bool PicArt;
1392 cbradney 108
        bool flippedH;
109
        bool flippedV;
844 fschmid 110
        bool isPrintable;
111
        bool isBookmark;
4084 cbradney 112
        bool m_isAnnotation;
113
        Annotation m_annotation;
114
        QString AnName;
844 fschmid 115
        double Extra;
116
        double TExtra;
117
        double BExtra;
118
        double RExtra;
119
        QString Pfile;
120
        QString Pfile2;
121
        QString Pfile3;
122
        QString IProfile;
123
        QString EmProfile;
124
        int IRender;
125
        bool UseEmbedded;
1065 cbradney 126
        QString itemText;
844 fschmid 127
        QPointArray Clip;
128
        FPointArray PoLine;
129
        FPointArray ContourLine;
130
        bool PoShow;
131
        double BaseOffs;
7926 fschmid 132
        int textPathType;
133
        bool textPathFlipped;
5620 jghali 134
        int TextflowMode;
1065 cbradney 135
        int textAlignment;
844 fschmid 136
        QString IFont;
137
        int ISize;
138
        QValueStack<int> Groups;
139
        int LayerNr;
140
        bool ScaleType;
141
        bool AspectRatio;
142
        bool Locked;
143
        bool LockRes;
144
        double Transparency;
145
        double TranspStroke;
5746 fschmid 146
        int TransBlend;
147
        int TransBlendS;
844 fschmid 148
        bool Reverse;
149
        QString NamedLStyle;
150
        QString Language;
151
        QString guiLanguage;
152
        int Cols;
153
        double ColGap;
5184 avox 154
        QValueList<ParagraphStyle::TabRecord> TabValues;
844 fschmid 155
        QValueList<double> DashValues;
156
        double DashOffset;
157
        bool isTableItem;
158
        bool TopLine;
159
        bool LeftLine;
160
        bool RightLine;
161
        bool BottomLine;
162
        int LeftLinkID;
163
        int RightLinkID;
164
        int TopLinkID;
165
        int BottomLinkID;
166
        int startArrowIndex;
167
        int endArrowIndex;
1655 cbradney 168
        ObjAttrVector pageItemAttributes;
844 fschmid 169
};
838 cbradney 170
 
4579 cbradney 171
struct CopyContentsBuffer
172
{
173
        PageItem::ItemType sourceType;
174
        QString contentsFileName;
175
        double LocalScX;
176
        double LocalScY;
177
        double LocalX;
178
        double LocalY;
4831 cbradney 179
        double ItemX;
180
        double ItemY;
4581 cbradney 181
        QString inputProfile;
182
        bool useEmbedded;
183
        int renderingIntent;
4579 cbradney 184
};
185
 
7225 cbradney 186
/** \brief Pagemargins and bleeds*/
7226 cbradney 187
class MarginStruct
1429 subik 188
{
7226 cbradney 189
        public:
190
                MarginStruct() : Top(0), Left(0), Bottom(0), Right(0) {}
191
                MarginStruct(double top, double left, double bottom, double right) :
192
                        Top(top), Left(left), Bottom(bottom), Right(right) {}
193
                MarginStruct(const MarginStruct& rhs) {Top=rhs.Top;Bottom=rhs.Bottom;Left=rhs.Left;Right=rhs.Right;}
194
                double Top;
195
                double Left;
196
                double Bottom;
197
                double Right;
844 fschmid 198
};
838 cbradney 199
 
5789 cbradney 200
struct DocPagesSetup
201
{
202
        DocPagesSetup() : pageArrangement(0), firstPageLocation(0), firstPageNumber(0), orientation(0), autoTextFrames(false), columnDistance(0), columnCount(1) {}
203
        DocPagesSetup(int pa, int fpl, int fpn, int o, bool atf, double cd, double cc) :
204
                pageArrangement(pa), firstPageLocation(fpl), firstPageNumber(fpn), orientation(o), autoTextFrames(atf),
205
                columnDistance(cd), columnCount(cc) {}
206
        int pageArrangement;
207
        int firstPageLocation;
208
        int firstPageNumber;
209
        int orientation;
210
        bool autoTextFrames;
211
        double columnDistance;
212
        double columnCount;
213
};
214
 
3016 fschmid 215
struct PageSet
216
{
217
        QString Name;
218
        int FirstPage;
219
        int Rows;
220
        int Columns;
221
        double GapHorizontal;
222
        double GapVertical;
223
        double GapBelow;
3026 fschmid 224
        QStringList pageNames;
3016 fschmid 225
};
226
 
1065 cbradney 227
struct CMSData
844 fschmid 228
{
229
        QString DefaultMonitorProfile;
230
        QString DefaultPrinterProfile;
2984 fschmid 231
        QString DefaultImageRGBProfile;
232
        QString DefaultImageCMYKProfile;
5345 mrdocs 233
        QString DefaultSolidColorRGBProfile;
234
        QString DefaultSolidColorCMYKProfile;
844 fschmid 235
        int ComponentsInput2;
5345 mrdocs 236
        int ComponentsInput3;
844 fschmid 237
        int ComponentsPrinter;
2984 fschmid 238
        int DefaultIntentImages;
5345 mrdocs 239
        int DefaultIntentColors;
844 fschmid 240
        bool CMSinUse;
241
        bool SoftProofOn;
5345 mrdocs 242
        bool SoftProofFullOn;
844 fschmid 243
        bool GamutCheck;
244
        bool BlackPoint;
245
} ;
838 cbradney 246
 
1065 cbradney 247
struct SingleLine
1429 subik 248
{
844 fschmid 249
        double Width;
250
        int Dash;
251
        int LineEnd;
252
        int LineJoin;
253
        QString Color;
254
        int Shade;
9402 jghali 255
        // setter necessary for use with serializer/digester
256
        void setLineWidth(double value) { Width = value; }
257
        void setDash(int value)         { Dash = value; }
258
        void setLineEnd(int value)      { LineEnd = value; }
259
        void setLineJoin(int value)     { LineJoin = value; }
260
        void setColor(const QString& name) { Color = name; }
261
        void setShade(int value)        { Shade = value; }
9390 jghali 262
        bool operator==(const SingleLine& other) const
263
        {
264
                if (!compareDouble(Width, other.Width) )
265
                        return false;
266
                if ((Dash != other.Dash)  || (LineEnd != other.LineEnd) || (LineJoin != other.LineJoin) ||
267
                        (Color != other.Color)|| (Shade != other.Shade))
268
                        return false;
269
                return true;
270
        }
271
        bool operator!=(const SingleLine& other) const
272
        {
273
                return !(*this == other);
274
        }
844 fschmid 275
};
838 cbradney 276
 
1065 cbradney 277
struct ArrowDesc
844 fschmid 278
{
279
        QString name;
280
        bool userArrow;
281
        FPointArray points;
282
};
838 cbradney 283
 
844 fschmid 284
struct Layer
1429 subik 285
{
844 fschmid 286
        int LNr;
287
        int Level;
5572 fschmid 288
        int blendMode;
1065 cbradney 289
        bool isPrintable;
290
        bool isViewable;
4832 fschmid 291
        bool isEditable;
5359 fschmid 292
        bool flowControl;
5572 fschmid 293
        bool outlineMode;
5373 fschmid 294
        double transparency;
5572 fschmid 295
        QColor markerColor;
296
        QString Name;
844 fschmid 297
};
838 cbradney 298
 
1065 cbradney 299
struct PDFPresentationData
1429 subik 300
{
1065 cbradney 301
        int pageEffectDuration;
302
        int pageViewDuration;
303
        int effectType;
844 fschmid 304
        int Dm;
305
        int M;
306
        int Di;
307
};
838 cbradney 308
 
1065 cbradney 309
struct LPIData
1429 subik 310
{
844 fschmid 311
        int Frequency;
312
        int Angle;
313
        int SpotFunc;
314
};
838 cbradney 315
 
844 fschmid 316
struct Keys
1429 subik 317
{
1230 cbradney 318
        QString actionName;
1392 cbradney 319
        QString cleanMenuText;
3933 avox 320
        QKeySequence keySequence;
1392 cbradney 321
        int tableRow;
5352 cbradney 322
        QString menuName;
323
        int menuPos;
844 fschmid 324
};
838 cbradney 325
 
1429 subik 326
struct PrintOptions
844 fschmid 327
{
7104 fschmid 328
        bool firstUse;
838 cbradney 329
        bool toFile;
330
        bool useAltPrintCommand;
331
        bool outputSeparations;
3068 fschmid 332
        bool useSpotColors;
838 cbradney 333
        bool useColor;
334
        bool mirrorH;
335
        bool mirrorV;
336
        bool useICC;
337
        bool doGCR;
4649 fschmid 338
        bool doClip;
1861 fschmid 339
        bool setDevParam;
5308 fschmid 340
        bool doOverprint;
6954 fschmid 341
        bool cropMarks;
342
        bool bleedMarks;
343
        bool registrationMarks;
344
        bool colorMarks;
838 cbradney 345
        int copies;
6954 fschmid 346
        int PSLevel;
347
        double markOffset;
7225 cbradney 348
        MarginStruct bleeds;
838 cbradney 349
        std::vector<int> pageNumbers;
350
        QString printerOptions;
6954 fschmid 351
        QString printer;
352
        QString filename;
353
        QString separationName;
354
        QStringList allSeparations;
355
        QString printerCommand;
838 cbradney 356
};
357
 
844 fschmid 358
typedef QMap<QString,QString> ProfilesL;
6951 tsoots 359
// typedef QValueVector<SingleLine> multiLine;
1460 cbradney 360
 
9390 jghali 361
class multiLine : public QValueVector<SingleLine> {
362
public:
6951 tsoots 363
        QString shortcut;
9390 jghali 364
        bool operator!=(const multiLine& other) const
365
        {
366
                return !(this->operator ==(other));
367
        }
6951 tsoots 368
};
4512 cbradney 369
 
370
typedef enum {
371
        MissingGlyph=1,
372
        TextOverflow=2,
373
        ObjectNotOnPage=3,
374
        MissingImage=4,
375
        ImageDPITooLow=5,
376
        Transparency=6,
377
        PDFAnnotField=7,
5239 fschmid 378
        PlacedPDF=8,
5269 subik 379
        ImageDPITooHigh=9,
5674 fschmid 380
        ImageIsGIF=10,
8474 fschmid 381
        BlendMode=11,
382
        WrongFontInAnnotation=12
4512 cbradney 383
} PreflightError;
384
 
385
typedef QMap<PreflightError, int> errorCodes;
386
 
1065 cbradney 387
enum AppMode
388
{
2603 cbradney 389
        modeNormal,
390
        modeDrawShapes,
391
        modeStoryEditor,
392
        modeDrawPicture,
393
        modeDrawText,
394
        modeMagnifier,
395
        modeEdit,
396
        modeDrawLine,
397
        modeRotation,
398
        modeLinkFrames,
399
        modeUnlinkFrames,
400
        modeDrawRegularPolygon,
401
        modeDrawBezierLine,
402
        modeInsertPDFButton,
403
        modeInsertPDFTextfield,
404
        modeInsertPDFCheckbox,
405
        modeInsertPDFCombobox,
406
        modeInsertPDFListbox,
407
        modeInsertPDFTextAnnotation,
408
        modeInsertPDFLinkAnnotation,
409
        modeDrawFreehandLine,
410
        modeDrawTable,
411
        modePanning,
412
        modeMeasurementTool,
413
        modeEditGradientVectors,
414
        modeEyeDropper,
415
        modeCopyProperties
1065 cbradney 416
};
844 fschmid 417
 
2355 cbradney 418
struct AlignObjs
419
{
420
        int ObjNr;
421
        int Group;
422
        double x1;
423
        double y1;
424
        double x2;
425
        double y2;
2380 cbradney 426
        double width;
427
        double height;
2355 cbradney 428
        QPtrList<PageItem> Objects;
429
};
1641 cbradney 430
 
5087 subik 431
/*! \brief Human readable orientations */
3071 subik 432
enum PageOrientation
433
{
434
        portraitPage = 0,
435
        landscapePage = 1,
436
        customPage = 30
437
};
438
 
5087 subik 439
//! \brief Common type for guides list
440
typedef QValueList<double> Guides;
441
 
5642 cbradney 442
//! \brief from ols scribusXml
443
struct Linked
444
{
445
        int Start;
446
        int StPag;
447
};
448
 
449
// this is a quick hack to combine runs until I've thought of something better -- AV
450
class LastStyles {
451
public:
452
        CharStyle Style;
453
        int StyleStart;
7189 avox 454
        QString ParaStyle;
5642 cbradney 455
        LastStyles() {
456
                StyleStart = 0;
7189 avox 457
                ParaStyle = "";
5642 cbradney 458
        }
459
};
5789 cbradney 460
 
838 cbradney 461
#endif