summaryrefslogtreecommitdiff
path: root/games-board/pysolfc/files/pysolfc-2.20.1-pillow-10.patch
blob: d4a803b97aec8816303a94d9fc95d3c247c42227 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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