class PygletRichLabel(pyglet.text.DocumentLabel): '''Rich text label. ''' def __init__(self, text='', font_name=None, font_size=None, bold=False, italic=False, color=None, x=0, y=0, width=None, height=None, anchor_x='left', anchor_y='baseline', halign='left', multiline=False, dpi=None, batch=None, group=None): '''Create a rich text label. :Parameters: `text` : str Pyglet attributed (rich) text to display. `font_name` : str or list Font family name(s). If more than one name is given, the first matching name is used. `font_size` : float Font size, in points. `bold` : bool Bold font style. `italic` : bool Italic font style. `color` : (int, int, int, int) or None Font colour, as RGBA components in range [0, 255]. None to use font colors defined by text attributes. `x` : int X coordinate of the label. `y` : int Y coordinate of the label. `width` : int Width of the label in pixels, or None `height` : int Height of the label in pixels, or None `anchor_x` : str Anchor point of the X coordinate: one of ``"left"``, ``"center"`` or ``"right"``. `anchor_y` : str Anchor point of the Y coordinate: one of ``"bottom"``, ``"baseline"``, ``"center"`` or ``"top"``. `halign` : str Horizontal alignment of text on a line, only applies if a width is supplied. One of ``"left"``, ``"center"`` or ``"right"``. `multiline` : bool If True, the label will be word-wrapped and accept newline characters. You must also set the width of the label. `dpi` : float Resolution of the fonts in this layout. Defaults to 96. `batch` : `Batch` Optional graphics batch to add the label to. `group` : `Group` Optional graphics group to use. ''' text = '{color (255, 255, 255, 255)}' + text document = pyglet.text.decode_attributed(text) super(PygletRichLabel, self).__init__(document, x, y, width, height, anchor_x, anchor_y, multiline, dpi, batch, group) style = dict(halign=halign) if font_name: style['font_name'] = font_name if font_size: style['font_size'] = font_size if bold: style['bold'] = bold if italic: style['italic'] = italic if color: style['color'] = color self.document.set_style(0, len(self.document.text), style) class RichLabel(cocos.text.TextElement): '''CocosNode RichLabel element. It is a wrapper of a custom Pyglet Rich Label using rich text attributes with the benefits of being of a CocosNode ''' klass = PygletRichLabel