Mercurial > emacs
changeset 66208:5414bd89ffde
(check_image_size): Handle integer Vmax_image_size value
directly as max pixel value. Use default frame size for null frame.
(syms_of_image) <max-image-size>: Describe integer value.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Wed, 19 Oct 2005 21:52:13 +0000 |
parents | 23849291d887 |
children | 97afbe22dea4 |
files | src/image.c |
diffstat | 1 files changed, 30 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/image.c Wed Oct 19 20:19:04 2005 +0000 +++ b/src/image.c Wed Oct 19 21:52:13 2005 +0000 @@ -1163,17 +1163,29 @@ int width; int height; { - if (width <= 0 || height <=0) + int w, h; + + if (width <= 0 || height <= 0) return 0; - if (FLOATP (Vmax_image_size) && f - && ((width > (int)(XFLOAT_DATA (Vmax_image_size) - * FRAME_PIXEL_WIDTH (f))) - || (height > (int)(XFLOAT_DATA (Vmax_image_size) - * FRAME_PIXEL_HEIGHT (f))))) - return 0; - - return 1; + if (INTEGERP (Vmax_image_size)) + w = h = XINT (Vmax_image_size); + else if (FLOATP (Vmax_image_size)) + { + if (f != NULL) + { + w = FRAME_PIXEL_WIDTH (f); + h = FRAME_PIXEL_HEIGHT (f); + } + else + w = h = 1024; /* Arbitrary size for unknown frame. */ + w = (int) (XFLOAT_DATA (Vmax_image_size) * w); + h = (int) (XFLOAT_DATA (Vmax_image_size) * h); + } + else + return 1; + + return (width <= w && height <= h); } /* Prepare image IMG for display on frame F. Must be called before @@ -8289,12 +8301,15 @@ Fput (intern ("image-library-alist"), Qrisky_local_variable, Qt); DEFVAR_LISP ("max-image-size", &Vmax_image_size, - doc: /* Maximum size of an image, relative to the selected frame. - -This is a floating point number that is multiplied by the width and -height of the selected frame, to give the maximum width and height for -images. Emacs will not load an image into memory if its width or -height exceeds this limit. */); + doc: /* Maximum size of images. +Emacs will not load an image into memory if its pixel width or +pixel height exceeds this limit. + +If the value is an integer, it directly specifies the maximum +image height and width, measured in pixels. If it is a floating +point number, it specifies the maximum image height and width +as a ratio to the frame height and width. If the value is +non-numeric, there is no explicit limit on the size of images. */); Vmax_image_size = make_float (MAX_IMAGE_SIZE); Vimage_type_cache = Qnil;