Ajout du GUI
This commit is contained in:
60
kivy/core/text/text_pil.py
Normal file
60
kivy/core/text/text_pil.py
Normal file
@@ -0,0 +1,60 @@
|
||||
'''
|
||||
Text PIL: Draw text with PIL
|
||||
'''
|
||||
|
||||
__all__ = ('LabelPIL', )
|
||||
|
||||
from PIL import Image, ImageFont, ImageDraw
|
||||
|
||||
|
||||
from kivy.compat import text_type
|
||||
from kivy.core.text import LabelBase
|
||||
from kivy.core.image import ImageData
|
||||
|
||||
# used for fetching extends before creature image surface
|
||||
default_font = ImageFont.load_default()
|
||||
|
||||
|
||||
class LabelPIL(LabelBase):
|
||||
_cache = {}
|
||||
|
||||
def _select_font(self):
|
||||
fontsize = int(self.options['font_size'])
|
||||
fontname = self.options['font_name_r']
|
||||
try:
|
||||
id = '%s.%s' % (text_type(fontname), text_type(fontsize))
|
||||
except UnicodeDecodeError:
|
||||
id = '%s.%s' % (fontname, fontsize)
|
||||
|
||||
if id not in self._cache:
|
||||
font = ImageFont.truetype(fontname, fontsize)
|
||||
self._cache[id] = font
|
||||
|
||||
return self._cache[id]
|
||||
|
||||
def get_extents(self, text):
|
||||
font = self._select_font()
|
||||
w, h = font.getsize(text)
|
||||
return w, h
|
||||
|
||||
def get_cached_extents(self):
|
||||
return self._select_font().getsize
|
||||
|
||||
def _render_begin(self):
|
||||
# create a surface, context, font...
|
||||
self._pil_im = Image.new('RGBA', self._size, color=(255, 255, 255, 0))
|
||||
self._pil_draw = ImageDraw.Draw(self._pil_im)
|
||||
|
||||
def _render_text(self, text, x, y):
|
||||
color = tuple([int(c * 255) for c in self.options['color']])
|
||||
self._pil_draw.text((int(x), int(y)),
|
||||
text, font=self._select_font(), fill=color)
|
||||
|
||||
def _render_end(self):
|
||||
data = ImageData(self._size[0], self._size[1],
|
||||
self._pil_im.mode.lower(), self._pil_im.tobytes())
|
||||
|
||||
del self._pil_im
|
||||
del self._pil_draw
|
||||
|
||||
return data
|
||||
Reference in New Issue
Block a user