Tizen 2.1 base
[platform/upstream/cups-filters.git] / filter / pdftopdf / qpdf_pdftopdf_processor.h
1 #ifndef QPDF_PDFTOPDF_PROCESSOR_H
2 #define QPDF_PDFTOPDF_PROCESSOR_H
3
4 #include "pdftopdf_processor.h"
5 #include <qpdf/QPDF.hh>
6
7 class QPDF_PDFTOPDF_PageHandle : public PDFTOPDF_PageHandle {
8 public:
9   virtual PageRect getRect() const;
10   virtual void add_border_rect(const PageRect &rect,BorderType border,float fscale);
11   virtual void add_subpage(const std::shared_ptr<PDFTOPDF_PageHandle> &sub,float xpos,float ypos,float scale,const PageRect *crop=NULL);
12   virtual void mirror();
13   virtual void rotate(Rotation rot);
14
15   void debug(const PageRect &rect,float xpos,float ypos);
16 private:
17   bool isExisting() const;
18   QPDFObjectHandle get(); // only once!
19 private:
20   friend class QPDF_PDFTOPDF_Processor;
21   // 1st mode: existing
22   QPDF_PDFTOPDF_PageHandle(QPDFObjectHandle page,int orig_no=-1);
23   QPDFObjectHandle page;
24   int no;
25
26   // 2nd mode: create new
27   QPDF_PDFTOPDF_PageHandle(QPDF *pdf,float width,float height);
28   std::map<std::string,QPDFObjectHandle> xobjs;
29   std::string content;
30
31   Rotation rotation;
32 };
33
34 class QPDF_PDFTOPDF_Processor : public PDFTOPDF_Processor {
35 public:
36   virtual bool loadFile(FILE *f,ArgOwnership take=WillStayAlive);
37   virtual bool loadFilename(const char *name);
38
39 // TODO: virtual bool may_modify/may_print/?
40   virtual bool check_print_permissions();
41
42 // virtual bool setProcess(const ProcessingParameters &param) =0;
43
44   virtual std::vector<std::shared_ptr<PDFTOPDF_PageHandle>> get_pages();
45   virtual std::shared_ptr<PDFTOPDF_PageHandle> new_page(float width,float height);
46
47   virtual void add_page(std::shared_ptr<PDFTOPDF_PageHandle> page,bool front);
48
49   virtual void multiply(int copies,bool collate);
50
51   virtual void autoRotateAll(bool dst_lscape,Rotation normal_landscape);
52   virtual void addCM(const char *defaulticc,const char *outputicc);
53
54   virtual void setComments(const std::vector<std::string> &comments);
55
56   virtual void emitFile(FILE *dst,ArgOwnership take=WillStayAlive);
57   virtual void emitFilename(const char *name);
58
59 private:
60   void closeFile();
61   void error(const char *fmt,...);
62   void start();
63 private:
64   std::unique_ptr<QPDF> pdf;
65   std::vector<QPDFObjectHandle> orig_pages;
66
67   bool hasCM;
68   std::string extraheader;
69 };
70
71 #endif