QTfrontend/mapContainer.cpp
changeset 182 0ca777e942d6
parent 172 5294ada3910b
child 183 57c2ef19f719
equal deleted inserted replaced
181:7dfffbf0c7f6 182:0ca777e942d6
    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();