added mousewheel support for UV Image window
authorRob Haarsma <phaseIV@zonnet.nl>
Fri, 31 Jan 2003 17:22:20 +0000 (17:22 +0000)
committerRob Haarsma <phaseIV@zonnet.nl>
Fri, 31 Jan 2003 17:22:20 +0000 (17:22 +0000)
source/blender/src/drawimage.c
source/blender/src/space.c

index 9c5370600e5eb2f61b904de6366d462267d0e469..efe75fc4586432629a6345bc70fd3fa9441e4ed1 100644 (file)
@@ -54,6 +54,7 @@
 #include "DNA_packedFile_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_space_types.h"
+#include "DNA_userdef_types.h"
 
 #include "BKE_utildefines.h"
 #include "BKE_global.h"
@@ -541,6 +542,54 @@ void image_viewmove(void)
        }
 }
 
+void image_viewzoom(unsigned short event)
+{
+       SpaceImage *sima= curarea->spacedata.first;
+       int width, height;
+
+       if(U.uiflag & WHEELZOOMDIR) {
+               if (event==WHEELDOWNMOUSE || event == PADPLUSKEY) {
+                       sima->zoom *= 2;
+               } else {
+                       sima->zoom /= 2;
+                       /* Check if the image will still be visible after zooming out */
+                       if (sima->zoom < 1) {
+                               calc_image_view(G.sima, 'p');
+                               if (sima->image) {
+                                       if (sima->image->ibuf) {
+                                               width = sima->image->ibuf->x * sima->zoom;
+                                               height = sima->image->ibuf->y * sima->zoom;
+                                               if ((width < 4) && (height < 4)) {
+                                                       /* Image will become too small, reset value */
+                                                       sima->zoom *= 2;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       } else {
+               if (event==WHEELUPMOUSE || event == PADPLUSKEY) {
+                       sima->zoom *= 2;
+               } else {
+                       sima->zoom /= 2;
+                       /* Check if the image will still be visible after zooming out */
+                       if (sima->zoom < 1) {
+                               calc_image_view(G.sima, 'p');
+                               if (sima->image) {
+                                       if (sima->image->ibuf) {
+                                               width = sima->image->ibuf->x * sima->zoom;
+                                               height = sima->image->ibuf->y * sima->zoom;
+                                               if ((width < 4) && (height < 4)) {
+                                                       /* Image will become too small, reset value */
+                                                       sima->zoom *= 2;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
+
 /**
  * Updates the fields of the View2D member of the SpaceImage struct.
  * Default behavior is to reset the position of the image and set the zoom to 1
index 4be129d5679fe12b35ee979f4ad7618dfde4c0e7..4bb247faface769ed0e2c56139123a3d3cc73041 100644 (file)
@@ -1999,7 +1999,6 @@ void winqreadimagespace(unsigned short event, short val, char ascii)
 {
        SpaceImage *sima= curarea->spacedata.first;
        View2D *v2d= &sima->v2d;
-       int width, height;
 #ifdef NAN_TPT
        IMG_BrushPtr brush;
        IMG_CanvasPtr canvas;
@@ -2108,31 +2107,16 @@ void winqreadimagespace(unsigned short event, short val, char ascii)
                case MIDDLEMOUSE:
                        image_viewmove();
                        break;
+               case WHEELUPMOUSE:
+               case WHEELDOWNMOUSE:
                case PADPLUSKEY:
-                       sima->zoom *= 2;
+               case PADMINUS:
+                       image_viewzoom(event);
                        scrarea_queue_winredraw(curarea);
                        break;
                case HOMEKEY:
                        image_home();
                        break;
-               case PADMINUS:
-                       sima->zoom /= 2;
-                       /* Check if the image will still be visible after zooming out */
-                       if (sima->zoom < 1) {
-                               calc_image_view(G.sima, 'p');
-                               if (sima->image) {
-                                       if (sima->image->ibuf) {
-                                               width = sima->image->ibuf->x * sima->zoom;
-                                               height = sima->image->ibuf->y * sima->zoom;
-                                               if ((width < 4) && (height < 4)) {
-                                                       /* Image will become too small, reset value */
-                                                       sima->zoom *= 2;
-                                               }
-                                       }
-                               }
-                       }
-                       scrarea_queue_winredraw(curarea);
-                       break;                  
        }
 }