58e527c71d24d3949734c0c9f89cdb225cd77e82
[photoenhancer] / src / core / baseui / workspace.cpp
1 #include "workspace.h"
2 #include <QPainter>
3 #include <QKeyEvent>
4 #include <QTransform>
5 #include <QDebug>
6
7 ImageLoader::ImageLoader()
8 {
9     url=QString();
10 }
11 void ImageLoader::fetchImage(QString path)
12 {
13     url=path;
14     start();
15 }
16 void ImageLoader::run()
17 {
18     QImage image(url);
19     emit ready(image);
20 }
21 void Workspace::testEffect()
22 {
23
24
25 }
26
27 Workspace::Workspace(QWidget *parent) :
28     QWidget(parent)
29 {
30     qRegisterMetaType<QImage>("QImage &" );
31     mImageLoader=new ImageLoader();
32     connect(mImageLoader,SIGNAL(ready(QImage&)),this,SLOT(onImageLoaded(QImage&)));
33 }
34 void  Workspace::loadImage(QString fileName)
35 {
36    mImageLoader->fetchImage(fileName);
37 }
38 void Workspace::onImageLoaded(QImage &image)
39 {
40      mImage=image.copy();
41      testEffect();
42      update();
43
44      setMaximumSize(mImage.size());
45      setMinimumSize(mImage.size());
46
47
48 }
49 void Workspace::keyPressEvent(QKeyEvent *e)
50 {
51     qDebug()<<e->key();
52     if(e->key()==Qt::Key_Z)
53         zoomIn();
54     else if(e->key()==Qt::Key_X)
55         zoomOut();
56 }
57
58 void  Workspace::zoomIn()
59 {
60     mImage=mImage.scaledToHeight(mImage.height()*1.5).copy(rect());
61     mImage=mImage.scaledToWidth(mImage.width()*1.5).copy(rect());
62     update();
63 }
64 void  Workspace::zoomOut()
65 {
66     mImage=mImage.scaledToHeight(mImage.height()*0.5);
67     mImage=mImage.scaledToWidth(mImage.width()*0.5);
68     update();
69 }
70
71 void  Workspace::paintEvent(QPaintEvent *p)
72 {
73     QPainter painter(this);
74
75     int resultX=(rect().width()-mImage.width())/2;
76     int resultY=(rect().height()-mImage.height())/2;
77     painter.drawImage(QPoint(resultX,resultY),mImage);
78 }