From b264927da991c6a3285fab99b486cda2076817a3 Mon Sep 17 00:00:00 2001 From: AnonymouX47 Date: Tue, 4 Jun 2024 08:46:35 +0100 Subject: [PATCH] refac: tui.images: Optimize image class selection - Change: Execute image class selection logic once and cache the result. --- toot/tui/images.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/toot/tui/images.py b/toot/tui/images.py index 89710c7..00ebfe7 100644 --- a/toot/tui/images.py +++ b/toot/tui/images.py @@ -11,6 +11,7 @@ try: from PIL import Image, ImageDraw _IMAGE_PIXEL_FORMATS = frozenset({'kitty', 'iterm'}) + _ImageCls = None TuiScreen = UrwidImageScreen disable_queries() @@ -23,13 +24,20 @@ try: def get_base_image(image, image_format) -> BaseImage: # we don't autodetect kitty, iterm; we choose based on option switches - BaseImage.forced_support = True - if image_format == 'kitty': - return KittyImage(image) - elif image_format == 'iterm': - return ITerm2Image(image) - else: - return BlockImage(image) + + global _ImageCls + + if not _ImageCls: + BaseImage.forced_support = True + _ImageCls = ( + KittyImage + if image_format == 'kitty' + else ITerm2Image + if image_format == 'iterm' + else BlockImage + ) + + return _ImageCls(image) def resize_image(basewidth: int, baseheight: int, img: Image.Image) -> Image.Image: if baseheight and not basewidth: