From eea3379477cbd5fa3ad9bae68271bee193e29e9d Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Mon, 8 Apr 2024 18:01:45 +0200 Subject: [PATCH] Add a MultiLineStringRenderer (can handle \n) --- triditko/renderers.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/triditko/renderers.py b/triditko/renderers.py index caa09e0..f80bc5c 100644 --- a/triditko/renderers.py +++ b/triditko/renderers.py @@ -12,3 +12,26 @@ class DrawItemNameRenderer(Renderer): result.blit(rendered, pos) return result +class MultiLineStringRenderer(Renderer): + def __init__(self, linespacing=1.5, fontsize=25): + self.linespacing = linespacing + self.font_size = fontsize + + def render(self, string, w, h): + print(string) + result = pg.Surface((w, h)) + font = pgft.Font(None, size=self.font_size) + # This is a complete typographical blasphemy. We are going to space + # text by its centers, not baselines. + + lines = string.split('\n') + n = len(lines) + for i, line in enumerate(lines): + rendered, _brect = font.render(line, fgcolor=(255,255,255)) #white. + cpos = align(result, rendered) + x, cy = cpos + y = cy - (n-2*i-1)*self.linespacing*self.font_size//2 + pos = x, y + print(pos) + result.blit(rendered, pos) + return result