Patch 7.4.332
Problem:    GTK: When a sign icon doesn't fit exactly there can be ugly gaps.
Solution:   Scale the sign to fit when the aspect ratio is not too far off.
            (Christian Brabandt)
Files:      src/gui_gtk_x11.c


*** ../vim-7.4.331/src/gui_gtk_x11.c    2014-05-13 20:19:53.573808877 +0200
--- src/gui_gtk_x11.c   2014-06-17 18:44:39.900755807 +0200
***************
*** 5965,5991 ****
         * Decide whether we need to scale.  Allow one pixel of border
         * width to be cut off, in order to avoid excessive scaling for
         * tiny differences in font size.
         */
        need_scale = (width > SIGN_WIDTH + 2
!                     || height > SIGN_HEIGHT + 2
                      || (width < 3 * SIGN_WIDTH / 4
                          && height < 3 * SIGN_HEIGHT / 4));
        if (need_scale)
        {
!           double aspect;
  
            /* Keep the original aspect ratio */
            aspect = (double)height / (double)width;
            width  = (double)SIGN_WIDTH * SIGN_ASPECT / aspect;
            width  = MIN(width, SIGN_WIDTH);
!           height = (double)width * aspect;
  
!           /* This doesn't seem to be worth caching, and doing so
!            * would complicate the code quite a bit. */
!           sign = gdk_pixbuf_scale_simple(sign, width, height,
!                                          GDK_INTERP_BILINEAR);
!           if (sign == NULL)
!               return; /* out of memory */
        }
  
        /* The origin is the upper-left corner of the pixmap.  Therefore
--- 5965,6012 ----
         * Decide whether we need to scale.  Allow one pixel of border
         * width to be cut off, in order to avoid excessive scaling for
         * tiny differences in font size.
+        * Do scale to fit the height to avoid gaps because of linespacing.
         */
        need_scale = (width > SIGN_WIDTH + 2
!                     || height != SIGN_HEIGHT
                      || (width < 3 * SIGN_WIDTH / 4
                          && height < 3 * SIGN_HEIGHT / 4));
        if (need_scale)
        {
!           double  aspect;
!           int     w = width;
!           int     h = height;
  
            /* Keep the original aspect ratio */
            aspect = (double)height / (double)width;
            width  = (double)SIGN_WIDTH * SIGN_ASPECT / aspect;
            width  = MIN(width, SIGN_WIDTH);
!           if (((double)(MAX(height, SIGN_HEIGHT)) /
!                (double)(MIN(height, SIGN_HEIGHT))) < 1.15)
!           {
!               /* Change the aspect ratio by at most 15% to fill the
!                * available space completly. */
!               height = (double)SIGN_HEIGHT * SIGN_ASPECT / aspect;
!               height = MIN(height, SIGN_HEIGHT);
!           }
!           else
!               height = (double)width * aspect;
  
!           if (w == width && h == height)
!           {
!               /* no change in dimensions; don't decrease reference counter
!                * (below) */
!               need_scale = FALSE;
!           }
!           else
!           {
!               /* This doesn't seem to be worth caching, and doing so would
!                * complicate the code quite a bit. */
!               sign = gdk_pixbuf_scale_simple(sign, width, height,
!                                                        GDK_INTERP_BILINEAR);
!               if (sign == NULL)
!                   return; /* out of memory */
!           }
        }
  
        /* The origin is the upper-left corner of the pixmap.  Therefore
*** ../vim-7.4.331/src/version.c        2014-06-17 18:16:08.420691059 +0200
--- src/version.c       2014-06-17 18:46:49.784760721 +0200
***************
*** 736,737 ****
--- 736,739 ----
  {   /* Add new patch number below this line */
+ /**/
+     332,
  /**/

-- 
       "To whoever finds this note -
       I have been imprisoned by my father who wishes me to marry
       against my will.  Please please please please come and rescue me.
       I am in the tall tower of Swamp Castle."
   SIR LAUNCELOT's eyes light up with holy inspiration.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui