annotate lisp/image.el @ 107863:594e81986a75

2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-insert-link): Find the link buffer on visible frames. (org-export-latex-default-packages-alist): hyperref must be loaded late. (org-open-file): More care with the new matching for file links. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-preprocess): Do not yet protect defined entities - these will be taken care of later. (org-export-latex-special-chars): Post-process entity replacement. (org-export-latex-fontify-headline): Do not yet protect defined entities - these will be taken care of later. (org-export-latex-tables, org-export-latex-links): Format the caption properly. * org-entities.el (org-entities-user): Fix typo. * org.el (org-prepare-agenda-buffers): Uniquify TODO keywords * org-entities.el (org-entities-user): Improve docstring. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-entities.el (org-macs): Require org-macs, to be sure that we have `declare-function' defined. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-classes): Update docstring. * org.el (org-format-latex-header): Add cookies to the header. (org-splice-latex-header): Implement placement according to cookies. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-aux-preprocess): Control case sensitivity. 2010-04-10 Bastien Guerry <bzg@altern.org> * org.el (org-splice-latex-header): Fix typo. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-make-header): Use `org-splice-latex-header' to build the header. (org-export-latex-classes): Update docstring. * org.el (org-splice-latex-header): New function. (org-create-formula-image): Use `org-splice-latex-header' to build the header. * org-gnus.el (org-gnus-follow-link): Handle nndoc backend. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-export-latex-packages-alist) (org-export-latex-default-packages-alist): Fix docstring to reflect the expected structure. * org-docbook.el (org-docbook-do-expand): Fix bug with variable names. (org-export-docbook-finalize-table): Make use of label for tables. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-attach.el (org-attach-commit): Split on newlines. * org.el (org-export-latex-default-packages-alist): Use list instead of cons for the entries. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-entities.el (org-entity-get-representation): Catch the case that there is not entry in the list. * org-mobile.el (org-mobile-use-encryption) (org-mobile-encryption-tempfile, org-mobile-encryption-password): New options. (org-mobile-check-setup): CHeck the encryption setup. (org-mobile-copy-agenda-files, org-mobile-sumo-agenda-command) (org-mobile-create-sumo-agenda): Use encryption code. (org-mobile-encrypt-and-move): New function. (org-mobile-encrypt-file, org-mobile-decrypt-file): New functions. (org-mobile-move-capture): Decrypt the capture file. * org.el (org-entities): Require the new file. (org-export-latex-default-packages-alist): New variable. (org-complete): Use new entity code for completion. (org-create-formula-image): Use the new packages variable. * org-latex.el (org-export-latex-classes): Remove the standard packages from the class headers. (org-export-latex-make-header): Use the new package variable. (org-export-latex-special-chars): Better regexp for entities, to support entity name that contain numbers. (org-export-latex-treat-backslash-char): Use the new entity code. * org-html.el (org-html-do-expand): Use the new entity code. * org-exp.el (org-export): Add the new export commands. (org-html-entities): Constant removed. (org-export-visible): Add the new export commands. * org-entities.el: New file. * org-docbook.el (org-docbook-do-expand): Use new entity code. * org-ascii.el (org-export-ascii-entities): New variable. (org-export-as-latin1, org-export-as-latin1-to-buffer) (org-export-as-utf8, org-export-as-utf8-to-buffer): New commands. (org-export-as-encoding): New function. (org-export-ascii-preprocess): Call `org-ascii-replace-entities'. (org-ascii-replace-entities): New function. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-html.el (org-html-level-start): Catch the case that target might be nil. 2010-04-10 Dan Davison <davison@stats.ox.ac.uk> * org.el (org-appearance): Change Customize group variable name from org-font-lock to org-appearance, and change tag from "Org Font Lock" to "Org Appearance" (org-odd-levels-only): Change Customize group variable name (org-level-color-stars-only): Change Customize group variable name (org-hide-leading-stars): Change Customize group variable name (org-hidden-keywords): Change Customize group variable name (org-fontify-done-headline): Change Customize group variable name (org-fontify-emphasized-text): Change Customize group variable name (org-fontify-whole-heading-line): Change Customize group variable name (org-highlight-latex-fragments-and-specials): Change Customize group variable name (org-hide-emphasis-markers): Change Customize group variable name (org-emphasis-alist): Change Customize group variable name (org-emphasis-regexp-components): Change Customize group variable name (org-modules): Remove mention of org-R * org-faces.el (org-faces): Change Customize group variable name 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-diary-last-run-time): New variable. (org-diary): prepare agenda buffers only if last call was some time ago. * org-html.el (org-export-html-preprocess): Replace \ref macros with a link. (org-format-org-table-html): Add the label as an anchor. * org-docbook.el (org-export-docbook-format-image): Do some formatting on captions. * org-latex.el (org-export-latex-tables, org-export-latex-links): Do some formatting on captions. * org-html.el (org-export-html-format-image) (org-format-org-table-html): Do some formatting on captions. 2010-04-10 Dan Davison <davison@stats.ox.ac.uk> * org.el (org-hidden-keywords): New customizable variable. This is a list of symbols specifying which of the special keywords #+DATE, #+AUTHOR, #+EMAIL and #+TITLE should be hidden by font lock. (org-fontify-meta-lines-and-blocks): Changes to font-lock code implementing new faces and hiding behaviour. * org-faces.el (org-document-title): New face for #+TITLE lines (org-document-info): New face for #+DATE, #+AUTHOR, #+EMAIL lines (org-document-info-keyword): New face for #+DATE, #+AUTHOR, #+EMAIL keywords 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-sanitize-plist): New function to rename "index" properties to "sitemap". Do this renaming globally. (org-publish-with-aux-preprocess-maybe): New macro. (org-publish-org-to-pdf, org-publish-org-to-html): Use the new macro. (org-publish-aux-preprocess) (org-publish-index-generate-theindex.inc): New function. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-align): Interpret <N> at fixed width, not as maximum width. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-author-info, org-export-email-info): Fix docstrings. * org-beamer.el (org-beamer-select-environment): Renamed from `org-beamer-set-environment-tag'. Improve docstring. * org-freemind.el (org-freemind-write-mm-buffer): Fix another problem with odd levels. * org-ascii.el (org-export-as-ascii): Export email only if the author wants it. * org-docbook.el (org-export-as-docbook): Export email only if the author wants it. * org-html.el (org-export-as-html): Export email only if the author wants it. * org-exp.el (org-export-email-info): New option. (org-export-plist-vars): Add entry for `org-export-email'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-goto-line): Fix typo. 2010-04-10 Mikael Fornius <mfo@abc.se> * org.el (org-agenda-files): Typo. (org-read-agenda-file-list): Add optional argument to help `org-store-new-agenda-file-list' to remember un-expanded file names. Expand file names relative to `org-directory'. (org-store-new-agenda-file-list): Keep un-expanded file names when saving, if available. (org-agenda-files): Update documentation. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-ascii.el (org-export-as-ascii): Catch the case of exporting a buffer with no file name attached. * org.el (org-log-refile): New option. (org-log-note-headings): Add a heading for refiling. (org-startup-options): Add keywords for logging of the refile action. (org-refile): Add logging action. (org-add-log-note): Allow for refiling action. * org-agenda.el (org-agenda-bulk-action): Make sure `org-log-refile' is not `note' during a bulk action. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-map-dblocks): Use save-excursion to remember the position. * org-attach.el (org-attach-commit): Remove dependence on xargs. (org-attach-delete-one): Commit after deleting a file. * org-latex.el (org-export-latex-fontify): Do not mistake table.el borders for strike-through emphasis. * org-freemind.el (org-freemind-write-mm-buffer): Simplify the handling of odd levels. * org-agenda.el (org-agenda-todo-ignore-deadlines): Document `past' and `future' values. (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item): Handle `past' and `future' values. * org.el (org-read-agenda-file-list): Interpret file names relative to org-directory and allow environment variables and "~". * org-latex.el (org-export-latex-special-chars): Allow a parenthesis before an exponent or subscript. 2010-04-10 Dan Davison <davison@stats.ox.ac.uk> * org-src.el (org-edit-src-exit): When returning from code edit buffer, if code block is hidden, leave point at start of #+begin_src line 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-insert-heading): Do not remove all spaces if the headline is empty. * org-indent.el (org-indent): Fix group name. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-goto-column): Fix forcing a non-existing column. (org-table-get, org-table-put, org-table-goto-line) (org-table-current-line): New functions. 2010-04-10 Jan Bcker <jan.boecker@jboecker.de> * org.el (org-open-file): Allow regular expressions in org-file-apps to capture link parameters using groups. In a command string to be executed, the parameters can be referenced using %1, %2, etc. Lisp forms can access them using (match-string n link). (org-apps-regexp-alist): Adopt the created regexp, as this is now matched against a file: link instead of the file name. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-crypt.el (org-reveal-start-hook): Add a decryption function to this hook. (org-decrypt-entries, org-encrypt-entries, org-decrypt-entry): Add docstrings. * org.el (org-point-at-end-of-empty-headline) (org-level-increment, org-get-previous-line-level): New function. (org-cycle-level): Rewritten to be independent of when this function is called. (org-in-regexps-block-p): New function. (org-reveal-start-hook): New hook. (org-reveal): Run new hook. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-keywords): Start a new paragraph after time keywords, do not add "\newline". * org-html.el (org-export-as-html): Avoid double # in href. * org.el (org-refile-get-location): Catch an invalid target specification. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-add-entry-to-org-agenda-diary-file): Make sure the behavior regarding to extracting time is consistent. 2010-04-10 Stephen Eglen <stephen@gnu.org> * org-agenda.el (org-agenda-insert-diary-extract-time): New variable. (org-agenda-add-entry-to-org-agenda-diary-file): Use this new variable rather than `org-agenda-search-headline-for-time'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-fix-bullet-type): Improve cursor positioning. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-adaptive-fill-regexp-backup): New variable. (org-set-autofill-regexps): Store a backup of `adaptive-fill-regexp'. (org-adaptive-fill-function): Fix filling of comments and ordered lists. If there is no other match, till try adaptive fill. 2010-04-10 John Wiegley <jwiegley@gmail.com> * org-agenda.el (org-agenda-include-deadlines): Added new customization variable to determine whether unscheduled tasks should appear in the agenda solely because of their deadline. Default to true, which was the previous behavior (it just wasn't configurable). (org-agenda-mode-map, org-agenda-view-mode-dispatch): Bind ! in the agenda to show/hide deadline tasks. (org-agenda-menu): Added menu option for show/hide deadlines. (org-agenda-list): Make the agenda list sensitive to the value of `org-agenda-include-deadlines'. (org-agenda-toggle-deadlines): New function to toggle the value of `org-agenda-include-deadlines' and repaint the modeline indicators. (org-agenda-set-mode-name): Show "Deadlines" in the agenda modeline if deadline tasks are being displayed. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-eval-formula): Replace $# and @# by current column and row number. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-set-property, org-delete-property): Go back to prompting for the property. * org-latex.el (org-export-latex-make-header): Fully process author line. (org-export-latex-fontify-headline): Allow several arguments, not just one. (org-export-latex-fix-inputenc): Catch the error when `latexenc-coding-system-to-inputenc' is not defined. * org-agenda.el (org-agenda-skip-if-todo): New function. (org-agenda-skip-if): Add conditions for TODO keywords. (org-agenda-skip-if): Document the new todo conditions. 2010-04-10 Mikael Fornius <mfo@abc.se> * org.el (org-at-property-p): Check if we are inside a property drawer not just any drawer. (org-set-property, org-delete-property): When cursor is on a property key value pair do not prompt for property name instead use name at cursor. (org-ctrl-c-ctrl-c): Still do org-property-action when cursor is on the first line of a property drawer. (org-property-end-re): Spell check. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-attach-captions-and-attributes): Add the properties to the entire table, in case the first line is removed. * org-archive.el (org-archive-reversed-order): New option. (org-archive-subtree, org-archive-to-archive-sibling): Use the new option `org-archive-reversed-order'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-entry-types): New variable. (org-agenda-list): Use `org-agenda-entry-types'. (org-agenda-custom-commands-local-options): Support for setting `org-agenda-entry-types' as an option. (org-diary): Shift some documentation from here to the variable `org-agenda-entry-types'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-make-header): Apply macros in author field. * org-clock.el (org-clocking-buffer, org-clocking-p): New function. (org-clock-select-task, org-clock-notify-once-if-expired) (org-clock-in, org-clock-out, org-clock-cancel, org-clock-goto) (org-clock-out-if-current, org-clock-save): Use the new functions. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-docbook.el (org-export-as-docbook): Remove unnecessary newline. (org-export-as-docbook): Remove unnecessary newline. (org-export-as-docbook): Fix problem with double footnote reference in one place. * org-exp.el (org-export-format-source-code-or-example): Remove unnecessary newline. * org.el (org-deadline, org-schedule): Allow rescheduling entries with repeaters. * org-table.el (org-table-convert-refs-to-rc): Better way to catch function calls that look like references. * org.el (org-open-at-point): Get link abbreviations from reference buffer. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-table.el (org-table-convert-refs-to-rc): Do not read arctan2 as a reference. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-link-unescape): Solve issue with lower-case escapes. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-classes): Add \usepackage{latexsym} to all classes. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-html.el (org-export-as-html): Do not allow protected lines into the table of contents. * org-latex.el (org-export-latex-special-chars): Find subsequent occurrences of special characters. (org-export-latex-tables): Do not convert table-like stuff that is protected. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-toggle-checkbox): No errors when updating checkbox count fails because there is no heading. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-report-include-clocking-task): New option. (org-clock-sum): Add the current clocking task. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-cycle): Print a message when in a table.el table. (org-edit-special): Recognize the table.el context. (org-ctrl-c-ctrl-c): Print a message when in a table.el table. * org-src.el (org-at-table.el-p): Declare. (org-edit-src-code): Handle a special case for table.el editing. (org-edit-src-find-region-and-lang): Recognize the table.el context. * org-latex.el (org-export-latex-tables): Convert table.el tables. (org-export-latex-convert-table.el-table): New function. * org-html.el (org-html-expand): Fix table.el export. * org-latex.el (org-export-latex-preprocess): Protect footnotes in headings. * org-id.el (org-id-find-id-file): Fix bug when there is no hash table for the id locations. * org.el (org-read-date-analyze): Match American-style dates, like 5/30 or 5/13/7. Make sure cal-iso.el is loaded. Don't force he current year when reading ISO and American dates. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-face-from-face-or-color): New function. (org-get-todo-face, org-font-lock-add-priority-faces) (org-get-tag-face): Use `org-face-from-face-or-color'. * org-faces.el (org-todo-keyword-faces, org-priority-faces): Allow simple colors as values. (org-faces-easy-properties): New option. * org-agenda.el (org-agenda-set-mode-name): Show if the agenda is restricted, as an agenda mode. (org-agenda-fontify-priorities): Allow simple colors as values. 2010-04-10 Bastien Guerry <bzg@altern.org> * org-timer.el (org-timer-current-timer): Renamed from `org-timer-last-timer'. (org-timer-timer1, org-timer-timer2, org-timer-timer3): Removed. (org-timer-cancel-timer, org-timer-show-remaining-time) (org-timer-set-timer): Update to use only one timer. * org.el (org-set-property): Remove useless space in the prompt. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-html.el (org-export-html-style-default): Add a default style for textareas. * org-exp.el (org-export-format-source-code-or-example): Fix textarea tag. 2010-04-10 Bastien Guerry <bzg@altern.org> * org-clock.el (org-clock-current-task): New variable to store last clocked in task. (org-clock-set-current, org-clock-delete-current): New functions. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-remember-apply-template): Extend comment. (org-remember-handler): Implement clock sibling filing. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-publish.el (org-publish-all, org-publish-current-file) (org-publish-current-project): When called with prefix argument FORCE, also rebuild the validation file list. * org-latex.el (org-export-latex-preprocess): Protect footnotes in section headings. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-html.el (org-export-as-html-and-open): Kill product buffer if the user wants that. * org-latex.el (org-export-as-pdf-and-open): Kill product buffer if the user wants that. * org-exp.el (org-export-kill-product-buffer-when-displayed): New option. * org-agenda.el (org-batch-agenda-csv): Use the time property instead of the `time-of-day' property. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-timer.el (org-timer-start-hook, org-timer-stop-hook) (org-timer-pause-hook, org-timer-set-hook) (org-timer-cancel-hook): New hooks. (org-timer-start): Run `org-timer-start-hook'. (org-timer-pause-or-continue): Run `org-timer-pause-hook'. (org-timer-stop): Run `org-timer-stop-hook'. (org-timer-cancel-timers): Run `org-timer-cancel-hook'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-reveal): Double prefix arg shows the subtree of the parent. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-search-view): Fix bug with searching full words in headlines in search view. (org-agenda-skip-deadline-prewarning-if-scheduled): New option. (org-agenda-get-deadlines): Suppress pre-warning if the entry is scheduled (if the user configures it so. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-hide-archived-subtrees): Don't jump to end of subtree if the match was not in a headline. (org-inside-latex-macro-p): Allow more complex arguments. (org-emphasize): Protect against use at end of buffer. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-align-tags): Avoid side effects on text properties. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-todo-ignore-scheduled): More allowed values. (org-agenda-todo-ignore-scheduled) (org-agenda-todo-ignore-deadlines): More control with different allowed values. (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item): Honor the new option settings. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-get-location): Make sure the selection buffer is shown in the current frame. * org-ascii.el (org-export-ascii-table-widen-columns): New option. (org-export-ascii-preprocess): Realign tables to remove narrowing if `org-export-ascii-table-widen-columns' is set. * org-table.el (org-table-do-narrow): New variable. (org-table-align): Narrow only if `org-table-do-narrow' is t. * org.el (org-deadline, org-schedule): Allow updating if the relevant time stamp does not have a repeater, i.e. do not require that no time stamp has a repeater. * org-agenda.el (org-agenda-align-tags): Don't add a face to the new white space before the tags. * org-latex.el (org-export-as-latex): Do nit require the buffer to be visiting a file when only exporting to a buffer or string. (org-export-latex-fix-inputenc): Only save the buffer is there is a file name attached to it. 2010-04-10 Dan Davison <davison@stats.ox.ac.uk> * org-src.el (org-edit-src-exit): Widen before exiting edit buffers 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-fontify-meta-lines-and-blocks): Honor `org-fontify-quote-and-verse-blocks'. * org-faces.el (org-fontify-quote-and-verse-blocks): New option. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-at-point): Also check for text property org-linked-text before offering collected links. 2010-04-10 Stephen Eglen <stephen@gnu.org> * org-agenda.el (org-agenda-add-entry-to-org-agenda-diary-file): Optionally extract time specification from text and add to the timestamp. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-html-entities): Fix typo. * org-latex.el (org-export-latex-make-header): Use \providecommand to make sure the \alert macro is defined. * org.el (org-format-latex-signal-error) (org-create-formula-image): Use `org-format-latex-signal-error'. 2010-04-10 Stephen Eglen <stephen@gnu.org> * org.el (org-store-link): For dired buffers, use default-directory as link name if dired-get-filename returns nil. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-concatenate-multiline-links): The for protectedness at beginning of match. * org-latex.el (org-export-latex-fix-inputenc): Never leave the AUTO as a coding system, instead default to utf8. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-block-todo-from-children-or-siblings-or-parent) (org-block-todo-from-checkboxes): Respect the local variable value when deciding if blocking should be active. * org-latex.el (org-export-latex-make-header): Define the align macro if it is not yet defined. * org-agenda.el (org-agenda-insert-diary-make-new-entry): Call `org-insert-heading' with the INVISIBLE-OK argument. * org-mac-message.el (org-mac-message-insert-flagged): Call `org-insert-heading' with the INVISIBLE-OK argument. * org.el (org-insert-heading): New argument INVISIBLE-OK. * org-agenda.el (org-agenda-view-mode-dispatch): Improve the prompt message. * org-html.el (org-html-level-start): Use the `html-container-class' text property to set an additional class for an outline container. * org-exp.el (org-export-remember-html-container-classes): New function. (org-export-preprocess-string): Call `org-export-remember-html-container-classes'. * org.el (org-cycle): Mention level cycling in the docstring. (org-default-properties): Add new property HTML_CONTAINER_CLASS. * org-remember.el (org-remember-apply-template): Do file insertion first. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-habit.el (org-habit-insert-consistency-graphs): Fix a problem with mis-aligned graphs when showing habits. 2010-04-10 Mikael Fornius <mfo@abc.se> * org.el (org-assign-fast-keys): Prefer keys used in keyword name when assigning. Begin using numerical characters when all in name is used up. This is to spare alphanumeric characters for better match with other keywords. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-preprocess-hook): Improve documentation. * org-latex.el (org-export-latex-preprocess): More consistent conversion and protection of the words LaTeX and TeX. (org-export-latex-fontify-headline, org-export-latex-preprocess): Allow angle brackets in commands, for beamer. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-in): Improve the look of the clock line by formatting links. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-classes): Use AUTO as the place holder string for the coding system. And improve the documentation. (org-export-latex-fix-inputenc): Only modify the coding system if it is given by the placeholder AUTO. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-task-overrun-text): New option. (org-task-overrun, org-clock-update-period): New variables. (org-clock-get-clock-string, org-clock-update-mode-line): Mark overrun clock. (org-clock-notify-once-if-expired): Check if clock is overrun. * org-faces.el: New face `org-mode-line-clock-overrun'. 2010-04-10 Jan Bcker <jan.boecker@jboecker.de> * org.el (org-narrow-to-subtree): Position the end of the narrowed region before the line with the next heading, to prevent the user from prepending text to the next headline. 2010-04-10 Stephen Eglen <stephen@gnu.org> * org-agenda.el (org-get-time-of-day): Use org-agenda-time-leading-zero to allow leading zero (rather than space) for times. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-diary-entry-in-org-file): Make sure org-datetree.el is loaded. * org-datetree.el: autoload `org-datetree-find-day-create' * org-latex.el (org-export-latex-hyperref-format): New option. (org-export-latex-links): Use `org-export-latex-hyperref-format'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-ctags.el (org-ctags-enable): Change order of functions. (org-ctags-create-tags): Add wildcard to file name expansion. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-entry-properties): Fix some important bugs. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-link-unescape, org-link-escape): Only use hexlify if the table is not explicitly given. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-out-when-done): Allow a list of keywords as value. (org-clock-out-if-current): Work with the new list value of `org-clock-out-when-done'. (org-clock-out, org-clock-out-if-current): Avoid circular logic between clocking out and state changes. * org-ctags.el (org-ctags-path-to-ctags): Better system-type test. * org-latex.el (org-export-latex-treat-backslash-char): Do not by accident protect a character that is before a backslash. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-diary-class): Use `org-order-calendar-date-args'. * org.el (org-order-calendar-date-args): New function. * org-exp.el (org-export-target-internal-links): Check for protectedness after the first bracket. * org.el (org-entry-properties): Don't match wrong-case TODO keywords. * org-agenda.el (org-agenda-schedule, org-agenda-deadline): Document that ARG is passed through to remove the date. (org-agenda-bulk-action): Accept prefix arg and pass it on. Do not read a date when the user has given a `C-u' prefix. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-fix-displayed-tags): Fix bug when all tags are hidden. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-fix-inputenc): New function. (org-export-latex-inputenc-alist): New option. * org-exp.el (org-export): New key SPC to publish enclosing subtree. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-indent.el (org-indent-add-properties): Catch case when there is no headline in the buffer. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-html-entities): Add checkmark symbol. * org-ascii.el (org-export-ascii-preprocess): Protect targets in verbatim code for ASCII export. * org.el (org-update-statistics-cookies): Also see checkboxes in ordered lists. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-view-mode-dispatch): Define the `L' key. * org-beamer.el (org-beamer-amend-header): Change the location where `org-beamer-header-extra' is inserted. * org.el (org-compute-latex-and-specials-regexp): Don't do BIND just for computing this regexp. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-beamer.el (org-beamer-frame-default-options): New option. (org-beamer-sectioning): Use default options if the user does not have defined any. (org-beamer-fix-toc): Put a frame around the table of contents. * org-exp.el (org-export-remove-comment-blocks-and-subtrees): Make sure case-folding works well when processing comment stuff. * org-latex.el (org-export-latex-after-save-hook): New hook. (org-export-as-latex): Run the new hook. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-beamer.el (org-beamer-environments-default): Add the note environments. (org-beamer-after-initial-vars): Allow several BEAMER_HEADER_EXTRA lines and collect and combine the content. (org-beamer-after-initial-vars): Check for note tags and make sure they will be seen like a property. * org.el (org-offer-links-in-entry): Fix bug when there is a single link. * org-exp.el (org-export): Make sure the mark is activated, also when `transient-mark-mode' is off. * org-agenda.el (org-agenda-search-view-always-boolean): New option. (org-agenda-search-view-search-words-only): Obsolete variable, is now an alias for `org-agenda-search-view-always-boolean'. (org-agenda-search-view-force-full-words): New option. (org-search-view): Improve docstring, and implement a better logic for Boolean and phrase searches. (org-agenda-last-search-view-search-was-boolean): New variable. (org-agenda-manipulate-query): Consider the type of the last search when modifying the search string. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-as-latex): Do the first letbind in the right moment. * org-agenda.el (org-get-entries-from-diary): Add the new face to these entries. * org-faces.el (org-agenda-diary): New face. * org.el (org-make-link-regexps): Allow regexp-special characters in link types. (org-open-file): When in-emacs is `system', also force system opening, like when the value was `(16)'. (org-update-statistics-cookies): Handle entries without children. * org-exp.el (org-export-preprocess-before-normalizing-links-hook): New hook. (org-export-preprocess-string): Run the new hook. * org.el (org-offer-links-in-entry): Make RET open all links. * org-html.el (org-export-as-html): Remove any leftover display properties in the html file. * org-wl.el (org-wl-store-link): Work-around for format bug with text properties. * org-habit.el (org-habit-insert-consistency-graphs): Turn off invisibility while adding the graphs. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-remember.el (org-select-remember-template): Use C letter to customize remember templates. * org-agenda.el (org-agenda-bulk-mark, org-agenda-bulk-unmark): Move cursor to next visible line. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-beamer.el (org-beamer-sectioning): Leave columns environment by specifying 0 or 1 for column width. (org-beamer-column-widths): Make 0 stand for 0.0. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-mark-radio-links): Don't match inside <<target>>. * org.el (org-format-latex-header-extra): New variable. (org-format-latex): Set org-format-latex-header-extra from in-buffer stuff. (org-format-latex): Add org-format-latex-header-extra to the variables on which image creation depends. (org-create-formula-image): Add the header stuff from in-buffer settings. (org-read-date-analyze): Base the analysis for future preference on NOW, not on the default date. * org-inlinetask.el (org-inlinetask-export-handler): Add CSS class for TODO keyword in inline tasks. * org.el (org-log-note-headings): New headings for removing deadline or scheduling date. (org-deadline, org-schedule): Arrange for logging when removing a date. (org-add-log-note): Handle deadline and scheduling removal. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-visible): Add LaTeX/pdf export. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-diary-class): New function. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-preprocess): Do process the text of a radio target. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-entry-properties): Add TIMESTAMP properties back in. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-all-time-keywords): New variable. (org-set-regexps-and-options): Set `org-all-time-keywords'. (org-entry-blocked-p): New function. (org-special-properties): Add BLOCKED as a new special property. (org-entry-properties): New optional argument SPECIFIC, only parse for this property when it is specified. (org-entry-get): Pass a SPECIFIC argument to `org-entry-properties'. * org-latex.el (org-export-as-latex): Preprocess TEXT as well. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-tables): No forced line end if there is no caption. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-html-entities): Add Euro symbols from Marvosym package. * org-latex.el (org-export-latex-tables): Only add a caption when macro in in longtable environments if one has been defined. * org-html.el (org-export-as-html): Only take title from buffer if not exporting body-only. * org-latex.el (org-export-latex-preprocess): Better version of the regular expression for protecting LaTeX macros. (org-export-latex-preprocess): Start searching for macros to protect from beginning of buffer. * org-exp.el (org-export-target-internal-links): Check for protectedness earlier in the string. * org-agenda.el (org-agenda-highlight-todo): Match TODO keywords case sensitively. * org-id.el (org-id-store-link): Match TODO keywords case sensitively. * org.el (org-heading-components, org-get-outline-path) (org-display-outline-path): Match TODO keywords case sensitively. * org-latex.el (org-export-as-latex): Ignore read-only properties. * org-exp.el (org-export-preprocess-string): Remove any `read-only' properties. * org-agenda.el (org-agenda-inactive-leader): New option. (org-agenda-get-timestamps): Use `org-agenda-inactive-leader'. (org-tags-view): Prompt for matcher if MATCH is an empty string. (org-todo-list): Prompt for matcher if ARG is an empty string. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-open-link-functions): New hook. (org-open-at-point): Run `org-open-link-functions'. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-agenda.el (org-agenda-date-prompt): Allow inactive time stamps as well. * org.el (org-inhibit-startup-visibility-stuff): New variable. (org-mode): Don't do startup visibility if inhibited. (org-outline-overlay-data, org-set-outline-overlay-data): New functions. (org-save-outline-visibility): New macro. (org-log-note-headings): Document that one should not change the `state' note format. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-make-link-regexps): Capture link path into a group. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-beamer.el (org-beamer-after-initial-vars): Do not overwrite the options plist. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org.el (org-startup-with-beamer-mode): New option. (org-property-changed-functions) (org-property-allowed-value-functions): New hooks. (org-entry-put, org-property-get-allowed-values): Run the new hooks. (org-property-next-allowed-value): Run the new hooks. * org-exp.el (org-export-select-backend-specific-text): Add the special beamer tags. * org-beamer.el (org-export-preprocess-before-selecting-backend-code-hook): New file. * org-latex.el (org-export-latex-after-initial-vars-hook): New hook. (org-export-as-latex): Run `org-export-latex-after-initial-vars-hook'. (org-export-latex-format-toc-function) (org-export-latex-make-header): Call `org-export-latex-format-toc-function'. * org.el (org-fill-template): Make template searches case sensitive. * org-exp.el (org-export): Use "1" as a sign to export only the subtree. * org-colview-xemacs.el (org-columns-edit-value): Use org-unrestricted property. * org-colview.el (org-columns-edit-value): Use org-unrestricted property. * org.el (org-compute-property-at-point): Set org-unrestricted text property if the list contains ":ETC". (org-insert-property-drawer): Use org-unrestricted property. * org-exp.el (org-export-preprocess-before-selecting-backend-code-hook): New hook. (org-export-preprocess-string): Run `org-export-preprocess-before-selecting-backend-code-hook'. * org-xoxo.el (org-export-as-xoxo): Run `org-export-first-hook'. * org-latex.el (org-export-region-as-latex): Run `org-export-first-hook'. * org-html.el (org-export-as-html): Run `org-export-first-hook'. * org-docbook.el (org-export-as-docbook): Run `org-export-first-hook'. * org-ascii.el (org-export-as-ascii): Run `org-export-first-hook'. * org-exp.el (org-export-first-hook): New hook. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-previous-item): Exit at the beginning of the buffer. * org-id.el (org-id-locations-save): Only write the id locations if any are defined. * org-archive.el (org-archive-all-done): Make this work in a file with org-odd-levels-only set. * org.el (org-get-refile-targets): Catch the case when a buffer has no file. * org-latex.el (org-export-as-latex): Cleanup forced line ends where they are not needed. (org-export-latex-subcontent): Remove unnecessary newlines. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-make-header): Remove \obeylines. (org-export-latex-fontify): Fix regexp bug that takes special care of protecting the right boundary characters in emphasis matches. (org-export-latex-preprocess): Allow multiple arguments to latex macros. * org.el (org-make-link-regexps): Use John Gruber's regexp for urls. * org-macs.el (org-re): Interpret :punct: in regexps. * org-exp.el (org-export-replace-src-segments-and-examples): Also take the final newline after the END line. * org.el (org-clean-visibility-after-subtree-move): Only fix entries that are not entirely invisible already. (org-insert-link): Respect org-link-file-path-type for "docview:" links in addition to "file:" links. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-exp.el (org-export-format-source-code-or-example): Avoid additional extra white lines in LaTeX. * org-list.el (org-list-parse-list): Leave empty lines after the list, don't consider them as part of the list. * org-mobile.el (org-mobile-sumo-agenda-command): Allow tagstodo searches. * org-clock.el (org-clock-select-task): Convert integer to character for XEmacs. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-resolve): Make reading a char XEmacs compatible. 2010-04-10 Tassilo Horn <tassilo@member.fsf.org> * org.el (org-complete-tags-always-offer-all-agenda-tags): New variable. (org-set-tags): Use it. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-list.el (org-empty-line-terminates-plain-lists): Update docstring. * org.el (org-format-latex): Fix link creation for processed latex snippets. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-footnote.el (org-footnote-normalize): Protect replacement text. * org.el (org-inside-latex-macro-p): Save match data. 2010-04-10 Jan Bcker <jan.boecker@jboecker.de> * org-docview.el: New file. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-class-options): New variable. (org-export-latex-set-initial-vars): Use the class options. * org.el (org-forward-same-level): Stop at headings that start with an invisible character. (org-additional-option-like-keywords): Add LaTeX_CLASS_OPTIONS. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-footnote.el (org-footnote-normalize): Don't take optional arguments in LaTeX macros as footnotes. * org.el (org-inside-latex-macro-p): New function. * org-latex.el (org-latex-to-pdf-process): Change customization group to `org-export-pdf'. * org-agenda.el (org-agenda-get-blocks): Look at time string also on days after the first one. * org.el (org-insert-heading): Also check for item before assuming before-first-heading condition. * org-latex.el (org-latex-to-pdf-process): Fix typo in group tag. (org-export-pdf-logfiles): New option. (org-export-as-pdf): Use `org-export-pdf-logfiles'. (org-export-pdf-logfiles): Fix customization type. * org.el (org-insert-link): Improve error message when there is no default link to select with RET. * org-agenda.el (org-agenda-filter-by-tag): Use char argument from parameter list. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-parse-global) (org-export-latex-parse-content) (org-export-latex-parse-subcontent): Use `org-re-search-forward-unprotected'. (org-export-as-pdf): Remove log files produced by XeTeX. * org-macs.el (org-re-search-forward-unprotected): New function. 2010-04-10 James TD Smith <ahktenzero@mohorovi.cc> * org-colview.el (org-agenda-colview-summarize): Sort out some confusion between properties and titles, which resulted in agenda summaries not working if a title was set for a column. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-mobile.el (org-mobile-agendas): New option. (org-mobile-sumo-agenda-command): Select the right agendas. * org-latex.el (org-export-latex-format-image): Preserve the original-indentation property. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-clock.el (org-clock-insert-selection-line): Catch error when an old tasks no longer exists. * org-latex.el (org-export-as-pdf): Remove also the .idx file. (org-export-as-pdf): Don't remove the old PDF file before making the new one. * org-mouse.el (org-mouse-end-headline, org-mouse-insert-item) (org-mouse-context-menu): Use `org-looking-back'. * org.el (org-cycle-level): Use `org-looking-back'. * org-list.el (org-cycle-item-indentation): Use `org-looking-back'. * org-compat.el (org-looking-back): New function. * org.el (org-insert-heading): Catch before-first-headline when inserting a headline. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-latex.el (org-export-latex-format-image): Indent figure environment, so that it does not interrupt plain list. * org.el (org-open-at-point): Allow long link descriptions. 2010-04-10 Carsten Dominik <carsten.dominik@gmail.com> * org-html.el (org-export-as-html): Remove empty lines at the beginning of the exported text. 2010-04-15 Carsten Dominik <carsten.dominik@gmail.com> * org.texi (LaTeX and PDF export): Add a footnote about xetex. (LaTeX/PDF export commands): Section renamed and moved. (Sectioning structure): Update. (References): New use case for field coordinates. (The export dispatcher): Renamed from ASCII export. (Setting up the staging area): Document the availability of encryption for MobileOrg. (Images and tables): Document how to reference labels. (Index entries): New section. (Generating an index): New section. (Column width and alignment): Document that <N> now means a fixed width, not a maximum width. (Publishing options): Document the :email option. (Beamer class export): Fix bug in the BEAMER example. (Refiling notes): Document refile logging. (In-buffer settings): Document refile logging keywords. (Drawers): Document `C-c C-z' command. (Agenda commands): Mention the alternative key `C-c C-z'. (Special properties): Document the BLOCKED property. (The spreadsheet): Mention the formula editor. (References): Document field coordinates. (Publishing action): Correct the documentation for the publishing function. (The date/time prompt): Document that we accept dates like month/day/year. (Cooperation): Document the changes in table.el support. (Faces for TODO keywords, Faces for TODO keywords) (Priorities): Document the easy colors. (Visibility cycling): Document the new double prefix arg for `org-reveal'. (Cooperation): Remember.el is part of Emacs. (Clean view): Mention that `wrap-prefix' is also set by org-indent-mode. (Agenda commands): Add information about prefix args to scheduling and deadline commands. (Search view): Point to the docstring of `org-search-view' for more details. (Agenda commands): Document that `>' prompts for a date. (Setting tags): Document variable org-complete-tags-always-offer-all-agenda-tags. (Column attributes): Cross-reference special properties.
author Carsten Dominik <carsten.dominik@gmail.com>
date Thu, 15 Apr 2010 12:11:52 +0200
parents 9c0ed2d6731a
children 24d486687f54 28a8c62b8ee7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
1 ;;; image.el --- image API
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
107369
f2fb364fb3ba Minor animated image housekeeping.
Glenn Morris <rgm@gnu.org>
parents: 107360
diff changeset
3 ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
f2fb364fb3ba Minor animated image housekeeping.
Glenn Morris <rgm@gnu.org>
parents: 107360
diff changeset
4 ;; 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
42316
b1023d722287 Add Maintainer header.
Pavel Janík <Pavel@Janik.cz>
parents: 38884
diff changeset
5
b1023d722287 Add Maintainer header.
Pavel Janík <Pavel@Janik.cz>
parents: 38884
diff changeset
6 ;; Maintainer: FSF
25309
6842eb73559c Add Keywords.
Dave Love <fx@gnu.org>
parents: 25003
diff changeset
7 ;; Keywords: multimedia
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
14 ;; (at your option) any later version.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
15
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 87649
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
24 ;;; Commentary:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
25
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;;; Code:
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
32166
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
28
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
29 (defgroup image ()
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
30 "Image support."
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
31 :group 'multimedia)
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
32
e3be69cf6c81 (image): New group.
Miles Bader <miles@gnu.org>
parents: 31635
diff changeset
33
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
34 (defconst image-type-header-regexps
82835
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
35 `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
36 ("\\`P[1-6][[:space:]]+\\(?:#.*[[:space:]]+\\)*[0-9]+[[:space:]]+[0-9]+" . pbm)
75472
ad8f4e060e53 (image-type-header-regexps): Make GIF regex more specific.
Richard M. Stallman <rms@gnu.org>
parents: 75347
diff changeset
37 ("\\`GIF8[79]a" . gif)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
38 ("\\`\x89PNG\r\n\x1a\n" . png)
99876
e8248a7b666d (image-type-header-regexps): Recognize more xbm format
Andreas Schwab <schwab@suse.de>
parents: 96380
diff changeset
39 ("\\`[\t\n\r ]*#define \\([a-z0-9_]+\\)_width [0-9]+\n\
e8248a7b666d (image-type-header-regexps): Recognize more xbm format
Andreas Schwab <schwab@suse.de>
parents: 96380
diff changeset
40 #define \\1_height [0-9]+\n\\(\
e8248a7b666d (image-type-header-regexps): Recognize more xbm format
Andreas Schwab <schwab@suse.de>
parents: 96380
diff changeset
41 #define \\1_x_hot [0-9]+\n\
e8248a7b666d (image-type-header-regexps): Recognize more xbm format
Andreas Schwab <schwab@suse.de>
parents: 96380
diff changeset
42 #define \\1_y_hot [0-9]+\n\\)?\
e8248a7b666d (image-type-header-regexps): Recognize more xbm format
Andreas Schwab <schwab@suse.de>
parents: 96380
diff changeset
43 static \\(unsigned \\)?char \\1_bits" . xbm)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
44 ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff)
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
45 ("\\`[\t\n\r ]*%!PS" . postscript)
104690
d3d94e331386 (image-type-header-regexps): Use only JPEG magic number
Juri Linkov <juri@jurta.org>
parents: 102236
diff changeset
46 ("\\`\xff\xd8" . jpeg) ; used to be (image-jpeg-p . jpeg)
82835
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
47 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
48 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\r\n]*<\\)")))
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
49 (concat "\\(?:<\\?xml[ \t\r\n]+[^>]*>\\)?[ \t\r\n]*<"
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
50 comment-re "*"
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
51 "\\(?:!DOCTYPE[ \t\r\n]+[^>]*>[ \t\r\n]*<[ \t\r\n]*" comment-re "*\\)?"
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
52 "[Ss][Vv][Gg]"))
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
53 . svg)
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
54 )
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
55 "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
56 When the first bytes of an image file match REGEXP, it is assumed to
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
57 be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol. If not a symbol,
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
58 IMAGE-TYPE must be a pair (PREDICATE . TYPE). PREDICATE is called
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
59 with one argument, a string containing the image data. If PREDICATE returns
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
60 a non-nil value, TYPE is the image's type.")
38732
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
61
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
62 (defconst image-type-file-name-regexps
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
63 '(("\\.png\\'" . png)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
64 ("\\.gif\\'" . gif)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
65 ("\\.jpe?g\\'" . jpeg)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
66 ("\\.bmp\\'" . bmp)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
67 ("\\.xpm\\'" . xpm)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
68 ("\\.pbm\\'" . pbm)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
69 ("\\.xbm\\'" . xbm)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
70 ("\\.ps\\'" . postscript)
82835
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
71 ("\\.tiff?\\'" . tiff)
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
72 ("\\.svgz?\\'" . svg)
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
73 )
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
74 "Alist of (REGEXP . IMAGE-TYPE) pairs used to identify image files.
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
75 When the name of an image file match REGEXP, it is assumed to
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
76 be of image type IMAGE-TYPE.")
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
77
75744
53fa6ea37e3a (image-type-auto-detectable): Don't autodetect x[pb]m.
Chong Yidong <cyd@stupidchicken.com>
parents: 75472
diff changeset
78 ;; We rely on `auto-mode-alist' to detect xbm and xpm files, instead
53fa6ea37e3a (image-type-auto-detectable): Don't autodetect x[pb]m.
Chong Yidong <cyd@stupidchicken.com>
parents: 75472
diff changeset
79 ;; of content autodetection. Their contents are just C code, so it is
53fa6ea37e3a (image-type-auto-detectable): Don't autodetect x[pb]m.
Chong Yidong <cyd@stupidchicken.com>
parents: 75472
diff changeset
80 ;; easy to generate false matches.
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
81 (defvar image-type-auto-detectable
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
82 '((pbm . t)
75744
53fa6ea37e3a (image-type-auto-detectable): Don't autodetect x[pb]m.
Chong Yidong <cyd@stupidchicken.com>
parents: 75472
diff changeset
83 (xbm . nil)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
84 (bmp . maybe)
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
85 (gif . maybe)
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
86 (png . maybe)
75744
53fa6ea37e3a (image-type-auto-detectable): Don't autodetect x[pb]m.
Chong Yidong <cyd@stupidchicken.com>
parents: 75472
diff changeset
87 (xpm . nil)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
88 (jpeg . maybe)
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
89 (tiff . maybe)
82835
de6e597c221b (image-type-header-regexps): Use more complex regexp for svg.
Juri Linkov <juri@jurta.org>
parents: 82734
diff changeset
90 (svg . maybe)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
91 (postscript . nil))
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
92 "Alist of (IMAGE-TYPE . AUTODETECT) pairs used to auto-detect image files.
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
93 \(See `image-type-auto-detected-p').
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
94
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
95 AUTODETECT can be
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
96 - t always auto-detect.
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
97 - nil never auto-detect.
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
98 - maybe auto-detect only if the image type is available
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
99 (see `image-type-available-p').")
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
100
104978
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
101 (defcustom image-load-path
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
102 (list (file-name-as-directory (expand-file-name "images" data-directory))
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
103 'data-directory 'load-path)
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
104 "List of locations in which to search for image files.
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
105 If an element is a string, it defines a directory to search.
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
106 If an element is a variable symbol whose value is a string, that
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
107 value defines a directory to search.
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
108 If an element is a variable symbol whose value is a list, the
104978
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
109 value is used as a list of directories to search."
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
110 :type '(repeat (choice directory variable))
a4c2188bd87d * startup.el (tutorial-directory): Make it a defcustom.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 104690
diff changeset
111 :initialize 'custom-initialize-delay)
66307
ca953a3dbdf1 (image-load-path): Use eval-at-startup to initialize.
Richard M. Stallman <rms@gnu.org>
parents: 66296
diff changeset
112
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
113
69365
0a2d89023fde (image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents: 69360
diff changeset
114 (defun image-load-path-for-library (library image &optional path no-error)
69569
dd7f85a6af09 (image-load-path-for-library): Shorten first line in docstring.
Bill Wohler <wohler@newt.com>
parents: 69535
diff changeset
115 "Return a suitable search path for images used by LIBRARY.
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
116
69535
3feef8dfbff5 (image-load-path-for-library): Minor docstring fix.
Bill Wohler <wohler@newt.com>
parents: 69516
diff changeset
117 It searches for IMAGE in `image-load-path' (excluding
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
118 \"`data-directory'/images\") and `load-path', followed by a path
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
119 suitable for LIBRARY, which includes \"../../etc/images\" and
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
120 \"../etc/images\" relative to the library file itself, and then
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
121 in \"`data-directory'/images\".
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
122
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
123 Then this function returns a list of directories which contains
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
124 first the directory in which IMAGE was found, followed by the
102236
eeef2e7e9171 * image.el (image-load-path-for-library, insert-sliced-image):
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
125 value of `load-path'. If PATH is given, it is used instead of
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
126 `load-path'.
69365
0a2d89023fde (image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents: 69360
diff changeset
127
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
128 If NO-ERROR is non-nil and a suitable path can't be found, don't
102236
eeef2e7e9171 * image.el (image-load-path-for-library, insert-sliced-image):
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
129 signal an error. Instead, return a list of directories as before,
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
130 except that nil appears in place of the image directory.
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
131
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
132 Here is an example that uses a common idiom to provide
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
133 compatibility with versions of Emacs that lack the variable
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
134 `image-load-path':
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
135
69493
4f9233243d97 (image-load-path-for-library): Fix example by not recommending that
Bill Wohler <wohler@newt.com>
parents: 69471
diff changeset
136 ;; Shush compiler.
4f9233243d97 (image-load-path-for-library): Fix example by not recommending that
Bill Wohler <wohler@newt.com>
parents: 69471
diff changeset
137 (defvar image-load-path)
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
138
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
139 (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\"))
69493
4f9233243d97 (image-load-path-for-library): Fix example by not recommending that
Bill Wohler <wohler@newt.com>
parents: 69471
diff changeset
140 (image-load-path (cons (car load-path)
4f9233243d97 (image-load-path-for-library): Fix example by not recommending that
Bill Wohler <wohler@newt.com>
parents: 69471
diff changeset
141 (when (boundp 'image-load-path)
4f9233243d97 (image-load-path-for-library): Fix example by not recommending that
Bill Wohler <wohler@newt.com>
parents: 69471
diff changeset
142 image-load-path))))
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
143 (mh-tool-bar-folder-buttons-init))"
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
144 (unless library (error "No library specified"))
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
145 (unless image (error "No image specified"))
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
146 (let (image-directory image-directory-load-path)
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
147 ;; Check for images in image-load-path or load-path.
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
148 (let ((img image)
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
149 (dir (or
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
150 ;; Images in image-load-path.
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
151 (image-search-load-path image)
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
152 ;; Images in load-path.
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
153 (locate-library image)))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
154 parent)
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
155 ;; Since the image might be in a nested directory (for
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
156 ;; example, mail/attach.pbm), adjust `image-directory'
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
157 ;; accordingly.
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
158 (when dir
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
159 (setq dir (file-name-directory dir))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
160 (while (setq parent (file-name-directory img))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
161 (setq img (directory-file-name parent)
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
162 dir (expand-file-name "../" dir))))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
163 (setq image-directory-load-path dir))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
164
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
165 ;; If `image-directory-load-path' isn't Emacs' image directory,
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
166 ;; it's probably a user preference, so use it. Then use a
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
167 ;; relative setting if possible; otherwise, use
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
168 ;; `image-directory-load-path'.
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
169 (cond
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
170 ;; User-modified image-load-path?
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
171 ((and image-directory-load-path
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
172 (not (equal image-directory-load-path
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
173 (file-name-as-directory
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
174 (expand-file-name "images" data-directory)))))
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
175 (setq image-directory image-directory-load-path))
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
176 ;; Try relative setting.
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
177 ((let (library-name d1ei d2ei)
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
178 ;; First, find library in the load-path.
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
179 (setq library-name (locate-library library))
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
180 (if (not library-name)
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
181 (error "Cannot find library %s in load-path" library))
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
182 ;; And then set image-directory relative to that.
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
183 (setq
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
184 ;; Go down 2 levels.
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
185 d2ei (file-name-as-directory
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
186 (expand-file-name
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
187 (concat (file-name-directory library-name) "../../etc/images")))
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
188 ;; Go down 1 level.
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
189 d1ei (file-name-as-directory
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
190 (expand-file-name
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
191 (concat (file-name-directory library-name) "../etc/images"))))
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
192 (setq image-directory
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
193 ;; Set it to nil if image is not found.
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
194 (cond ((file-exists-p (expand-file-name image d2ei)) d2ei)
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
195 ((file-exists-p (expand-file-name image d1ei)) d1ei)))))
69516
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
196 ;; Use Emacs' image directory.
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
197 (image-directory-load-path
e419733d5cf6 (image-load-path-for-library): Prefer user's images in
Bill Wohler <wohler@newt.com>
parents: 69493
diff changeset
198 (setq image-directory image-directory-load-path))
69365
0a2d89023fde (image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents: 69360
diff changeset
199 (no-error
0a2d89023fde (image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents: 69360
diff changeset
200 (message "Could not find image %s for library %s" image library))
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
201 (t
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
202 (error "Could not find image %s for library %s" image library)))
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
203
69471
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
204 ;; Return an augmented `path' or `load-path'.
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
205 (nconc (list image-directory)
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
206 (delete image-directory (copy-sequence (or path load-path))))))
6f07bf99b6f8 (image-load-path-for-library): Pass value of path rather than symbol.
Bill Wohler <wohler@newt.com>
parents: 69365
diff changeset
207
69360
e5e4303f8050 (image-load-path-for-library): Merge at least three functions from
Bill Wohler <wohler@newt.com>
parents: 68651
diff changeset
208
38732
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
209 (defun image-jpeg-p (data)
46810
65ad7b458435 (image-jpeg-p): Accept "Exif" marker.
Richard M. Stallman <rms@gnu.org>
parents: 43834
diff changeset
210 "Value is non-nil if DATA, a string, consists of JFIF image data.
65ad7b458435 (image-jpeg-p): Accept "Exif" marker.
Richard M. Stallman <rms@gnu.org>
parents: 43834
diff changeset
211 We accept the tag Exif because that is the same format."
96380
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
212 (setq data (ignore-errors (string-to-unibyte data)))
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
213 (when (and data (string-match-p "\\`\xff\xd8" data))
38732
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
214 (catch 'jfif
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
215 (let ((len (length data)) (i 2))
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
216 (while (< i len)
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
217 (when (/= (aref data i) #xff)
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
218 (throw 'jfif nil))
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
219 (setq i (1+ i))
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
220 (when (>= (+ i 2) len)
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
221 (throw 'jfif nil))
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
222 (let ((nbytes (+ (lsh (aref data (+ i 1)) 8)
38776
a679a282d5cb (image-jpeg-p): Test for APPn markers in the range
Gerd Moellmann <gerd@gnu.org>
parents: 38746
diff changeset
223 (aref data (+ i 2))))
a679a282d5cb (image-jpeg-p): Test for APPn markers in the range
Gerd Moellmann <gerd@gnu.org>
parents: 38746
diff changeset
224 (code (aref data i)))
a679a282d5cb (image-jpeg-p): Test for APPn markers in the range
Gerd Moellmann <gerd@gnu.org>
parents: 38746
diff changeset
225 (when (and (>= code #xe0) (<= code #xef))
38732
24fe4f884e82 (image-type-regexps): Allow predicates. Change the way
Gerd Moellmann <gerd@gnu.org>
parents: 38711
diff changeset
226 ;; APP0 LEN1 LEN2 "JFIF\0"
49588
37645a051842 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48130
diff changeset
227 (throw 'jfif
96380
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
228 (string-match-p "JFIF\\|Exif"
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
229 (substring data i (min (+ i nbytes) len)))))
38746
0fc8e4a27edc (image-type-regexps): Allow whitespace at the start
Gerd Moellmann <gerd@gnu.org>
parents: 38732
diff changeset
230 (setq i (+ i 1 nbytes))))))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
231
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
232
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
233 ;;;###autoload
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
234 (defun image-type-from-data (data)
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
235 "Determine the image type from image data DATA.
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
236 Value is a symbol specifying the image type or nil if type cannot
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
237 be determined."
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
238 (let ((types image-type-header-regexps)
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
239 type)
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
240 (while types
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
241 (let ((regexp (car (car types)))
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
242 (image-type (cdr (car types))))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
243 (if (or (and (symbolp image-type)
96380
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
244 (string-match-p regexp data))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
245 (and (consp image-type)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
246 (funcall (car image-type) data)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
247 (setq image-type (cdr image-type))))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
248 (setq type image-type
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
249 types nil)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
250 (setq types (cdr types)))))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
251 type))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
252
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
253
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
254 ;;;###autoload
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
255 (defun image-type-from-buffer ()
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
256 "Determine the image type from data in the current buffer.
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
257 Value is a symbol specifying the image type or nil if type cannot
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
258 be determined."
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
259 (let ((types image-type-header-regexps)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
260 type
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
261 (opoint (point)))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
262 (goto-char (point-min))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
263 (while types
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
264 (let ((regexp (car (car types)))
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
265 (image-type (cdr (car types)))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
266 data)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
267 (if (or (and (symbolp image-type)
96380
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
268 (looking-at-p regexp))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
269 (and (consp image-type)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
270 (funcall (car image-type)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
271 (or data
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
272 (setq data
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
273 (buffer-substring
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
274 (point-min)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
275 (min (point-max)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
276 (+ (point-min) 256))))))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
277 (setq image-type (cdr image-type))))
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
278 (setq type image-type
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
279 types nil)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
280 (setq types (cdr types)))))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
281 (goto-char opoint)
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
282 type))
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
283
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
284
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
285 ;;;###autoload
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
286 (defun image-type-from-file-header (file)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 "Determine the type of image file FILE from its first few bytes.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 Value is a symbol specifying the image type, or nil if type cannot
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 be determined."
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
290 (unless (or (file-readable-p file)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
291 (file-name-absolute-p file))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
292 (setq file (image-search-load-path file)))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
293 (and file
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
294 (file-readable-p file)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
295 (with-temp-buffer
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
296 (set-buffer-multibyte nil)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
297 (insert-file-contents-literally file nil 0 256)
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
298 (image-type-from-buffer))))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
299
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
300
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
301 ;;;###autoload
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
302 (defun image-type-from-file-name (file)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
303 "Determine the type of image file FILE from its name.
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
304 Value is a symbol specifying the image type, or nil if type cannot
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
305 be determined."
96380
044f3969e191 (image-jpeg-p): Don't fail if the arg cannot be converted to unibyte.
Juanma Barranquero <lekktu@gmail.com>
parents: 96253
diff changeset
306 (assoc-default file image-type-file-name-regexps 'string-match-p))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
307
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 ;;;###autoload
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
310 (defun image-type (source &optional type data-p)
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
311 "Determine and return image type.
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
312 SOURCE is an image file name or image data.
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
313 Optional TYPE is a symbol describing the image type. If TYPE is omitted
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
314 or nil, try to determine the image type from its first few bytes
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
315 of image data. If that doesn't work, and SOURCE is a file name,
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
316 use its file extension as image type.
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
317 Optional DATA-P non-nil means SOURCE is a string containing image data."
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
318 (when (and (not data-p) (not (stringp source)))
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
319 (error "Invalid image file name `%s'" source))
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
320 (unless type
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
321 (setq type (if data-p
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
322 (image-type-from-data source)
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
323 (or (image-type-from-file-header source)
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
324 (image-type-from-file-name source))))
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
325 (or type (error "Cannot determine image type")))
85072
c27859b68484 (image-type): Check if image-types is bound to not fail on tty.
Juri Linkov <juri@jurta.org>
parents: 84949
diff changeset
326 (or (memq type (and (boundp 'image-types) image-types))
81013
b808e2e86f98 (image-type-from-file-name, image-type): Simplify.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
327 (error "Invalid image type `%s'" type))
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
328 type)
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
329
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
330
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
331 (defvar image-library-alist)
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94678
diff changeset
332
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
333 ;;;###autoload
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
334 (defun image-type-available-p (type)
62816
f5a3eeaf3d70 (image-library-alist): Moved to image.c.
Juanma Barranquero <lekktu@gmail.com>
parents: 60688
diff changeset
335 "Return non-nil if image type TYPE is available.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
336 Image types are symbols like `xbm' or `jpeg'."
56106
5b3f0e4cf47f (image-library-alist): New variable to map image types to external
Juanma Barranquero <lekktu@gmail.com>
parents: 55167
diff changeset
337 (and (fboundp 'init-image-library)
5b3f0e4cf47f (image-library-alist): New variable to map image types to external
Juanma Barranquero <lekktu@gmail.com>
parents: 55167
diff changeset
338 (init-image-library type image-library-alist)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
339
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
340
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
341 ;;;###autoload
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
342 (defun image-type-auto-detected-p ()
78492
7c8949dbfa0d Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78236
diff changeset
343 "Return t if the current buffer contains an auto-detectable image.
77873
b2375f70c499 (image-type-auto-detected-p): Don't scan auto-mode-alist.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
344 This function is intended to be used from `magic-fallback-mode-alist'.
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
345
77873
b2375f70c499 (image-type-auto-detected-p): Don't scan auto-mode-alist.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
346 The buffer is considered to contain an auto-detectable image if
b2375f70c499 (image-type-auto-detected-p): Don't scan auto-mode-alist.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
347 its beginning matches an image type in `image-type-header-regexps',
84944
186e9ba3989a (image-type-auto-detected-p): Doc fix. Don't detect an image if it is
Glenn Morris <rgm@gnu.org>
parents: 82835
diff changeset
348 and that image type is present in `image-type-auto-detectable' with a
186e9ba3989a (image-type-auto-detected-p): Doc fix. Don't detect an image if it is
Glenn Morris <rgm@gnu.org>
parents: 82835
diff changeset
349 non-nil value. If that value is non-nil, but not t, then the image type
186e9ba3989a (image-type-auto-detected-p): Doc fix. Don't detect an image if it is
Glenn Morris <rgm@gnu.org>
parents: 82835
diff changeset
350 must be available."
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
351 (let* ((type (image-type-from-buffer))
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
352 (auto (and type (cdr (assq type image-type-auto-detectable)))))
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
353 (and auto
77873
b2375f70c499 (image-type-auto-detected-p): Don't scan auto-mode-alist.
Chong Yidong <cyd@stupidchicken.com>
parents: 75744
diff changeset
354 (or (eq auto t) (image-type-available-p type)))))
74972
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
355
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
356
94afc7cac404 (image-type-header-regexps, image-type-from-data, image-type-from-buffer,
Juanma Barranquero <lekktu@gmail.com>
parents: 74916
diff changeset
357 ;;;###autoload
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
358 (defun create-image (file-or-data &optional type data-p &rest props)
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
359 "Create an image.
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
360 FILE-OR-DATA is an image file name or image data.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
361 Optional TYPE is a symbol describing the image type. If TYPE is omitted
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
362 or nil, try to determine the image type from its first few bytes
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
363 of image data. If that doesn't work, and FILE-OR-DATA is a file name,
34378
5ae7af279df7 (create-image): Doc fix; spotted by Per Cederqvist <ceder@lysator.liu.se>.
Eli Zaretskii <eliz@gnu.org>
parents: 32166
diff changeset
364 use its file extension as image type.
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
365 Optional DATA-P non-nil means FILE-OR-DATA is a string containing image data.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366 Optional PROPS are additional image attributes to assign to the image,
31635
208d8385ccae (create-image): Doc fix.
Gerd Moellmann <gerd@gnu.org>
parents: 30952
diff changeset
367 like, e.g. `:mask MASK'.
66196
2e59eea25fcf * image.el (create-image, find-image): Mention max-image-size in
Chong Yidong <cyd@stupidchicken.com>
parents: 65599
diff changeset
368 Value is the image created, or nil if images of type TYPE are not supported.
2e59eea25fcf * image.el (create-image, find-image): Mention max-image-size in
Chong Yidong <cyd@stupidchicken.com>
parents: 65599
diff changeset
369
82734
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
370 Images should not be larger than specified by `max-image-size'.
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
371
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
372 Image file names that are not absolute are searched for in the
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
373 \"images\" sub-directory of `data-directory' and
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
374 `x-bitmap-file-path' (in that order)."
8c182b8c81d6 (create-image): Doc fix.
Glenn Morris <rgm@gnu.org>
parents: 82521
diff changeset
375 ;; It is x_find_image_file in image.c that sets the search path.
70170
de6c9508749d (image-type): New defun split out of create-image.
Kim F. Storm <storm@cua.dk>
parents: 69569
diff changeset
376 (setq type (image-type file-or-data type data-p))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
377 (when (image-type-available-p type)
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
378 (append (list 'image :type type (if data-p :data :file) file-or-data)
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
379 props)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
380
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
381
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
382 ;;;###autoload
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
383 (defun put-image (image pos &optional string area)
25617
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
384 "Put image IMAGE in front of POS in the current buffer.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 IMAGE must be an image created with `create-image' or `defimage'.
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
386 IMAGE is displayed by putting an overlay into the current buffer with a
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
387 `before-string' STRING that has a `display' property whose value is the
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
388 image. STRING is defaulted if you omit it.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 POS may be an integer or marker.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
390 AREA is where to display the image. AREA nil or omitted means
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
391 display it in the text area, a value of `left-margin' means
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
392 display it in the left marginal area, a value of `right-margin'
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
393 means display it in the right marginal area."
29626
ecb96a7369d3 Fix last change to be in insert-image as intended.
Dave Love <fx@gnu.org>
parents: 29624
diff changeset
394 (unless string (setq string "x"))
25617
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
395 (let ((buffer (current-buffer)))
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
396 (unless (eq (car-safe image) 'image)
25617
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
397 (error "Not an image: %s" image))
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
398 (unless (or (null area) (memq area '(left-margin right-margin)))
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
399 (error "Invalid area %s" area))
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
400 (setq string (copy-sequence string))
25617
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
401 (let ((overlay (make-overlay pos pos buffer))
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
402 (prop (if (null area) image (list (list 'margin area) image))))
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
403 (put-text-property 0 (length string) 'display prop string)
25617
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
404 (overlay-put overlay 'put-image t)
697b28471784 (put-image): Remove optional buffer parameter.
Gerd Moellmann <gerd@gnu.org>
parents: 25309
diff changeset
405 (overlay-put overlay 'before-string string))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
407
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
408 ;;;###autoload
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
409 (defun insert-image (image &optional string area slice)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
410 "Insert IMAGE into current buffer at point.
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
411 IMAGE is displayed by inserting STRING into the current buffer
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
412 with a `display' property whose value is the image. STRING is
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
413 defaulted if you omit it.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
414 AREA is where to display the image. AREA nil or omitted means
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
415 display it in the text area, a value of `left-margin' means
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
416 display it in the left marginal area, a value of `right-margin'
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
417 means display it in the right marginal area.
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
418 SLICE specifies slice of IMAGE to insert. SLICE nil or omitted
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
419 means insert whole image. SLICE is a list (X Y WIDTH HEIGHT)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
420 specifying the X and Y positions and WIDTH and HEIGHT of image area
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
421 to insert. A float value 0.0 - 1.0 means relative to the width or
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
422 height of the image; integer values are taken as pixel values."
29626
ecb96a7369d3 Fix last change to be in insert-image as intended.
Dave Love <fx@gnu.org>
parents: 29624
diff changeset
423 ;; Use a space as least likely to cause trouble when it's a hidden
ecb96a7369d3 Fix last change to be in insert-image as intended.
Dave Love <fx@gnu.org>
parents: 29624
diff changeset
424 ;; character in the buffer.
ecb96a7369d3 Fix last change to be in insert-image as intended.
Dave Love <fx@gnu.org>
parents: 29624
diff changeset
425 (unless string (setq string " "))
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
426 (unless (eq (car-safe image) 'image)
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
427 (error "Not an image: %s" image))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
428 (unless (or (null area) (memq area '(left-margin right-margin)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
429 (error "Invalid area %s" area))
29607
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
430 (if area
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
431 (setq image (list (list 'margin area) image))
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
432 ;; Cons up a new spec equal but not eq to `image' so that
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
433 ;; inserting it twice in a row (adjacently) displays two copies of
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
434 ;; the image. Don't try to avoid this by looking at the display
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
435 ;; properties on either side so that we DTRT more often with
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
436 ;; cut-and-paste. (Yanking killed image text next to another copy
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
437 ;; of it loses anyway.)
42d156d8d8eb (insert-image): Save a little consing.
Dave Love <fx@gnu.org>
parents: 29470
diff changeset
438 (setq image (cons 'image (cdr image))))
25816
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
439 (let ((start (point)))
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
440 (insert string)
2d53a03a3baa (put-image, insert-image): Add string argument.
Gerd Moellmann <gerd@gnu.org>
parents: 25617
diff changeset
441 (add-text-properties start (point)
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
442 `(display ,(if slice
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
443 (list (cons 'slice slice) image)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
444 image) rear-nonsticky (display)))))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
445
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
446
60688
b0de8a447a79 (insert-sliced-image): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 59276
diff changeset
447 ;;;###autoload
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
448 (defun insert-sliced-image (image &optional string area rows cols)
57196
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
449 "Insert IMAGE into current buffer at point.
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
450 IMAGE is displayed by inserting STRING into the current buffer
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
451 with a `display' property whose value is the image. STRING is
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
452 defaulted if you omit it.
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
453 AREA is where to display the image. AREA nil or omitted means
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
454 display it in the text area, a value of `left-margin' means
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
455 display it in the left marginal area, a value of `right-margin'
090c23fa222c (insert-sliced-image): Add doc string.
Kim F. Storm <storm@cua.dk>
parents: 56189
diff changeset
456 means display it in the right marginal area.
102236
eeef2e7e9171 * image.el (image-load-path-for-library, insert-sliced-image):
Juanma Barranquero <lekktu@gmail.com>
parents: 100908
diff changeset
457 The image is automatically split into ROWS x COLS slices."
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
458 (unless string (setq string " "))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
459 (unless (eq (car-safe image) 'image)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
460 (error "Not an image: %s" image))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
461 (unless (or (null area) (memq area '(left-margin right-margin)))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
462 (error "Invalid area %s" area))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
463 (if area
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
464 (setq image (list (list 'margin area) image))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
465 ;; Cons up a new spec equal but not eq to `image' so that
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
466 ;; inserting it twice in a row (adjacently) displays two copies of
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
467 ;; the image. Don't try to avoid this by looking at the display
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
468 ;; properties on either side so that we DTRT more often with
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
469 ;; cut-and-paste. (Yanking killed image text next to another copy
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
470 ;; of it loses anyway.)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
471 (setq image (cons 'image (cdr image))))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
472 (let ((x 0.0) (dx (/ 1.0001 (or cols 1)))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
473 (y 0.0) (dy (/ 1.0001 (or rows 1))))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
474 (while (< y 1.0)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
475 (while (< x 1.0)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
476 (let ((start (point)))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
477 (insert string)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
478 (add-text-properties start (point)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
479 `(display ,(list (list 'slice x y dx dy) image)
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
480 rear-nonsticky (display)))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
481 (setq x (+ x dx))))
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
482 (setq x 0.0
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
483 y (+ y dy))
59276
d50d807507e0 (insert-sliced-image): Use t for line-height property.
Kim F. Storm <storm@cua.dk>
parents: 57196
diff changeset
484 (insert (propertize "\n" 'line-height t)))))
55033
a7dfcd60873e (insert-image): Add optional SLICE arg.
Kim F. Storm <storm@cua.dk>
parents: 52401
diff changeset
485
26007
774b2504710b (insert-image): Copy the image spec and add an intangible property.
Dave Love <fx@gnu.org>
parents: 25872
diff changeset
486
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
487
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
488 ;;;###autoload
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
489 (defun remove-images (start end &optional buffer)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
490 "Remove images between START and END in BUFFER.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
491 Remove only images that were put in BUFFER with calls to `put-image'.
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
492 BUFFER nil or omitted means use the current buffer."
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
493 (unless buffer
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
494 (setq buffer (current-buffer)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
495 (let ((overlays (overlays-in start end)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
496 (while overlays
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
497 (let ((overlay (car overlays)))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
498 (when (overlay-get overlay 'put-image)
25857
fdc2bd91cf63 (defimage): Remove redundant code. Substitute file on image plist.
Dave Love <fx@gnu.org>
parents: 25816
diff changeset
499 (delete-overlay overlay)))
fdc2bd91cf63 (defimage): Remove redundant code. Substitute file on image plist.
Dave Love <fx@gnu.org>
parents: 25816
diff changeset
500 (setq overlays (cdr overlays)))))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
501
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
502 (defun image-search-load-path (file &optional path)
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
503 (unless path
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
504 (setq path image-load-path))
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
505 (let (element found filename)
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
506 (while (and (not found) (consp path))
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
507 (setq element (car path))
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
508 (cond
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
509 ((stringp element)
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
510 (setq found
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
511 (file-readable-p
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
512 (setq filename (expand-file-name file element)))))
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
513 ((and (symbolp element) (boundp element))
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
514 (setq element (symbol-value element))
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
515 (cond
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
516 ((stringp element)
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
517 (setq found
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
518 (file-readable-p
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
519 (setq filename (expand-file-name file element)))))
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
520 ((consp element)
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
521 (if (setq filename (image-search-load-path file element))
65599
39114a2ae201 (image-load-path): Use symbol `data-directory' instead of its value,
Chong Yidong <cyd@stupidchicken.com>
parents: 65544
diff changeset
522 (setq found t))))))
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
523 (setq path (cdr path)))
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
524 (if found filename)))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
525
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
526 ;;;###autoload
28721
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
527 (defun find-image (specs)
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
528 "Find an image, choosing one of a list of image specifications.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
529
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
530 SPECS is a list of image specifications.
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
531
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
532 Each image specification in SPECS is a property list. The contents of
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
533 a specification are image type dependent. All specifications must at
27059
6bb2a4a0413e * image.el (defimage): Images with the :data keyword should be considered valid as well.
William M. Perry <wmperry@aventail.com>
parents: 26007
diff changeset
534 least contain the properties `:type TYPE' and either `:file FILE' or
6bb2a4a0413e * image.el (defimage): Images with the :data keyword should be considered valid as well.
William M. Perry <wmperry@aventail.com>
parents: 26007
diff changeset
535 `:data DATA', where TYPE is a symbol specifying the image type,
6bb2a4a0413e * image.el (defimage): Images with the :data keyword should be considered valid as well.
William M. Perry <wmperry@aventail.com>
parents: 26007
diff changeset
536 e.g. `xbm', FILE is the file to load the image from, and DATA is a
29470
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
537 string containing the actual image data. The specification whose TYPE
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
538 is supported, and FILE exists, is used to construct the image
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
539 specification to be returned. Return nil if no specification is
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
540 satisfied.
7bde123bed95 (find-image): Doc fix. Return nil if image not found.
Dave Love <fx@gnu.org>
parents: 28958
diff changeset
541
66196
2e59eea25fcf * image.el (create-image, find-image): Mention max-image-size in
Chong Yidong <cyd@stupidchicken.com>
parents: 65599
diff changeset
542 The image is looked for in `image-load-path'.
2e59eea25fcf * image.el (create-image, find-image): Mention max-image-size in
Chong Yidong <cyd@stupidchicken.com>
parents: 65599
diff changeset
543
2e59eea25fcf * image.el (create-image, find-image): Mention max-image-size in
Chong Yidong <cyd@stupidchicken.com>
parents: 65599
diff changeset
544 Image files should not be larger than specified by `max-image-size'."
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
545 (let (image)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
546 (while (and specs (null image))
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
547 (let* ((spec (car specs))
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
548 (type (plist-get spec :type))
27059
6bb2a4a0413e * image.el (defimage): Images with the :data keyword should be considered valid as well.
William M. Perry <wmperry@aventail.com>
parents: 26007
diff changeset
549 (data (plist-get spec :data))
27921
ea0a2a4f20b7 (defimage): Look for image files in load-path.
Gerd Moellmann <gerd@gnu.org>
parents: 27075
diff changeset
550 (file (plist-get spec :file))
ea0a2a4f20b7 (defimage): Look for image files in load-path.
Gerd Moellmann <gerd@gnu.org>
parents: 27075
diff changeset
551 found)
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
552 (when (image-type-available-p type)
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
553 (cond ((stringp file)
66296
941b6508462f (image-type-header-regexps): Rename from image-type-regexps.
Kim F. Storm <storm@cua.dk>
parents: 66196
diff changeset
554 (if (setq found (image-search-load-path file))
65544
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
555 (setq image
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
556 (cons 'image (plist-put (copy-sequence spec)
78d74ef1436b 2005-09-15 Chong Yidong <cyd@stupidchicken.com>
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
557 :file found)))))
27075
893ec72bd6b1 (create-image, defimage): Don't assume image data is a
Gerd Moellmann <gerd@gnu.org>
parents: 27073
diff changeset
558 ((not (null data))
27073
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
559 (setq image (cons 'image spec)))))
aad0a025b1e3 (defimage): Handle specifications containing :data
Gerd Moellmann <gerd@gnu.org>
parents: 27059
diff changeset
560 (setq specs (cdr specs))))
28721
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
561 image))
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
562
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
563
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
564 ;;;###autoload
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
565 (defmacro defimage (symbol specs &optional doc)
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
566 "Define SYMBOL as an image.
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
567
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
568 SPECS is a list of image specifications. DOC is an optional
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
569 documentation string.
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
570
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
571 Each image specification in SPECS is a property list. The contents of
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
572 a specification are image type dependent. All specifications must at
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
573 least contain the properties `:type TYPE' and either `:file FILE' or
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
574 `:data DATA', where TYPE is a symbol specifying the image type,
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
575 e.g. `xbm', FILE is the file to load the image from, and DATA is a
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
576 string containing the actual image data. The first image
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
577 specification whose TYPE is supported, and FILE exists, is used to
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
578 define SYMBOL.
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
579
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
580 Example:
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
581
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
582 (defimage test-image ((:type xpm :file \"~/test1.xpm\")
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
583 (:type xbm :file \"~/test1.xbm\")))"
66402
ade0d81f63a9 (defimage): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66307
diff changeset
584 (declare (doc-string 3))
28721
b4ea18c92e38 (find-image): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 27921
diff changeset
585 `(defvar ,symbol (find-image ',specs) ,doc))
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
586
107360
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
587
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
588 ;;; Animated image API
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
589
107360
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
590 (defcustom image-animate-max-time 30
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
591 "Time in seconds to animate images."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
592 :type 'integer
107369
f2fb364fb3ba Minor animated image housekeeping.
Glenn Morris <rgm@gnu.org>
parents: 107360
diff changeset
593 :version "24.1"
107360
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
594 :group 'image)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
595
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
596 (defconst image-animated-types '(gif)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
597 "List of supported animated image types.")
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
598
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
599 ;;;###autoload
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
600 (defun create-animated-image (file-or-data &optional type data-p &rest props)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
601 "Create an animated image.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
602 FILE-OR-DATA is an image file name or image data.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
603 Optional TYPE is a symbol describing the image type. If TYPE is omitted
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
604 or nil, try to determine the image type from its first few bytes
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
605 of image data. If that doesn't work, and FILE-OR-DATA is a file name,
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
606 use its file extension as image type.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
607 Optional DATA-P non-nil means FILE-OR-DATA is a string containing image data.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
608 Optional PROPS are additional image attributes to assign to the image,
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
609 like, e.g. `:mask MASK'.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
610 Value is the image created, or nil if images of type TYPE are not supported.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
611
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
612 Images should not be larger than specified by `max-image-size'."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
613 (setq type (image-type file-or-data type data-p))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
614 (when (image-type-available-p type)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
615 (let* ((animate (memq type image-animated-types))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
616 (image
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
617 (append (list 'image :type type (if data-p :data :file) file-or-data)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
618 (if animate '(:index 0 :mask heuristic))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
619 props)))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
620 (if animate
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
621 (image-animate-start image))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
622 image)))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
623
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
624 (defun image-animate-timer (image)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
625 "Return the animation timer for image IMAGE."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
626 ;; See cancel-function-timers
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
627 (let ((tail timer-list) timer)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
628 (while tail
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
629 (setq timer (car tail)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
630 tail (cdr tail))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
631 (if (and (eq (aref timer 5) #'image-animate-timeout)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
632 (consp (aref timer 6))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
633 (eq (car (aref timer 6)) image))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
634 (setq tail nil)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
635 (setq timer nil)))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
636 timer))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
637
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
638 (defun image-animate-start (image &optional max-time)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
639 "Start animation of image IMAGE.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
640 Optional second arg MAX-TIME is number of seconds to animate image,
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
641 or t to animate infinitely."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
642 (let ((anim (image-animated-p image))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
643 timer tmo)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
644 (when anim
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
645 (if (setq timer (image-animate-timer image))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
646 (setcar (nthcdr 3 (aref timer 6)) max-time)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
647 (setq tmo (* (cdr anim) 0.01))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
648 (setq max-time (or max-time image-animate-max-time))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
649 (run-with-timer tmo nil #'image-animate-timeout
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
650 image 1 (car anim)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
651 (if (numberp max-time)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
652 (- max-time tmo)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
653 max-time))))))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
654
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
655 (defun image-animate-stop (image)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
656 "Stop animation of image."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
657 (let ((timer (image-animate-timer image)))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
658 (when timer
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
659 (cancel-timer timer))))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
660
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
661 (defun image-animate-timeout (image ino count time-left)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
662 (if (>= ino count)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
663 (setq ino 0))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
664 (plist-put (cdr image) :index ino)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
665 (force-window-update)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
666 (let ((anim (image-animated-p image)) tmo)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
667 (when anim
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
668 (setq tmo (* (cdr anim) 0.01))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
669 (unless (and (= ino 0) (numberp time-left) (< time-left tmo))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
670 (run-with-timer tmo nil #'image-animate-timeout
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
671 image (1+ ino) count
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
672 (if (numberp time-left)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
673 (- time-left tmo)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
674 time-left))))))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
675
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
676 (defun image-animated-p (image)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
677 "Return non-nil if image is animated.
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
678 Actually, return value is a cons (IMAGES . DELAY) where IMAGES
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
679 is the number of sub-images in the animated image, and DELAY
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
680 is the delay in 100ths of a second until the next sub-image
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
681 shall be displayed."
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
682 (cond
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
683 ((eq (plist-get (cdr image) :type) 'gif)
107719
9c0ed2d6731a Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents: 107369
diff changeset
684 (let* ((metadata (image-metadata image))
9c0ed2d6731a Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents: 107369
diff changeset
685 (images (plist-get metadata 'count))
9c0ed2d6731a Rename `image-extension-data' to `image-metadata'.
Juri Linkov <juri@jurta.org>
parents: 107369
diff changeset
686 (extdata (plist-get metadata 'extension-data))
107360
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
687 (anim (plist-get extdata #xF9)))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
688 (and (integerp images) (> images 1)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
689 (stringp anim) (>= (length anim) 4)
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
690 (cons images (+ (aref anim 1) (* (aref anim 2) 256))))))))
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
691
8d9bcdbc2a6e Animated image API.
Juri Linkov <juri@jurta.org>
parents: 106815
diff changeset
692
25003
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
693 (provide 'image)
bb68fe3c72f8 New file.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
694
66402
ade0d81f63a9 (defimage): Add `doc-string' declaration.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66307
diff changeset
695 ;; arch-tag: 8e76a07b-eb48-4f3e-a7a0-1a7ba9f096b3
25872
6ae50308e8a3 Fix footer comment.
Dave Love <fx@gnu.org>
parents: 25857
diff changeset
696 ;;; image.el ends here