+ int width = size.width();
+ int height = size.height();
+ const int iconSize = qMin(width, height);
+
+ // Determine the overlay icon
+ int overlaySize;
+ if (iconSize < 32) {
+ overlaySize = 8;
+ } else if (iconSize <= 48) {
+ overlaySize = 16;
+ } else if (iconSize <= 96) {
+ overlaySize = 22;
+ } else if (iconSize < 256) {
+ overlaySize = 32;
+ } else {
+ overlaySize = 64;
+ }
+
+ auto phyiscalSize = QSize(std::clamp(pixmap.width(), qFloor(2 * overlaySize * dpr), qFloor(size.width() * dpr)),
+ std::clamp(pixmap.height(), qFloor(2 * overlaySize * dpr), qFloor(size.height() * dpr)));
+
+ QPixmap output(phyiscalSize);
+ output.setDevicePixelRatio(dpr);
+ output.fill(Qt::transparent);