From 8c9417a50e9069508fe0c88ed44d924c51ab6c21 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 13 May 2024 07:13:11 +0200 Subject: [PATCH] ratp: Improve icon readability --- modules/ratp.py | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/modules/ratp.py b/modules/ratp.py index d5e992e..e9d1cae 100644 --- a/modules/ratp.py +++ b/modules/ratp.py @@ -224,20 +224,41 @@ class IDFMAPI: elif mode == "R" or mode == "rers": icon_mode = "RER" + img_line = None if mode != "buses": - img = Image.open(os.path.join(config.icons_dir, "ratp", "lignes", icon_mode + "_" + line + "_NB" + state + "_RVB.png")) - return img.resize((int(size), int(img.height * size / img.width))) + if fill == "white": + img = Image.open(os.path.join(config.icons_dir, "ratp", "lignes", icon_mode + "_" + line + "_NB" + state + "_RVB.png")) + return img.resize((int(size), int(img.height * size / img.width))) + else: + img_line = Image.open(os.path.join(config.icons_dir, "ratp", "lignes", icon_mode + "_" + line + "_NB_RVB.png")) + img = Image.new(img_line.mode, (img_line.width, int(img_line.height * 1.4))) + img.paste(img_line, (0,0)) + else: + width = int(size * 1.38) + img = Image.new('RGBA', (width, width), '#fff0') + draw = ImageDraw.Draw(img) - width = int(size * 1.38) if mode == "buses" or mode == "tramways" else size - image = Image.new('RGBA', (width, size), '#fff0') - draw = ImageDraw.Draw(image) + fnt_icon = ImageFont.truetype(os.path.join(config.fonts_dir, IDFMAPI.fnt_RB_path), size-3) + draw.rectangle((0, 0, width, size), fill="#222") + draw.text((int(width / 2), int(size / 2)), line, fill="white", anchor="mm", font=fnt_icon) - fnt_icon = ImageFont.truetype(os.path.join(config.fonts_dir, IDFMAPI.fnt_RB_path), size-3) - draw.rectangle((0, 0, width, size), fill=fill) - draw.text((int(width / 2), int(size / 2)), line, fill="white" if (fill == "black" and mode == "tramways") or (fill != "white" and mode != "tramways") or (fill == "white" and mode == "tramways") else "black", anchor="mm", font=fnt_icon) + if state != "": + if state.endswith("petit"): + coeff = 2.5 + elif state.endswith("moyen"): + coeff = 2 + else: + coeff = 1.5 - return image + img_perturb = Image.open(os.path.join(config.icons_dir, "ratp", "Perturbation_travaux_NB_RVB.png" if state.startswith("_travaux") else "Perturbation_trafic_NB_RVB.png")) + img_perturb = img_perturb.resize((int(img.width / coeff), int(img_perturb.height * img.width / (coeff * img_perturb.width)))) + if img_line is not None: + img.paste(img_perturb, (img.width-img_perturb.width,img_line.height-int(img_perturb.height/coeff))) + else: + img.paste(img_perturb, (img.width-img_perturb.width,img.height-img_perturb.height)) + + return img.resize((int(size), int(img.height * size / img.width)))