diff options
| author | Gerd Moellmann | 2001-01-12 15:09:21 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2001-01-12 15:09:21 +0000 |
| commit | 3ed61e75f4cd3577b58c225cc882500465053465 (patch) | |
| tree | 95556aed9bcce2b0083f17f8579d20b5042d5ee3 /src | |
| parent | f82159939775b2d15ddb07f4b98555599b070dab (diff) | |
| download | emacs-3ed61e75f4cd3577b58c225cc882500465053465.tar.gz emacs-3ed61e75f4cd3577b58c225cc882500465053465.zip | |
(Fimage_size, image_ascent): Adapt to the change of image
margins.
(lookup_image): If `:margin MARGIN' is specified, and MARGIN is a
pair of integers `(X . Y)', use X for the horizontal and Y for the
vertical margin.
(IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR): New enumerator.
(parse_image_spec): Check it.
(xbm_format, xpm_format, pbm_format, png_format, jpeg_format)
(tiff_format, gif_format, gs_format): Use
IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR for :margin.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xfns.c | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/src/xfns.c b/src/xfns.c index 4c0ac3fcc5a..1f9ece75d5e 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -5304,6 +5304,7 @@ enum image_value_type | |||
| 5304 | IMAGE_STRING_VALUE, | 5304 | IMAGE_STRING_VALUE, |
| 5305 | IMAGE_SYMBOL_VALUE, | 5305 | IMAGE_SYMBOL_VALUE, |
| 5306 | IMAGE_POSITIVE_INTEGER_VALUE, | 5306 | IMAGE_POSITIVE_INTEGER_VALUE, |
| 5307 | IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, | ||
| 5307 | IMAGE_NON_NEGATIVE_INTEGER_VALUE, | 5308 | IMAGE_NON_NEGATIVE_INTEGER_VALUE, |
| 5308 | IMAGE_ASCENT_VALUE, | 5309 | IMAGE_ASCENT_VALUE, |
| 5309 | IMAGE_INTEGER_VALUE, | 5310 | IMAGE_INTEGER_VALUE, |
| @@ -5408,6 +5409,15 @@ parse_image_spec (spec, keywords, nkeywords, type) | |||
| 5408 | return 0; | 5409 | return 0; |
| 5409 | break; | 5410 | break; |
| 5410 | 5411 | ||
| 5412 | case IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR: | ||
| 5413 | if (INTEGERP (value) && XINT (value) >= 0) | ||
| 5414 | break; | ||
| 5415 | if (CONSP (value) | ||
| 5416 | && INTEGERP (XCAR (value)) && INTEGERP (XCDR (value)) | ||
| 5417 | && XINT (XCAR (value)) >= 0 && XINT (XCDR (value)) >= 0) | ||
| 5418 | break; | ||
| 5419 | return 0; | ||
| 5420 | |||
| 5411 | case IMAGE_ASCENT_VALUE: | 5421 | case IMAGE_ASCENT_VALUE: |
| 5412 | if (SYMBOLP (value) && EQ (value, Qcenter)) | 5422 | if (SYMBOLP (value) && EQ (value, Qcenter)) |
| 5413 | break; | 5423 | break; |
| @@ -5514,8 +5524,8 @@ or omitted means use the selected frame.") | |||
| 5514 | struct frame *f = check_x_frame (frame); | 5524 | struct frame *f = check_x_frame (frame); |
| 5515 | int id = lookup_image (f, spec); | 5525 | int id = lookup_image (f, spec); |
| 5516 | struct image *img = IMAGE_FROM_ID (f, id); | 5526 | struct image *img = IMAGE_FROM_ID (f, id); |
| 5517 | int width = img->width + 2 * img->margin; | 5527 | int width = img->width + 2 * img->hmargin; |
| 5518 | int height = img->height + 2 * img->margin; | 5528 | int height = img->height + 2 * img->vmargin; |
| 5519 | 5529 | ||
| 5520 | if (NILP (pixels)) | 5530 | if (NILP (pixels)) |
| 5521 | size = Fcons (make_float ((double) width / CANON_X_UNIT (f)), | 5531 | size = Fcons (make_float ((double) width / CANON_X_UNIT (f)), |
| @@ -5644,7 +5654,7 @@ image_ascent (img, face) | |||
| 5644 | struct image *img; | 5654 | struct image *img; |
| 5645 | struct face *face; | 5655 | struct face *face; |
| 5646 | { | 5656 | { |
| 5647 | int height = img->height + img->margin; | 5657 | int height = img->height + img->vmargin; |
| 5648 | int ascent; | 5658 | int ascent; |
| 5649 | 5659 | ||
| 5650 | if (img->ascent == CENTERED_IMAGE_ASCENT) | 5660 | if (img->ascent == CENTERED_IMAGE_ASCENT) |
| @@ -5963,13 +5973,22 @@ lookup_image (f, spec) | |||
| 5963 | 5973 | ||
| 5964 | margin = image_spec_value (spec, QCmargin, NULL); | 5974 | margin = image_spec_value (spec, QCmargin, NULL); |
| 5965 | if (INTEGERP (margin) && XINT (margin) >= 0) | 5975 | if (INTEGERP (margin) && XINT (margin) >= 0) |
| 5966 | img->margin = XFASTINT (margin); | 5976 | img->vmargin = img->hmargin = XFASTINT (margin); |
| 5977 | else if (CONSP (margin) && INTEGERP (XCAR (margin)) | ||
| 5978 | && INTEGERP (XCDR (margin))) | ||
| 5979 | { | ||
| 5980 | if (XINT (XCAR (margin)) > 0) | ||
| 5981 | img->hmargin = XFASTINT (XCAR (margin)); | ||
| 5982 | if (XINT (XCDR (margin)) > 0) | ||
| 5983 | img->vmargin = XFASTINT (XCDR (margin)); | ||
| 5984 | } | ||
| 5967 | 5985 | ||
| 5968 | relief = image_spec_value (spec, QCrelief, NULL); | 5986 | relief = image_spec_value (spec, QCrelief, NULL); |
| 5969 | if (INTEGERP (relief)) | 5987 | if (INTEGERP (relief)) |
| 5970 | { | 5988 | { |
| 5971 | img->relief = XINT (relief); | 5989 | img->relief = XINT (relief); |
| 5972 | img->margin += abs (img->relief); | 5990 | img->hmargin += abs (img->relief); |
| 5991 | img->vmargin += abs (img->relief); | ||
| 5973 | } | 5992 | } |
| 5974 | 5993 | ||
| 5975 | /* Manipulation of the image's mask. */ | 5994 | /* Manipulation of the image's mask. */ |
| @@ -6329,7 +6348,7 @@ static struct image_keyword xbm_format[XBM_LAST] = | |||
| 6329 | {":foreground", IMAGE_STRING_VALUE, 0}, | 6348 | {":foreground", IMAGE_STRING_VALUE, 0}, |
| 6330 | {":background", IMAGE_STRING_VALUE, 0}, | 6349 | {":background", IMAGE_STRING_VALUE, 0}, |
| 6331 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 6350 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 6332 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 6351 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 6333 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 6352 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 6334 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6353 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 6335 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6354 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -6962,7 +6981,7 @@ static struct image_keyword xpm_format[XPM_LAST] = | |||
| 6962 | {":file", IMAGE_STRING_VALUE, 0}, | 6981 | {":file", IMAGE_STRING_VALUE, 0}, |
| 6963 | {":data", IMAGE_STRING_VALUE, 0}, | 6982 | {":data", IMAGE_STRING_VALUE, 0}, |
| 6964 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 6983 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 6965 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 6984 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 6966 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 6985 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 6967 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6986 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 6968 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 6987 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -8047,7 +8066,7 @@ static struct image_keyword pbm_format[PBM_LAST] = | |||
| 8047 | {":file", IMAGE_STRING_VALUE, 0}, | 8066 | {":file", IMAGE_STRING_VALUE, 0}, |
| 8048 | {":data", IMAGE_STRING_VALUE, 0}, | 8067 | {":data", IMAGE_STRING_VALUE, 0}, |
| 8049 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 8068 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 8050 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 8069 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 8051 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 8070 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 8052 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8071 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 8053 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8072 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -8374,7 +8393,7 @@ static struct image_keyword png_format[PNG_LAST] = | |||
| 8374 | {":data", IMAGE_STRING_VALUE, 0}, | 8393 | {":data", IMAGE_STRING_VALUE, 0}, |
| 8375 | {":file", IMAGE_STRING_VALUE, 0}, | 8394 | {":file", IMAGE_STRING_VALUE, 0}, |
| 8376 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 8395 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 8377 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 8396 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 8378 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 8397 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 8379 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8398 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 8380 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8399 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -8851,7 +8870,7 @@ static struct image_keyword jpeg_format[JPEG_LAST] = | |||
| 8851 | {":data", IMAGE_STRING_VALUE, 0}, | 8870 | {":data", IMAGE_STRING_VALUE, 0}, |
| 8852 | {":file", IMAGE_STRING_VALUE, 0}, | 8871 | {":file", IMAGE_STRING_VALUE, 0}, |
| 8853 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 8872 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 8854 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 8873 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 8855 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 8874 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 8856 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8875 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 8857 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 8876 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -9206,7 +9225,7 @@ static struct image_keyword tiff_format[TIFF_LAST] = | |||
| 9206 | {":data", IMAGE_STRING_VALUE, 0}, | 9225 | {":data", IMAGE_STRING_VALUE, 0}, |
| 9207 | {":file", IMAGE_STRING_VALUE, 0}, | 9226 | {":file", IMAGE_STRING_VALUE, 0}, |
| 9208 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 9227 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 9209 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 9228 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 9210 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 9229 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 9211 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9230 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 9212 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9231 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -9529,7 +9548,7 @@ static struct image_keyword gif_format[GIF_LAST] = | |||
| 9529 | {":data", IMAGE_STRING_VALUE, 0}, | 9548 | {":data", IMAGE_STRING_VALUE, 0}, |
| 9530 | {":file", IMAGE_STRING_VALUE, 0}, | 9549 | {":file", IMAGE_STRING_VALUE, 0}, |
| 9531 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 9550 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 9532 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 9551 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 9533 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 9552 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 9534 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9553 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 9535 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9554 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| @@ -9842,7 +9861,7 @@ static struct image_keyword gs_format[GS_LAST] = | |||
| 9842 | {":loader", IMAGE_FUNCTION_VALUE, 0}, | 9861 | {":loader", IMAGE_FUNCTION_VALUE, 0}, |
| 9843 | {":bounding-box", IMAGE_DONT_CHECK_VALUE_TYPE, 1}, | 9862 | {":bounding-box", IMAGE_DONT_CHECK_VALUE_TYPE, 1}, |
| 9844 | {":ascent", IMAGE_ASCENT_VALUE, 0}, | 9863 | {":ascent", IMAGE_ASCENT_VALUE, 0}, |
| 9845 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE, 0}, | 9864 | {":margin", IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR, 0}, |
| 9846 | {":relief", IMAGE_INTEGER_VALUE, 0}, | 9865 | {":relief", IMAGE_INTEGER_VALUE, 0}, |
| 9847 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9866 | {":algorithm", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |
| 9848 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, | 9867 | {":heuristic-mask", IMAGE_DONT_CHECK_VALUE_TYPE, 0}, |