porymap/src/ui/currentselectedmetatilespixmapitem.cpp

39 lines
1.4 KiB
C++
Raw Normal View History

2018-09-27 00:30:05 +01:00
#include "currentselectedmetatilespixmapitem.h"
#include "imageproviders.h"
#include <QPainter>
2022-09-06 02:51:31 +01:00
QPixmap drawMetatileSelection(MetatileSelection selection, Map *map) {
int width = selection.dimensions.x() * 16;
int height = selection.dimensions.y() * 16;
2018-09-27 00:30:05 +01:00
QImage image(width, height, QImage::Format_RGBA8888);
image.fill(QColor(0, 0, 0, 0));
2018-09-27 00:30:05 +01:00
QPainter painter(&image);
for (int i = 0; i < selection.dimensions.x(); i++) {
for (int j = 0; j < selection.dimensions.y(); j++) {
2018-09-27 00:30:05 +01:00
int x = i * 16;
int y = j * 16;
QPoint metatile_origin = QPoint(x, y);
int index = j * selection.dimensions.x() + i;
MetatileSelectionItem item = selection.metatileItems.at(index);
if (item.enabled) {
QImage metatile_image = getMetatileImage(
item.metatileId,
map->layout->tileset_primary,
map->layout->tileset_secondary,
map->metatileLayerOrder,
map->metatileLayerOpacity);
painter.drawImage(metatile_origin, metatile_image);
}
2018-09-27 00:30:05 +01:00
}
}
painter.end();
2022-09-06 02:51:31 +01:00
return QPixmap::fromImage(image);
}
void CurrentSelectedMetatilesPixmapItem::draw() {
MetatileSelection selection = metatileSelector->getMetatileSelection();
setPixmap(drawMetatileSelection(selection, this->map));
2018-09-27 00:30:05 +01:00
}