34 #include "mapContainer.h" |
34 #include "mapContainer.h" |
35 |
35 |
36 #include <QPushButton> |
36 #include <QPushButton> |
37 #include <QBuffer> |
37 #include <QBuffer> |
38 #include <QUuid> |
38 #include <QUuid> |
|
39 #include <QBitmap> |
|
40 #include <QPainter> |
|
41 #include <QLinearGradient> |
|
42 #include <QColor> |
39 |
43 |
40 HWMapContainer::HWMapContainer(QWidget * parent) : |
44 HWMapContainer::HWMapContainer(QWidget * parent) : |
41 QWidget(parent), mainLayout(this) |
45 QWidget(parent), mainLayout(this) |
42 { |
46 { |
43 imageButt=new QPushButton(this); |
47 imageButt=new QPushButton(this); |
|
48 imageButt->setMaximumSize(256, 128); |
44 imageButt->setFlat(true); |
49 imageButt->setFlat(true); |
45 imageButt->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); |
50 imageButt->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); |
46 mainLayout.addWidget(imageButt); |
51 mainLayout.addWidget(imageButt); |
47 connect(imageButt, SIGNAL(clicked()), this, SLOT(changeImage())); |
52 connect(imageButt, SIGNAL(clicked()), this, SLOT(changeImage())); |
48 changeImage(); |
53 changeImage(); |
49 } |
54 } |
50 |
55 |
51 void HWMapContainer::setImage(const QImage newImage) |
56 void HWMapContainer::setImage(const QImage newImage) |
52 { |
57 { |
53 // unfortunately QPixmap::fromImage doesn't work |
58 QPixmap px(256, 128); |
54 // with this image in current (4.1.4) version of QT |
59 QPixmap pxres(256, 128); |
55 QByteArray ba; |
60 QPainter p(&pxres); |
56 QBuffer buffer(&ba); |
|
57 buffer.open(QIODevice::ReadWrite); |
|
58 newImage.save(&buffer, "XBM"); |
|
59 QPixmap px; |
|
60 px.loadFromData(buffer.data(), "XBM"); |
|
61 |
61 |
62 imageButt->setIcon(px); |
62 px.fill(Qt::yellow); |
63 imageButt->setIconSize(QSize(128, 256)); |
63 QBitmap bm = QBitmap::fromImage(newImage); |
|
64 px.setMask(bm); |
|
65 |
|
66 QLinearGradient linearGrad(QPoint(128, 0), QPoint(128, 128)); |
|
67 linearGrad.setColorAt(0, QColor(0, 0, 192)); |
|
68 linearGrad.setColorAt(1, QColor(0, 0, 64)); |
|
69 p.fillRect(QRect(0, 0, 256, 128), linearGrad); |
|
70 p.drawPixmap(QPoint(0, 0), px); |
|
71 |
|
72 |
|
73 imageButt->setIcon(pxres); |
|
74 imageButt->setIconSize(QSize(256, 128)); |
64 } |
75 } |
65 |
76 |
66 void HWMapContainer::changeImage() |
77 void HWMapContainer::changeImage() |
67 { |
78 { |
68 pMap=new HWMap(); |
79 pMap=new HWMap(); |