From 08da4995f1cf87ee6f19e5c6fc60ad6cd706478a Mon Sep 17 00:00:00 2001 From: Ander <9and3r@gmail.com> Date: Fri, 14 Nov 2014 01:45:23 +0100 Subject: [PATCH] Text smooth scroll when it doesnt fit --- mopidy_touchscreen/screen_objects.py | 35 +++++++--------------------- mopidy_touchscreen/touch_screen.py | 2 +- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/mopidy_touchscreen/screen_objects.py b/mopidy_touchscreen/screen_objects.py index 2a8c042..6043092 100644 --- a/mopidy_touchscreen/screen_objects.py +++ b/mopidy_touchscreen/screen_objects.py @@ -220,8 +220,6 @@ class TextItem(BaseItem): if size is not None: if self.pos[0] + self.box.get_rect().width > pos[0] + size[0]: self.fit_horizontal = False - self.text += " " - self.original_text = self.text self.step = 0 else: self.fit_horizontal = True @@ -235,28 +233,17 @@ class TextItem(BaseItem): def update(self): if not self.fit_horizontal: - if self.text == self.original_text: - if self.step > 90: - self.step = 0 - new_text = self.text[1:] - new_text = new_text + self.text[:1] - self.text = new_text - else: - self.step += 1 - elif self.step > 5: - self.step = 0 - new_text = self.text[1:] - new_text = new_text + self.text[:1] - self.text = new_text + if self.step > self.box.get_rect().width: + self.step = -self.size[0] else: - self.step += 1 + self.step = self.step + 4 def render(self, surface): if self.fit_horizontal: - pass + surface.blit(self.box, self.pos, area=self.rect) else: - self.box = self.font.render(self.text, True, self.color) - surface.blit(self.box, self.pos, area=self.rect) + surface.blit(self.box, self.pos, area=pygame.Rect(self.step, 0, self.size[0], self.size[1])) + def set_text(self, text, change_size): if change_size: @@ -299,14 +286,8 @@ class TouchAndTextItem(TouchObject, TextItem): self.selected_box = self.font.render(text, True, self.selected_color) def render(self, surface): - if self.fit_horizontal: - pass - else: - if self.active: - self.active_box = self.font.render(self.text, True, - self.active_color) - else: - self.box = self.font.render(self.text, True, self.color) + if not self.fit_horizontal: + self.rect = pygame.Rect(self.step, 0, self.size[0], self.size[1]) if self.selected: surface.blit(self.selected_box, self.pos, area=self.rect) elif self.active: diff --git a/mopidy_touchscreen/touch_screen.py b/mopidy_touchscreen/touch_screen.py index 9bfc90d..3202751 100644 --- a/mopidy_touchscreen/touch_screen.py +++ b/mopidy_touchscreen/touch_screen.py @@ -44,7 +44,7 @@ class TouchScreen(pykka.ThreadingActor, core.CoreListener): clock = pygame.time.Clock() if self.fullscreen: screen = pygame.display.set_mode(self.screen_size, - pygame.FULLSCREEN) + pygame.FULLSCREEN, pygame.HWSURFACE) else: screen = pygame.display.set_mode(self.screen_size) pygame.mouse.set_visible(self.cursor)