summaryrefslogtreecommitdiff
path: root/games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch
diff options
context:
space:
mode:
Diffstat (limited to 'games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch')
-rw-r--r--games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch138
1 files changed, 138 insertions, 0 deletions
diff --git a/games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch b/games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch
new file mode 100644
index 000000000000..d4a803b97aec
--- /dev/null
+++ b/games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch
@@ -0,0 +1,138 @@
+https://bugs.gentoo.org/910081
+https://github.com/shlomif/PySolFC/commit/75a3000ca1301e15d5fdbc6bae6df8dbf1cac066
+
+From 75a3000ca1301e15d5fdbc6bae6df8dbf1cac066 Mon Sep 17 00:00:00 2001
+From: Joe R <joeraz5@verizon.net>
+Date: Sun, 2 Jul 2023 11:07:24 -0400
+Subject: [PATCH] New logic for getting resampling method, for compatibility
+ with newer Pillow versions.
+
+--- a/pysollib/mfxutil.py
++++ b/pysollib/mfxutil.py
+@@ -106,6 +106,17 @@ def format_time(t):
+ return "%d:%02d:%02d" % (t // 3600, (t % 3600) // 60, t % 60)
+
+
++def get_default_resampling():
++ if not USE_PIL:
++ return 0
++ elif hasattr(Image, "ANTIALIAS"):
++ return Image.ANTIALIAS
++ elif hasattr(Image, "LANCZOS"):
++ return Image.LANCZOS
++ else:
++ return Image.NEAREST
++
++
+ def print_err(s, level=1):
+ if level == 0:
+ ss = PACKAGE+': ERROR:'
+--- a/pysollib/options.py
++++ b/pysollib/options.py
+@@ -28,7 +28,8 @@
+ import configobj
+
+ import pysollib.settings
+-from pysollib.mfxutil import Image, USE_PIL, print_err
++from pysollib.mfxutil import USE_PIL,\
++ get_default_resampling, print_err
+ from pysollib.mygettext import _
+ from pysollib.mygettext import myGettext
+ from pysollib.pysoltk import STATUSBAR_ITEMS, TOOLBAR_BUTTONS, TOOLKIT
+@@ -474,7 +475,8 @@ def __init__(self):
+ self.tabletile_scale_method = 0
+ self.resampling = 0
+ if USE_PIL:
+- self.resampling = int(Image.ANTIALIAS)
++ self.resampling = int(get_default_resampling())
++
+ # solver
+ self.solver_presets = [
+ 'none',
+--- a/pysollib/ui/tktile/menubar.py
++++ b/pysollib/ui/tktile/menubar.py
+@@ -94,32 +94,32 @@ def createResamplingMenu(menubar, menu):
+ variable=menubar.tkopt.resampling,
+ value=int(Image.NEAREST),
+ command=menubar.mOptResampling)
+- if Image.BILINEAR:
++ if hasattr(Image, "BILINEAR"):
+ submenu.add_radiobutton(label=n_("&Bilinear"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.BILINEAR),
+ command=menubar.mOptResampling)
+- if Image.BICUBIC:
++ if hasattr(Image, "BICUBIC"):
+ submenu.add_radiobutton(label=n_("B&icubic"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.BICUBIC),
+ command=menubar.mOptResampling)
+- if Image.LANCZOS:
++ if hasattr(Image, "LANCZOS"):
+ submenu.add_radiobutton(label=n_("&Lanczos"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.LANCZOS),
+ command=menubar.mOptResampling)
+- elif Image.ANTIALIAS:
++ elif hasattr(Image, "ANTIALIAS"):
+ submenu.add_radiobutton(label=n_("&Antialiasing"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.ANTIALIAS),
+ command=menubar.mOptResampling)
+- if Image.BOX:
++ if hasattr(Image, "BOX"):
+ submenu.add_radiobutton(label=n_("B&ox"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.BOX),
+ command=menubar.mOptResampling)
+- if Image.HAMMING:
++ if hasattr(Image, "HAMMING"):
+ submenu.add_radiobutton(label=n_("&Hamming"),
+ variable=menubar.tkopt.resampling,
+ value=int(Image.HAMMING),
+--- a/pysollib/ui/tktile/tkutil.py
++++ b/pysollib/ui/tktile/tkutil.py
+@@ -24,7 +24,8 @@
+ import os
+ import re
+
+-from pysollib.mfxutil import Image, ImageDraw, ImageOps, ImageTk
++from pysollib.mfxutil import Image, ImageDraw, ImageOps, ImageTk, \
++ get_default_resampling
+ from pysollib.settings import TITLE, WIN_SYSTEM
+
+ from six.moves import tkinter
+@@ -288,7 +289,10 @@ def subsample(self, r):
+ im = PIL_Image(image=im)
+ return im
+
+- def resize(self, xf, yf, resample=Image.ANTIALIAS):
++ def resize(self, xf, yf, resample=-1):
++
++ if resample == -1:
++ resample = get_default_resampling()
+
+ w, h = self._pil_image_orig.size
+ w0, h0 = int(w*xf), int(h*yf)
+@@ -456,7 +460,10 @@ def _createBottomImage(image, color='white', backfile=None):
+ size = (w-th*2, h-th*2)
+ tmp = Image.new('RGBA', size, color)
+ tmp.putalpha(60)
+- mask = out.resize(size, Image.ANTIALIAS)
++
++ resampling = get_default_resampling()
++
++ mask = out.resize(size, resampling)
+ out.paste(tmp, (th, th), mask)
+ if backfile:
+ back = Image.open(backfile).convert('RGBA')
+@@ -465,7 +472,7 @@ def _createBottomImage(image, color='white', backfile=None):
+ a = min(float(w1)/w0, float(h1)/h0)
+ a = a*0.9
+ w0, h0 = int(w0*a), int(h0*a)
+- back = back.resize((w0, h0), Image.ANTIALIAS)
++ back = back.resize((w0, h0), resampling)
+ x, y = (w1 - w0) // 2, (h1 - h0) // 2
+ out.paste(back, (x, y), back)
+ return out
+