From 14abafc1394574b227671d147cc4c95fbf6b438f Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Mon, 11 Feb 2019 17:54:49 +0100 Subject: [PATCH] initial commit --- Doxyfile | 6 +- cexif.h | 26 ++--- cimage.cpp | 142 ++++++++++++++++++++++++++ cimage.h | 116 +++++++++++++++++++++ cmainwindow.cpp | 21 +++- cmainwindow.h | 6 ++ cmainwindow.ui | 138 +++++++++++++++++++------ cpicture.cpp | 7 ++ cpicture.h | 247 +++++++++++++++++++++++++++++++++++++++++++++ cpicturelibrary.h | 9 ++ csplashscreen.h | 30 +++++- ctoolboxinfo.cpp | 32 ++++++ ctoolboxinfo.h | 27 +++++ ctoolboxinfo.ui | 115 +++++++++++++++++++++ pictureLibrary.pro | 21 ++-- 15 files changed, 883 insertions(+), 60 deletions(-) create mode 100644 cimage.cpp create mode 100644 cimage.h create mode 100644 ctoolboxinfo.cpp create mode 100644 ctoolboxinfo.h create mode 100644 ctoolboxinfo.ui diff --git a/Doxyfile b/Doxyfile index ba3904c..f0514fa 100644 --- a/Doxyfile +++ b/Doxyfile @@ -2320,7 +2320,7 @@ UML_LIMIT_NUM_FIELDS = 10 # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -TEMPLATE_RELATIONS = NO +TEMPLATE_RELATIONS = YES # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to # YES then doxygen will generate a graph for each documented file showing the @@ -2350,7 +2350,7 @@ INCLUDED_BY_GRAPH = YES # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALL_GRAPH = NO +CALL_GRAPH = YES # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller # dependency graph for every global function or class method. @@ -2362,7 +2362,7 @@ CALL_GRAPH = NO # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALLER_GRAPH = NO +CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical # hierarchy of all classes instead of a textual one. diff --git a/cexif.h b/cexif.h index 7e953cd..a0aaa8c 100644 --- a/cexif.h +++ b/cexif.h @@ -21,8 +21,8 @@ class cEXIFCompression public: cEXIFCompression(const qint32& iID, const QString& szCompression); - qint32 m_iID; /**< TODO: describe */ - QString m_szCompression; /**< TODO: describe */ + qint32 m_iID; /**< TODO: describe */ + QString m_szCompression; /**< TODO: describe */ }; Q_DECLARE_METATYPE(cEXIFCompression*) @@ -72,8 +72,8 @@ class cEXIFLightSource public: cEXIFLightSource(const qint32& iID, const QString& szLightSource); - qint32 m_iID; /**< TODO: describe */ - QString m_szLightSource; /**< TODO: describe */ + qint32 m_iID; /**< TODO: describe */ + QString m_szLightSource; /**< TODO: describe */ }; Q_DECLARE_METATYPE(cEXIFLightSource*) @@ -121,8 +121,8 @@ class cEXIFFlash public: cEXIFFlash(const qint32& iID, const QString& szFlash); - qint32 m_iID; /**< TODO: describe */ - QString m_szFlash; /**< TODO: describe */ + qint32 m_iID; /**< TODO: describe */ + QString m_szFlash; /**< TODO: describe */ }; Q_DECLARE_METATYPE(cEXIFFlash*) @@ -170,11 +170,11 @@ class cEXIFTag public: cEXIFTag(const qint32& iTAGID, const QString& szTAGName, const qint32& iIFDID, const qint32& iTypeID, const QString& szDescription); - qint32 m_iTAGID; /**< TODO: describe */ - QString m_szTAGName; /**< TODO: describe */ - qint32 m_iIFDID; /**< TODO: describe */ - qint32 m_iTypeID; /**< TODO: describe */ - QString m_szDescription; /**< TODO: describe */ + qint32 m_iTAGID; /**< TODO: describe */ + QString m_szTAGName; /**< TODO: describe */ + qint32 m_iIFDID; /**< TODO: describe */ + qint32 m_iTypeID; /**< TODO: describe */ + QString m_szDescription; /**< TODO: describe */ }; Q_DECLARE_METATYPE(cEXIFTag*) @@ -246,8 +246,8 @@ public: QList valueList(); private: - cEXIFTag* m_lpEXIFTag; /**< TODO: describe */ - QList m_valueList; /**< TODO: describe */ + cEXIFTag* m_lpEXIFTag; /**< TODO: describe */ + QList m_valueList; /**< TODO: describe */ /** * @brief diff --git a/cimage.cpp b/cimage.cpp new file mode 100644 index 0000000..15407ba --- /dev/null +++ b/cimage.cpp @@ -0,0 +1,142 @@ +#include "cimage.h" + +#include "libraw/libraw.h" + +#include +#include + + +cImage::cImage() : + QImage() +{ + +} + +cImage::cImage(const QSize &size, QImage::Format format) : + QImage(size, format) +{ +} + +cImage::cImage(int width, int height, QImage::Format format) : + QImage(width, height, format) +{ +} + +cImage::cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo) : + QImage(data, width, height, bytesPerLine, format, cleanupFunction, cleanupInfo) +{ +} + +cImage::cImage(const QString &fileName, const char *format) : + QImage() +{ + load(fileName, format); +} + +cImage::cImage(const QImage &image) : + QImage(image) +{ +} + +cImage::cImage(QImage &&other) : + QImage(other) +{ +} + +bool cImage::load(const QString &fileName, const char *format) +{ + QFileInfo fileInfo(fileName); + + if(!fileInfo.suffix().compare("NEF", Qt::CaseInsensitive)) + return(loadRAW(fileName)); + + if(QImage::load(fileName, format)) + return(true); + + return(loadRAW(fileName)); +} + +bool cImage::loadRAW(const QString &fileName) +{ + LibRaw rawProcessor; + libraw_processed_image_t* lpOutput; + + if(rawProcessor.open_file(fileName.toUtf8()) != LIBRAW_SUCCESS) + return(false); + + if(rawProcessor.unpack() != LIBRAW_SUCCESS) + return(false); + + rawProcessor.dcraw_process(); + lpOutput = rawProcessor.dcraw_make_mem_image(); + + const libraw_data_t& imgdata = rawProcessor.imgdata; + uchar* pixels = nullptr; + + if(lpOutput->type == LIBRAW_IMAGE_JPEG) + { + loadFromData(lpOutput->data, static_cast(lpOutput->data_size), "JPEG"); + + if(imgdata.sizes.flip != 0) + { + QTransform rotation; + int angle = 0; + + if(imgdata.sizes.flip == 3) + angle = 180; + else if(imgdata.sizes.flip == 5) + angle = -90; + else if(imgdata.sizes.flip == 6) + angle = 90; + if(angle != 0) + { + rotation.rotate(angle); + *this = transformed(rotation); + } + } + } + else + { + int numPixels = lpOutput->width * lpOutput->height; + int colorSize = lpOutput->bits / 8; + int pixelSize = lpOutput->colors * colorSize; + pixels = new uchar[numPixels * 4]; + uchar* data = lpOutput->data; + + for(int i = 0; i < numPixels; i++, data += pixelSize) + { + if(lpOutput->colors == 3) + { + pixels[i * 4] = data[2 * colorSize]; + pixels[i * 4 + 1] = data[1 * colorSize]; + pixels[i * 4 + 2] = data[0]; + } + else + { + pixels[i * 4] = data[0]; + pixels[i * 4 + 1] = data[0]; + pixels[i * 4 + 2] = data[0]; + } + } + *this = QImage(pixels, lpOutput->width, lpOutput->height, QImage::Format_RGB32); + } + + rawProcessor.recycle(); + + return(true); +} diff --git a/cimage.h b/cimage.h new file mode 100644 index 0000000..6145f5e --- /dev/null +++ b/cimage.h @@ -0,0 +1,116 @@ +#ifndef CIMAGE_H +#define CIMAGE_H + + +#include + + +/** + * @brief + * + */ +class cImage : public QImage +{ +public: + cImage(); + /** + * @brief + * + * @param size + * @param format + */ + cImage(const QSize &size, QImage::Format format); + /** + * @brief + * + * @param width + * @param height + * @param format + */ + cImage(int width, int height, QImage::Format format); + /** + * @brief + * + * @param data + * @param width + * @param height + * @param format + * @param cleanupFunction + * @param cleanupInfo + */ + cImage(uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /** + * @brief + * + * @param data + * @param width + * @param height + * @param format + * @param cleanupFunction + * @param cleanupInfo + */ + cImage(const uchar *data, int width, int height, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /** + * @brief + * + * @param data + * @param width + * @param height + * @param bytesPerLine + * @param format + * @param cleanupFunction + * @param cleanupInfo + */ + cImage(uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /** + * @brief + * + * @param data + * @param width + * @param height + * @param bytesPerLine + * @param format + * @param cleanupFunction + * @param cleanupInfo + */ + cImage(const uchar *data, int width, int height, int bytesPerLine, QImage::Format format, QImageCleanupFunction cleanupFunction = nullptr, void *cleanupInfo = nullptr); + /** + * @brief + * + * @param fileName + * @param format + */ + cImage(const QString &fileName, const char *format = nullptr); + /** + * @brief + * + * @param image + */ + cImage(const QImage &image); + /** + * @brief + * + * @param other + */ + cImage(QImage &&other); + + /** + * @brief + * + * @param fileName + * @param format + * @return bool + */ + bool load(const QString &fileName, const char *format = nullptr); + +private: + /** + * @brief + * + * @param fileName + * @return bool + */ + bool loadRAW(const QString &fileName); +}; + +#endif // CIMAGE_H diff --git a/cmainwindow.cpp b/cmainwindow.cpp index 6feb9eb..c647d65 100644 --- a/cmainwindow.cpp +++ b/cmainwindow.cpp @@ -52,6 +52,7 @@ cMainWindow::cMainWindow(cSplashScreen* lpSplashScreen, QWidget *parent) : cMainWindow::~cMainWindow() { + delete m_lpThumbnailViewModel; delete ui; } @@ -66,7 +67,8 @@ void cMainWindow::initUI() void cMainWindow::createActions() { -// setToolButtonStyle(Qt::ToolButtonFollowStyle); + setToolButtonStyle(Qt::ToolButtonFollowStyle); + // createFileActions(); // createEditActions(); // createTextActions(); @@ -76,6 +78,7 @@ void cMainWindow::createActions() // createContextActions(); + connect(ui->m_lpThumbnailView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &cMainWindow::onThumbnailSelected); // connect(ui->m_lpMainTab, &QTabWidget::currentChanged, this, &cMainWindow::onMainTabCurrentChanged); // connect(ui->m_lpMainTab, &QTabWidget::tabCloseRequested, this, &cMainWindow::onMainTabTabCloseRequested); // connect(ui->m_lpMdiArea, &QMdiArea::subWindowActivated, this, &cMainWindow::onMdiAreaSubWindowActivated); @@ -118,6 +121,7 @@ void cMainWindow::loadData() QStandardItem* lpItem = new QStandardItem(icon, m_pictureList[x]->fileName()); lpItem->setTextAlignment(Qt::AlignCenter); + lpItem->setData(QVariant::fromValue(m_pictureList[x])); m_lpThumbnailViewModel->appendRow(lpItem); } } @@ -136,3 +140,18 @@ void cMainWindow::closeEvent(QCloseEvent *event) event->accept(); } + +void cMainWindow::onThumbnailSelected(const QItemSelection& /*selection*/, const QItemSelection& /*previous*/) +{ + cToolBoxInfo* lpToolBoxInfo = static_cast(ui->m_lpToolBox->widget(0)); + + if(ui->m_lpThumbnailView->selectionModel()->selectedIndexes().count() != 1) + { + lpToolBoxInfo->setPicture(nullptr); + return; + } + + QStandardItem* lpItem = m_lpThumbnailViewModel->itemFromIndex(ui->m_lpThumbnailView->currentIndex()); + cPicture* lpPicture = lpItem->data().value(); + lpToolBoxInfo->setPicture(lpPicture); +} diff --git a/cmainwindow.h b/cmainwindow.h index 6e6608e..a95fd6f 100644 --- a/cmainwindow.h +++ b/cmainwindow.h @@ -6,10 +6,13 @@ #include "csplashscreen.h" #include "cpicture.h" +#include "ctoolboxinfo.h" + #include #include #include +#include namespace Ui { @@ -72,6 +75,9 @@ protected: \param event */ void closeEvent(QCloseEvent* event); + +private slots: + void onThumbnailSelected(const QItemSelection& selection, const QItemSelection& previous); }; #endif // CMAINWINDOW_H diff --git a/cmainwindow.ui b/cmainwindow.ui index c61f9da..42f7ec1 100644 --- a/cmainwindow.ui +++ b/cmainwindow.ui @@ -6,44 +6,112 @@ 0 0 - 646 - 516 + 927 + 682 - + - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ExtendedSelection - - - - 160 - 120 - - - - QListView::Adjust - - - - 180 - 180 - - - - QListView::IconMode - - - true + + + Qt::Horizontal + + + + 0 + 0 + + + + + 10 + 0 + + + + + 0 + 0 + + + + + + + 1 + 0 + + + + QAbstractItemView::NoEditTriggers + + + QAbstractItemView::ExtendedSelection + + + + 160 + 120 + + + + QListView::Adjust + + + + 180 + 180 + + + + QListView::IconMode + + + true + + + + + true + + + + + 0 + 0 + 87 + 609 + + + + + + + 0 + + + + + 0 + 0 + 69 + 564 + + + + Information + + + + + + + @@ -53,7 +121,7 @@ 0 0 - 646 + 927 21 @@ -74,6 +142,14 @@ + + + cToolBoxInfo + QWidget +
ctoolboxinfo.h
+ 1 +
+
diff --git a/cpicture.cpp b/cpicture.cpp index 5d84a60..d82476b 100644 --- a/cpicture.cpp +++ b/cpicture.cpp @@ -5,6 +5,7 @@ #include #include +#include cPicture::cPicture(qint32 iID, QObject *parent) : @@ -64,6 +65,12 @@ bool cPicture::fromFile(const QString& szFileName) m_focalLength35 = exif.focalLength35(); m_gps = exif.gps(); + if(!m_dateTime.isValid()) + { + QFileInfo fileInfo(m_szFileName); + setDateTime(fileInfo.birthTime()); + } + return(true); } diff --git a/cpicture.h b/cpicture.h index eba44bf..8b6ddee 100644 --- a/cpicture.h +++ b/cpicture.h @@ -42,75 +42,310 @@ public: bool toDB(); void setID(const qint32& id); + /** + * @brief + * + * @return qint32 + */ qint32 id(); + /** + * @brief + * + * @param imageWidth + */ void setImageWidth(const qint32& imageWidth); + /** + * @brief + * + * @return qint32 + */ qint32 imageWidth(); + /** + * @brief + * + * @param imageHeight + */ void setImageHeight(const qint32& imageHeight); + /** + * @brief + * + * @return qint32 + */ qint32 imageHeight(); + /** + * @brief + * + * @param cameraMake + */ void setCameraMake(const QString& cameraMake); + /** + * @brief + * + * @return QString + */ QString cameraMake(); + /** + * @brief + * + * @param cameraModel + */ void setCameraModel(const QString& cameraModel); + /** + * @brief + * + * @return QString + */ QString cameraModel(); + /** + * @brief + * + * @param dateTime + */ void setDateTime(const QDateTime& dateTime); + /** + * @brief + * + * @return QDateTime + */ QDateTime dateTime(); + /** + * @brief + * + * @param fNumber + */ void setFNumber(const QString& fNumber); + /** + * @brief + * + * @return QString + */ QString fNumber(); + /** + * @brief + * + * @param iso + */ void setISO(const qint32& iso); + /** + * @brief + * + * @return qint32 + */ qint32 iso(); + /** + * @brief + * + * @param flash + */ void setFlash(const QString& flash); + /** + * @brief + * + * @return QString + */ QString flash(); + /** + * @brief + * + * @param flashID + */ void setFlashID(const qint32& flashID); + /** + * @brief + * + * @return qint32 + */ qint32 flashID(); + /** + * @brief + * + * @param focalLength + */ void setFocalLength(const qreal& focalLength); + /** + * @brief + * + * @return qreal + */ qreal focalLength(); + /** + * @brief + * + * @param lensMake + */ void setLensMake(const QString& lensMake); + /** + * @brief + * + * @return QString + */ QString lensMake(); + /** + * @brief + * + * @param lensModel + */ void setLensModel(const QString& lensModel); + /** + * @brief + * + * @return QString + */ QString lensModel(); + /** + * @brief + * + * @param exposureTime + */ void setExposureTime(const QString& exposureTime); + /** + * @brief + * + * @return QString + */ QString exposureTime(); + /** + * @brief + * + * @param exposureBias + */ void setExposureBias(const qint32& exposureBias); + /** + * @brief + * + * @return qint32 + */ qint32 exposureBias(); + /** + * @brief + * + * @param exifVersion + */ void setExifVersion(const QString& exifVersion); + /** + * @brief + * + * @return QString + */ QString exifVersion(); + /** + * @brief + * + * @param dateTimeOriginal + */ void setDateTimeOriginal(const QDateTime& dateTimeOriginal); + /** + * @brief + * + * @return QDateTime + */ QDateTime dateTimeOriginal(); + /** + * @brief + * + * @param dateTimeDigitized + */ void setDateTimeDigitized(const QDateTime& dateTimeDigitized); + /** + * @brief + * + * @return QDateTime + */ QDateTime dateTimeDigitized(); + /** + * @brief + * + * @param whiteBalance + */ void setWhiteBalance(const qint32& whiteBalance); + /** + * @brief + * + * @return qint32 + */ qint32 whiteBalance(); + /** + * @brief + * + * @param focalLength35 + */ void setFocalLength35(const qreal& focalLength35); + /** + * @brief + * + * @return qreal + */ qreal focalLength35(); + /** + * @brief + * + * @param gps + */ void setGPS(const QString& gps); + /** + * @brief + * + * @return QString + */ QString gps(); + /** + * @brief + * + * @param fileName + */ void setFileName(const QString& fileName); + /** + * @brief + * + * @return QString + */ QString fileName(); + /** + * @brief + * + * @param filePath + */ void setFilePath(const QString& filePath); + /** + * @brief + * + * @return QString + */ QString filePath(); + /** + * @brief + * + * @param thumbnail + */ void setThumbnail(const QImage& thumbnail); + /** + * @brief + * + * @return QImage + */ QImage thumbnail(); signals: @@ -163,7 +398,19 @@ public: bool load(); + /** + * @brief + * + * @param iID + * @return cPicture + */ cPicture* add(qint32 iID = -1); + /** + * @brief + * + * @param iID + * @return cPicture + */ cPicture* find(qint32 iID); signals: diff --git a/cpicturelibrary.h b/cpicturelibrary.h index b04e858..a125406 100644 --- a/cpicturelibrary.h +++ b/cpicturelibrary.h @@ -7,10 +7,19 @@ #include +/** + * @brief + * + */ class cPictureLibrary : public QObject { Q_OBJECT public: + /** + * @brief + * + * @param parent + */ explicit cPictureLibrary(QObject *parent = nullptr); /*! diff --git a/csplashscreen.h b/csplashscreen.h index 5c2477c..66e2ff3 100644 --- a/csplashscreen.h +++ b/csplashscreen.h @@ -7,20 +7,44 @@ #include +/** + * @brief + * + */ class cSplashScreen : public QSplashScreen { public: cSplashScreen(const QPixmap& pixmap, QFont &font); + /** + * @brief + * + * @param painter + */ virtual void drawContents(QPainter *painter); + /** + * @brief + * + * @param message + */ void showStatusMessage(const QString &message); + /** + * @brief + * + * @param message + */ void addStatusMessage(const QString &message); + /** + * @brief + * + * @param rect + */ void setMessageRect(QRect rect); private: - QTextDocument m_textDocument; - QString m_szMessage; - QRect m_rect; + QTextDocument m_textDocument; /**< TODO: describe */ + QString m_szMessage; /**< TODO: describe */ + QRect m_rect; /**< TODO: describe */ }; #endif // CSPLASHSCREEN_H diff --git a/ctoolboxinfo.cpp b/ctoolboxinfo.cpp new file mode 100644 index 0000000..c9e42fc --- /dev/null +++ b/ctoolboxinfo.cpp @@ -0,0 +1,32 @@ +#include "ctoolboxinfo.h" +#include "ui_ctoolboxinfo.h" + + +cToolBoxInfo::cToolBoxInfo(QWidget *parent) : + QWidget(parent), + ui(new Ui::cToolBoxInfo) +{ + ui->setupUi(this); +} + +cToolBoxInfo::~cToolBoxInfo() +{ + delete ui; +} + +void cToolBoxInfo::setPicture(cPicture* lpPicture) +{ + if(!lpPicture) + { + ui->m_lpFileName->setText("---"); + ui->m_lpDate->setText("---"); + ui->m_lpSize->setText("---"); + ui->m_lpCamera->setText("---"); + return; + } + + ui->m_lpFileName->setText(lpPicture->fileName()); + ui->m_lpDate->setText(lpPicture->dateTime().toString()); + ui->m_lpSize->setText(QString("%1x%2").arg(lpPicture->imageWidth()).arg(lpPicture->imageHeight())); + ui->m_lpCamera->setText(QString("%1 %2").arg(lpPicture->cameraMake()).arg(lpPicture->cameraModel())); +} diff --git a/ctoolboxinfo.h b/ctoolboxinfo.h new file mode 100644 index 0000000..301609f --- /dev/null +++ b/ctoolboxinfo.h @@ -0,0 +1,27 @@ +#ifndef CTOOLBOXINFO_H +#define CTOOLBOXINFO_H + + +#include "cpicture.h" + +#include + + +namespace Ui { +class cToolBoxInfo; +} + +class cToolBoxInfo : public QWidget +{ + Q_OBJECT + +public: + explicit cToolBoxInfo(QWidget *parent = nullptr); + ~cToolBoxInfo(); + + void setPicture(cPicture* lpPicture); +private: + Ui::cToolBoxInfo* ui; +}; + +#endif // CTOOLBOXINFO_H diff --git a/ctoolboxinfo.ui b/ctoolboxinfo.ui new file mode 100644 index 0000000..2f8adad --- /dev/null +++ b/ctoolboxinfo.ui @@ -0,0 +1,115 @@ + + + cToolBoxInfo + + + + 0 + 0 + 261 + 163 + + + + Form + + + + + + + + size: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + filename: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + date: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + camera: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + true + + + + + + + + + + true + + + + + + + + + + + + + + + + + true + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/pictureLibrary.pro b/pictureLibrary.pro index b646649..ba7f5e9 100644 --- a/pictureLibrary.pro +++ b/pictureLibrary.pro @@ -20,25 +20,23 @@ TEMPLATE = app win32-msvc* { contains(QT_ARCH, i386) { message("msvc 32-bit") - INCLUDEPATH += C:/dev/3rdParty/exiv2/include - LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll } else { message("msvc 64-bit") - INCLUDEPATH += C:/dev/3rdParty/exiv2/include - LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll } } win32-g++ { message("mingw") - INCLUDEPATH += C:/dev/3rdParty/exiv2/include - LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll + INCLUDEPATH += C:\dev\3rdParty\exiv2\include C:\dev\3rdParty\libraw + LIBS += -LC:\dev\3rdParty\exiv2\lib -lexiv2.dll -LC:\dev\3rdParty\libraw\lib -lraw -lws2_32 } unix { message("*nix") } +QMAKE_CXXFLAGS += -DLIBRAW_NODLL -DLIBRAW_NOTHREADS + # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the @@ -60,7 +58,9 @@ SOURCES += \ csplashscreen.cpp \ common.cpp \ cpicturelibrary.cpp \ - cpicture.cpp + cpicture.cpp \ + cimage.cpp \ + ctoolboxinfo.cpp HEADERS += \ cmainwindow.h \ @@ -68,10 +68,13 @@ HEADERS += \ csplashscreen.h \ common.h \ cpicturelibrary.h \ - cpicture.h + cpicture.h \ + cimage.h \ + ctoolboxinfo.h FORMS += \ - cmainwindow.ui + cmainwindow.ui \ + ctoolboxinfo.ui # Default rules for deployment. qnx: target.path = /tmp/$${TARGET}/bin