def _layout_text(pc, text, height): layout = pc.create_layout() layout.set_font_description(pango.FontDescription(FONT_NAME)) layout.set_text(text) extents = layout.get_line(0).get_extents()[1] layout_width = pango.units_to_double(extents[2]) layout_height = pango.units_to_double(pango.ASCENT(extents)) scale_ratio = float(height) / layout_height return layout, scale_ratio, scale_ratio * layout_width
def _clutter_render(self): """ Render the widget """ # FIXME: handle text larger than text widget size if not self._obj or 'size' in self._sync_properties: if not self._obj: self._obj = backend.Text() self._obj.show() self._clutter_set_obj_size() self._obj.set_line_wrap(True) self._obj.set_line_wrap_mode(pango.WRAP_WORD_CHAR) self._obj.set_use_markup(True) self._obj.set_font_name("%s %spx" % (self.__font.name, self.__font.size)) self._obj.set_color(backend.Color(*self.__color)) self._obj.set_text(self.__text_eval) self._intrinsic_size = self.inner_width, pango.units_to_double(self._obj.get_layout().get_size()[1])
def get_cursor_pos(lyt, index): return [pango.units_to_double(x) for x in lyt.get_cursor_pos(index)[0]]