This repository has been archived by the owner on Oct 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgalleryphotoviewer.cpp
100 lines (95 loc) · 3.29 KB
/
galleryphotoviewer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "galleryphotoviewer.h"
#include "ui_galleryphotoviewer.h"
#include "QGraphicsPathItem"
#include "QDebug"
GalleryPhotoViewer::GalleryPhotoViewer(unsigned int imageIndex, int totalImageCount,QString previewImagePath,QWidget *parent) :
QDialog(parent),
ui(new Ui::GalleryPhotoViewer)
{
this->totalImageCount = totalImageCount;
this->previewImagePath = previewImagePath;
ui->setupUi(this);
this->imageIndex = imageIndex;
QImage image(previewImagePath);
fullResImage = image;
if(image.size().width() > 1280 || image.size().height() > 720) //scalling images down if necessary
image = image.scaled(1280, 720, Qt::KeepAspectRatio);
lowResImage = image;
pixmapImage = new QPixmap;
*pixmapImage = QPixmap::fromImage(image);
viewerScene = new QGraphicsScene;
viewerScene->addPixmap(*pixmapImage);
ui->graphicsView->setScene(viewerScene);
}
GalleryPhotoViewer::~GalleryPhotoViewer()
{
delete ui;
delete viewerScene;
delete pixmapImage;
}
void GalleryPhotoViewer::on_nextButton_clicked()
{
//moving to the next image in gallery
if(imageIndex < (totalImageCount-1))
{
isZoomEnabled = false;
imageIndex++;
previewImagePath.clear();
previewImagePath.append("Images/");
previewImagePath.append(QString::number(imageIndex));
previewImagePath.append(".jpg");
QImage image(previewImagePath);
fullResImage = image;
if(image.size().width() > 1280 || image.size().height() > 720)
image = image.scaled(1280, 720, Qt::KeepAspectRatio);
lowResImage = image;
*pixmapImage = QPixmap::fromImage(image);
delete viewerScene;
viewerScene = new QGraphicsScene;
viewerScene->addPixmap(*pixmapImage);
ui->graphicsView->setScene(viewerScene);
}
}
void GalleryPhotoViewer::on_previousButton_clicked()
{
//moving to the previous image
if(imageIndex > 0)
{
isZoomEnabled = false;
imageIndex--;
previewImagePath.clear();
previewImagePath.append("Images/");
previewImagePath.append(QString::number(imageIndex));
previewImagePath.append(".jpg");
QImage image(previewImagePath);
fullResImage = image;
if(image.size().width() > 1280 || image.size().height() > 720)
image = image.scaled(1280, 720, Qt::KeepAspectRatio);
lowResImage = image;
*pixmapImage = QPixmap::fromImage(image);
delete viewerScene;
viewerScene = new QGraphicsScene;
viewerScene->addPixmap(*pixmapImage);
ui->graphicsView->setScene(viewerScene);
}
}
void GalleryPhotoViewer::on_zoomButton_clicked()
{
isZoomEnabled = !isZoomEnabled;
if(isZoomEnabled)
{
*pixmapImage = QPixmap::fromImage(fullResImage);
delete viewerScene;
viewerScene = new QGraphicsScene; //creating a new scene every time someone zooms in or out probably isn't a great idea... but it centers the image
viewerScene->addPixmap(*pixmapImage);
ui->graphicsView->setScene(viewerScene);
}
else
{
*pixmapImage = QPixmap::fromImage(lowResImage);
delete viewerScene;
viewerScene = new QGraphicsScene;
viewerScene->addPixmap(*pixmapImage);
ui->graphicsView->setScene(viewerScene);
}
}