| 1124 | self.result_surface.set_clip(clipping_rect) |
| 1125 | |
| 1126 | def _compute_scale(self, scale_factor): |
| 1127 | m = self.module_input.mouse_pos |
| 1128 | |
| 1129 | # Percentage of surface where mouse position is actually |
| 1130 | px = (m[0] - self.scale_offset[0]) / float(self.prev_scaled_size) |
| 1131 | py = (m[1] - self.scale_offset[1]) / float(self.prev_scaled_size) |
| 1132 | |
| 1133 | # Offset will be the previously accumulated offset added with the |
| 1134 | # difference of mouse positions in the old and new scales |
| 1135 | diff_between_scales = ((float(self.prev_scaled_size) * px) - (float(self.scaled_size) * px), |
| 1136 | (float(self.prev_scaled_size) * py) - (float(self.scaled_size) * py)) |
| 1137 | |
| 1138 | self.scale_offset = (self.scale_offset[0] + diff_between_scales[0], |
| 1139 | self.scale_offset[1] + diff_between_scales[1]) |
| 1140 | |
| 1141 | # Update previous scale |
| 1142 | self.prev_scaled_size = self.scaled_size |
| 1143 | |
| 1144 | # Scale performed |
| 1145 | self.map_image.scale_map(scale_factor) |
| 1146 | |
| 1147 | def render(self, display): |
| 1148 | if self.actors_with_transforms is None: |