Subversion Repositories Scribus

Rev

Rev 7328 | Rev 8171 | Go to most recent revision | 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
*/
3133 fschmid 7
/***************************************************************************
8
                          pdflib.h  -  description
9
                             -------------------
10
    begin                : Sat Jan 19 2002
11
    copyright            : (C) 2002 by Franz Schmid
12
    email                : Franz.Schmid@altmuehlnet.de
13
 ***************************************************************************/
14
 
15
/***************************************************************************
16
 *                                                                         *
17
 *   This program is free software; you can redistribute it and/or modify  *
18
 *   it under the terms of the GNU General Public License as published by  *
19
 *   the Free Software Foundation; either version 2 of the License, or     *
20
 *   (at your option) any later version.                                   *
21
 *                                                                         *
22
 ***************************************************************************/
23
 
24
#ifndef PDFLIB_H
25
#define PDFLIB_H
26
 
5370 cbradney 27
#include <qvaluelist.h>
3133 fschmid 28
#include <qfile.h>
4265 craig 29
#include <string>
3699 cbradney 30
#include <vector>
3133 fschmid 31
 
32
class QString;
33
class QRect;
34
class QImage;
35
class PageItem;
36
class BookMItem;
37
class BookMView;
38
class ScribusDoc;
39
class Page;
40
class PDFOptions;
3252 craig 41
class PrefsContext;
4028 cbradney 42
class MultiProgressDialog;
5291 avox 43
class ScText;
3699 cbradney 44
 
3133 fschmid 45
#include "scribusstructs.h"
46
 
47
/**
48
  *@author Franz Schmid
49
  */
50
 
51
class SCRIBUS_API PDFlib : public QObject
52
{
53
        Q_OBJECT
54
 
55
public:
4264 craig 56
        explicit PDFlib(ScribusDoc & docu);
4224 craig 57
        ~PDFlib();
4264 craig 58
        bool doExport(const QString& fn, const QString& nam, int Components,
59
                                  const std::vector<int> & pageNs, const QMap<int,QPixmap> & thumbs);
4223 craig 60
 
61
private:
62
 
5387 avox 63
        bool PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QString, QMap<uint, FPointArray> > DocFonts, BookMView* vi);
4241 craig 64
        void PDF_Begin_Page(const Page* pag, QPixmap pm = 0);
3133 fschmid 65
        void PDF_End_Page();
4241 craig 66
        void PDF_TemplatePage(const Page* pag, bool clip = false);
67
        void PDF_ProcessPage(const Page* pag, uint PNr, bool clip = false);
3829 cbradney 68
        void PDF_End_Doc(const QString& PrintPr = "", const QString& Name = "", int Components = 0);
4028 cbradney 69
        void closeAndCleanup();
3133 fschmid 70
 
7328 fschmid 71
        QByteArray EncodeUTF16(const QString &in);
4229 craig 72
        QString EncStream(const QString & in, int ObjNum);
5234 fschmid 73
        QByteArray EncStreamArray(const QByteArray & in, int ObjNum);
4229 craig 74
        QString EncString(const QString & in, int ObjNum);
7328 fschmid 75
        QString EncStringUTF16(const QString & in, int ObjNum);
4229 craig 76
        void CalcOwnerKey(const QString & Owner, const QString & User);
77
        void CalcUserKey(const QString & User, int Permission);
78
        QString FitKey(const QString & pass);
3133 fschmid 79
        QString setStrokeMulti(struct SingleLine *sl);
80
        QString SetClipPathArray(FPointArray *ite, bool poly = true);
81
        QString SetClipPathImage(PageItem *ite);
82
        QString SetClipPath(PageItem *ite, bool poly = true);
4565 fschmid 83
        QString SetFarbeGrad(const QString& farbe, int Shade);
3829 cbradney 84
        QString SetFarbe(const QString& farbe, int Shade);
7478 jghali 85
        QString SetFarbe(const ScColor& farbe, int Shade);
3829 cbradney 86
        QString putColor(const QString& color, int Shade, bool fill);
4229 craig 87
        QString putColorUncached(const QString& color, int Shade, bool fill);
5433 fschmid 88
        QString PDF_ProcessTableItem(PageItem* ite, const Page* pag);
6378 fschmid 89
        QString PDF_ProcessItem(PageItem* ite, const Page* pag, uint PNr, bool embedded = false, bool pattern = false);
6562 fschmid 90
        QString Write_TransparencyGroup(double trans, int blend, QString &data);
4241 craig 91
        QString setTextSt(PageItem *ite, uint PNr, const Page* pag);
6170 avox 92
        void setTextCh(PageItem *ite, uint PNr, double x, double y, uint d,  QString &tmp, QString &tmp2, const ScText * hl, const ParagraphStyle& pstyle, const Page* pag);
4229 craig 93
 
94
        // Provide a couple of PutDoc implementations to ease transition away from
95
        // QString abuse and to provide fast paths for constant strings.
96
        void PutDoc(const QString & in) { outStream.writeRawBytes(in.latin1(), in.length()); }
4239 craig 97
        void PutDoc(const QByteArray & in) { outStream.writeRawBytes(in, in.size()); }
4229 craig 98
        void PutDoc(const char* in) { outStream.writeRawBytes(in, strlen(in)); }
99
        void PutDoc(const std::string & in) { outStream.writeRawBytes(in.c_str(), in.length()); }
