]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Open images in the screenshot viewer with their real dimensions
authorterencehill <piuntn@gmail.com>
Fri, 12 Aug 2011 15:11:00 +0000 (17:11 +0200)
committerterencehill <piuntn@gmail.com>
Fri, 12 Aug 2011 15:11:00 +0000 (17:11 +0200)
qcsrc/menu/item/image.c
qcsrc/menu/xonotic/screenshotimage.c

index ec913176c33cebc02271fd93383c908a770c711c..2282783e861c257b0f97bff57054b1f622c1f871 100644 (file)
@@ -10,6 +10,7 @@ CLASS(Image) EXTENDS(Item)
        METHOD(Image, drag, float(entity, vector))
        ATTRIB(Image, src, string, string_null)
        ATTRIB(Image, color, vector, '1 1 1')
+       ATTRIB(Image, realSize, float, 0) // if set, forcedAspect is ignored
        ATTRIB(Image, forcedAspect, float, 0)
        ATTRIB(Image, zoomFactor, float, 1)
        ATTRIB(Image, zoomOffset, vector, '0.5 0.5 0')
@@ -34,10 +35,10 @@ void Image_configureImage(entity me, string path)
 }
 void Image_draw(entity me)
 {
-       if (me.zoomFactor > 1)
+       if(me.imgSize_x > 1 || me.imgSize_y > 1)
                draw_SetClip();
        draw_Picture(me.imgOrigin, me.src, me.imgSize, me.color, 1);
-       if (me.zoomFactor > 1)
+       if(me.imgSize_x > 1 || me.imgSize_y > 1)
                draw_ClearClip();
 }
 void Image_updateAspect(entity me)
@@ -45,30 +46,40 @@ void Image_updateAspect(entity me)
        float asp;
        if(me.size_x <= 0 || me.size_y <= 0)
                return;
-       if(me.forcedAspect == 0)
+       if(me.realSize == 0 && me.forcedAspect == 0)
        {
                me.imgOrigin = '0 0 0';
                me.imgSize = '1 1 0';
        }
        else
        {
-               if(me.forcedAspect < 0)
+               if(me.realSize)
                {
                        vector sz;
                        sz = draw_PictureSize(me.src);
-                       asp = sz_x / sz_y;
+                       me.imgSize_x = sz_x / me.size_x;
+                       me.imgSize_y = sz_y / me.size_y;
                }
                else
-                       asp = me.forcedAspect;
-               if(me.size_x > asp * me.size_y)
                {
-                       // x too large, so center x-wise
-                       me.imgSize = eY + eX * (me.size_y * asp / me.size_x);
-               }
-               else
-               {
-                       // y too large, so center y-wise
-                       me.imgSize = eX + eY * (me.size_x / (asp * me.size_y));
+                       if(me.forcedAspect < 0)
+                       {
+                               vector sz;
+                               sz = draw_PictureSize(me.src);
+                               asp = sz_x / sz_y;
+                       }
+                       else
+                               asp = me.forcedAspect;
+                       if(me.size_x > asp * me.size_y)
+                       {
+                               // x too large, so center x-wise
+                               me.imgSize = eY + eX * (me.size_y * asp / me.size_x);
+                       }
+                       else
+                       {
+                               // y too large, so center y-wise
+                               me.imgSize = eX + eY * (me.size_x / (asp * me.size_y));
+                       }
                }
                if (me.zoomFactor)
                {
@@ -94,7 +105,7 @@ float Image_drag_setStartPos(entity me, vector coords)
 }
 float Image_drag(entity me, vector coords)
 {
-       if (me.zoomFactor > 1)
+       if(me.imgSize_x > 1 || me.imgSize_y > 1)
        {
                me.zoomOffset_x = me.start_zoomOffset_x + (me.start_coords_x - coords_x) / me.imgSize_x;
                me.zoomOffset_y = me.start_zoomOffset_y + (me.start_coords_y - coords_y) / me.imgSize_y;
index dc8de42b58b0aa9a15ebc916360a6e8ebc72632c..2e87c6463c4b7988bc764686e9bb786993e3e40e 100644 (file)
@@ -28,7 +28,7 @@ entity makeXonoticScreenshotImage()
 void XonoticScreenshotImage_configureXonoticScreenshotImage(entity me, string theImage)
 {
        me.configureImage(me, theImage);
-       me.forcedAspect = -1;
+       me.realSize = 1;
        me.screenshotTime = time;
        me.updateAspect(me);
        if (me.screenshotTitle)