METHOD(Image, toString, string(entity))
METHOD(Image, resizeNotify, void(entity, vector, vector, vector, vector))
METHOD(Image, updateAspect, void(entity))
- METHOD(Image, setZoom, void(entity, float))
+ METHOD(Image, setZoom, void(entity, float, float))
METHOD(Image, startZoomMove, float(entity, vector))
METHOD(Image, zoomMove, float(entity, vector))
ATTRIB(Image, src, string, string_null)
}
float Image_startZoomMove(entity me, vector coords)
{
- if (me.zoomFactor > 1)
+ //if (me.zoomFactor > 1) //mousewheel zoom may start from a non-zoomed-in image
{
me.start_zoomOffset = me.zoomOffset;
me.start_coords = coords;
}
return 1;
}
-void Image_setZoom(entity me, float z)
+void Image_setZoom(entity me, float z, float atMousePosition)
{
+ float prev_zoomFactor;
+ prev_zoomFactor = me.zoomFactor;
if (z < 0) // multiply by the current zoomFactor
me.zoomFactor *= -z;
else if (z == 0) // reset (no zoom)
me.zoomFactor = bound(1/16, me.zoomFactor, 16);
if (me.zoomFactor <= 1)
me.zoomOffset = '0.5 0.5 0';
+ else if (atMousePosition && prev_zoomFactor != me.zoomFactor)
+ me.zoomOffset = me.start_zoomOffset + (me.start_coords - '0.5 0.5 0') * (1/prev_zoomFactor);
me.updateAspect(me);
}
void Image_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
}
void increaseZoom_Click(entity btn, entity me)
{
- me.screenshotImage.setZoom(me.screenshotImage, -2);
+ me.screenshotImage.setZoom(me.screenshotImage, -2, FALSE);
}
void decreaseZoom_Click(entity btn, entity me)
{
- me.screenshotImage.setZoom(me.screenshotImage, -1/2);
+ me.screenshotImage.setZoom(me.screenshotImage, -1/2, FALSE);
}
void resetZoom_Click(entity btn, entity me)
{
- me.screenshotImage.setZoom(me.screenshotImage, 0);
+ me.screenshotImage.setZoom(me.screenshotImage, 0, FALSE);
}
void toggleSlideShow_Click(entity btn, entity me)
{
default:
if (key == K_MWHEELUP || ascii == '+')
{
- me.screenshotImage.setZoom(me.screenshotImage, -2);
+ me.screenshotImage.setZoom(me.screenshotImage, -2, (key == K_MWHEELUP));
return 1;
}
else if (key == K_MWHEELDOWN || ascii == '-')
{
- me.screenshotImage.setZoom(me.screenshotImage, -1/2);
+ me.screenshotImage.setZoom(me.screenshotImage, -1/2, (key == K_MWHEELDOWN));
return 1;
}
if (me.scrList.keyDown(me.scrList, key, ascii, shift))
ATTRIB(XonoticScreenshotImage, focusable, float, 1) // mousePress and mouseDrag work only if focusable is set
METHOD(XonoticScreenshotImage, mousePress, float(entity, vector))
METHOD(XonoticScreenshotImage, mouseDrag, float(entity, vector))
+ METHOD(XonoticScreenshotImage, mouseMove, float(entity, vector))
METHOD(XonoticScreenshotImage, resizeNotify, void(entity, vector, vector, vector, vector))
ATTRIB(XonoticScreenshotImage, realFontSize, vector, '0 0 0')
ATTRIB(XonoticScreenshotImage, fontSize, float, SKINFONTSIZE_NORMAL)
return me.zoomMove(me, coords);
}
+float XonoticScreenshotImage_mouseMove(entity me, vector coords)
+{
+ return me.startZoomMove(me, coords);
+}
+
void XonoticScreenshotImage_draw(entity me)
{
if (me.src != "")