100
 
101
        void PutPage(const QString & in) { Inhalt += in; }
3133 fschmid 102
        void StartObj(int nr);
4084 cbradney 103
        void WritePDFStream(const QString& cc);
4229 craig 104
        QString PDFEncode(const QString & in);
3829 cbradney 105
        QByteArray ComputeMD5(const QString& in);
4679 fschmid 106
        void PDF_Bookmark(PageItem *currItem, double ypos);
3133 fschmid 107
        QString PDF_Gradient(PageItem *currItem);
6486 fschmid 108
        QString PDF_DoLinGradient(PageItem *currItem, QValueList<double> Stops, QValueList<double> Trans, const QStringList& Colors, QStringList colorNames, QValueList<int> colorShades);
5748 fschmid 109
        QString PDF_TransparenzFill(PageItem *currItem);
110
        QString PDF_TransparenzStroke(PageItem *currItem);
3133 fschmid 111
        void PDF_Annotation(PageItem *ite, uint PNr);
4229 craig 112
        void PDF_Form(const QString& im);
3133 fschmid 113
        void PDF_xForm(double w, double h, QString im);
3829 cbradney 114
        QString PDF_Image(PageItem* c, const QString& fn, double sx, double sy, double x, double y, bool fromAN = false, const QString& Profil = "", bool Embedded = false, int Intent = 1);
4223 craig 115
 
4229 craig 116
        int bytesWritten() { return Spool.at(); }
117
 
3133 fschmid 118
        QString Inhalt;
4264 craig 119
        ScribusDoc & doc;
120
        const Page * ActPageP;
121
        const PDFOptions & Options;
3133 fschmid 122
        BookMView* Bvie;
123
        QFile Spool;
124
        int Dokument;
125
        struct Dest
126
        {
127
                QString Name;
128
                int Seite;
129
                QString Act;
130
        };
131
        struct Cata
132
        {
133
                int Outlines;
134
                int PageTree;
135
                int Dest;
136
        }
137
        Catalog;
138
        struct PagT
139
        {
140
                QValueList<int> Kids;
141
                int Count;
142
        }
143
        PageTree;
144
        struct PagL
145
        {
146
                int ObjNum;
147
                int Thumb;
148
                QMap<QString,int> XObjects;
149
                QMap<QString,int> ImgObjects;
150
                QMap<QString,int> FObjects;
151
                QValueList<int> AObjects;
152
                QValueList<int> FormObjects;
153
        }
154
        Seite;
155
        struct OutL
156
        {
157
                int First;
158
                int Last;
159
                int Count;
160
        }
161
        Outlines;
162
        struct Bead
163
        {
164
                int Parent;
165
                int Next;
166
                int Prev;
167
                int Page;
168
                QRect Recht;
169
        };
170
        struct ICCD
171
        {
172
                int ResNum;
173
                QString ResName;
174
                QString ICCArray;
175
        };
176
        struct ShIm
177
        {
178
                int ResNum;
179
                int Width;
180
                int Height;
181
                double aufl;
182
                double sxa;
183
                double sya;
184
                double xa;
185
                double ya;
186
        };
187
        struct OCGInfo
188
        {
189
                int ObjNum;
190
                bool visible;
191
                QString Name;
192
        };
193
        struct SpotC
194
        {
195
                int ResNum;
196
                QString ResName;
197
        };
6562 fschmid 198
        struct gData
199
        {
200
                int ResNumG;
201
                int ResNumX;
202
                QString ResNamG;
203
                QString ResNamX;
204
                QString data;
205
        };
3133 fschmid 206
        QMap<QString,ShIm> SharedImages;
207
        QValueList<uint> XRef;
208
        QValueList<Dest> NamedDest;
209
        QValueList<int> Threads;
210
        QValueList<Bead> Beads;
211
        QValueList<int> CalcFields;
6378 fschmid 212
        QMap<QString,int> Patterns;
3133 fschmid 213
        QMap<QString,int> Shadings;
214
        QMap<QString,int> Transpar;
215
        QMap<QString,ICCD> ICCProfiles;
216
        QMap<QString, OCGInfo> OCGEntries;
217
        int ObjCounter;
218
        QString ResNam;
219
        int ResCount;
220
        QString NDnam;
221
        QString Datum;
222
        int NDnum;
223
        QMap<QString, QString> UsedFontsP;
224
        bool CompAvail;
225
        QByteArray KeyGen;
226
        QByteArray OwnerKey;
227
        QByteArray UserKey;
228
        QByteArray FileID;
229
        QByteArray EncryKey;
230
        int Encrypt;
231
        int KeyLen;
232
        QString HTName;
233
        bool BookMinUse;
234
        ColorList colorsToUse;
235
        QMap<QString, SpotC> spotMap;
6925 fschmid 236
        QMap<QString, SpotC> spotMapReg;
3133 fschmid 237
        QString spotNam;
238
        int spotCount;
6407 fschmid 239
        int inPattern;
4229 craig 240
        QTextStream outStream;
4017 fschmid 241
        QMap<QString, QString> StdFonts;
4028 cbradney 242
        MultiProgressDialog* progressDialog;
4223 craig 243
        bool abortExport;
4028 cbradney 244
        bool usingGUI;
245
 
246
protected slots:
247
        void cancelRequested();
3133 fschmid 248
};
249
 
250
#endif
251