From 3dfcf983ad5d32205e48c36467952b3c25c1c758 Mon Sep 17 00:00:00 2001 From: Rtch90 <ritchie.cunningham@protonmail.com> Date: Mon, 15 Dec 2014 17:25:30 +0000 Subject: [PATCH] [Add] GUI Layout. [Add] Integrated tableview and files. --- img/about.png | Bin 0 -> 3223 bytes img/export.png | Bin 0 -> 2203 bytes img/exportall.png | Bin 0 -> 1094 bytes img/hpdf.png | Bin 0 -> 3981 bytes src/pdf_file.cpp | 29 +++++++++++++++++++++++++++++ src/pdf_file.h | 18 ++++++++++++++++++ src/pdf_page_widget.cpp | 20 ++++++++++++++++++++ src/pdf_page_widget.h | 21 +++++++++++++++++++++ 8 files changed, 88 insertions(+) create mode 100644 img/about.png create mode 100644 img/export.png create mode 100644 img/exportall.png create mode 100644 img/hpdf.png create mode 100644 src/pdf_file.cpp create mode 100644 src/pdf_file.h create mode 100644 src/pdf_page_widget.cpp create mode 100644 src/pdf_page_widget.h diff --git a/img/about.png b/img/about.png new file mode 100644 index 0000000000000000000000000000000000000000..766b8daee1483c93cb18d698d0aaa5958ad8f3bb GIT binary patch literal 3223 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 JPDHLkV1j2?(TD&5 literal 0 HcmV?d00001 diff --git a/img/export.png b/img/export.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf2cba36cd2399269fe4185724400ba1fa74513 GIT binary patch literal 2203 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 literal 0 HcmV?d00001 diff --git a/img/exportall.png b/img/exportall.png new file mode 100644 index 0000000000000000000000000000000000000000..50011ddacd55fd7a63650dfc91cdddcd0544131b GIT binary patch literal 1094 zcmV-M1iAZ(P)<h;3K|Lk000e1NJLTq001xm001xu1ONa4{R=S+00002b3#c}2nbc| zMg#x=010qNS#tmY1u*~s1u+4)?I=<J000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S* zE^l&Yo9;Xs000BUNkl<ZSi{wqyN(=16o$WZs=H?wV{sE80-_bh7Qzxj$jCA;fJ8t_ z#50f?;{YKLyZ`~@kXfXb5Xm}#0MNi91QB>e0LYTXnnj+SK8Ijxx~uv!p7EN1Y4vn> zUC!nI&tF|F&VTz;{_hTov5x1beij}&xOrOuI3e#m0yPC&R0JHsahw_dPy=6IyYgjt zUEqXl+q=7O-NAvK1%Z>CbU-iwDk@3}won34bD1OHInHzYLbyP5te0L2yBAkN<j_R9 zcml&wCQK;VW{U|EuCvcRe<4^h){!^vkbyT>i6<C=l7c`%iNyFEK?ry<R+{<6I6aOe zE&wK!C{R)+6|#UZBss4|a>TNk;y@rUp+Zpt0h&HVn+(XDtjwVOZw*030VtAWNOZ6q zE4Zw|K^LL|iPHlG8l8HC%R7v%1yMV^1_X`xTV$Z-5=YE<7@=N8a$i;-G9;^-KccLD z;#a;wIAYE@UgQ_PPin76^5(L-!L^7ue8q0ekT(9DgETQ|WThw*N=hmer{+3yU?<9| zHCHmv;ORkhFJ#pxI3xMEvP#VkRMBx|Rq#<<TW|3R(?%m%2FH<=@c@Qn+|PNYLm3=b zRu&z22d?7Y$jbN@CvduPJV>(gAoDosb51d#Vw->ys4!*(1mR{+R?4$6e!~_$GEk=b z+=s@9uW~ivr3Fr!|5R2jK+D&T3`2C-OihiDv?l9icD4@k^40tmNh~(cT1cqtw|Yae z#Y`B}!FYW1qR(4AgUJz021tI5SE;f%Eh)}r`kqAI%4&*HaB4gQfLGXwPhHw9sgd+) zDJ$ohB>qv7%Xq)aWVe+jyVSwJu3{+;V~<-6s`)j&>&nWqB6Va)2a5q`)&eJ&m94i_ ztOrW>Y<GR_m=TCJLqC^Q+NuQRL$6HR02uE;vWHW!g8^@IhWCbFnVX@X$cob$6N~k@ z2hpPY2mX$H5Dm1|L~@_YDs_B$Ob3gJPmhpkBNQ)Wb=U+mTNLh}BV}qE)>4GX-~6Ec z)Tj{m&qk_fQ;L^T+q<~(8?DvB-PO<<AAw7f@1~Aqg_9<O33X48>nS;v)u@AWyw7*h z$d4S3mS);AB&$&emQ?doE91@UtShVjPZsDs=>mMpV{3tu_WaDpfUqa4IryE&;gEx5 z5zEc_pvac8@*DC5b#}~snSlg~M_;I3_5yWPbtSl}iWVg*>WaFeqA2R3j){wjVPcq? z*ufXSO__I&BWBE{-Aka&5#okAJ(L2C`!d5~oJP$&UhAgEFpq}+1?`U()bDg+Jpcdz M07*qoM6N<$g5{I!qW}N^ literal 0 HcmV?d00001 diff --git a/img/hpdf.png b/img/hpdf.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf001aa3ead2ba2b1ccf9eac694de3b8b07723c GIT binary patch literal 3981 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 literal 0 HcmV?d00001 diff --git a/src/pdf_file.cpp b/src/pdf_file.cpp new file mode 100644 index 0000000..56affc5 --- /dev/null +++ b/src/pdf_file.cpp @@ -0,0 +1,29 @@ +#include <QtGlobal> +#include <QtWidgets> +#include "pdf_file.h" + +PDFFile::PDFFile(const QString& fileName) { + /* Load PDF file. */ + document = Poppler::Document::load(fileName); + if(!document || document->isLocked()) { + delete document; + } +} + +QImage* PDFFile::getPageImage(int pageNumber) { + if(document == 0) + return NULL; + + Poppler::Page* pdfPage = document->page(pageNumber); + + if(pdfPage == 0) + return NULL; + + QImage* image = new QImage(); + *image = pdfPage->renderToImage(); + + delete pdfPage; + + return image; +} + diff --git a/src/pdf_file.h b/src/pdf_file.h new file mode 100644 index 0000000..2cd240b --- /dev/null +++ b/src/pdf_file.h @@ -0,0 +1,18 @@ +#pragma once +#include <QObject> +#include <poppler-qt5.h> + +class QString; +class QImage; + +class PDFFile : public QObject { + Q_OBJECT +public: + PDFFile(const QString& fileName); + QImage* getPageImage(int pageNumber); + +private: + Poppler::Document* document; + QString fileName; +}; + diff --git a/src/pdf_page_widget.cpp b/src/pdf_page_widget.cpp new file mode 100644 index 0000000..4a09511 --- /dev/null +++ b/src/pdf_page_widget.cpp @@ -0,0 +1,20 @@ +#include <QtWidgets> +#include "pdf_page_widget.h" + +PDFPageWidget::PDFPageWidget(QWidget* parent) : + QWidget(parent) { + + this->resize(500, 600); +} + +void PDFPageWidget::setPageImage(QImage* pageImage) { + image = pageImage; + pixmap = QPixmap::fromImage(*image); + update(); +} + +void PDFPageWidget::paintEvent(QPaintEvent* event) { + QPainter painter(this); + painter.drawPixmap(QRect(0, 0, pixmap.width(), pixmap.height()), pixmap); +} + diff --git a/src/pdf_page_widget.h b/src/pdf_page_widget.h new file mode 100644 index 0000000..bb3e35d --- /dev/null +++ b/src/pdf_page_widget.h @@ -0,0 +1,21 @@ +#pragma once +#include <QWidget> + +class QImage; +class QPixmap; +class QPaintEvent; + +class PDFPageWidget : public QWidget { + Q_OBJECT +public: + PDFPageWidget(QWidget* parent = 0); + void setPageImage(QImage* pageImage); + +protected: + void paintEvent(QPaintEvent* event); + +private: + QImage* image; + QPixmap pixmap; +}; +