changeset 524:a91cb4bffd5d

Make close button helper in rect_drawer zoom correctly
author Neil Muller <neil@dip.sun.ac.za>
date Wed, 08 Sep 2010 00:59:51 +0200
parents 08dbb7f3a34d
children 821b322e903b
files tools/rect_drawer.py
diffstat 1 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/tools/rect_drawer.py	Wed Sep 08 00:45:06 2010 +0200
+++ b/tools/rect_drawer.py	Wed Sep 08 00:59:51 2010 +0200
@@ -84,14 +84,6 @@
         self.close_button = BoomLabel('Close', font=get_font(20, 'Vera.ttf'))
         self.close_button.fg_color = (0, 0, 0)
         self.close_button.bg_color = (0, 0, 0)
-        if self.state.current_detail:
-            w, h = self.state.current_detail.get_detail_size()
-            rect = pygame.rect.Rect(0, 0, w, h)
-            self.close_button.rect.midbottom = rect.midbottom
-            self.add(self.close_button)
-            self.offset = (0, 0)
-        else:
-            self.offset = (-self.state.current_scene.OFFSET[0], - self.state.current_scene.OFFSET[1])
         self.draw_rects = True
         self.draw_things = True
         self.draw_thing_rects = True
@@ -102,6 +94,13 @@
         self.zoom_display = False
         self.draw_anim = False
         self.zoom_offset = (600, 600)
+        if self.state.current_detail:
+            w, h = self.state.current_detail.get_detail_size()
+            rect = pygame.rect.Rect(0, 0, w, h)
+            self.close_button.rect.midbottom = rect.midbottom
+            self.offset = (0, 0)
+        else:
+            self.offset = (-self.state.current_scene.OFFSET[0], - self.state.current_scene.OFFSET[1])
         self.find_existing_intersects()
 
     def _get_scene(self):
@@ -247,6 +246,16 @@
                 self.state.current_detail.draw(surface, None)
             else:
                 self.state.current_detail.draw_background(surface)
+            # We duplicate Albow's draw logic here, so we zoom the close
+            # button correctly
+            r = self.close_button.get_rect()
+            surf_rect = surface.get_rect()
+            sub_rect = surf_rect.clip(r)
+            try:
+                sub = surface.subsurface(sub_rect)
+                self.close_button.draw_all(sub)
+            except ValueError, e:
+                print 'Error, failed to draw close button', e
         else:
             if self.draw_things:
                 self.state.current_scene.draw(surface, None)