screenshot: Set the coordinates in accordance with the scale. 57/29957/1
authorMunkyu Im <munkyu.im@samsung.com>
Wed, 5 Nov 2014 04:32:48 +0000 (13:32 +0900)
committerMunkyu Im <munkyu.im@samsung.com>
Thu, 6 Nov 2014 05:43:21 +0000 (14:43 +0900)
Adjust the position of x and y on screenshot image.

Change-Id: I32040fe1160c1b17d854f0545539ca4ee8b79485
Signed-off-by: Munkyu Im <munkyu.im@samsung.com>
tizen/src/ui/menu/screenshot.cpp
tizen/src/ui/menu/screenshot.h
tizen/src/ui/menu/screenshotview.cpp
tizen/src/ui/menu/screenshotview.h

index 062d1d1670fd74bbbb8a00a5c1ffcdf337b2371c..6a05f38b6d6cad4a685485c71c207695d394bb72 100644 (file)
@@ -88,9 +88,10 @@ int Screenshot::getSliderLevel() {
 void Screenshot::refresh(const QPixmap &pixmap) {
     qDebug("refresh");
 
-    screenshotPixmap = pixmap;
+    this->frameBuf = pixmap;
 
     ratioStr = "100%";
+    sliderLevel = 3;
     slider->setValue(3);
     scene->clear();
 
@@ -148,6 +149,7 @@ void Screenshot::makeWidgets() {
     slider = new QSlider(Qt::Horizontal, this);
     slider->setRange(0, 5);
     slider->setValue(3);
+    sliderLevel = 3;
     slider->setFixedWidth(100);
     slider->setToolTip("100%");
     connect(slider, SIGNAL(valueChanged(int)), this, SLOT(scaleChanged(int)));
@@ -190,7 +192,7 @@ void Screenshot::setImage() {
     view->setScene(scene);
     view->setMouseTracking(true);
 
-    QScrollAreaarea = new QScrollArea(this);
+    QScrollArea *area = new QScrollArea(this);
     area->setFixedSize(screenshotPixmap.width(), screenshotPixmap.height());
     view->setCornerWidget(area);
     view->verticalScrollBar()->setValue(1);
@@ -232,5 +234,5 @@ void Screenshot::showEvent(QShowEvent *event) {
 
 Screenshot::~Screenshot() {
     qDebug("distructor");
-    ((ContextMenu*)this->parent())->screenshotDialog = NULL;
+    ((ContextMenu *)this->parent())->screenshotDialog = NULL;
 }
index e7f1e2240c23e07afd47a970962bae41161582b4..ff111af2f61dedcc246709933dd8e744b6c18e60 100644 (file)
@@ -40,7 +40,9 @@ public:
     ~Screenshot();
     void setStatusBar(qreal posX, qreal poxY);
     int getSliderLevel();
+    int getRotateAngle();
     QString getRatio();
+    QPixmap frameBuf;
 
 public slots:
     void refresh(const QPixmap &);
@@ -59,13 +61,10 @@ private:
     void setImage();
     void setRatio(int level);
     void updateStatusBar();
-    int getRotateAngle();
-
 
     QString posX;
     QString posY;
     QGridLayout *gridlayout;
-    QPixmap pixmap;
     QGraphicsView* view;
     int sliderLevel;
     QLabel *label;
index 907d857870439b25dc9219f57e0a784f26e782a8..681d1d1d528c526b3c86ac60ca06da51d3ce6a6e 100644 (file)
 
 #include "screenshotview.h"
 #include "screenshot.h"
+#include <QtCore/qmath.h>
 
-ScreenshotView::ScreenshotView(QGraphicsScene *scene, QWidgetparent) :
+ScreenshotView::ScreenshotView(QGraphicsScene *scene, QWidget *parent) :
         QGraphicsView(scene, parent) {
 }
 
 void ScreenshotView::mouseMoveEvent(QMouseEvent *event) {
+    int max_x;
+    int max_y;
+    Screenshot *screenshot = (Screenshot *)(this->parent());
     QPointF fixedPos = this->mapToScene(event->pos());
+    int sliderLevel = screenshot->getSliderLevel();
+
+    switch (screenshot->getRotateAngle()) {
+    case 90:
+    case 270:
+        max_x = screenshot->frameBuf.size().height();
+        max_y = screenshot->frameBuf.size().width();
+        break;
+    case 0:
+    case 180:
+    default:
+        max_x = screenshot->frameBuf.size().width();
+        max_y = screenshot->frameBuf.size().height();
+        break;
+    }
+
+    qDebug("sliderLevel: %d", sliderLevel);
+    int x;
+    int y;
+    float expo = 0;
+    switch (sliderLevel) {
+    case 0:
+        expo = 3;
+        break;
+    case 1:
+        expo = 2;
+        break;
+    case 2:
+        expo = 1;
+        break;
+    case 3:
+        expo = 0;
+        break;
+    case 4:
+        expo = -1;
+        break;
+    case 5:
+        expo = -2;
+        break;
+    default:
+        break;
+    }
+
+    x = (int)(fixedPos.x() * pow(2, expo));
+    y = (int)(fixedPos.y() * pow(2, expo));
+    if(x > max_x) {
+        x = max_x;
+    }
+    if(y > max_y) {
+        y = max_y;
+    }
+
     if (scene()->sceneRect().contains(fixedPos)) {
-        QPixmap pixmap = QPixmap();
-        //QRgb rgbval = pixmap.toImage().pixel(fixedPos.x(), fixedPos.y());
-        Screenshot *screenshot = ((Screenshot *) this->parent());
-        screenshot->setStatusBar(fixedPos.x(), fixedPos.y());
+        screenshot->setStatusBar(x, y);
     }
 }
 
index a500dfbe0d98309c90ca4b8dabe341952b42ec0b..fda6a0b66213a3bee943a85cce3db4c204c27ad5 100644 (file)
@@ -35,7 +35,7 @@
 class ScreenshotView: public QGraphicsView {
 
 public:
-    ScreenshotView(QGraphicsScene *scene, QWidgetparent);
+    ScreenshotView(QGraphicsScene *scene, QWidget *parent);
     ~ScreenshotView();
 
 protected: