From 3f571cb2af15946153f337ce7a718c05d6c03676 Mon Sep 17 00:00:00 2001 From: Paul Molodowitch Date: Sun, 15 Sep 2019 20:15:13 -0700 Subject: [PATCH] add --tab-artwork-opacity flag (#259) turn down background opacity to help text show up better against dark backgrounds --- src/domdiv/draw.py | 21 ++++++++++++++++++++- src/domdiv/main.py | 8 ++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/domdiv/draw.py b/src/domdiv/draw.py index 3bfa0b2..8007bd7 100644 --- a/src/domdiv/draw.py +++ b/src/domdiv/draw.py @@ -6,11 +6,14 @@ import sys import pkg_resources +from PIL import Image, ImageEnhance + from reportlab.lib.units import cm from reportlab.pdfbase import pdfmetrics from reportlab.lib.styles import getSampleStyleSheet from reportlab.platypus import Paragraph, XPreformatted from reportlab.lib.enums import TA_JUSTIFY, TA_CENTER, TA_LEFT +from reportlab.lib.utils import ImageReader from reportlab.pdfgen import canvas from reportlab.pdfbase.ttfonts import TTFont from reportlab.pdfbase.pdfmetrics import stringWidth @@ -1141,6 +1144,8 @@ class DividerDrawer(object): return w def drawTab(self, item, wrapper="no", backside=False): + from io import BytesIO + card = item.card # Skip blank cards if card.isBlank(): @@ -1190,8 +1195,22 @@ class DividerDrawer(object): # draw banner img = card.getType().getTabImageFile() if not self.options.no_tab_artwork and img: + imgToDraw = DividerDrawer.get_image_filepath(img) + if self.options.tab_artwork_opacity != 1.0: + imgObj = Image.open(imgToDraw) + if imgObj.mode != "RGBA": + imgObj = imgObj.convert("RGBA") + alpha = imgObj.split()[3] + alpha = ImageEnhance.Brightness(alpha).enhance( + self.options.tab_artwork_opacity + ) + imgObj.putalpha(alpha) + imageBytes = BytesIO() + imgObj.save(imageBytes, "PNG") + imageBytes.seek(0) + imgToDraw = ImageReader(imageBytes) self.canvas.drawImage( - DividerDrawer.get_image_filepath(img), + imgToDraw, 1, 0, item.tabWidth - 2, diff --git a/src/domdiv/main.py b/src/domdiv/main.py index e4849e0..90bf2c9 100644 --- a/src/domdiv/main.py +++ b/src/domdiv/main.py @@ -316,6 +316,14 @@ def parse_opts(cmdline_args=None): dest="no_tab_artwork", help="Don't show background artwork on tabs.", ) + group_tab.add_argument( + "--tab-artwork-opacity", + type=float, + default=1.0, + help="Multiply opacity of tab background art by this value; " + "can be used to make text show up clearer on dark backrounds, " + "particularly on printers that output darker than average", + ) group_tab.add_argument( "--use-text-set-icon", action="store_true",