;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\302\303\304\305#\207" [require cl-lib autoload image-toggle-display "image-mode" t] 4) #@177 Non-nil disables a heuristic in `xpm-raster' filling. Normally, if you pass a well-formed (closed, no edge crossings) shape to `xpm-raster', then you can ignore this variable. (defvar xpm-raster-inhibit-continuity-optimization nil (#$ . 522)) #@63 compiler-macro for inlining `xpm--w'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--w--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--w (aref cl-x 0)) nil] 9 (#$ . 771)]) (put 'xpm--w 'compiler-macro 'xpm--w--cmacro) #@141 Access slot "w" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--w #[257 "\211\300H\207" [0] 3 (#$ . 1033)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put xpm--w side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" xpm--w] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@63 compiler-macro for inlining `xpm--h'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--h--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--h (aref cl-x 1)) nil] 9 (#$ . 1443)]) (put 'xpm--h 'compiler-macro 'xpm--h--cmacro) #@141 Access slot "h" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--h #[257 "\211\300H\207" [1] 3 (#$ . 1706)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put xpm--h side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" xpm--h] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@65 compiler-macro for inlining `xpm--cpp'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--cpp--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--cpp (aref cl-x 2)) nil] 9 (#$ . 2116)]) (put 'xpm--cpp 'compiler-macro 'xpm--cpp--cmacro) #@143 Access slot "cpp" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--cpp #[257 "\211\300H\207" [2] 3 (#$ . 2389)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put xpm--cpp side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" xpm--cpp] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@67 compiler-macro for inlining `xpm--pinfo'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--pinfo--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--pinfo (aref cl-x 3)) nil] 9 (#$ . 2807)]) (put 'xpm--pinfo 'compiler-macro 'xpm--pinfo--cmacro) #@145 Access slot "pinfo" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--pinfo #[257 "\211\300H\207" [3] 3 (#$ . 3090)]) (byte-code "\300\301\302\303#\300\207" [function-put xpm--pinfo side-effect-free t] 4) #@68 compiler-macro for inlining `xpm--origin'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--origin--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--origin (aref cl-x 4)) nil] 9 (#$ . 3391)]) (put 'xpm--origin 'compiler-macro 'xpm--origin--cmacro) #@146 Access slot "origin" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--origin #[257 "\211\300H\207" [4] 3 (#$ . 3679)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put xpm--origin side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" xpm--origin] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@68 compiler-macro for inlining `xpm--y-mult'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--y-mult--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--y-mult (aref cl-x 5)) nil] 9 (#$ . 4109)]) (put 'xpm--y-mult 'compiler-macro 'xpm--y-mult--cmacro) #@146 Access slot "y-mult" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--y-mult #[257 "\211\300H\207" [5] 3 (#$ . 4397)]) (byte-code "\300\301\302\303#\300\301\304\305#\300\207" [function-put xpm--y-mult side-effect-free t gv-expander #[514 "\300\301\302\"\207" [error "%s is a read-only slot" xpm--y-mult] 5 "\n\n(fn CL-DO CL-X)"]] 5) #@67 compiler-macro for inlining `xpm--flags'. (fn CL-WHOLE-ARG CL-X) (defalias 'xpm--flags--cmacro #[514 "\300\301\302\303\211\211&\207" [cl--defsubst-expand (cl-x) (cl-block xpm--flags (aref cl-x 6)) nil] 9 (#$ . 4827)]) (put 'xpm--flags 'compiler-macro 'xpm--flags--cmacro) #@145 Access slot "flags" of `(xpm--gg (:type vector) (:conc-name xpm--) (:constructor xpm--make-gg) (:copier xpm--copy-gg))' struct CL-X. (fn CL-X) (defalias 'xpm--flags #[257 "\211\300H\207" [6] 3 (#$ . 5110)]) (byte-code "\300\301\302\303#\304\305\306\"\207" [function-put xpm--flags side-effect-free t defalias xpm--copy-gg copy-sequence] 4) #@109 compiler-macro for inlining `xpm--make-gg'. (fn CL-WHOLE &cl-quote &key W H CPP PINFO ORIGIN Y-MULT FLAGS) (defalias 'xpm--make-gg--cmacro #[385 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\211\203Y\211@\310>\203A\211AA\262\202.\311 >A@\203P\312\262\202.\313\314@\"\210\202.\210\315\316\317\312\f\312\f\f\f\f\f\f\f&\f\207" [plist-member :w :h :cpp :pinfo :origin :y-mult :flags (:w :h :cpp :pinfo :origin :y-mult :flags :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:w :h :cpp :pinfo :origin :y-mult :flags)" cl--defsubst-expand (w h cpp pinfo origin y-mult flags) (cl-block xpm--make-gg (vector w h cpp pinfo origin y-mult flags))] 22 (#$ . 5458)]) (put 'xpm--make-gg 'compiler-macro 'xpm--make-gg--cmacro) #@89 Constructor for objects of type `xpm--gg'. (fn &key W H CPP PINFO ORIGIN Y-MULT FLAGS) (defalias 'xpm--make-gg #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\300\305\"A@\300\306\"A@\300\307\"A@\211\203Y\211@\310>\203A\211AA\262\202.\311 >A@\203P\312\262\202.\313\314@\"\210\202.\210\315&\207" [plist-member :w :h :cpp :pinfo :origin :y-mult :flags (:w :h :cpp :pinfo :origin :y-mult :flags :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:w :h :cpp :pinfo :origin :y-mult :flags)" vector] 16 (#$ . 6277)]) (byte-code "\300\301\302\303#\304\305\306\211\307\306\310\311\305\306& \207" [function-put xpm--make-gg side-effect-free t cl-struct-define xpm--gg nil vector ((w nil :read-only t) (h nil :read-only t) (cpp nil :read-only t) (pinfo) (origin nil :read-only t) (y-mult nil :read-only t) (flags)) cl-struct-xpm--gg-tags] 11) #@47 Various bits for xpm.el (et al) internal use. (defvar xpm--gg nil (#$ . 7189)) #@356 Analyze buffer and prepare internal data structures. When called as a command, display in the echo area a summary of image dimensions, cpp and palette. Set buffer-local variable `xpm--gg' and return its value. Normally, preparation includes making certain parts of the buffer intangible. Optional arg SIMPLE non-nil inhibits that. (fn &optional SIMPLE) (defalias 'xpm-grok #[256 "\304\300!\203\f\305=\204\212eb\210\306`\307 \"\310\230)\204\311\312!\210 \313=\203(\314 \210\315\316\317\"\320\211\212eb\210\321\322!\210\323\320w\210\324\325\326\324p!\"!\211AAA\203R\211A\262\242\202Y\327\330\320GD\"\211A\262\242\211A\262\242\211A\262\242\331y\210\332 \262\211S\211\262\333Y\203\223`T\334\306\211\\\"\335\f#\210\331y\266\202s\210B\262\323\320w\210\331u\210\336\302!\210\337\n\332 \340 _\\\320&\211\262\204\375\341 \335\342\211\331!\210\211S\211\262\333Y\203\344\340_\\u\210\340!\210\202\313\210\211\343\344\345#\210\211\346\347\346HBI\266\350!\210)\210\351\352!\203\353\354\355 !%\210\266)\207" [image-type major-mode xpm--gg inhibit-read-only boundp xpm buffer-substring-no-properties line-end-position "/* XPM */" error "Buffer not an XPM image" image-mode image-toggle-display make-hash-table :test equal nil search-forward "{" "^\"" read format "(%s)" signal wrong-number-of-arguments 1 point-marker 0 puthash t make-local-variable vector 4 buffer-modified-p #[385 "`\300Z\301\302BB#\207" [add-text-properties intangible t] 9 "\n\n(fn SPAN &rest MORE)"] 2 display "\n" 6 intangible-sides set-buffer-modified-p called-interactively-p interactive message "%dx%d, %d cpp, %d colors in palette" hash-table-count] 18 (#$ . 7275) nil]) (defalias 'xpm--gate #[0 "\206\f\301 \206\f\302\303!\207" [xpm--gg xpm-grok error "Sorry, xpm confused"] 2]) #@30 (fn NAMES FROM &body BODY) (defalias 'xpm--w/gg '(macro . #[642 "\300\301D\302\303\"BBB\207" [let* gg mapcar #[257 "\211\300\301\302\"!\303BD\207" [intern format "xpm--%s" (gg)] 6 "\n\n(fn NAME)"]] 8 (#$ . 9105)])) (byte-code "\300\301\302\303#\300\207" [function-put xpm--w/gg lisp-indent-function 2] 4) #@776 Return a new buffer in XPM image format. In this buffer, undo is disabled (see `buffer-enable-undo'). NAME is the buffer and XPM name. For best interoperation with other programs, NAME should be a valid C identifier. WIDTH, HEIGHT and CPP are integers that specify the image width, height and characters/pixel, respectively. PALETTE is an alist ((PX . COLOR) ...), where PX is either a character or string of length CPP, and COLOR is a string. If COLOR includes a space, it is included directly, otherwise it is automatically prefixed with "c ". For example, to produce palette fragment: "X c blue", "Y s border c green", you can specify PALETTE as: ((?X . "blue") (?Y . "s border c green")) This example presumes CPP is 1. (fn NAME WIDTH HEIGHT CPP PALETTE) (defalias 'xpm-generate-buffer #[1285 "\300!r\211q\210\301 \210\302\211\303!\210\211\304\"\210\211\305G%\210\306\211:\203]@\262\211A\262\242\262\307\310!\203D\311!\202E\312\313\"\203Q\202T\314P#\210A\262\202%\266\315\316\317 _\320\"\"\211S\211\262\321Y\203{c\210\202k\266\322\323!\210\211\324!\210\325\326!\266)\211\207" [generate-new-buffer buffer-disable-undo #[385 "\300\301#\302\261\207" [apply format "\n"] 6 "\n\n(fn S &rest ARGS)"] "/* XPM */" "static char * %s[] = {" "\"%d %d %d %d\"," nil "\"%s %s\"," characterp string string-match " " "c " format "%S,\n" make-string 32 0 delete-char -2 "};" xpm-grok t] 16 (#$ . 9424)]) #@623 Place PX at coordinate(s) (X,Y). If both X and Y are vectors of length N, then place N points using the pairwise vector elements. If one of X or Y is a vector of length N and the other component is an integer, then pair the vector elements with the integer component and place N points. If one of X or Y is a pair (LOW . HIGH), take it to be equivalent to specfiying a vector [LOW ... HIGH]. For example, (3 . 8) is equivalent to [3 4 5 6 7 8]. If one component is a pair, the other must be an integer -- the case where both X and Y are pairs is not supported. Silently ignore out-of-range coordinates. (fn PX X Y) (defalias 'xpm-put-points #[771 "C\300 \211\301H\302H\303H\304H\305H\242;\203(\302U\203(\211\242\301H\240\210\306\307\310\311\312  \"\313\"\304\314%\306\307\315\311\312#\316\"\317\314%\320\306\321\322\311\312 #\323\"\324\325%\326\327!\327!B\211:\203\345\211@\211\330=\203\326A\211\331=\203\312\301@] SA^\332\333#\302V\206\226\n\"?\205\305\302W\203\253#\202\305\242;\203\272\211\242\301H\240\210 %\266\203\202\321\334\335#\262\202\340\211\331=\203TA\211\330=\203@AX\203\n$\210T\262\202\352\336\266\202\202O\211\312=\2035\333\336T\211\262GW\203/H\262  $\210\202\336\266\203\202O\211\331=\203H$\202O\334\335#\262\202\340\211\312=\203\331A\211\331=\203\212\333\336T\211\262GW\203\204H\262  $\210\202f\336\266\203\202\324\211\312=\203\315\333\336\333\336T\211\262GW\203\307H\262T\211\262GW\203\307H\262 \f$\210\202\230\336\266\206\202\324\334\335#\262\202\340\334\335#\262\202\354\334\335#\262\262\262\262\262\262\266\206\207" [xpm--gate 0 1 2 4 5 make-byte-code 514 "\302V\206\300X\206\302V\206\301X\207" vconcat vector [0] "\n\n(fn COL ROW)" "\303\301\300_\302_#b\207" [+] 7 #[1285 "\"\210\300\242\"\210\301!\207" [insert-char delete-char] 8 "\n\n(fn PX --CL-POS-- COL ROW LEN)"] 771 "\302\"\210\301\303U\203\304\300\242\"\210\202'\211\211S\211\262\305Y\203&\300\242c\210\202\210\306\301_!\207" [1 insert-char 0 delete-char] 6 "\n\n(fn COL ROW LEN)" #[1028 "\"?\205 \300#\207" [1] 8 "\n\n(fn --CL-OUT-- --CL-REP-- COL ROW)"] type-of cons integer - -1 error "Bad coordinates: X %S, Y %S" nil] 29 (#$ . 10888)]) #@392 Rasterize FORM with EDGE pixel (character or string). FORM is a list of coordinates that comprise a closed shape. Optional arg FILL specifies a fill pixel, or t to fill with EDGE. If FORM is not closed or has inopportune vertical-facing concavities, filling might give bad results. For those cases, see variable `xpm-raster-inhibit-continuity-optimization'. (fn FORM EDGE &optional FILL) (defalias 'xpm-raster #[770 "\211\301=\203 \262\302 \211\303H\304\305\"@@C\211\242@A\211?\305\211\211 \305\211:\203r@\262\211A\262\242\262\n\211\242^\240\210 ]\262\n^\262 ]\262\306V\204k\fX\204k HBI\266A\262\202&\266\307\310\311\312\f\242\f\"\313\305\"\262\313\305\"\262\313\301\"\262\210\305\211\211\fS\fX\203d\314W\205\264V\205\264\315H\316\"\211\262\203]@CA\305:\203\377@\262@\211:\211\203\326@\202\327SU\204\345B\262\202\366\211\203\360\240\210\202\366B\240\210\266A\262\202\300\203GGU\205\317!\211\262\n\204\313\305\"\262\266\305\211\211\211\211\211\211\211\306 \203H \211A\262 \242\262 \320\"\n#\210 \203A:\262\211\306U\203i\306 \f\203c @\202e \"\301$\210\203\233\211\203}\211A\262\242\202\204\321\322\305GD\"!\"\"\305$\266\202\247 \"\305I\210 \203A\203\267A\202\271T\262 @\262:\203\313@\202\314S\262\"\262\"\262\203\362\203\362H\202 \203\301\305%\202 \305\301%\262\204I\210\204+\301$\210\202A\301$\210\320!B#\210\211T\262\202( \203[\262\262\323\305\"\210\266\fT\262\202\232\305\266\205\266\204\266\211\207" [xpm-raster-inhibit-continuity-optimization t xpm--gate 1 make-vector nil 0 #[514 "\300\301#\207" [- -1] 6 "\n\n(fn LO HI)"] #[514 "\211\242Z\207" [] 4 "\n\n(fn X-MIN N)"] #[1028 "\211S\211\262\300Y\203I\210T\262\202\301\207" [0 nil] 9 "\n\n(fn BV START LEN VALUE)"] #[1285 "\300\301S\211\262\302Y\203*H\203\262\301\211\262\202 \300\203*T\262\202\2032\2023\211\207" [t nil 0] 11 "\n\n(fn BV START LEN YES NO)"] make-bool-vector -1 sort > cl-evenp xpm-put-points signal wrong-number-of-arguments fillarray] 43 (#$ . 13270)]) #@176 Return the XPM image (via `create-image') of the buffer. PROPS are additional image properties to place on the new XPM. See info node `(elisp) XPM Images'. (fn &rest PROPS) (defalias 'xpm-as-xpm #[128 "\300\301\302ed\"\303\304%\207" [apply create-image buffer-substring-no-properties xpm t] 7 (#$ . 15523)]) #@75 Like `xpm-as-xpm', but also kill the buffer afterwards. (fn &rest PROPS) (defalias 'xpm-finish #[128 "\300\301\"\302\303!\210\207" [apply xpm-as-xpm kill-buffer nil] 4 (#$ . 15840)]) (provide 'xpm)