2023-04-17 01:38:48 +12:00
|
|
|
from enum import Enum
|
|
|
|
|
|
|
|
from PyQt5.QtCore import QSize
|
|
|
|
|
|
|
|
|
|
|
|
class Orientation(Enum):
|
|
|
|
Tall = 0
|
|
|
|
Wide = 1
|
|
|
|
|
|
|
|
|
|
|
|
class ImageSize:
|
|
|
|
class Preset:
|
|
|
|
def __init__(self, divisor: float, pixel_ratio: float, orientation: Orientation = Orientation.Tall,
|
|
|
|
base: 'ImageSize.Preset' = None):
|
|
|
|
self.__divisor = divisor
|
|
|
|
self.__pixel_ratio = pixel_ratio
|
|
|
|
if orientation == Orientation.Tall:
|
|
|
|
self.__img_factor = 67
|
|
|
|
self.__size = QSize(self.__img_factor * 3, self.__img_factor * 4) * pixel_ratio / divisor
|
|
|
|
else:
|
|
|
|
self.__img_factor = 17
|
|
|
|
self.__size = QSize(self.__img_factor * 16, self.__img_factor * 9) * pixel_ratio / divisor
|
|
|
|
# lk: for prettier images set this to true
|
2023-12-25 07:44:46 +13:00
|
|
|
# self.__smooth_transform: bool = True
|
|
|
|
self.__smooth_transform = divisor <= 2
|
|
|
|
self.__base = base if base is not None else self
|
2023-04-17 01:38:48 +12:00
|
|
|
|
|
|
|
def __eq__(self, other: 'ImageSize.Preset'):
|
|
|
|
return (
|
|
|
|
self.__size == other.size
|
|
|
|
and self.__divisor == other.divisor
|
|
|
|
and self.__smooth_transform == other.smooth
|
|
|
|
and self.__pixel_ratio == other.pixel_ratio
|
|
|
|
)
|
|
|
|
|
|
|
|
@property
|
|
|
|
def size(self) -> QSize:
|
|
|
|
return self.__size
|
|
|
|
|
|
|
|
@property
|
|
|
|
def divisor(self) -> float:
|
|
|
|
return self.__divisor
|
|
|
|
|
|
|
|
@property
|
|
|
|
def smooth(self) -> bool:
|
|
|
|
return self.__smooth_transform
|
|
|
|
|
|
|
|
@property
|
|
|
|
def pixel_ratio(self) -> float:
|
|
|
|
return self.__pixel_ratio
|
|
|
|
|
|
|
|
@property
|
|
|
|
def base(self) -> 'ImageSize.Preset':
|
|
|
|
return self.__base
|
|
|
|
|
2024-01-12 08:51:01 +13:00
|
|
|
Image = Preset(1, 1)
|
2023-04-17 01:38:48 +12:00
|
|
|
"""! @brief Size and pixel ratio of the image on disk"""
|
|
|
|
|
2024-01-12 08:51:01 +13:00
|
|
|
ImageWide = Preset(1, 1, Orientation.Wide)
|
2023-04-17 01:38:48 +12:00
|
|
|
"""! @brief Size and pixel ratio for wide 16/9 image on disk"""
|
|
|
|
|
|
|
|
Display = Preset(1, 1, base=Image)
|
|
|
|
"""! @brief Size and pixel ratio for displaying"""
|
|
|
|
|
|
|
|
DisplayWide = Preset(1, 1, Orientation.Wide, base=ImageWide)
|
|
|
|
"""! @brief Size and pixel ratio for wide 16/9 image display"""
|
|
|
|
|
2023-12-17 00:52:37 +13:00
|
|
|
LibraryWide = Preset(1.21, 1, Orientation.Wide, base=ImageWide)
|
2023-04-17 01:38:48 +12:00
|
|
|
|
2023-12-17 00:52:37 +13:00
|
|
|
Library = Preset(1.21, 1, base=Image)
|
2023-04-17 01:38:48 +12:00
|
|
|
"""! @brief Same as Display"""
|
|
|
|
|
|
|
|
Small = Preset(3, 1, base=Image)
|
|
|
|
"""! @brief Small image size for displaying"""
|
|
|
|
|
2023-12-15 00:47:03 +13:00
|
|
|
SmallWide = Preset(3, 1, Orientation.Wide, base=ImageWide)
|
2023-04-17 01:38:48 +12:00
|
|
|
"""! @brief Small image size for displaying"""
|
|
|
|
|
|
|
|
Smaller = Preset(4, 1, base=Image)
|
|
|
|
"""! @brief Smaller image size for displaying"""
|
|
|
|
|
|
|
|
SmallerWide = Preset(4, 1, Orientation.Wide, base=ImageWide)
|
|
|
|
"""! @brief Smaller image size for displaying"""
|
|
|
|
|
|
|
|
Icon = Preset(5, 1, base=Image)
|
|
|
|
"""! @brief Smaller image size for UI icons"""
|