From f69a9fd6e055e6baa89c3d211c8a1296c7a2679e Mon Sep 17 00:00:00 2001 From: Gabriel Grant Date: Mon, 20 Jul 2020 16:28:15 -0700 Subject: [PATCH 1/2] add centered label class --- labelprinterkit/label.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/labelprinterkit/label.py b/labelprinterkit/label.py index 99028ba..74fc76c 100644 --- a/labelprinterkit/label.py +++ b/labelprinterkit/label.py @@ -82,3 +82,36 @@ def render(self, width=None, height=None) -> Image: return img # print("".join(f"{x:08b}".replace("0", " ") for x in bytes(i))) + +class CenteredLabel(Label): + def render(self, width=None, height=None) -> Image: + """render the Label. + + Args: + width: Width request + height: Height request + """ + size = self.size + img = Image.new("1", size, "white") + + pos = [0, 0] + + for line in self._rendered_items: + line_width = sum(item.size[0] for item in line) + # to center, offset by half of different between line width and total width + pos[0] = (size[0] - line_width) // 2 + for item in line: + box = (*pos, *_coord_add(item.size, pos)) + img.paste(item, box=box) + pos[0] += item.size[0] + + pos[1] += max(i.size[1] for i in line) + + xdim, ydim = img.size + print("presize", xdim, ydim, height) + xdim = round((height / ydim) * xdim) + + print("calcsize", xdim, ydim) + img = img.resize((xdim, height)) + + return img \ No newline at end of file From 7e8f89b8ff76c079bdb689f925a0e0552f77290e Mon Sep 17 00:00:00 2001 From: Gabriel Grant Date: Sun, 26 Jul 2020 23:08:25 -0700 Subject: [PATCH 2/2] convert debug print statements to use logger --- labelprinterkit/label.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/labelprinterkit/label.py b/labelprinterkit/label.py index 74fc76c..b8b177e 100644 --- a/labelprinterkit/label.py +++ b/labelprinterkit/label.py @@ -3,10 +3,14 @@ provided for you. """ from typing import Tuple +import logging from PIL import Image +logger = logging.getLogger(__name__) + + def _coord_add(tup1, tup2): """add two tuples of size two""" return (tup1[0] + tup2[0], tup1[1] + tup2[1]) @@ -73,10 +77,10 @@ def render(self, width=None, height=None) -> Image: pos[1] += max(i.size[1] for i in line) xdim, ydim = img.size - print("presize", xdim, ydim, height) + logger.debug("presize %d %d %d", xdim, ydim, height) xdim = round((height / ydim) * xdim) - print("calcsize", xdim, ydim) + logger.debug("calcsize %d %d", xdim, ydim) img = img.resize((xdim, height)) return img @@ -108,10 +112,10 @@ def render(self, width=None, height=None) -> Image: pos[1] += max(i.size[1] for i in line) xdim, ydim = img.size - print("presize", xdim, ydim, height) + logger.debug("presize %d %d %d", xdim, ydim, height) xdim = round((height / ydim) * xdim) - print("calcsize", xdim, ydim) + logger.debug("calcsize %d %d", xdim, ydim) img = img.resize((xdim, height)) return img \ No newline at end of file