From: Michael Tremer Date: Fri, 26 Oct 2018 17:45:11 +0000 (+0100) Subject: fireinfo: Refactor generating i-use images X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=85626796067d78e2d8689c175134861e5f288266;hp=395c1ac07822838e6e1d9804814be6209b86cd3d;p=ipfire.org.git fireinfo: Refactor generating i-use images Signed-off-by: Michael Tremer --- diff --git a/Makefile.am b/Makefile.am index 12080b72..1beefbcb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -135,6 +135,11 @@ templates_download_DATA = \ templates_downloaddir = $(templatesdir)/download +templates_fireinfo_DATA = \ + src/templates/fireinfo/i-use-1.png + +templates_fireinfodir = $(templatesdir)/fireinfo + templates_location_DATA = \ src/templates/location/lookup.html diff --git a/src/backend/iuse.py b/src/backend/iuse.py index a3c0c572..99c9d042 100644 --- a/src/backend/iuse.py +++ b/src/backend/iuse.py @@ -7,6 +7,7 @@ import os.path from PIL import Image, ImageDraw, ImageFont, PngImagePlugin from .misc import Object +from .decorators import * image_types = [] @@ -20,70 +21,42 @@ class IUse(Object): class ImageObject(Object): - default_mode = "RGBA" - default_size = 100, 100 - _filename = None - _font = "Ubuntu-R.ttf" - _font_size = 10 - - def __init__(self, backend, request, profile): - Object.__init__(self, backend) + def init(self, request, profile): self.request = request self.profile = profile # Create new image if self.filename and os.path.exists(self.filename): - self.open(self.filename) + with Image.open(self.filename) as image: + self._image = image.convert("RGBA") else: - self._image = Image.new(self.default_mode, self.default_size) - - self.draw() - - def open(self, filename): - logging.debug("Opening image as a template: %s" % filename) - - image = Image.open(filename) - self._image = image.convert(self.default_mode) + self._image = Image.new("RGBA", (100, 100)) - def save(self, filename): - self._image.save(filename, "PNG", optimize=True) + self.render() def to_string(self): - f = io.StringIO() - - self.save(f) - - return f.getvalue() - - @property - def paint(self): - if not hasattr(self, "_draw"): - self._draw = ImageDraw.Draw(self._image) + with io.BytesIO() as f: + self._image.save(f, "PNG", optimize=True) - return self._draw + return f.getvalue() - def draw(self): - raise NotImplementedError - - @property + @lazy_property def font(self): - if not hasattr(self, "__font"): - fontfile = os.path.join( - self.request.application.settings.get("template_path", ""), - "i-use", "fonts", self._font - ) + fontfile = os.path.join( + self.request.application.settings.get("static_path", ""), + "fonts/Mukta-Regular.ttf" + ) - self.__font = ImageFont.truetype(fontfile, self._font_size, encoding="unic") + return ImageFont.truetype(fontfile, 15, encoding="unic") - return self.__font + @lazy_property + def draw(self): + return ImageDraw.Draw(self._image) def draw_text(self, pos, text, **kwargs): - if "font" not in kwargs: - kwargs["font"] = self.font - - return self.paint.text(pos, text, **kwargs) + return self.draw.text(pos, text, font=self.font, **kwargs) @property def filename(self): @@ -92,7 +65,7 @@ class ImageObject(Object): return os.path.join( self.request.application.settings.get("template_path", ""), - "i-use", self._filename + "fireinfo", self._filename ) @property @@ -104,12 +77,9 @@ class Image1(ImageObject): id = 0 default_size = 500, 50 - _filename = "i-use-1.png" - _font = "Ubuntu-R.ttf" - _font_size = 14 - def draw(self): + def render(self): _ = self.locale.translate line1 = [_("%s on %s") % (self.profile.release_short, self.profile.arch),] @@ -133,8 +103,8 @@ class Image1(ImageObject): line2.append(self.profile.friendly_memory) - self.draw_text((225, 9), " | ".join(line1)) - self.draw_text((225, 27), "%s" % " - ".join(line2)) + self.draw_text((225, 5), " | ".join(line1)) + self.draw_text((225, 23), "%s" % " - ".join(line2)) image_types.append(Image1) diff --git a/src/templates/i-use/i-use-1.png b/src/templates/fireinfo/i-use-1.png similarity index 100% rename from src/templates/i-use/i-use-1.png rename to src/templates/fireinfo/i-use-1.png diff --git a/src/templates/i-use/i-use-1.xcf b/src/templates/fireinfo/i-use-1.xcf similarity index 100% rename from src/templates/i-use/i-use-1.xcf rename to src/templates/fireinfo/i-use-1.xcf diff --git a/src/templates/i-use/fonts/DejaVuSans-Bold.ttf b/src/templates/i-use/fonts/DejaVuSans-Bold.ttf deleted file mode 100644 index badc808e..00000000 Binary files a/src/templates/i-use/fonts/DejaVuSans-Bold.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/DejaVuSans.ttf b/src/templates/i-use/fonts/DejaVuSans.ttf deleted file mode 100644 index e820f025..00000000 Binary files a/src/templates/i-use/fonts/DejaVuSans.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-B.ttf b/src/templates/i-use/fonts/Ubuntu-B.ttf deleted file mode 100644 index c0142fea..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-B.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-BI.ttf b/src/templates/i-use/fonts/Ubuntu-BI.ttf deleted file mode 100644 index 12e4c7df..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-BI.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-C.ttf b/src/templates/i-use/fonts/Ubuntu-C.ttf deleted file mode 100644 index 8d3e8676..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-C.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-L.ttf b/src/templates/i-use/fonts/Ubuntu-L.ttf deleted file mode 100644 index 7b7ac7dd..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-L.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-LI.ttf b/src/templates/i-use/fonts/Ubuntu-LI.ttf deleted file mode 100644 index e36de452..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-LI.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-M.ttf b/src/templates/i-use/fonts/Ubuntu-M.ttf deleted file mode 100644 index 443ec8b7..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-M.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-MI.ttf b/src/templates/i-use/fonts/Ubuntu-MI.ttf deleted file mode 100644 index 321eccf7..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-MI.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-R.ttf b/src/templates/i-use/fonts/Ubuntu-R.ttf deleted file mode 100644 index 45a038ba..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-R.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/Ubuntu-RI.ttf b/src/templates/i-use/fonts/Ubuntu-RI.ttf deleted file mode 100644 index 6f819f69..00000000 Binary files a/src/templates/i-use/fonts/Ubuntu-RI.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/UbuntuMono-B.ttf b/src/templates/i-use/fonts/UbuntuMono-B.ttf deleted file mode 100644 index 7bd66657..00000000 Binary files a/src/templates/i-use/fonts/UbuntuMono-B.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/UbuntuMono-BI.ttf b/src/templates/i-use/fonts/UbuntuMono-BI.ttf deleted file mode 100644 index 6c5b8ba0..00000000 Binary files a/src/templates/i-use/fonts/UbuntuMono-BI.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/UbuntuMono-R.ttf b/src/templates/i-use/fonts/UbuntuMono-R.ttf deleted file mode 100644 index fdd309d7..00000000 Binary files a/src/templates/i-use/fonts/UbuntuMono-R.ttf and /dev/null differ diff --git a/src/templates/i-use/fonts/UbuntuMono-RI.ttf b/src/templates/i-use/fonts/UbuntuMono-RI.ttf deleted file mode 100644 index 18f81a29..00000000 Binary files a/src/templates/i-use/fonts/UbuntuMono-RI.ttf and /dev/null differ