Skip to content

Commit e6d2fae

Browse files
committed
add missing functions
1 parent 87ffc88 commit e6d2fae

File tree

2 files changed

+25
-46
lines changed

2 files changed

+25
-46
lines changed

materialyoucolor/utils/color_utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ def argb_from_rgba(rgba: list[int]) -> int:
147147
return (rgba[3] << 24) | (rgba[0] << 16) | (rgba[1] << 8) | rgba[2]
148148

149149

150+
def argb_from_rgba_01(rgba: list[int]) -> int:
151+
return argb_from_rgba([int(_ * 255) for _ in rgba])
152+
153+
150154
def lstar_from_argb(argb: int) -> float:
151155
y = xyz_from_argb(argb)[1]
152156
return 116.0 * lab_f(y / 100.0) - 16.0
@@ -160,6 +164,10 @@ def lstar_from_y(y: float) -> float:
160164
return lab_f(y / 100.0) * 116.0 - 16.0
161165

162166

167+
def srgb_to_argb(srgb):
168+
return int("0xff{:06X}".format(0xFFFFFF & srgb), 16)
169+
170+
163171
def linearized(rgb_component: int) -> float:
164172
normalized = rgb_component / 255.0
165173
if normalized <= 0.040449936:

materialyoucolor/utils/platform_utils.py

Lines changed: 17 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66

77
from materialyoucolor.hct import Hct
88
from materialyoucolor.palettes.tonal_palette import TonalPalette
9-
from materialyoucolor.scheme.dynamic_scheme import DynamicScheme, DynamicSchemeOptions
9+
from materialyoucolor.dynamiccolor.dynamic_scheme import (
10+
DynamicScheme,
11+
)
12+
from materialyoucolor.dynamiccolor.variant import Variant
1013
from materialyoucolor.scheme.scheme_content import SchemeContent
1114
from materialyoucolor.scheme.scheme_expressive import SchemeExpressive
1215
from materialyoucolor.scheme.scheme_fidelity import SchemeFidelity
@@ -16,15 +19,14 @@
1619
from materialyoucolor.scheme.scheme_rainbow import SchemeRainbow
1720
from materialyoucolor.scheme.scheme_tonal_spot import SchemeTonalSpot
1821
from materialyoucolor.scheme.scheme_vibrant import SchemeVibrant
19-
from materialyoucolor.scheme.variant import Variant
2022
from materialyoucolor.score.score import Score
2123
from materialyoucolor.utils.color_utils import argb_from_rgba_01, srgb_to_argb
2224
from materialyoucolor.utils.math_utils import sanitize_degrees_double
2325

2426
try:
25-
from materialyoucolor.quantize import QuantizeCelebi
27+
from materialyoucolor.quantize import ImageQuantizeCelebi
2628
except:
27-
QuantizeCelebi = None
29+
ImageQuantizeCelebi = None
2830

2931
autoclass = None
3032
_is_android = "ANDROID_ARGUMENT" in os.environ
@@ -38,11 +40,6 @@
3840
context = mActivity.getApplicationContext()
3941
WallpaperManager = autoclass("android.app.WallpaperManager").getInstance(mActivity)
4042

41-
try:
42-
from PIL import Image
43-
except Exception:
44-
Image = None
45-
4643
SCHEMES = {
4744
"TONAL_SPOT": SchemeTonalSpot,
4845
"SPRITZ": SchemeNeutral,
@@ -171,26 +168,17 @@ def get_system_color(color_name):
171168
color_names[color_name] = TonalPalette.from_hue_and_chroma(hct.hue, hct.chroma)
172169

173170
return DynamicScheme(
174-
DynamicSchemeOptions(
175-
reverse_color_from_primary(
176-
get_system_color("primary_palette"),
177-
selected_scheme,
178-
),
179-
getattr(Variant, selected_scheme),
180-
contrast,
181-
dark_mode,
182-
**color_names,
183-
)
171+
reverse_color_from_primary(
172+
get_system_color("primary_palette"),
173+
selected_scheme,
174+
),
175+
getattr(Variant, selected_scheme),
176+
contrast,
177+
dark_mode,
178+
**color_names,
184179
)
185180

186181

187-
def open_wallpaper_file(file_path) -> Image:
188-
try:
189-
return Image.open(file_path)
190-
except Exception:
191-
return None
192-
193-
194182
def get_dynamic_scheme(
195183
# Scheme options
196184
dark_mode=True,
@@ -277,33 +265,16 @@ def logger(message):
277265
not selected_scheme
278266
and not selected_color
279267
and fallback_wallpaper_path
280-
and (image := open_wallpaper_file(fallback_wallpaper_path))
281-
and QuantizeCelebi is not None
268+
and ImageQuantizeCelebi is not None
282269
):
283270
timer_start = default_timer()
284-
pixel_len = image.width * image.height
285-
try:
286-
image_data = image.get_flattened_data()
287-
except:
288-
image_data = image.getdata()
289-
# TODO: Think about getting data from bitmap
290-
pixel_array = [
291-
image_data[_]
292-
for _ in range(
293-
0, pixel_len, dynamic_color_quality if not _is_android else 1
294-
)
295-
]
296-
logger(
297-
f"Created an array of pixels from a "
298-
f"system wallpaper file - {default_timer() - timer_start} sec."
299-
)
300-
timer_start = default_timer()
301-
colors = QuantizeCelebi(pixel_array, 128)
271+
colors = ImageQuantizeCelebi(fallback_wallpaper_path, dynamic_color_quality)
302272
selected_color = Score.score(colors)[0]
303273
WALLPAPER_CACHE[fallback_wallpaper_path] = [
304274
selected_color,
305275
os.path.getsize(fallback_wallpaper_path),
306276
]
277+
307278
logger(f"Got dominant colors - {default_timer() - timer_start} sec.")
308279

309280
return (

0 commit comments

Comments
 (0)