emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/image.el [emacs-unicode-2]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/image.el [emacs-unicode-2]
Date: Mon, 28 Jun 2004 04:37:19 -0400

Index: emacs/lisp/image.el
diff -c emacs/lisp/image.el:1.35.6.1 emacs/lisp/image.el:1.35.6.2
*** emacs/lisp/image.el:1.35.6.1        Fri Apr 16 12:50:05 2004
--- emacs/lisp/image.el Mon Jun 28 07:28:41 2004
***************
*** 1,6 ****
  ;;; image.el --- image API
  
! ;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
  ;; Keywords: multimedia
--- 1,6 ----
  ;;; image.el --- image API
  
! ;; Copyright (C) 1998, 99, 2000, 01, 04 Free Software Foundation, Inc.
  
  ;; Maintainer: FSF
  ;; Keywords: multimedia
***************
*** 48,53 ****
--- 48,64 ----
  with one argument, a string containing the image data.  If PREDICATE returns
  a non-nil value, TYPE is the image's type.")
  
+ ;;;###autoload
+ (defvar image-library-alist nil
+   "Alist of image types vs external libraries needed to display them.
+ 
+ Each element is a list (IMAGE-TYPE LIBRARY...), where the car is a symbol
+ representing a supported image type, and the rest are strings giving
+ alternate filenames for the corresponding external libraries to load.
+ They are tried in the order they appear on the list; if none of them can
+ be loaded, the running session of Emacs won't display the image type.
+ No entries are needed for pbm and xbm images; they're always supported.")
+ ;;;###autoload (put 'image-library-alist 'risky-local-variable t)
  
  (defun image-jpeg-p (data)
    "Value is non-nil if DATA, a string, consists of JFIF image data.
***************
*** 111,118 ****
  (defun image-type-available-p (type)
    "Value is non-nil if image type TYPE is available.
  Image types are symbols like `xbm' or `jpeg'."
!   (and (boundp 'image-types) (not (null (memq type image-types)))))
! 
  
  ;;;###autoload
  (defun create-image (file-or-data &optional type data-p &rest props)
--- 122,129 ----
  (defun image-type-available-p (type)
    "Value is non-nil if image type TYPE is available.
  Image types are symbols like `xbm' or `jpeg'."
!   (and (fboundp 'init-image-library)
!        (init-image-library type image-library-alist)))
  
  ;;;###autoload
  (defun create-image (file-or-data &optional type data-p &rest props)
***************
*** 176,182 ****
  
  
  ;;;###autoload
! (defun insert-image (image &optional string area)
    "Insert IMAGE into current buffer at point.
  IMAGE is displayed by inserting STRING into the current buffer
  with a `display' property whose value is the image.  STRING is
--- 187,193 ----
  
  
  ;;;###autoload
! (defun insert-image (image &optional string area slice)
    "Insert IMAGE into current buffer at point.
  IMAGE is displayed by inserting STRING into the current buffer
  with a `display' property whose value is the image.  STRING is
***************
*** 184,190 ****
  AREA is where to display the image.  AREA nil or omitted means
  display it in the text area, a value of `left-margin' means
  display it in the left marginal area, a value of `right-margin'
! means display it in the right marginal area."
    ;; Use a space as least likely to cause trouble when it's a hidden
    ;; character in the buffer.
    (unless string (setq string " "))
--- 195,206 ----
  AREA is where to display the image.  AREA nil or omitted means
  display it in the text area, a value of `left-margin' means
  display it in the left marginal area, a value of `right-margin'
! means display it in the right marginal area.
! SLICE specifies slice of IMAGE to insert.  SLICE nil or omitted
! means insert whole image.  SLICE is a list (X Y WIDTH HEIGHT)
! specifying the X and Y positions and WIDTH and HEIGHT of image area
! to insert.  A float value 0.0 - 1.0 means relative to the width or
! height of the image; integer values are taken as pixel values."
    ;; Use a space as least likely to cause trouble when it's a hidden
    ;; character in the buffer.
    (unless string (setq string " "))
***************
*** 204,210 ****
    (let ((start (point)))
      (insert string)
      (add-text-properties start (point)
!                        `(display ,image rear-nonsticky (display)))))
  
  
  ;;;###autoload
--- 220,259 ----
    (let ((start (point)))
      (insert string)
      (add-text-properties start (point)
!                        `(display ,(if slice
!                                       (list (cons 'slice slice) image)
!                                     image) rear-nonsticky (display)))))
! 
! 
! (defun insert-sliced-image (image &optional string area rows cols)
!   (unless string (setq string " "))
!   (unless (eq (car-safe image) 'image)
!     (error "Not an image: %s" image))
!   (unless (or (null area) (memq area '(left-margin right-margin)))
!     (error "Invalid area %s" area))
!   (if area
!       (setq image (list (list 'margin area) image))
!     ;; Cons up a new spec equal but not eq to `image' so that
!     ;; inserting it twice in a row (adjacently) displays two copies of
!     ;; the image.  Don't try to avoid this by looking at the display
!     ;; properties on either side so that we DTRT more often with
!     ;; cut-and-paste.  (Yanking killed image text next to another copy
!     ;; of it loses anyway.)
!     (setq image (cons 'image (cdr image))))
!   (let ((x 0.0) (dx (/ 1.0001 (or cols 1)))
!        (y 0.0) (dy (/ 1.0001 (or rows 1))))
!     (while (< y 1.0)
!       (while (< x 1.0)
!       (let ((start (point)))
!         (insert string)
!         (add-text-properties start (point)
!                              `(display ,(list (list 'slice x y dx dy) image)
!                                        rear-nonsticky (display)))
!         (setq x (+ x dx))))
!       (setq x 0.0
!           y (+ y dy))
!       (insert (propertize "\n" 'line-height 0)))))
! 
  
  
  ;;;###autoload




reply via email to

[Prev in Thread] Current Thread [Next in Thread]