00001 #ifndef PDFSCENE_H 00002 #define PDFSCENE_H 00003 00004 #include <poppler-qt4.h> 00005 #include <QGraphicsScene> 00006 #include <QGraphicsSceneMouseEvent> 00007 #include <QGraphicsPixmapItem> 00008 #include <QImage> 00009 #include "tool.h" 00010 #include "boxtool.h" 00011 #include "selecttool.h" 00012 00017 class PDFScene : public QGraphicsScene 00018 { 00019 Q_OBJECT 00020 public: // inner types 00021 enum Visibility 00022 { 00023 NothingVisible = 0x0, 00024 ImageVisible = 0x1, 00025 TextVisible = 0x2 00026 }; 00027 Q_DECLARE_FLAGS(Visibilities, Visibility) 00028 00029 public: // construction 00030 PDFScene(); 00031 00032 public: // All available tools 00033 BoxTool* boxTool; 00034 SelectTool* selectTool; 00035 00036 signals: 00037 00042 void cursorPos(QPointF pos); 00043 00044 public slots: 00045 00050 void image(QImage pm); 00051 00058 void image(int /* pnum */, QImage pm) { image(pm); } 00059 00063 QImage image(); 00064 00069 void pageText(QList<Poppler::TextBox*> boxen); 00070 00078 void setTool(Tool* t) { tool = t; }; 00079 00080 void setImageVisible(bool v) { 00081 (v ? visibleItems |= ImageVisible : 00082 visibleItems &= ~(Visibilities(ImageVisible))); 00083 updateVisibilities(); 00084 } 00085 00086 void setTextVisible(bool v) { 00087 (v ? visibleItems |= TextVisible : 00088 visibleItems &= ~(Visibilities(TextVisible))); 00089 updateVisibilities(); 00090 } 00091 00092 00093 protected: 00094 00098 void mouseMoveEvent ( QGraphicsSceneMouseEvent * ev); 00099 00103 void mousePressEvent ( QGraphicsSceneMouseEvent * ev); 00104 00110 void mouseReleaseEvent ( QGraphicsSceneMouseEvent * ev); 00111 00112 void updateVisibilities(); 00113 00114 private: 00115 00119 QGraphicsPixmapItem pdfView; 00120 00124 Tool* tool; 00125 00126 Visibilities visibleItems; 00127 00128 }; 00129 00130 Q_DECLARE_OPERATORS_FOR_FLAGS(PDFScene::Visibilities) 00131 00132 #endif // PDFSCENE_H
1.5.8