870 vp = w->viewport; |
870 vp = w->viewport; |
871 |
871 |
872 switch (how) { |
872 switch (how) { |
873 case ZOOM_IN: |
873 case ZOOM_IN: |
874 if (vp->zoom == ZOOM_LVL_MIN) return false; |
874 if (vp->zoom == ZOOM_LVL_MIN) return false; |
875 vp->zoom = (ZoomLevel)((byte)vp->zoom - 1); |
875 vp->zoom = (ZoomLevel)((int)vp->zoom - 1); |
876 vp->virtual_width >>= 1; |
876 vp->virtual_width >>= 1; |
877 vp->virtual_height >>= 1; |
877 vp->virtual_height >>= 1; |
878 |
878 |
879 WP(w, vp_d).scrollpos_x += vp->virtual_width >> 1; |
879 WP(w, vp_d).scrollpos_x += vp->virtual_width >> 1; |
880 WP(w, vp_d).scrollpos_y += vp->virtual_height >> 1; |
880 WP(w, vp_d).scrollpos_y += vp->virtual_height >> 1; |
881 WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
881 WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
882 WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |
882 WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |
883 break; |
883 break; |
884 case ZOOM_OUT: |
884 case ZOOM_OUT: |
885 if (vp->zoom == ZOOM_LVL_MAX) return false; |
885 if (vp->zoom == ZOOM_LVL_MAX) return false; |
886 vp->zoom = (ZoomLevel)((byte)vp->zoom + 1); |
886 vp->zoom = (ZoomLevel)((int)vp->zoom + 1); |
887 |
887 |
888 WP(w, vp_d).scrollpos_x -= vp->virtual_width >> 1; |
888 WP(w, vp_d).scrollpos_x -= vp->virtual_width >> 1; |
889 WP(w, vp_d).scrollpos_y -= vp->virtual_height >> 1; |
889 WP(w, vp_d).scrollpos_y -= vp->virtual_height >> 1; |
890 WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
890 WP(w, vp_d).dest_scrollpos_x = WP(w,vp_d).scrollpos_x; |
891 WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |
891 WP(w, vp_d).dest_scrollpos_y = WP(w,vp_d).scrollpos_y; |