/[projects]/infoscreen/pictureview.cpp
ViewVC logotype

Contents of /infoscreen/pictureview.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 707 - (show annotations) (download)
Wed May 5 08:38:49 2010 UTC (14 years ago) by torben
File size: 1517 byte(s)
centre image on the screen, and fill background with black
1 #include "pictureview.h"
2
3 #include <QPainter>
4 #include <QDebug>
5
6 #include "httpwrapper.h"
7
8 PictureView::PictureView(QWidget* parent)
9 : QWidget(parent)
10 {
11 }
12
13
14 // TODO: if the picture doesn't fill the screen, fill the canvas with black before drawing the picture and
15 // place the image mid-screen
16 void PictureView::paintEvent ( QPaintEvent* event)
17 {
18 Q_UNUSED(event);
19
20 QSize s = this->size();
21
22 QBrush blackBrush(Qt::black);
23
24 QPainter painter(this);
25 painter.fillRect( QRect(0,0,s.width(), s.height()), blackBrush);
26
27 int x = 0;
28 int y = 0;
29
30 if (image.width() < s.width() ) {
31 x = (s.width() - image.width()) / 2;
32 }
33 if (image.height() < s.height() ) {
34 y = (s.height() - image.height()) / 2;
35 }
36
37
38 painter.drawPixmap(x,y,image);
39 painter.end();
40 }
41
42 void PictureView::loadFromUrl(QString source)
43 {
44 QMap<QString, QPixmap>::iterator it = map.find(source);
45 if (it != map.end() ) {
46 image = it.value();
47 this->repaint();
48 } else {
49 qDebug() << "Loading file " << source;
50
51 QPixmap pixmap;
52 if (source.at(0) == '/') { //local file
53 pixmap = QPixmap(source);
54 } else {
55 QByteArray data = HttpWrapper::getSyncData(source);
56 pixmap.loadFromData( data );
57 }
58
59 QPixmap scaledImage = pixmap.scaled(size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
60
61 image = scaledImage;
62 this->repaint();
63
64 map.insert(source, scaledImage);
65
66 }
67 }

  ViewVC Help
Powered by ViewVC 1.1.20