Fix small UI bugs in tileset editor

This commit is contained in:
Marcus Huderle 2018-10-02 19:01:21 -05:00
parent 0c7ecebe0b
commit a77b76988b
4 changed files with 35 additions and 5 deletions

View file

@ -70,7 +70,14 @@
</spacer> </spacer>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QGraphicsView" name="graphicsView_Metatiles"/> <widget class="QGraphicsView" name="graphicsView_Metatiles">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
</widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
@ -239,7 +246,14 @@
</spacer> </spacer>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QGraphicsView" name="graphicsView_Tiles"/> <widget class="QGraphicsView" name="graphicsView_Tiles">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
</widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<spacer name="verticalSpacer_4"> <spacer name="verticalSpacer_4">

View file

@ -83,8 +83,15 @@ QImage getTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTi
QImage getColoredTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTileset, int paletteId) { QImage getColoredTileImage(uint16_t tile, Tileset *primaryTileset, Tileset *secondaryTileset, int paletteId) {
QList<QRgb> palette = Tileset::getPalette(paletteId, primaryTileset, secondaryTileset); QList<QRgb> palette = Tileset::getPalette(paletteId, primaryTileset, secondaryTileset);
QImage tileImage = getTileImage(tile, primaryTileset, secondaryTileset); QImage tileImage = getTileImage(tile, primaryTileset, secondaryTileset);
for (int i = 0; i < 16; i++) { if (tileImage.isNull()) {
tileImage.setColor(i, palette.at(i)); tileImage = QImage(16, 16, QImage::Format_RGBA8888);
QPainter painter(&tileImage);
painter.fillRect(0, 0, 16, 16, palette.at(0));
} else {
for (int i = 0; i < 16; i++) {
tileImage.setColor(i, palette.at(i));
}
} }
return tileImage; return tileImage;
} }

View file

@ -80,6 +80,10 @@ void SelectablePixmapItem::updateSelection(int x, int y)
QPoint SelectablePixmapItem::getCellPos(QPointF pos) QPoint SelectablePixmapItem::getCellPos(QPointF pos)
{ {
if (pos.x() < 0) pos.setX(0);
if (pos.y() < 0) pos.setY(0);
if (pos.x() >= this->pixmap().width()) pos.setX(this->pixmap().width() - 1);
if (pos.y() >= this->pixmap().height()) pos.setY(this->pixmap().height() - 1);
return QPoint(static_cast<int>(pos.x()) / this->cellWidth, return QPoint(static_cast<int>(pos.x()) / this->cellWidth,
static_cast<int>(pos.y()) / this->cellHeight); static_cast<int>(pos.y()) / this->cellHeight);
} }

View file

@ -1,7 +1,6 @@
#include "tileseteditor.h" #include "tileseteditor.h"
#include "ui_tileseteditor.h" #include "ui_tileseteditor.h"
#include "imageproviders.h" #include "imageproviders.h"
#include <QDebug>
TilesetEditor::TilesetEditor(Project *project, QString primaryTilesetLabel, QString secondaryTilesetLabel, QWidget *parent) : TilesetEditor::TilesetEditor(Project *project, QString primaryTilesetLabel, QString secondaryTilesetLabel, QWidget *parent) :
QMainWindow(parent), QMainWindow(parent),
@ -54,6 +53,11 @@ void TilesetEditor::setTilesets(QString primaryTilesetLabel, QString secondaryTi
this->metatileLayersItem->setTilesets(this->primaryTileset, this->secondaryTileset); this->metatileLayersItem->setTilesets(this->primaryTileset, this->secondaryTileset);
this->metatileSelector->select(this->metatileSelector->getSelectedMetatile()); this->metatileSelector->select(this->metatileSelector->getSelectedMetatile());
this->drawSelectedTile(); this->drawSelectedTile();
this->ui->graphicsView_Tiles->setSceneRect(0, 0, this->tileSelector->pixmap().width() + 2, this->tileSelector->pixmap().height() + 2);
this->ui->graphicsView_Tiles->setFixedSize(this->tileSelector->pixmap().width() + 2, this->tileSelector->pixmap().height() + 2);
this->ui->graphicsView_Metatiles->setSceneRect(0, 0, this->metatileSelector->pixmap().width() + 2, this->metatileSelector->pixmap().height() + 2);
this->ui->graphicsView_Metatiles->setFixedSize(this->metatileSelector->pixmap().width() + 2, this->metatileSelector->pixmap().height() + 2);
} }
void TilesetEditor::initMetatileSelector() void TilesetEditor::initMetatileSelector()
@ -203,4 +207,5 @@ void TilesetEditor::on_actionSave_Tileset_triggered()
{ {
this->project->saveTilesets(this->primaryTileset, this->secondaryTileset); this->project->saveTilesets(this->primaryTileset, this->secondaryTileset);
emit this->tilesetsSaved(this->primaryTileset->name, this->secondaryTileset->name); emit this->tilesetsSaved(this->primaryTileset->name, this->secondaryTileset->name);
this->ui->statusbar->showMessage(QString("Saved primary and secondary Tilesets!"), 5000);
} }