6abcd75f4fb74c753fcc33240fd21476c51ced4f
[photoenhancer] / src / core / baseui / workspace.cpp
1 #include "workspace.h"
2 #include <QPainter>
3 #include <QKeyEvent>
4
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
22
23 Workspace::Workspace(QWidget *parent) :
24     QWidget(parent)
25 {
26     qRegisterMetaType<QImage>("QImage &" );
27     mImageLoader=new ImageLoader();
28     connect(mImageLoader,SIGNAL(ready(QImage&)),this,SLOT(onImageLoaded(QImage&)));
29 }
30 void  Workspace::loadImage(QString fileName)
31 {
32    mImageLoader->fetchImage(fileName);
33 }
34 void Workspace::onImageLoaded(QImage &image)
35 {
36      mImage=image.copy();
37      update();
38      setMaximumSize(mImage.size());
39      setMinimumSize(mImage.size());
40
41
42 }
43 void Workspace::keyPressEvent(QKeyEvent *e)
44 {
45     qDebug()<<e->key();
46     if(e->key()==Qt::Key_Z)
47         zoomIn();
48     else if(e->key()==Qt::Key_X)
49         zoomOut();
50 }
51
52 void  Workspace::zoomIn()
53 {
54     mImage=mImage.scaledToHeight(mImage.height()*1.5).copy(rect());
55     mImage=mImage.scaledToWidth(mImage.width()*1.5).copy(rect());
56     update();
57 }
58 void  Workspace::zoomOut()
59 {
60     mImage=mImage.scaledToHeight(mImage.height()*0.5);
61     mImage=mImage.scaledToWidth(mImage.width()*0.5);
62     update();
63 }
64
65 void  Workspace::paintEvent(QPaintEvent *p)
66 {
67     QPainter painter(this);
68
69     int resultX=(rect().width()-mImage.width())/2;
70     int resultY=(rect().height()-mImage.height())/2;
71     painter.drawImage(QPoint(resultX,resultY),mImage);
72 }