added mousewheel support for UV Image window
This commit is contained in:
@@ -54,6 +54,7 @@
|
|||||||
#include "DNA_packedFile_types.h"
|
#include "DNA_packedFile_types.h"
|
||||||
#include "DNA_screen_types.h"
|
#include "DNA_screen_types.h"
|
||||||
#include "DNA_space_types.h"
|
#include "DNA_space_types.h"
|
||||||
|
#include "DNA_userdef_types.h"
|
||||||
|
|
||||||
#include "BKE_utildefines.h"
|
#include "BKE_utildefines.h"
|
||||||
#include "BKE_global.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.
|
* 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
|
* 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;
|
SpaceImage *sima= curarea->spacedata.first;
|
||||||
View2D *v2d= &sima->v2d;
|
View2D *v2d= &sima->v2d;
|
||||||
int width, height;
|
|
||||||
#ifdef NAN_TPT
|
#ifdef NAN_TPT
|
||||||
IMG_BrushPtr brush;
|
IMG_BrushPtr brush;
|
||||||
IMG_CanvasPtr canvas;
|
IMG_CanvasPtr canvas;
|
||||||
@@ -2108,31 +2107,16 @@ void winqreadimagespace(unsigned short event, short val, char ascii)
|
|||||||
case MIDDLEMOUSE:
|
case MIDDLEMOUSE:
|
||||||
image_viewmove();
|
image_viewmove();
|
||||||
break;
|
break;
|
||||||
|
case WHEELUPMOUSE:
|
||||||
|
case WHEELDOWNMOUSE:
|
||||||
case PADPLUSKEY:
|
case PADPLUSKEY:
|
||||||
sima->zoom *= 2;
|
case PADMINUS:
|
||||||
|
image_viewzoom(event);
|
||||||
scrarea_queue_winredraw(curarea);
|
scrarea_queue_winredraw(curarea);
|
||||||
break;
|
break;
|
||||||
case HOMEKEY:
|
case HOMEKEY:
|
||||||
image_home();
|
image_home();
|
||||||
break;
|
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user