wIconValidateIconSize checks the width and height
authorRodolfo García Peñas (kix) <kix@kix.es>
Wed, 14 Nov 2012 18:26:12 +0000 (14 19:26 +0100)
committerCarlos R. Mafra <crmafra@gmail.com>
Wed, 14 Nov 2012 22:48:08 +0000 (14 22:48 +0000)
The function wIconValidateIconSize checks if the width size and height size are
less than the preference size (and left space for the border). If the width
size or height size is greater than the preference, then checks what is the
bigger size of them. Then resize it using the bigger value and holding the
aspect ratio.

Before this patch, wIconValidateIconSize didn't check if height was bigger
than width and always suppose that width was greater than height.

src/icon.c

index 166c827..1ed90bd 100644 (file)
@@ -359,10 +359,14 @@ RImage *wIconValidateIconSize(RImage *icon, int max_size)
                return NULL;
 
        /* We should hold "ICON_BORDER" (~2) pixels to include the icon border */
-       if ((icon->width - max_size) > -ICON_BORDER ||
-           (icon->height - max_size) > -ICON_BORDER) {
-               nimage = RScaleImage(icon, max_size - ICON_BORDER,
-                                    (icon->height * (max_size - ICON_BORDER) / icon->width));
+       if (((max_size + ICON_BORDER) < icon->width) ||
+           ((max_size + ICON_BORDER) < icon->height)) {
+               if (icon->width > icon->height)
+                       nimage = RScaleImage(icon, max_size - ICON_BORDER,
+                                            (icon->height * (max_size - ICON_BORDER) / icon->width));
+               else
+                       nimage = RScaleImage(icon, (icon->width * (max_size - ICON_BORDER) / icon->height),
+                                            max_size - ICON_BORDER);
                RReleaseImage(icon);
                icon = nimage;
        }