Subversion Repositories Scribus

Rev

Rev 4679 | Rev 5291 | 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
 
27
#include "qvaluelist.h"
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;
3699 cbradney 43
 
3133 fschmid 44
#include "scribusstructs.h"
45
 
46
/**
47
  *@author Franz Schmid
48
  */
49
 
50
class SCRIBUS_API PDFlib : public QObject
51
{
52
        Q_OBJECT
53
 
54
public:
4264 craig 55
        explicit PDFlib(ScribusDoc & docu);
4224 craig 56
        ~PDFlib();
4264 craig 57
        bool doExport(const QString& fn, const QString& nam, int Components,
58
                                  const std::vector<int> & pageNs, const QMap<int,QPixmap> & thumbs);
4223 craig 59
 
60
        // used by ScFonts
61
        struct GlNamInd
62
        {
63
                uint Code;
64
                QString Name;
65
        };
66
 
67
private:
68
        typedef QMap<uint, GlNamInd> GListeInd;
69
 
4264 craig 70
        bool PDF_Begin_Doc(const QString& fn, SCFonts &AllFonts, QMap<QString,int> DocFonts, BookMView* vi);
4241 craig 71
        void PDF_Begin_Page(const Page* pag, QPixmap pm = 0);
3133 fschmid 72
        void PDF_End_Page();
4241 craig 73
        void PDF_TemplatePage(const Page* pag, bool clip = false);
74
        void PDF_ProcessPage(const Page* pag, uint PNr, bool clip = false);
3829 cbradney 75
        void PDF_End_Doc(const QString& PrintPr = "", const QString& Name = "", int Components = 0);
4028 cbradney 76
        void closeAndCleanup();
3133 fschmid 77
 
4229 craig 78
        QString EncStream(const QString & in, int ObjNum);
5234 fschmid 79
        QByteArray EncStreamArray(const QByteArray & in, int ObjNum);
4229 craig 80
        QString EncString(const QString & in, int ObjNum);
81
        void CalcOwnerKey(const QString & Owner, const QString & User);
82
        void CalcUserKey(const QString & User, int Permission);
83
        QString FitKey(const QString & pass);
3133 fschmid 84
        QString setStrokeMulti(struct SingleLine *sl);
85
        QString SetClipPathArray(FPointArray *ite, bool poly = true);
86
        QString SetClipPathImage(PageItem *ite);
87
        QString SetClipPath(PageItem *ite, bool poly = true);
4565 fschmid 88
        QString SetFarbeGrad(const QString& farbe, int Shade);
3829 cbradney 89
        QString SetFarbe(const QString& farbe, int Shade);
90
        QString putColor(const QString& color, int Shade, bool fill);
4229 craig 91
        QString putColorUncached(const QString& color, int Shade, bool fill);
4241 craig 92
        QString PDF_ProcessItem(PageItem* ite, const Page* pag, uint PNr, bool embedded = false);
93
        QString setTextSt(PageItem *ite, uint PNr, const Page* pag);
94
        void setTextCh(PageItem *ite, uint PNr, uint d,  QString &tmp, QString &tmp2, const ScText * hl, const Page* pag);
4229 craig 95
 
96
        // Provide a couple of PutDoc implementations to ease transition away from
97
        // QString abuse and to provide fast paths for constant strings.
98
        void PutDoc(const QString & in) { outStream.writeRawBytes(in.latin1(), in.length()); }
4239 craig 99
        void PutDoc(const QByteArray & in) { outStream.writeRawBytes(in, in.size()); }
4229 craig 100
        void PutDoc(const char* in) { outStream.writeRawBytes(in, strlen(in)); }
101
        void PutDoc(const std::string & in) { outStream.writeRawBytes(in.c_str(), in.length()); }
102
 
103
        void PutPage(const QString & in) { Inhalt += in; }
3133 fschmid 104
        void StartObj(int nr);
4084 cbradney 105
        void WritePDFStream(const QString& cc);
4229 craig 106
        QString PDFEncode(const QString & in);
3829 cbradney 107
        QByteArray ComputeMD5(const QString& in);
4679 fschmid 108
        void PDF_Bookmark(PageItem *currItem, double ypos);
3133 fschmid 109
        QString PDF_Gradient(PageItem *currItem);
3829 cbradney 110
        QString PDF_DoLinGradient(PageItem *currItem, QValueList<double> Stops, QValueList<double> Trans, const QStringList& Colors);
3133 fschmid 111
        QString PDF_Transparenz(PageItem *currItem);
112
        void PDF_Annotation(PageItem *ite, uint PNr);
4229 craig 113
        void PDF_Form(const QString& im);
3133 fschmid 114
        void PDF_xForm(double w, double h, QString im);
3829 cbradney 115
        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 116
 
4229 craig 117
        int bytesWritten() { return Spool.at(); }
118
 
4223 craig 119
        QMap<QString, GListeInd> GlyphsIdxOfFont;
3133 fschmid 120
        QString Inhalt;
4264 craig 121
        ScribusDoc & doc;
122
        const Page * ActPageP;
123
        const PDFOptions & Options;
3133 fschmid 124
        BookMView* Bvie;
125
        QFile Spool;
126
        int Dokument;
127
        struct Dest
128
        {
129
                QString Name;
130
                int Seite;
131
                QString Act;
132
        };
133
        struct Cata
134
        {
135
                int Outlines;
136
                int PageTree;
137
                int Dest;
138
        }
139
        Catalog;
140
        struct PagT
141
        {
142
                QValueList<int> Kids;
143
                int Count;
144
        }
145
        PageTree;
146
        struct PagL
147
        {
148
                int ObjNum;
149
                int Thumb;
150
                QMap<QString,int> XObjects;
151
                QMap<QString,int> ImgObjects;
152
                QMap<QString,int> FObjects;
153
                QValueList<int> AObjects;
154
                QValueList<int> FormObjects;
155
        }
156
        Seite;
157
        struct OutL
158
        {
159
                int First;
160
                int Last;
161
                int Count;
162
        }
163
        Outlines;
164
        struct Bead
165
        {
166
                int Parent;
167
                int Next;
168
                int Prev;
169
                int Page;
170
                QRect Recht;
171
        };
172
        struct ICCD
173
        {
174
                int ResNum;
175
                QString ResName;
176
                QString ICCArray;
177
        };
178
        struct ShIm
179
        {
180
                int ResNum;
181
                int Width;
182
                int Height;
183
                double aufl;
184
                double sxa;
185
                double sya;
186
                double xa;
187
                double ya;
188
        };
189
        struct OCGInfo
190
        {
191
                int ObjNum;
192
                bool visible;
193
                QString Name;
194
        };
195
        struct SpotC
196
        {
197
                int ResNum;
198
                QString ResName;
199
        };
200
        QMap<QString,ShIm> SharedImages;
201
        QValueList<uint> XRef;
202
        QValueList<Dest> NamedDest;
203
        QValueList<int> Threads;
204
        QValueList<Bead> Beads;
205
        QValueList<int> CalcFields;
206
        QMap<QString,int> Shadings;
207
        QMap<QString,int> Transpar;
208
        QMap<QString,ICCD> ICCProfiles;
209
        QMap<QString, OCGInfo> OCGEntries;
210
        int ObjCounter;
211
        QString ResNam;
212
        int ResCount;
213
        QString NDnam;
214
        QString Datum;
215
        int NDnum;
216
        QMap<QString, QString> UsedFontsP;
3544 avox 217
        QMap<QString, int> RealFonts;
3133 fschmid 218
        bool CompAvail;
219
        QByteArray KeyGen;
220
        QByteArray OwnerKey;
221
        QByteArray UserKey;
222
        QByteArray FileID;
223
        QByteArray EncryKey;
224
        int Encrypt;
225
        int KeyLen;
226
        QString HTName;
227
        bool BookMinUse;
228
        ColorList colorsToUse;
229
        QMap<QString, SpotC> spotMap;
230
        QString spotNam;
231
        int spotCount;
4229 craig 232
        QTextStream outStream;
4017 fschmid 233
        QMap<QString, QString> StdFonts;
4028 cbradney 234
        MultiProgressDialog* progressDialog;
4223 craig 235
        bool abortExport;
4028 cbradney 236
        bool usingGUI;
237
 
238
protected slots:
239
        void cancelRequested();
3133 fschmid 240
};
241
 
242
#endif
243