From a90d9abf7559df564bf076a86aa5abb83dcdab9c Mon Sep 17 00:00:00 2001 From: hyugogirubato <65763543+hyugogirubato@users.noreply.github.com> Date: Tue, 16 Jul 2024 22:45:27 +0200 Subject: [PATCH] Simplification of the player icon --- CHANGELOG.md | 4 +++ cbz/cbz.png | Bin 54586 -> 0 bytes cbz/player.py | 26 ++++++++++----- cbz/utils.py | 66 +++++++++++++++++++++++++++++++++++++++ docs/favicon/favicon.svg | 51 ++++++++++++++++++++++++++++++ 5 files changed, 139 insertions(+), 8 deletions(-) delete mode 100644 cbz/cbz.png create mode 100644 docs/favicon/favicon.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e648ef..ca452fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [3.3.2] - Not released +### Changed + +- Simplification of the player icon set. + ### Fixed - Fixed lag when stretching player. diff --git a/cbz/cbz.png b/cbz/cbz.png deleted file mode 100644 index 5f9bcae1e72ea49a86cf12045018f2053fa33d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54586 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 Q90WZ2+Qyg)P5bcw0Sw8%K>z>% diff --git a/cbz/player.py b/cbz/player.py index c68b499..27ef290 100644 --- a/cbz/player.py +++ b/cbz/player.py @@ -10,7 +10,7 @@ from pathlib import Path from cbz.comic import ComicInfo from cbz.page import PageInfo -from cbz.utils import readable_size +from cbz.utils import readable_size, ico_to_png import os PARENT = Path(__file__).parent @@ -56,12 +56,8 @@ class Player: # Set initial window size self.root.geometry(self._get_initial_geometry()) - # Check if windows or linux for window icon - if os.name == 'nt': - windll.shell32.SetCurrentProcessExplicitAppUserModelID('cbz.player') - self.root.iconbitmap(PARENT / 'cbz.ico') - else: - self.root.wm_iconphoto(True, tk.PhotoImage(file=PARENT / 'cbz.png')) + # Set the application icon + self._set_icon() # Create main frame for content self.main_frame = ttk.Frame(self.root) @@ -91,6 +87,20 @@ class Player: # Initialize resize timer self.resize_timer = None + def _set_icon(self) -> None: + """ + Set the application icon for the window. + """ + image_path = PARENT / 'cbz.ico' + if os.name == 'nt': + # Set the application ID and icon on Windows + windll.shell32.SetCurrentProcessExplicitAppUserModelID('cbz.player') + self.root.iconbitmap(image_path) + else: + # Convert ICO to PNG for other operating systems + image = ico_to_png(image_path) + self.root.iconphoto(True, tk.PhotoImage(data=image.getvalue())) + def _get_window_title(self) -> str: """ Get the window title based on the comic series and title. @@ -242,7 +252,7 @@ class Player: # Resize image new_width = int(img.width * scale_factor) new_height = int(img.height * scale_factor) - img = img.resize((new_width, new_height), Image.LANCZOS) + img = img.resize((new_width, new_height), Image.Resampling.LANCZOS) # Set image on canvas self.canvas.image = ImageTk.PhotoImage(img) diff --git a/cbz/utils.py b/cbz/utils.py index 8971c9f..8064afb 100644 --- a/cbz/utils.py +++ b/cbz/utils.py @@ -1,4 +1,54 @@ +import struct from enum import Enum +from io import BytesIO + +from PIL import Image +from path import Path + + +def extract_ico(path: Path) -> list[Image]: + """ + Extracts all the images from an ICO file. + + Args: + path (Path): Path to the ICO file. + + Returns: + list[Image]: List of PIL Image objects representing the icons in the ICO file. + """ + # https://stackoverflow.com/questions/74341558/how-do-i-read-a-different-size-of-an-icon-file + # https://en.wikipedia.org/wiki/ICO_(file_format) + icons = [] + + # Constants for ICO file structure + ICONDIRSIZE = 6 + ICONDIRENTRYSIZE = 16 + + # Read the entire ICO file content + d = path.read_bytes() + + # Extract ICONDIR header + hdrReserved, hdrImageType, hdrNumImages = struct.unpack(' any: @@ -77,3 +127,19 @@ def readable_size(size: int, decimal: int = 2) -> str: if size < 1024: return f'{size:.{decimal}f} {unit}' size /= 1024 + + +def ico_to_png(path: Path) -> BytesIO: + """ + Converts the largest icon in an ICO file to PNG format. + + Args: + path (Path): Path to the ICO file. + + Returns: + BytesIO: In-memory PNG file of the largest icon. + """ + icons = extract_ico(path) + content = BytesIO() + icons[-1].save(content, format='PNG') + return content diff --git a/docs/favicon/favicon.svg b/docs/favicon/favicon.svg new file mode 100644 index 0000000..309013e --- /dev/null +++ b/docs/favicon/favicon.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +