File indexing completed on 2024-05-05 05:48:21

0001 /*
0002  * SPDX-FileCopyrightText: 2008 Peter Penz <peter.penz19@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "zoomlevelinfo.h"
0008 
0009 #include <KIconLoader>
0010 
0011 #include <QSize>
0012 
0013 int ZoomLevelInfo::minimumLevel()
0014 {
0015     return 0;
0016 }
0017 
0018 int ZoomLevelInfo::maximumLevel()
0019 {
0020     return 16;
0021 }
0022 
0023 int ZoomLevelInfo::iconSizeForZoomLevel(int level)
0024 {
0025     int size = KIconLoader::SizeMedium;
0026     switch (level) {
0027     case 0:
0028         size = KIconLoader::SizeSmall;
0029         break;
0030     case 1:
0031         size = KIconLoader::SizeSmallMedium;
0032         break;
0033     case 2:
0034         size = KIconLoader::SizeMedium;
0035         break;
0036     case 3:
0037         size = KIconLoader::SizeLarge;
0038         break;
0039     case 4:
0040         size = KIconLoader::SizeHuge;
0041         break;
0042     default:
0043         size = KIconLoader::SizeHuge + ((level - 4) << 4);
0044     }
0045     return size;
0046 }
0047 
0048 int ZoomLevelInfo::zoomLevelForIconSize(const QSize &size)
0049 {
0050     int level = 0;
0051     switch (size.height()) {
0052     case KIconLoader::SizeSmall:
0053         level = 0;
0054         break;
0055     case KIconLoader::SizeSmallMedium:
0056         level = 1;
0057         break;
0058     case KIconLoader::SizeMedium:
0059         level = 2;
0060         break;
0061     case KIconLoader::SizeLarge:
0062         level = 3;
0063         break;
0064     case KIconLoader::SizeHuge:
0065         level = 4;
0066         break;
0067     default:
0068         level = 4 + ((size.height() - KIconLoader::SizeHuge) >> 4);
0069     }
0070     return level;
0071 }