Subversion Repositories Scribus

Rev

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