fix scene scaling for metatile selection, replace deprecated setMatrix with setTransform

This commit is contained in:
garak 2020-08-15 19:30:46 -04:00
parent 62e86b3c94
commit 2e077b45c7
3 changed files with 20 additions and 18 deletions

View file

@ -125,7 +125,7 @@ public:
MetatileSelector *metatile_selector_item = nullptr; MetatileSelector *metatile_selector_item = nullptr;
BorderMetatilesPixmapItem *selected_border_metatiles_item = nullptr; BorderMetatilesPixmapItem *selected_border_metatiles_item = nullptr;
CurrentSelectedMetatilesPixmapItem *scene_current_metatile_selection_item = nullptr; CurrentSelectedMetatilesPixmapItem *current_metatile_selection_item = nullptr;
MovementPermissionsSelector *movement_permissions_selector_item = nullptr; MovementPermissionsSelector *movement_permissions_selector_item = nullptr;
QList<DraggablePixmapItem*> *events = nullptr; QList<DraggablePixmapItem*> *events = nullptr;

View file

@ -1286,20 +1286,20 @@ void Editor::displayBorderMetatiles() {
} }
void Editor::displayCurrentMetatilesSelection() { void Editor::displayCurrentMetatilesSelection() {
if (scene_current_metatile_selection_item && scene_current_metatile_selection_item->scene()) { if (current_metatile_selection_item && current_metatile_selection_item->scene()) {
scene_current_metatile_selection_item->scene()->removeItem(scene_current_metatile_selection_item); current_metatile_selection_item->scene()->removeItem(current_metatile_selection_item);
delete scene_current_metatile_selection_item; delete current_metatile_selection_item;
} }
scene_current_metatile_selection = new QGraphicsScene; scene_current_metatile_selection = new QGraphicsScene;
scene_current_metatile_selection_item = new CurrentSelectedMetatilesPixmapItem(map, this->metatile_selector_item); current_metatile_selection_item = new CurrentSelectedMetatilesPixmapItem(map, this->metatile_selector_item);
scene_current_metatile_selection_item->draw(); current_metatile_selection_item->draw();
scene_current_metatile_selection->addItem(scene_current_metatile_selection_item); scene_current_metatile_selection->addItem(current_metatile_selection_item);
} }
void Editor::redrawCurrentMetatilesSelection() { void Editor::redrawCurrentMetatilesSelection() {
if (scene_current_metatile_selection_item) { if (current_metatile_selection_item) {
scene_current_metatile_selection_item->draw(); current_metatile_selection_item->draw();
emit currentMetatilesSelectionChanged(); emit currentMetatilesSelectionChanged();
} }
} }

View file

@ -29,7 +29,7 @@
#include <QProcess> #include <QProcess>
#include <QSysInfo> #include <QSysInfo>
#include <QDesktopServices> #include <QDesktopServices>
#include <QMatrix> #include <QTransform>
#include <QSignalBlocker> #include <QSignalBlocker>
#include <QSet> #include <QSet>
@ -541,7 +541,7 @@ void MainWindow::refreshMapScene()
ui->graphicsView_BorderMetatile->setFixedSize(editor->selected_border_metatiles_item->pixmap().width() + 2, editor->selected_border_metatiles_item->pixmap().height() + 2); ui->graphicsView_BorderMetatile->setFixedSize(editor->selected_border_metatiles_item->pixmap().width() + 2, editor->selected_border_metatiles_item->pixmap().height() + 2);
ui->graphicsView_currentMetatileSelection->setScene(editor->scene_current_metatile_selection); ui->graphicsView_currentMetatileSelection->setScene(editor->scene_current_metatile_selection);
ui->graphicsView_currentMetatileSelection->setFixedSize(editor->scene_current_metatile_selection_item->pixmap().width() + 2, editor->scene_current_metatile_selection_item->pixmap().height() + 2); ui->graphicsView_currentMetatileSelection->setFixedSize(editor->current_metatile_selection_item->pixmap().width() + 2, editor->current_metatile_selection_item->pixmap().height() + 2);
ui->graphicsView_Collision->setScene(editor->scene_collision_metatiles); ui->graphicsView_Collision->setScene(editor->scene_collision_metatiles);
//ui->graphicsView_Collision->setSceneRect(editor->scene_collision_metatiles->sceneRect()); //ui->graphicsView_Collision->setSceneRect(editor->scene_collision_metatiles->sceneRect());
@ -1178,8 +1178,11 @@ void MainWindow::updateTilesetEditor() {
void MainWindow::redrawMetatileSelection() void MainWindow::redrawMetatileSelection()
{ {
double scale = pow(3.0, static_cast<double>(porymapConfig.getMetatilesZoom() - 30) / 30.0); double scale = pow(3.0, static_cast<double>(porymapConfig.getMetatilesZoom() - 30) / 30.0);
ui->graphicsView_currentMetatileSelection->setFixedSize(editor->scene_current_metatile_selection_item->pixmap().width() * scale + 2, editor->scene_current_metatile_selection_item->pixmap().height() * scale + 2); QTransform transform;
ui->graphicsView_currentMetatileSelection->setSceneRect(0, 0, editor->scene_current_metatile_selection_item->pixmap().width() * scale, editor->scene_current_metatile_selection_item->pixmap().height() * scale); transform.scale(scale, scale);
ui->graphicsView_currentMetatileSelection->setTransform(transform);
ui->graphicsView_currentMetatileSelection->setFixedSize(editor->current_metatile_selection_item->pixmap().width() * scale + 2, editor->current_metatile_selection_item->pixmap().height() * scale + 2);
QPoint size = editor->metatile_selector_item->getSelectionDimensions(); QPoint size = editor->metatile_selector_item->getSelectionDimensions();
if (size.x() == 1 && size.y() == 1) { if (size.x() == 1 && size.y() == 1) {
@ -2632,21 +2635,20 @@ void MainWindow::on_horizontalSlider_MetatileZoom_valueChanged(int value) {
porymapConfig.setMetatilesZoom(value); porymapConfig.setMetatilesZoom(value);
double scale = pow(3.0, static_cast<double>(value - 30) / 30.0); double scale = pow(3.0, static_cast<double>(value - 30) / 30.0);
QMatrix matrix; QTransform transform;
matrix.scale(scale, scale); transform.scale(scale, scale);
QSize size(editor->metatile_selector_item->pixmap().width(), QSize size(editor->metatile_selector_item->pixmap().width(),
editor->metatile_selector_item->pixmap().height()); editor->metatile_selector_item->pixmap().height());
size *= scale; size *= scale;
ui->graphicsView_Metatiles->setResizeAnchor(QGraphicsView::NoAnchor); ui->graphicsView_Metatiles->setResizeAnchor(QGraphicsView::NoAnchor);
ui->graphicsView_Metatiles->setMatrix(matrix); ui->graphicsView_Metatiles->setTransform(transform);
ui->graphicsView_Metatiles->setFixedSize(size.width() + 2, size.height() + 2); ui->graphicsView_Metatiles->setFixedSize(size.width() + 2, size.height() + 2);
ui->graphicsView_BorderMetatile->setMatrix(matrix); ui->graphicsView_BorderMetatile->setTransform(transform);
ui->graphicsView_BorderMetatile->setFixedSize(ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().width()) * scale) + 2, ui->graphicsView_BorderMetatile->setFixedSize(ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().width()) * scale) + 2,
ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().height()) * scale) + 2); ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().height()) * scale) + 2);
ui->graphicsView_currentMetatileSelection->setMatrix(matrix);
redrawMetatileSelection(); redrawMetatileSelection();
} }