aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/image-mode.el
diff options
context:
space:
mode:
authorJoakim Verona2010-06-26 23:17:02 +0200
committerJoakim Verona2010-06-26 23:17:02 +0200
commitc7f514b5f17b4607690ebf37a3cb09538d5bcd8f (patch)
treea191831e7f5f099e5579cd01350d1690554833d1 /lisp/image-mode.el
parent65a192e9bde95812af4cd52201f631ad59c1e523 (diff)
downloademacs-c7f514b5f17b4607690ebf37a3cb09538d5bcd8f.tar.gz
emacs-c7f514b5f17b4607690ebf37a3cb09538d5bcd8f.zip
image-mode changes. removed the imagemagick specific :geometry and :crop interface that wasnt very good.
Diffstat (limited to 'lisp/image-mode.el')
-rw-r--r--lisp/image-mode.el71
1 files changed, 70 insertions, 1 deletions
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 585d82e9beb..a278c47a555 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -471,7 +471,10 @@ was inserted."
471 (buffer-substring-no-properties (point-min) (point-max))) 471 (buffer-substring-no-properties (point-min) (point-max)))
472 filename)) 472 filename))
473 (type (image-type file-or-data nil data-p)) 473 (type (image-type file-or-data nil data-p))
474 (image (create-animated-image file-or-data type data-p)) 474 (image0 (create-animated-image file-or-data type data-p))
475 (image (append image0
476 (image-transform-properties image0)
477 ))
475 (props 478 (props
476 `(display ,image 479 `(display ,image
477 intangible ,image 480 intangible ,image
@@ -534,6 +537,72 @@ the image file and `image-mode' showing the image as an image."
534 (when (not (string= image-type (bookmark-prop-get bmk 'image-type))) 537 (when (not (string= image-type (bookmark-prop-get bmk 'image-type)))
535 (image-toggle-display)))) 538 (image-toggle-display))))
536 539
540
541(defvar image-transform-minor-mode-map
542 (let ((map (make-sparse-keymap)))
543; (define-key map [(control ?+)] 'image-scale-in)
544; (define-key map [(control ?-)] 'image-scale-out)
545; (define-key map [(control ?=)] 'image-scale-none)
546;; (define-key map "c f h" 'image-scale-fit-height)
547;; (define-key map "c ]" 'image-rotate-right)
548 map)
549 "Minor mode keymap for transforming the view of images Image mode.")
550
551(define-minor-mode image-transform-mode
552 "minor mode for scaleing and rotation"
553 nil "image-transform"
554 image-transform-minor-mode-map)
555
556;;these are supposed to be buffer local
557;(defvar image-transform-height 100);;nil should mean 100%
558;;the interface could rather be:
559(defvar image-transform-resize
560 nil
561 "values: fit-height number=scale nil=scale100% TODO fit-width fit-page"
562 )
563
564;;TODO 0 90 180 270 degrees are the only reasonable angles here
565;;otherwise combining with rescaling will get very awkward
566(defvar image-transform-rotation 0.0)
567
568;;then it would be nice with a bunch of globals like:
569;; image-transform-always-resize values: 'fit-height nil=100% number=scale TODO 'fit-width 'fit-page
570;; image-transform-always-rotate value: angle
571
572(defun image-transform-properties (display)
573 (let*
574 ((size (image-size display t))
575 (height
576 (cond
577 ((and (numberp image-transform-resize) (eq 100 image-transform-resize))
578 nil)
579 ((numberp image-transform-resize)
580 (* image-transform-resize (cdr size)))
581 ((eq image-transform-resize 'fit-height)
582 (nth 3 (window-inside-pixel-edges)))
583 )))
584 `(,@(if height (list :height height))
585 ,@(if (not (equal 0.0 image-transform-rotation))
586 (list :rotation image-transform-rotation))
587 )))
588
589(defun image-transform-set-scale (scale)
590 (interactive "nscale:")
591 (image-transform-set-resize (float scale)))
592
593(defun image-transform-fit-to-height ()
594 (interactive)
595 (image-transform-set-resize 'fit-height))
596
597(defun image-transform-set-resize (resize)
598 (setq image-transform-resize resize)
599 (image-toggle-display-image))
600
601(defun image-transform-set-rotation (rotation)
602 (interactive "nrotation:")
603 (setq image-transform-rotation (float rotation))
604 (image-toggle-display-image))
605
537(provide 'image-mode) 606(provide 'image-mode)
538 607
539;; arch-tag: b5b2b7e6-26a7-4b79-96e3-1546b5c4c6cb 608;; arch-tag: b5b2b7e6-26a7-4b79-96e3-1546b5c4c6cb