Subversion Repositories Scribus

Rev

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

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