void Screenshot::refresh(const QPixmap &pixmap) {
qDebug("refresh");
- screenshotPixmap = pixmap;
+ this->frameBuf = pixmap;
ratioStr = "100%";
+ sliderLevel = 3;
slider->setValue(3);
scene->clear();
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)));
view->setScene(scene);
view->setMouseTracking(true);
- QScrollArea* area = new QScrollArea(this);
+ QScrollArea *area = new QScrollArea(this);
area->setFixedSize(screenshotPixmap.width(), screenshotPixmap.height());
view->setCornerWidget(area);
view->verticalScrollBar()->setValue(1);
Screenshot::~Screenshot() {
qDebug("distructor");
- ((ContextMenu*)this->parent())->screenshotDialog = NULL;
+ ((ContextMenu *)this->parent())->screenshotDialog = NULL;
}
#include "screenshotview.h"
#include "screenshot.h"
+#include <QtCore/qmath.h>
-ScreenshotView::ScreenshotView(QGraphicsScene *scene, QWidget* parent) :
+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);
}
}