From 7dcb545ba0d08d1b454735b23dab9f36359aafb3 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 1 Sep 2025 15:42:27 +1000 Subject: plugin/cim: better sourceSize --- plugin/src/Caelestia/cachingimagemanager.cpp | 30 ++++++++++------------------ plugin/src/Caelestia/cachingimagemanager.hpp | 3 +-- 2 files changed, 11 insertions(+), 22 deletions(-) (limited to 'plugin/src') diff --git a/plugin/src/Caelestia/cachingimagemanager.cpp b/plugin/src/Caelestia/cachingimagemanager.cpp index 4f37171..a5f71ba 100644 --- a/plugin/src/Caelestia/cachingimagemanager.cpp +++ b/plugin/src/Caelestia/cachingimagemanager.cpp @@ -18,24 +18,15 @@ qreal CachingImageManager::effectiveScale() const { return 1.0; } -int CachingImageManager::effectiveWidth() const { +QSize CachingImageManager::effectiveSize() const { if (!m_item) { - return 0; + return QSize(); } - int width = static_cast(std::ceil(m_item->width() * effectiveScale())); - m_item->setProperty("sourceWidth", width); - return width; -} - -int CachingImageManager::effectiveHeight() const { - if (!m_item) { - return 0; - } - - int height = static_cast(std::ceil(m_item->height() * effectiveScale())); - m_item->setProperty("sourceHeight", height); - return height; + const qreal scale = effectiveScale(); + const QSize size = QSizeF(m_item->width() * scale, m_item->height() * scale).toSize(); + m_item->setProperty("sourceSize", size); + return size; } QQuickItem* CachingImageManager::item() const { @@ -119,16 +110,15 @@ void CachingImageManager::updateSource(const QString& path) { return; } - const int width = self->effectiveWidth(); - const int height = self->effectiveHeight(); + const QSize size = self->effectiveSize(); - if (!self->m_item || !width || !height) { + if (!self->m_item || !size.width() || !size.height()) { return; } const QString fillMode = self->m_item->property("fillMode").toString(); const QString filename = QString("%1@%2x%3-%4.png") - .arg(sha).arg(width).arg(height) + .arg(sha).arg(size.width()).arg(size.height()) .arg(fillMode == "PreserveAspectCrop" ? "crop" : fillMode == "PreserveAspectFit" ? "fit" : "stretch"); const QUrl cache = self->m_cacheDir.resolved(QUrl(filename)); @@ -149,7 +139,7 @@ void CachingImageManager::updateSource(const QString& path) { self->m_item->setProperty("source", cache); } else { self->m_item->setProperty("source", QUrl::fromLocalFile(path)); - self->createCache(path, cache.toLocalFile(), fillMode, QSize(width, height)); + self->createCache(path, cache.toLocalFile(), fillMode, size); } // Clear current running sha if same diff --git a/plugin/src/Caelestia/cachingimagemanager.hpp b/plugin/src/Caelestia/cachingimagemanager.hpp index 5c758dc..4d4a5ae 100644 --- a/plugin/src/Caelestia/cachingimagemanager.hpp +++ b/plugin/src/Caelestia/cachingimagemanager.hpp @@ -52,8 +52,7 @@ private: QMetaObject::Connection m_heightConn; [[nodiscard]] qreal effectiveScale() const; - [[nodiscard]] int effectiveWidth() const; - [[nodiscard]] int effectiveHeight() const; + [[nodiscard]] QSize effectiveSize() const; void createCache(const QString& path, const QString& cache, const QString& fillMode, const QSize& size) const; [[nodiscard]] QString sha256sum(const QString& path) const; -- cgit v1.2.3-freya