Ignore:
Timestamp:
09/07/13 10:43:31 (8 years ago)
Author:
Neil Muller <drnlmuller@…>
Branch:
default
Phase:
public
Rebase:
32323039376633393039336435303866663835323762303435346234643566636630376332386662
Message:

Partial zoom support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/area_editor.py

    r411 r413  
    456456        self._move_point_mode = False
    457457        self._move_point = False
     458        self._zoom_factor = 1.0
    458459
    459460    def _level_coordinates(self, pos):
     
    461462        if not pos:
    462463            return (0, 0)
    463         return pos[0] + self.pos[0], pos[1] + self.pos[1]
     464        # Apply zoom_factor
     465        zoomed = (pos[0] * self._zoom_factor, pos[1] * self._zoom_factor)
     466        return zoomed[0] + self.pos[0], zoomed[1] + self.pos[1]
    464467
    465468    def _move_view(self, offset):
     
    484487            self._draw_enemies = value
    485488            self.invalidate()
     489
     490    def zoom_out(self):
     491        self._zoom_factor = self._zoom_factor * 2.0
     492        if self._zoom_factor > 8:
     493            self._zoom_factor = 8
     494
     495    def zoom_in(self):
     496        self._zoom_factor = self._zoom_factor // 2.0
     497        if self._zoom_factor < 1:
     498            self._zoom_factor = 1
    486499
    487500    def draw(self, surface):
     
    509522                    thing.render(level_surface)
    510523        surface_area = pygame.rect.Rect(self.pos, SCREEN)
    511         surface.blit(level_surface, (0, 0), surface_area)
     524        zoomed_surface = level_surface.copy()
     525        zoomed_surface = pygame.transform.scale(
     526            level_surface,
     527            (int(level_surface.get_width() / self._zoom_factor),
     528             int(level_surface.get_height() / self._zoom_factor)))
     529        surface.blit(zoomed_surface, (0, 0), surface_area)
    512530
    513531    def change_poly(self, new_poly):
     
    595613                # find the current point
    596614                self._move_point = self.level.find_vertex(corrected_pos)
    597         elif self.cur_poly and ev.button == 1:
    598             # Add a point
    599             self.level.add_point(self.cur_poly,
    600                                  self._level_coordinates(corrected_pos))
    601615        elif ev.button == 1:
    602616            if self._draw_lines:
     
    618632        elif ev.button == 7:  # Scroll right
    619633            self._move_view((10, 0))
     634        elif self.cur_poly and ev.button == 1:
     635            # Add a point
     636            self.level.add_point(self.cur_poly,
     637                                 self._level_coordinates(ev.pos))
    620638        elif ev.button == 3:
    621639            self._mouse_drag = True
     
    834852        self._populate_menu()
    835853
     854        self._zoom = 1
     855
    836856    def _make_draw_menu(self):
    837857        widgets = []
     
    918938        widgets.append(save_but)
    919939        y += MENU_BUTTON_HEIGHT + MENU_PAD
     940
     941        zoom_out = Button('Zoom out', action=self.level_widget.zoom_out)
     942        zoom_out.rect = BUTTON_RECT.copy()
     943        zoom_out.rect.move_ip(MENU_LEFT, y)
     944        widgets.append(zoom_out)
     945        y += MENU_BUTTON_HEIGHT + MENU_PAD
     946
     947        zoom_in = Button('Zoom in', action=self.level_widget.zoom_in)
     948        zoom_in.rect = BUTTON_RECT.copy()
     949        zoom_in.rect.move_ip(MENU_LEFT, y)
     950        widgets.append(zoom_in)
    920951
    921952        y = SCREEN[1] - MENU_BUTTON_HEIGHT - MENU_PAD
Note: See TracChangeset for help on using the changeset viewer.