diff options
Diffstat (limited to 'presentty/transition.py')
-rw-r--r-- | presentty/transition.py | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/presentty/transition.py b/presentty/transition.py index 5592cd9..1e9fbad 100644 --- a/presentty/transition.py +++ b/presentty/transition.py @@ -13,7 +13,11 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +from __future__ import absolute_import, division, print_function + +import six import urwid +from six.moves import range class Transition(urwid.Widget): def __init__(self, duration=0.4): @@ -76,7 +80,9 @@ class DissolveTransition(Transition): buf = [] for line in canvas.content(): for (attr, cs, text) in line: - for char in unicode(text, 'utf8'): + if not isinstance(text, six.text_type): + text = six.text_type(text, 'utf-8') + for char in text: buf.append((attr, cs, char)) return buf @@ -87,9 +93,9 @@ class DissolveTransition(Transition): self._oldbuf = self._to_buf(old) self._newbuf = self._to_buf(new) self._cache_size = size - line_list = [] + b_line_list = [] attr_list = [] - line_text = '' + b_line_text = b'' line_attrs = [] current_attr = [None, 0] current_rgb = None @@ -104,11 +110,11 @@ class DissolveTransition(Transition): oldrgb = background.get_rgb_values() if None in newrgb: newrgb = background.get_rgb_values() - if newchar == ' ': + if newchar == b' ': char = oldchar charattr = oldattr newrgb = newrgb[3:]*2 - elif oldchar == ' ': + elif oldchar == b' ': char = newchar charattr = newattr oldrgb = oldrgb[3:]*2 @@ -118,8 +124,8 @@ class DissolveTransition(Transition): else: char = oldchar charattr = oldattr - char = char.encode('utf8') - line_text += char + b_char = char.encode('utf8') + b_line_text += b_char rgb = [] props = [] if charattr.bold: @@ -133,25 +139,25 @@ class DissolveTransition(Transition): for x in range(len(oldrgb)): rgb.append(int(((newrgb[x]-oldrgb[x])*self.progress)+oldrgb[x])>>4) if current_rgb == rgb and current_props == props: - current_attr[1] += len(char) + current_attr[1] += len(b_char) else: if current_attr[0]: line_attrs.append(tuple(current_attr)) fg = ', '.join(props + ['#%x%x%x' % tuple(rgb[:3])]) bg = '#%x%x%x' % tuple(rgb[3:]) attr = urwid.AttrSpec(fg, bg) - current_attr = [attr, len(char)] + current_attr = [attr, len(b_char)] current_rgb = rgb current_props = props if (i+1) % size[0] == 0: line_attrs.append(tuple(current_attr)) current_attr = [None, 0] current_rgb = None - line_list.append(line_text) - line_text = '' + b_line_list.append(b_line_text) + b_line_text = b'' attr_list.append(line_attrs) line_attrs = [] - canvas = urwid.TextCanvas(line_list, attr_list) + canvas = urwid.TextCanvas(b_line_list, attr_list) return canvas class CutTransition(Transition): |