diff --git a/plugins/extensions/qmic/kis_qmic_synchronize_image_size_command.cpp b/plugins/extensions/qmic/kis_qmic_synchronize_image_size_command.cpp index 72fde41753..bbb583747c 100644 --- a/plugins/extensions/qmic/kis_qmic_synchronize_image_size_command.cpp +++ b/plugins/extensions/qmic/kis_qmic_synchronize_image_size_command.cpp @@ -1,81 +1,82 @@ /* * Copyright (c) 2015 Lukáš Tvrdý KisQmicSynchronizeImageSizeCommand::KisQmicSynchronizeImageSizeCommand(QVector *> images, KisImageWSP image) : m_images(images) , m_image(image) , m_resizeCommand(0) { qDebug() << "KisQmicSynchronizeImageSizeCommand" << "gmic images" << m_images.size(); } KisQmicSynchronizeImageSizeCommand::~KisQmicSynchronizeImageSizeCommand() { delete m_resizeCommand; } void KisQmicSynchronizeImageSizeCommand::redo() { qDebug() << "KisQmicSynchronizeImageSizeCommand::redo"; // sync image size if (m_image) { QSize gmicBoundingLayerSize = findMaxLayerSize(m_images); QSize kritaSize = m_image->size(); qDebug() << "\tkrita image" << kritaSize << "gmic size" << gmicBoundingLayerSize; - if (kritaSize != gmicBoundingLayerSize) + if (gmicBoundingLayerSize.width() > kritaSize.width() || gmicBoundingLayerSize.height() > kritaSize.height()) { - dbgPlugins << "G'Mic resizes Krita canvas from " << kritaSize << " to " << gmicBoundingLayerSize; - m_resizeCommand = new KisImageResizeCommand(m_image, gmicBoundingLayerSize); + QSize newSize = kritaSize.expandedTo(gmicBoundingLayerSize); + dbgPlugins << "G'Mic expands Krita canvas from " << kritaSize << " to " << newSize; + m_resizeCommand = new KisImageResizeCommand(m_image, newSize); m_resizeCommand->redo(); } } } void KisQmicSynchronizeImageSizeCommand::undo() { qDebug() << "KisQmicSynchronizeImageSizeCommand::undo"; if (m_resizeCommand) { m_resizeCommand->undo(); } } QSize KisQmicSynchronizeImageSizeCommand::findMaxLayerSize(QVector *> images) { // synchronize image size int maxWidth = 0; int maxHeight = 0; for (int i = 0; i < images.size(); i++) { gmic_image *gimg = images[i]; int width = gimg->_width; maxWidth = qMax(width, maxWidth); int height = gimg->_height; maxHeight = qMax(height, maxHeight); } qDebug() << "MaxLayerSize" << maxWidth << maxHeight; return QSize(maxWidth, maxHeight); }