added mousewheel support for UV Image window

This commit is contained in:
Rob Haarsma 2003-01-31 17:22:20 +00:00
parent fefaf2ff0f
commit d1d3969d7d
2 changed files with 53 additions and 20 deletions

@ -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

@ -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;
}
}