403Webshell
Server IP : 217.160.0.212  /  Your IP : 216.73.216.117
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1073854427 ( 1073854427)
PHP Version : 8.4.23
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/emacs/28.2/lisp/textmodes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/emacs/28.2/lisp/textmodes/artist.elc
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



(defconst artist-version "1.2.6")
(defconst artist-maintainer-address "tab@lysator.liu.se, bug-gnu-emacs@gnu.org")
(byte-code "\300\301\302\303\304\305%\210\300\306\302\307\304\301%\210\310\311\312\313\314DD\315\304\301\316\317&\210\310\320\312\313\321DD\322\304\301\316\323&\210\310\324\312\313\325DD\326\304\301\316\323&\210\310\327\312\313\330DD\331\304\301\316\317&\207" [custom-declare-group artist nil "Customization of the Artist mode." :group mouse artist-text "Customization of the text rendering." custom-declare-variable artist-rubber-banding funcall function #[0 "\300\207" [t] 1 #1=""] "Interactively do rubber-banding when non-nil." :type boolean artist-first-char #[0 "\300\207" [49] 1 #1#] "Character to set at first point when not rubber-banding." character artist-second-char #[0 "\300\207" [50] 1 #1#] "Character to set at second point when not rubber-banding." artist-interface-with-rect #[0 "\300\207" [t] 1 #1#] "Whether to interface with the rect package or not.\n\nInterfacing to the rect package means that the Copy and Paste operations\nwill use the rectangle buffer when accessing the copied area.  This means\nthat you can insert a rectangle which is copied using the artist package\nand vice versa.\n\nIf this causes any problem for you (for example, if the implementation of\nthe rectangle package changes), you can set this variable to nil, and the\nartist package will use its own copy buffer."] 8)
#@292 A vector of characters to use as arrows.

The vector is 8 elements long and contains a character for each
direction, or nil if there is no suitable character to use for arrow
in that direction.

The directions are as follows:

			  5  6  7
			   \ | /
			 4 - * - 0
			   / | \
			  3  2  1
(defvar artist-arrows [62 nil 118 76 60 nil 94 nil] (#$ . 1520))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\307\310\315&\210\300\316\302\303\317DD\320\306\307\310\321&\210\300\322\302\303\323DD\324\306\307\310\315&\210\300\325\302\303\326DD\327\306\307\310\330&\210\300\331\302\303\332DD\333\306\307\310\330&\210\300\334\302\303\335DD\336\306\307\310\315&\210\300\337\302\303\340DD\341\306\307\310\342&\207" [custom-declare-variable artist-aspect-ratio funcall function #[0 "\300\207" [1] 1 #1=""] "Defines the character height-to-width aspect ratio.\nThis is used when drawing squares and circles." :group artist :type number artist-trim-line-endings #[0 "\300\207" [t] 1 #1#] "Whether or not to remove white-space at end of lines.\n\nIf non-nil, line-endings are trimmed (that is, extraneous white-space\nat the end of the line is removed) when the shape is drawn." boolean artist-flood-fill-right-border #[0 "\300\207" [window-width] 1 #1#] "Right edge definition, used when flood-filling.\n\nWhen flood-filling, if the area is not closed off to the right, then\nflood-filling will fill no more to the right than specified by this\nvariable.  This limit is called the fill-border." (choice (const :tag "limited to window" window-width) (const :tag "limited to value of `fill-column'" fill-column)) artist-flood-fill-show-incrementally #[0 "\300\207" [t] 1 #1#] "Whether or not to incrementally update display when flood-filling.\n\nIf non-nil, incrementally update display when flood-filling.\nIf set to non-nil, this currently implies discarding any input events\nduring the flood-fill." artist-ellipse-right-char #[0 "\300\207" [41] 1 #1#] "Character to use at the rightmost position when drawing narrow ellipses.\n\nIn this figure, it is the right parenthesis (the \")\" character):\n             -----\n            (     )\n             -----" character artist-ellipse-left-char #[0 "\300\207" [40] 1 #1#] "Character to use at the leftmost position when drawing narrow ellipses.\n\nIn this figure, it is the left parenthesis (the \"(\" character):\n             -----\n            (     )\n             -----" artist-picture-compatibility #[0 "\300\207" [t] 1 #1#] "Whether or not picture mode compatibility is on." artist-vaporize-fuzziness #[0 "\300\207" [1] 1 #1#] "How to vaporize lines that are cut off.\n\nAccept this many characters cutting off a line and still treat\nit as one line.\nExample:\n If `artist-vaporize-fuzziness' is 2, then those will be recognized as\n lines from A to B (provided you start vaporizing them at the \"*\"):\n                         /\n            A----*------/-----------B\n                      \\/\n            A----*----/\\------------B\n                     /  \\\n\n but this one won't, since it is cut off by more than 2 characters:\n                      \\/ /\n            A----*----/\\/----------B\n                     / /\\\n (in fact, only the left part [between the A and the leftmost \"/\"\n crossing the line] will be vaporized)." integer] 8)
#@71 If in X Windows, use this pointer shape while drawing with the mouse.
(defvar artist-pointer-shape (byte-code "\302=\205	\207" [window-system x-pointer-crosshair x] 2) (#$ . 4876))
(byte-code "\300\301\302\"\210\303\302\304\305\306DD\307\310\311\312\313&\210\303\314\304\305\315DD\316\310\311\312\317&\210\303\320\304\305\321DD\322\310\311\312\317&\210\303\323\304\305\324DD\325\310\311\312\317&\210\303\326\304\305\327DD\330\310\331\312\332&\210\303\333\304\305\334DD\335\310\331\312\336&\207" [defvaralias artist-text-renderer artist-text-renderer-function custom-declare-variable funcall function #[0 "\300\207" [artist-figlet] 1 #1=""] "Function for doing text rendering." :group artist-text :type symbol artist-figlet-program #[0 "\300\207" ["figlet"] 1 #1#] "Program to run for `figlet'." string artist-figlet-default-font #[0 "\300\207" ["standard"] 1 #1#] "Default font for `figlet'." artist-figlet-list-fonts-command #[0 "\300\207" ["for dir in `figlet -I2`; do cd $dir; ls *.flf; done"] 1 #1#] "Command to run to get list of available fonts." artist-spray-interval #[0 "\300\207" [0.2] 1 #1#] "Number of seconds between repeated spraying." artist number artist-spray-radius #[0 "\300\207" [4] 1 #1#] "Size of the area for spraying." integer] 8)
#@174 Characters ("color") to use when spraying.
They should be ordered from the "lightest" to the "heaviest"
since spraying replaces a light character with the next heavier one.
(defvar artist-spray-chars '(32 46 45 43 109 37 42 35) (#$ . 6147))
#@240 Initial character to use when spraying.
This character is used if spraying upon a character that is not in
`artist-spray-chars'.  The character defined by this variable should
be in `artist-spray-chars', or spraying will behave strangely.
(defvar artist-spray-new-char 46 (#$ . 6395))
#@72 Name of Artist mode beginning with a space (appears in the mode-line).
(defvar artist-mode-name " Artist" (#$ . 6686))
#@38 Current selected graphics operation.
(defvar artist-curr-go 'pen-line (#$ . 6811))
(make-variable-buffer-local 'artist-curr-go)
#@75 Boolean to tell whether user has set some char to use when drawing lines.
(defvar artist-line-char-set nil (#$ . 6945))
(make-variable-buffer-local 'artist-line-char-set)
#@33 Char to use when drawing lines.
(defvar artist-line-char nil (#$ . 7122))
(make-variable-buffer-local 'artist-line-char)
#@69 Boolean to tell whether user has set some char to use when filling.
(defvar artist-fill-char-set nil (#$ . 7249))
(make-variable-buffer-local 'artist-fill-char-set)
#@27 Char to use when filling.
(defvar artist-fill-char nil (#$ . 7420))
(make-variable-buffer-local 'artist-fill-char)
#@27 Char to use when erasing.
(defvar artist-erase-char 32 (#$ . 7541))
(make-variable-buffer-local 'artist-erase-char)
#@59 Char to use when a fill-char is required but none is set.
(defvar artist-default-fill-char 46 (#$ . 7663))
(make-variable-buffer-local 'artist-default-fill-char)
#@14 Copy buffer.
(defvar artist-copy-buffer nil (#$ . 7831))
#@59 Line-number for top-most visited line for draw operation.
(defvar artist-draw-region-min-y 0 (#$ . 7894))
(make-variable-buffer-local 'artist-draw-region-min-y)
#@62 Line-number for bottom-most visited line for draw operation.
(defvar artist-draw-region-max-y 0 (#$ . 8061))
(make-variable-buffer-local 'artist-draw-region-max-y)
#@88 When non-nil, draw shapes without border.
The fill char is used instead, if it is set.
(defvar artist-borderless-shapes nil (#$ . 8231))
(make-variable-buffer-local 'artist-borderless-shapes)
#@373 Assoc list for looking up next and/or previous draw operation.
The structure is as follows:  (OP . (PREV-OP . NEXT-OP))
where the elements are as follows:
* OP is an atom: the KEY-SYMBOL in the `artist-mt' structure
* PREV-OP and NEXT-OP are strings: the KEYWORD in the `artist-mt' structure

This variable is initialized by the `artist-make-prev-next-op-alist' function.
(defvar artist-prev-next-op-alist nil (#$ . 8430))
(byte-code "\203\302\303!\210\302\304!\210	\203\302\305!\210\302\207" [artist-interface-with-rect artist-picture-compatibility require rect reporter picture] 2)
(defvar artist-key-is-drawing nil)
(defvar artist-key-endpoint1 nil)
(defvar artist-key-poly-point-list nil)
(defvar artist-key-shape nil)
(defvar artist-key-draw-how nil)
(defvar artist-popup-menu-table nil)
(defvar artist-key-compl-table nil)
(defvar artist-rb-save-data nil)
(defvar artist-arrow-point-1 nil)
(defvar artist-arrow-point-2 nil)
#@27 Keymap for `artist-mode'.
(defvar artist-mode-map (byte-code "\301 \301 \302\303\304#\210\302\305\304#\210\302\306\307#\210\302\310\307#\210\302\311\312#\210\302\313\312#\210\302\314\315#\210\302\316\317#\210\302\320\321#\210\302\322\323#\210\302\324\323#\210\302\325\326#\210\302\327\326#\210\302\330\331#\210\302\332\331#\210\302\333\334#\210\302\335\334#\210\302\336\337#\210\302\340\341#\210\302\342\343#\210\302\344\345#\210\302\346\347#\210\302\350\351#\210\302\352\353#\210\302\354\355#\210\302\356\357#\210\302\360\361#\210\302\362\363#\210\302\364\365#\210\302\366\367#\210\302\370\371#\210\302\372\371#\210\302\373\374#\210\302\375\376#\210\302\377\201@#\210\302\201A\201B#\210\302\201C\201D#\210\302\201E\201F#\210\302\201G\201H#\210\302\201I\201J#\210\302\201K\201L#\210\302\201M\201N#\210\302\201O\201P#\210\302\201Q\201R#\210\302\201S\201T#\210\302\201U\201V#\210\302\201W\201X#\210\302\201Y\201Z#\210\302\201[\201\\#\210\207" [artist-mode-map make-sparse-keymap define-key [down-mouse-1] artist-down-mouse-1 [S-down-mouse-1] [down-mouse-2] artist-mouse-choose-operation [S-down-mouse-2] [down-mouse-3] artist-down-mouse-3 [S-down-mouse-3] [C-mouse-4] artist-select-prev-op-in-list [C-mouse-5] artist-select-next-op-in-list "
" artist-key-set-point [up] artist-previous-line "" [down] artist-next-line "" [left] artist-backward-char "" [right] artist-forward-char "" "<" artist-toggle-first-arrow ">" artist-toggle-second-arrow "" artist-select-erase-char "" artist-select-fill-char "\f" artist-select-line-char "" artist-select-operation "" artist-toggle-rubber-banding "" artist-toggle-trim-line-endings "" artist-toggle-borderless-shapes "" artist-mode-off "l" artist-select-op-line "L" artist-select-op-straight-line "r" artist-select-op-rectangle "R" artist-select-op-square "s" "p" artist-select-op-poly-line "P" artist-select-op-straight-poly-line "e" artist-select-op-ellipse "c" artist-select-op-circle "t" artist-select-op-text-see-thru "T" artist-select-op-text-overwrite "S" artist-select-op-spray-can "z" artist-select-op-spray-set-size "" artist-select-op-erase-char "E" artist-select-op-erase-rectangle "v" artist-select-op-vaporize-line "V" artist-select-op-vaporize-lines "" artist-select-op-cut-rectangle "\367" artist-select-op-copy-rectangle "" artist-select-op-paste "f" artist-select-op-flood-fill "" artist-submit-bug-report] 5) (#$ . 9371))
#@25 Menu for `artist-mode'.
(defvar artist-menu-map nil (#$ . 11909))
(byte-code "\301\302\303\304\305\306\307\310\"\311\"B$\207" [artist-mode-map easy-menu-do-define artist-menu-map "Menu for `artist-mode'." "Artist" append mapcar #[257 "\300@A@\301\302\303@\"\304\305\306\307\310\311\312\f8DE&\207" [vector :help format "Draw using the %s style" :style radio :selected eq artist-curr-go quote 2] 14 "\n\n(fn OP)"] (("Vaporize" artist-select-op-vaporize-lines vaporize-lines) ("Erase" artist-select-op-erase-rectangle erase-rect) ("Spray-can" artist-select-op-spray-set-size spray-get-size) ("Text" artist-select-op-text-overwrite text-ovwrt) ("Ellipse" artist-select-op-circle circle) ("Poly-line" artist-select-op-straight-poly-line spolyline) ("Square" artist-select-op-square square) ("Rectangle" artist-select-op-rectangle rectangle) ("Line" artist-select-op-straight-line s-line) ("Pen" artist-select-op-pen-line pen-line)) ("---" ["Character for Fill..." artist-select-fill-char :help "Choose the character to insert when filling in shapes"] ["Character for Line..." artist-select-line-char :help "Choose the character to insert when drawing lines"] ["Character to Erase..." artist-select-erase-char :help "Choose a specific character to erase"] ["Rubber-banding" artist-toggle-rubber-banding :help "Toggle rubber-banding" :style toggle :selected artist-rubber-banding] ["Trim Line Endings" artist-toggle-trim-line-endings :help "Toggle trimming of line-endings" :style toggle :selected artist-trim-line-endings] ["Draw Shape Borders" artist-toggle-borderless-shapes :help "Toggle whether shapes are drawn with borders" :style toggle :selected (not artist-borderless-shapes)] ["Characters for Spray" artist-select-spray-chars :help "Choose characters for sprayed by the spray-can"])] 9)
#@46 Replacement table for `artist-replace-char'.
(defvar artist-replacement-table (make-vector 256 0) (#$ . 13713))
#@5659 Master Table for `artist-mode'.
This table is primarily a table over the different graphics operations
available in Artist mode, but it also holds layout information for the
popup menu.

The master table is a list of table elements.  The elements of this table
have the layout

  (TAG INFO-PART)

There are three kinds of TAG:

  `menu'                -- a sub-menu
  `separator'           -- produce a separator in the popup menu
  `function-call'       -- call a function
  `graphics-operation'  -- a graphics operation

The layout of the INFO-PART for `menu' is

  (TITLE ((TAG-1 INFO-PART-1) (TAG-2 INFO-PART-2) ...))

TITLE is the title of the submenu; this is followed by a list of
menu items, each on the general form (TAG INFO-PART).


The layout of the INFO-PART for `separator' is empty and not used.


This is the layout of the INFO-PART for `function-call':

  (KEYWORD SYMBOL FN)

KEYWORD is a string naming the operation, and appears in the popup menu.
SYMBOL is the symbol for the operations.
FN is the function performing the operation.  This function
  is called with no arguments.  Its return value is ignored.


The layout of the INFO-PART for `graphics-operation' is

  (TITLE (UNSHIFTED SHIFTED))

TITLE is the title that appears in the popup menu.  UNSHIFTED
and SHIFTED specify for unshifted and shifted operation.  Both
have the form

  (KEYWORD KEY-SYMBOL MODE-LINE ARROW-PRED ARROW-SET-FN
   INIT-FN PREP-FILL-FN EXIT-FN DRAW-HOW DRAW-FN EXTRA-DRAW-INFO)

KEYWORD is a string specifying the name of the shape to draw.
  This is used when selecting drawing operation.
KEY-SYMBOL is the key which is used when looking up members
  through the functions `artist-go-get-MEMBER-from-symbol'
  and `artist-fc-get-MEMBER-from-symbol'.
MODE-LINE is a string that appears in the mode-line when drawing
  the shape.
ARROW-PRED is a function that is called to find out if the shape
  can have arrows.  The function is called with no arguments and
  must return nil or t.
ARROW-SET-FN is a function that is called to set arrow end-points.
  Arguments and return values for this function are described below.
INIT-FN is, if non-nil, a function that is called when the first
  point of the shape is set.  Arguments and return values for
  this function are described below.
PREP-FILL-FN is, if non-nil, a function that is called after
  the last point is set, but before the filling is done.
  Arguments and return values for this function are described below.
EXIT-FN is, if non-nil, a function that is called after filling
  is done.  Arguments and return values for this function are
  described below.
DRAW-HOW defines the kind of shape.  The kinds of shapes are:
  `artist-do-continously'  -- Do drawing operation continuously,
                              as long as the mouse button is held down.
  `artist-do-poly'         -- Do drawing operation many times.
  1                        -- Do drawing operation only once.
  2                        -- The drawing operation requires two points.
DRAW-FN is the function to call for drawing.  Arguments and
  return values for this function are described below.
EXTRA-DRAW-INFO the layout of this depends on the value of DRAW-HOW:
  If DRAW-HOW is `artist-do-continously':

    (INTERVAL-FN)

    INTERVAL-FN is, if non-nil, a function to call for getting
      an interval between repeated calls to the DRAW-FN.
      This function is called with no arguments and must
      return a number, the interval in seconds.
      If nil, calls to DRAW-FN are done only when the mouse
      or cursor is moved.

  If DRAW-HOW is either `artist-do-poly' or 2:

    (UNDRAW-FN FILL-PRED FILL-FN)

    UNDRAW-FN is a function to call for undrawing the shape.
      Arguments and return values for this function are
      described below.
    FILL-PRED is a function that is called to find out if the shape
      can have arrows.  The function must take no arguments and
      return nil or t.
    FILL-FN  is a function to call for filling the shape.
      Arguments and return values for this function are
      described below.

  If DRAW-HOW is 1:

    ()

Note! All symbols and keywords (both in the `function-call' INFO-PART
      as well as in the `graphics-operation' INFO-PART) must be unique.

The following table describe function arguments and return value
for different functions and DRAW-HOWs.

If DRAW-HOW is either `artist-do-continously' or 1:

  INIT-FN       X Y ==> ignored
  PREP-FILL-FN  X Y ==> ignored
  EXIT-FN       X Y ==> ignored
  ARROW-SET-FN  X Y ==> ignored
  DRAW-FN       X Y ==> ignored

If DRAW-HOW is 2:

  INIT-FN       X1 Y1  ==> ignored
  PREP-FILL-FN  X1 Y1 X2 Y2 ==> ignored
  EXIT-FN       X1 Y1 X2 Y2 ==> ignored
  ARROW-SET-FN  X1 Y1 X2 Y2 ==> ignored
  DRAW-FN       X1 Y1 X2 Y2 ==> (ENDPOINT-1 ENDPOINT-2 SHAPE)
  UNDRAW-FN     (ENDPOINT-1 ENDPOINT-2 SHAPE) ==> ignored
  FILL-FN	 (ENDPOINT-1 ENDPOINT-2 SHAPE) X1 Y1 X2 Y2 ==> ignored

  ENDPOINT-1 and ENDPOINT-2 are endpoints which are created with
  `artist-make-endpoint'
  SHAPE is an opaque structure, created by the DRAW-FN and intended
  to be used only by the UNDRAW-FN.

If DRAW-HOW is `artist-do-poly':

  INIT-FN       X1 Y1
  PREP-FILL-FN  POINT-LIST
  ARROW-SET-FN  POINT-LIST
  EXIT-FN       POINT-LIST
  DRAW-FN       X-LAST Y-LAST X-NEW Y-NEW ==> (ENDPOINT-1 ENDPOINT-2 SHAPE)
  UNDRAW-FN     (ENDPOINT-1 ENDPOINT-2 SHAPE)
  FILL-FN       POINT-LIST

  ENDPOINT-1 and ENDPOINT-2 are endpoints which are created with
  `artist-make-endpoint'.
  SHAPE is an opaque structure, created by the DRAW-FN and intended
  to be used only by the UNDRAW-FN.
  POINT-LIST is a list of vectors [X Y].
(defvar artist-mt '((menu ("Drawing" ((function-call ("Undo" do-undo undo)) (separator) (graphics-operation ("Pen" (("Pen" pen-char "pen-c" artist-no-arrows nil nil nil nil artist-do-continously artist-pen (nil)) ("Pen Line" pen-line "pen-l" artist-arrows artist-pen-set-arrow-points artist-pen-reset-last-xy nil nil artist-do-continously artist-pen-line (nil))))) (graphics-operation ("Line" (("line" line "line" artist-arrows artist-set-arrow-points-for-2points nil nil nil 2 artist-draw-line (artist-undraw-line artist-nil nil)) ("straight line" s-line "sline" artist-arrows artist-set-arrow-points-for-2points nil nil nil 2 artist-draw-sline (artist-undraw-sline artist-nil nil))))) (graphics-operation ("Rectangle" (("rectangle" rect "rect" artist-no-arrows nil nil nil nil 2 artist-draw-rect (artist-undraw-rect artist-t-if-fill-char-set artist-fill-rect)) ("square" square "square" artist-no-arrows nil nil nil nil 2 artist-draw-square (artist-undraw-square artist-t-if-fill-char-set artist-fill-square))))) (graphics-operation ("Poly-line" (("poly-line" polyline "poly" artist-arrows artist-set-arrow-points-for-poly nil nil nil artist-do-poly artist-draw-line (artist-undraw-line artist-nil nil)) ("straight poly-line" spolyline "s-poly" artist-arrows artist-set-arrow-points-for-poly nil nil nil artist-do-poly artist-draw-sline (artist-undraw-sline artist-nil nil))))) (graphics-operation ("Ellipse" (("ellipse" ellipse "ellipse" artist-no-arrows nil nil nil nil 2 artist-draw-ellipse (artist-undraw-ellipse artist-t-if-fill-char-set artist-fill-ellipse)) ("circle" circle "circle" artist-no-arrows nil nil nil nil 2 artist-draw-circle (artist-undraw-circle artist-t-if-fill-char-set artist-fill-circle))))) (graphics-operation ("Text" (("text see-thru" text-thru "text-thru" artist-no-arrows nil nil nil nil 1 artist-text-see-thru nil) ("text overwrite" text-ovwrt "text-ovwrt" artist-no-arrows nil nil nil nil 1 artist-text-overwrite nil)))) (graphics-operation ("Spray-can" (("spray-can" spray-can "spray-can" artist-no-arrows nil nil nil nil artist-do-continously artist-spray (artist-spray-get-interval)) ("spray set size" spray-get-size "spray-size" artist-no-arrows nil nil artist-spray-clear-circle artist-spray-set-radius 2 artist-draw-circle (artist-undraw-circle artist-nil nil))))) (graphics-operation ("Erase" (("erase char" erase-char "erase-c" artist-no-arrows nil nil nil nil artist-do-continously artist-erase-char (nil)) ("erase rectangle" erase-rect "erase-r" artist-no-arrows nil nil nil nil 2 artist-draw-rect (artist-undraw-rect artist-t artist-erase-rect))))) (graphics-operation ("Vaporize" (("vaporize line" vaporize-line "vaporize-1" artist-no-arrows nil nil nil nil 1 artist-vaporize-line nil) ("vaporize lines" vaporize-lines "vaporize-n" artist-no-arrows nil nil nil nil 1 artist-vaporize-lines nil))))))) (menu ("Edit" ((graphics-operation ("Cut" (("cut rectangle" cut-r "cut-r" artist-no-arrows nil nil nil nil 2 artist-draw-rect (artist-undraw-rect artist-t artist-cut-rect)) ("cut square" cut-s "cut-s" artist-no-arrows nil nil nil nil 2 artist-draw-square (artist-undraw-square artist-t artist-cut-square))))) (graphics-operation ("Copy" (("copy rectangle" copy-r "copy-r" artist-no-arrows nil nil nil nil 2 artist-draw-rect (artist-undraw-rect artist-t artist-copy-rect)) ("copy square" copy-s "copy-s" artist-no-arrows nil nil nil nil 2 artist-draw-square (artist-undraw-square artist-t artist-copy-square))))) (graphics-operation ("Paste" (("paste" paste "paste" artist-no-arrows nil nil nil nil 1 artist-paste nil) ("paste" paste "paste" artist-no-arrows nil nil nil nil 1 artist-paste nil)))) (graphics-operation ("Flood-fill" (("flood-fill" flood-fill "flood" artist-no-arrows nil nil nil nil 1 artist-flood-fill nil) ("flood-fill" flood-fill "flood" artist-no-arrows nil nil nil nil 1 artist-flood-fill nil))))))) (menu ("Settings" ((function-call ("Set Fill" set-fill artist-select-fill-char)) (function-call ("Set Line" set-line artist-select-line-char)) (function-call ("Set Erase" set-erase artist-select-erase-char)) (function-call ("Rubber-banding" rubber-band artist-toggle-rubber-banding)) (function-call ("Trimming" trimming artist-toggle-trim-line-endings)) (function-call ("Borders" borders artist-toggle-borderless-shapes)) (function-call ("Spray-chars" spray-chars artist-select-spray-chars)))))) (#$ . 13833))
#@73 Retrieve the tag component from the master table ELEMENT.

(fn ELEMENT)
(defalias 'artist-mt-get-tag #[257 "\211\300\234\207" [0] 3 (#$ . 23873)])
#@79 Retrieve the info part component from the master table ELEMENT.

(fn ELEMENT)
(defalias 'artist-mt-get-info-part #[257 "\211\300\234\207" [1] 3 (#$ . 24026)])
#@89 Retrieve the description component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-go-get-desc #[257 "\211\300\234\207" [0] 3 (#$ . 24191)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-desc speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@82 Retrieve the unshifted info from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-go-get-unshifted #[257 "\211\300\234\301\234\207" [1 0] 3 (#$ . 24505)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-unshifted speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@80 Retrieve the shifted info from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-go-get-shifted #[257 "\211\300\234\300\234\207" [1] 3 (#$ . 24832)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-shifted speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@156 Retrieve the keyword component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-keyword #[257 "\211\300\234\207" [0] 3 (#$ . 25152)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-keyword speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@155 Retrieve the symbol component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-symbol #[257 "\211\300\234\207" [1] 3 (#$ . 25540)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-symbol speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@158 Retrieve the mode line component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-mode-line #[257 "\211\300\234\207" [2] 3 (#$ . 25925)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-mode-line speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@164 Retrieve the arrow predicate component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-arrow-pred #[257 "\211\300\234\207" [3] 3 (#$ . 26319)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-arrow-pred speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@158 Retrieve the arrow set component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-arrow-set-fn #[257 "\211\300\234\207" [4] 3 (#$ . 26721)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-arrow-set-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@162 Retrieve the init function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-init-fn #[257 "\211\300\234\207" [5] 3 (#$ . 27121)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-init-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@174 Retrieve the fill preparation function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-prep-fill-fn #[257 "\211\300\234\207" [6] 3 (#$ . 27515)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-prep-fill-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@153 Retrieve the exit component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-exit-fn #[257 "\211\300\234\207" [7] 3 (#$ . 27931)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-exit-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@157 Retrieve the draw how component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-draw-how #[257 "\211\300\234\207" [8] 3 (#$ . 28316)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-draw-how speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@162 Retrieve the draw function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-draw-fn #[257 "\211\300\234\207" [9] 3 (#$ . 28707)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-draw-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@287 Retrieve the undraw function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.
This interval function component is available only if the `draw-how'
component is other than `artist-do-continously' or 1.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-undraw-fn #[257 "\211\300\234\301\234\207" [10 0] 3 (#$ . 29101)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-undraw-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@273 Retrieve the interval function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.
This interval function component is available only if the `draw-how'
component is `artist-do-continously'.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-interval-fn #[257 "\211\300\234\301\234\207" [10 0] 3 (#$ . 29635)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-interval-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@286 Retrieve the fill predicate component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.
This interval function component is available only if the `draw-how'
component is other than `artist-do-continously' or 1.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-fill-pred #[257 "\211\300\234\301\234\207" [10 1] 3 (#$ . 30159)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-fill-pred speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@285 Retrieve the fill function component from an INFO-VARIANT-PART.
An INFO-VARIANT-PART is the shifted or unshifted info from an info-part.
This interval function component is available only if the `draw-how'
component is other than `artist-do-continously' or 1.

(fn INFO-VARIANT-PART)
(defalias 'artist-go-get-fill-fn #[257 "\211\300\234\301\234\207" [10 2] 3 (#$ . 30692)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-go-get-fill-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@85 Retrieve the keyword component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-fc-get-keyword #[257 "\211\300\234\207" [0] 3 (#$ . 31219)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fc-get-keyword speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@84 Retrieve the symbol component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-fc-get-symbol #[257 "\211\300\234\207" [1] 3 (#$ . 31535)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fc-get-symbol speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@86 Retrieve the function component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-fc-get-fn #[257 "\211\300\234\207" [2] 3 (#$ . 31848)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fc-get-fn speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@83 Retrieve the title component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-mn-get-title #[257 "\211\300\234\207" [0] 3 (#$ . 32155)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-mn-get-title speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@83 Retrieve the items component from a graphics operation INFO-PART.

(fn INFO-PART)
(defalias 'artist-mn-get-items #[257 "\211\300\234\207" [1] 3 (#$ . 32465)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-mn-get-items speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@145 Find the last non-nil draw operation in OP-LIST.
Optional LAST-NON-NIL will be returned if OP-LIST is nil.

(fn OP-LIST &optional LAST-NON-NIL)
(defalias 'artist-get-last-non-nil-op #[513 "\203\300A@@\206\"\207\207" [artist-get-last-non-nil-op] 5 (#$ . 32776)])
#@65 Find the first non-nil draw operation in OP-LIST.

(fn OP-LIST)
(defalias 'artist-get-first-non-nil-op #[257 "\211@@\206\n\300A!\207" [artist-get-first-non-nil-op] 3 (#$ . 33052)])
#@50 Check whether OP is in OP-LIST.

(fn OP OP-LIST)
(defalias 'artist-is-in-op-list-p #[514 "\211\205\211@@\203@@\230\206\300A\"\207" [artist-is-in-op-list-p] 5 (#$ . 33241)])
#@248 Build an assoc-list of OP-LIST.
The arguments LAST-NON-NIL-ARG, FIRST-NON-NIL-ARG, PREV-ENTRY and
PREV-OP-ARG are used when invoked recursively during the build-up.

(fn OP-LIST &optional LAST-NON-NIL-ARG FIRST-NON-NIL-ARG PREV-ENTRY PREV-OP-ARG)
(defalias 'artist-make-prev-next-op-alist #[1281 "\206\301!\206\302!\206@@\303!\211CB\n\203'\2030\304\fA\"\203>\305A%\207\203IA\241\210\n\203]\211\305\fA%B\207A\241\210\306\207" [artist-key-compl-table artist-get-last-non-nil-op artist-get-first-non-nil-op artist-mt-get-symbol-from-keyword artist-is-in-op-list-p artist-make-prev-next-op-alist nil] 18 (#$ . 33431)])
#@48 Cyclically select next drawing mode operation.
(defalias 'artist-select-next-op-in-list #[0 "\302	\"AA\303!\210\304\305\"\207" [artist-curr-go artist-prev-next-op-alist assoc artist-select-operation message "%s"] 4 (#$ . 34104) nil])
#@52 Cyclically select previous drawing mode operation.
(defalias 'artist-select-prev-op-in-list #[0 "\302	\"A@\303!\210\304\305\"\207" [artist-curr-go artist-prev-next-op-alist assoc artist-select-operation message "%s"] 4 (#$ . 34347) nil])
#@91 Non-nil if Artist mode is enabled.
Use the command `artist-mode' to change this variable.
(defvar artist-mode nil (#$ . 34594))
(make-variable-buffer-local 'artist-mode)
#@8283 Toggle Artist mode.

This is a minor mode.  If called interactively, toggle the `Artist
mode' mode.  If the prefix argument is positive, enable the mode, and
if it is zero or negative, disable the mode.

If called from Lisp, toggle the mode if ARG is `toggle'.  Enable the
mode if ARG is nil, omitted, or is a positive number.  Disable the
mode if ARG is a negative number.

To check whether the minor mode is enabled in the current buffer,
evaluate `artist-mode'.

The mode's hook is called both when the mode is enabled and when it is
disabled.

Artist lets you draw lines, squares, rectangles and poly-lines,
ellipses and circles with your mouse and/or keyboard.

How to quit Artist mode

 Type \[artist-mode-off] to quit artist-mode.


How to submit a bug report

 Type \[artist-submit-bug-report] to submit a bug report.


Drawing with the mouse:

 mouse-2
 shift mouse-2	Pops up a menu where you can select what to draw with
		mouse-1, and where you can do some settings (described
		below).

 mouse-1
 shift mouse-1	Draws lines, rectangles or poly-lines, erases, cuts, copies
		or pastes:

		Operation	Not shifted		  Shifted
		--------------------------------------------------------------
                Pen             fill-char at point        line from last point
                                                          to new point
		--------------------------------------------------------------
		Line		Line in any direction	  Straight line
		--------------------------------------------------------------
		Rectangle	Rectangle		  Square
		--------------------------------------------------------------
		Poly-line	Poly-line in any dir	  Straight poly-lines
		--------------------------------------------------------------
		Ellipses	Ellipses		  Circles
		--------------------------------------------------------------
		Text		Text (see thru)		  Text (overwrite)
		--------------------------------------------------------------
		Spray-can	Spray-can		  Set size for spray
		--------------------------------------------------------------
		Erase		Erase character		  Erase rectangle
		--------------------------------------------------------------
		Vaporize	Erase single line	  Erase connected
							  lines
		--------------------------------------------------------------
		Cut		Cut rectangle		  Cut square
		--------------------------------------------------------------
		Copy		Copy rectangle		  Copy square
		--------------------------------------------------------------
		Paste		Paste			  Paste
		--------------------------------------------------------------
		Flood-fill	Flood-fill		  Flood-fill
		--------------------------------------------------------------

		* Straight lines can only go horizontally, vertically
		  or diagonally.

		* Poly-lines are drawn while holding mouse-1 down.  When you
		  release the button, the point is set.  If you want a segment
		  to be straight, hold down shift before pressing the
		  mouse-1 button.  Click mouse-2 or mouse-3 to stop drawing
		  poly-lines.

		* See thru for text means that text already in the buffer
		  will be visible through blanks in the text rendered, while
		  overwrite means the opposite.

		* Vaporizing connected lines only vaporizes lines whose
		  _endpoints_ are connected.  See also the variable
		  `artist-vaporize-fuzziness'.

		* Cut copies, then clears the rectangle/square.

		* When drawing lines or poly-lines, you can set arrows.
		  See below under "Arrows" for more info.

		* The mode line shows the currently selected drawing operation.
		  In addition, if it has an asterisk (*) at the end, you
		  are currently drawing something.

		* Be patient when flood-filling -- large areas take quite
		  some time to fill.


 mouse-3	Erases character under pointer
 shift mouse-3	Erases rectangle


Settings

 Set fill	Sets the character used when filling rectangles/squares

 Set line	Sets the character used when drawing lines

 Erase char	Sets the character used when erasing

 Rubber-banding	Toggles rubber-banding

 Trimming	Toggles trimming of line-endings (that is: when the shape
		is drawn, extraneous white-space at end of lines is removed)

 Borders        Toggles the drawing of line borders around filled shapes


Drawing with keys

 \[artist-key-set-point]		Does one of the following:
		For lines/rectangles/squares: sets the first/second endpoint
                For poly-lines: sets a point (use \[universal-argument] \[artist-key-set-point] to set last point)
		When erase characters: toggles erasing
		When cutting/copying: Sets first/last endpoint of rect/square
		When pasting: Pastes

 \[artist-select-operation]	Selects what to draw

 Move around with \[artist-next-line], \[artist-previous-line], \[artist-forward-char] and \[artist-backward-char].

 \[artist-select-fill-char]	Sets the character to use when filling
 \[artist-select-line-char]	Sets the character to use when drawing
 \[artist-select-erase-char]	Sets the character to use when erasing
 \[artist-toggle-rubber-banding]	Toggles rubber-banding
 \[artist-toggle-trim-line-endings]	Toggles trimming of line-endings
 \[artist-toggle-borderless-shapes]	Toggles borders on drawn shapes


Arrows

 \[artist-toggle-first-arrow]		Sets/unsets an arrow at the beginning
		of the line/poly-line

 \[artist-toggle-second-arrow]		Sets/unsets an arrow at the end
		of the line/poly-line


Selecting operation

 There are some keys for quickly selecting drawing operations:

 \[artist-select-op-line]	Selects drawing lines
 \[artist-select-op-straight-line]	Selects drawing straight lines
 \[artist-select-op-rectangle]	Selects drawing rectangles
 \[artist-select-op-square]	Selects drawing squares
 \[artist-select-op-poly-line]	Selects drawing poly-lines
 \[artist-select-op-straight-poly-line]	Selects drawing straight poly-lines
 \[artist-select-op-ellipse]	Selects drawing ellipses
 \[artist-select-op-circle]	Selects drawing circles
 \[artist-select-op-text-see-thru]	Selects rendering text (see thru)
 \[artist-select-op-text-overwrite]	Selects rendering text (overwrite)
 \[artist-select-op-spray-can]	Spray with spray-can
 \[artist-select-op-spray-set-size]	Set size for the spray-can
 \[artist-select-op-erase-char]	Selects erasing characters
 \[artist-select-op-erase-rectangle]	Selects erasing rectangles
 \[artist-select-op-vaporize-line]	Selects vaporizing single lines
 \[artist-select-op-vaporize-lines]	Selects vaporizing connected lines
 \[artist-select-op-cut-rectangle]	Selects cutting rectangles
 \[artist-select-op-copy-rectangle]	Selects copying rectangles
 \[artist-select-op-paste]	Selects pasting
 \[artist-select-op-flood-fill]	Selects flood-filling


Variables

 This is a brief overview of the different variables.  For more info,
 see the documentation for the variables (type \[describe-variable] <variable> RET).

 `artist-rubber-banding'              Interactively do rubber-banding or not
 `artist-first-char'                  What to set at first/second point...
 `artist-second-char'                 ...when not rubber-banding
 `artist-interface-with-rect'         Should cut/copy/paste interface with rect
 `artist-arrows'                      The arrows to use when drawing arrows
 `artist-aspect-ratio'                Character height-to-width for squares
 `artist-trim-line-endings'           Trimming of line endings
 `artist-flood-fill-right-border'     Right border when flood-filling
 `artist-flood-fill-show-incrementally'  Update display while filling
 `artist-pointer-shape'               Pointer shape to use while drawing
 `artist-ellipse-left-char'           Character to use for narrow ellipses
 `artist-ellipse-right-char'          Character to use for narrow ellipses
 `artist-borderless-shapes'           If shapes should have borders
 `artist-picture-compatibility'       Picture mode compatibility on or off
 `artist-vaporize-fuzziness'          Tolerance when recognizing lines
 `artist-spray-interval'              Seconds between repeated sprayings
 `artist-spray-radius'                Size of the spray-area
 `artist-spray-chars'                 The spray-"color"
 `artist-spray-new-char'              Initial spray-"color"

Hooks

 Turning the mode on or off runs `artist-mode-hook'.


Keymap summary

\{artist-mode-map}

(fn &optional ARG)
(defalias 'artist-mode #[256 "\302 \303=\203
?\202\247\203\304W\203\305\202\306\307\301!\2031\310\300	\"\2031\300	B\204;\311 \210\202T\312 \210\313\314\315\"\316!\203S\317\320\"\204S\321\322!\210\210\323\324\203^\325\202_\326\"\210\327\330!\203\201\302 \203s\211\302 \232\203\201\321\331\203}\332\202~\333\334#\210\210\335 \210\207" [artist-mode local-minor-modes current-message toggle 1 nil t boundp delq artist-mode-exit artist-mode-init face-attribute default :font fontp font-get :spacing message "The default font isn't monospaced, so the drawings in this buffer may look odd" run-hooks artist-mode-hook artist-mode-on-hook artist-mode-off-hook called-interactively-p any "Artist mode %sabled%s" "en" "dis" " in current buffer" force-mode-line-update] 6 (#$ . 34772) (byte-code "\203\n\301!\202\302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)])
(defvar artist-mode-hook nil)
(byte-code "\301\302N\204\f\303\301\302\304#\210\303\301\305\306#\210\303\301\307\310C#\210\311\312\313\310\211%\207" [artist-mode-map artist-mode-hook variable-documentation put "Hook run after entering or leaving `artist-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode artist-mode artist-mode-name] 6)
#@64 Init Artist mode.  This will call the hook `artist-mode-hook'.
(defalias 'artist-mode-init #[0 "\306\211\307W\203\211I\210\211T\262\202\210\310\311I\210\312\311I\210\306\311I\210\313\301!\210\314\313\302!\210\314\313\303!\210\314\313\304!\210\314\313\315!\210\316
!
\313\317!\210\320
!\313\321!\210\322!\313\323!\210\324\325\306\"\313\326!\210\314\313\327!\210\314\313\330!\210\331\313\332!\210\333 !!\203\223\"\334=\204\223\334 \210\335\336!\210\337	!\207" [artist-replacement-table artist-key-is-drawing artist-key-endpoint1 artist-key-poly-point-list artist-key-shape artist-mt 0 256 10 32 9 make-local-variable nil artist-popup-menu-table artist-compute-popup-menu-table artist-key-compl-table artist-compute-key-compl-table artist-prev-next-op-alist artist-make-prev-next-op-alist artist-rb-save-data make-vector 7 artist-arrow-point-1 artist-arrow-point-2 next-line-add-newlines t artist-key-draw-how artist-go-get-draw-how-from-symbol picture-mode message "" artist-mode-line-show-curr-operation artist-curr-go artist-picture-compatibility major-mode] 4 (#$ . 44440)])
#@64 Exit Artist mode.  This will call the hook `artist-mode-hook'.
(defalias 'artist-mode-exit #[0 "\203
	\302=\203
\303 \210\304\305!\207" [artist-picture-compatibility major-mode picture-mode picture-mode-exit kill-local-variable next-line-add-newlines] 2 (#$ . 45558)])
#@23 Turn Artist mode off.
(defalias 'artist-mode-off #[0 "\300\301!\210\302 \207" [artist-mode -1 force-mode-line-update] 2 (#$ . 45836) nil])
#@22 Repaint the display.
(defalias 'artist-update-display #[0 "\300\301!\207" [sit-for 0] 2 (#$ . 45981)])
#@82 Show current operation in mode-line.  If IS-DRAWING, show that.

(fn IS-DRAWING)
(defalias 'artist-mode-line-show-curr-operation #[257 "\303\304	!\203
\305\202\306R\307\n\236C\241\266\310 \207" [artist-mode-name artist-curr-go minor-mode-alist "/" artist-go-get-mode-line-from-symbol "/*" "" artist-mode force-mode-line-update] 5 (#$ . 46090)])
#@58 Return the value of the variable `artist-fill-char-set'.
(defalias 'artist-t-if-fill-char-set #[0 "\207" [artist-fill-char-set] 1 (#$ . 46448)])
#@18 Always return t.
(defalias 'artist-t #[0 "\300\207" [t] 1 (#$ . 46600)])
#@20 Always return nil.
(defalias 'artist-nil #[0 "\300\207" [nil] 1 (#$ . 46679)])
#@20 Say yes to arrows!
(defalias 'artist-arrows #[0 "\300\207" [t] 1 (#$ . 46764)])
#@19 Say no to arrows!
(defalias 'artist-no-arrows #[0 "\300\207" [nil] 1 (#$ . 46850)])
#@118 Create a menu from MENU-TABLE data.
The returned value is suitable for the `x-popup-menu' function.

(fn MENU-TABLE)
(defalias 'artist-compute-popup-menu-table #[257 "\300\301!B\207" ["Artist menu" artist-compute-popup-menu-table-sub] 4 (#$ . 46941)])
#@87 Compute operation table suitable for `x-popup-menu' from MENU-TABLE.

(fn MENU-TABLE)
(defalias 'artist-compute-popup-menu-table-sub #[257 "\300\301\"\207" [mapcar #[257 "\300!\211\301\267\202N\302!\211\211\303\234\262\211\304\234\303\234\262\211\211\304\234\262D\207\302!\211\211\303\234\262\211\304\234\262D\207\305\207\302!\211\211\303\234\262\211\304\234\262\306!B\207\307\310\"\207" [artist-mt-get-tag #s(hash-table size 4 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (graphics-operation 9 function-call 36 separator 55 menu 57)) artist-mt-get-info-part 0 1 (#1="" #1#) artist-compute-popup-menu-table-sub error "Internal error: unknown element-tag: \"%s\""] 8 "\n\n(fn ELEMENT)"]] 4 (#$ . 47200)])
#@92 Compute completion table from MENU-TABLE, suitable for `completing-read'.

(fn MENU-TABLE)
(defalias 'artist-compute-key-compl-table #[257 "\300\301\302\303\304\305\"\"\"\207" [apply nconc remq nil mapcar #[257 "\300!\211\301\267\202;\302!\211\211\303\234\304\234\262\211\303\234\303\234\262\211\304\234\262\211\304\234\262CCD\207\302!\211\211\303\234\262\305!\207\306\207" [artist-mt-get-tag #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (graphics-operation 9 menu 46)) artist-mt-get-info-part 1 0 artist-compute-key-compl-table nil] 9 "\n\n(fn ELEMENT)"]] 8 (#$ . 47952)])
#@70 Search master table for keyword KWD and return its symbol.

(fn KWD)
(defalias 'artist-mt-get-symbol-from-keyword #[257 "\301\"\207" [artist-mt artist-mt-get-symbol-from-keyword-sub] 4 (#$ . 48589)])
#@69 Search TABLE for keyword KWD and return its symbol.

(fn TABLE KWD)
(defalias 'artist-mt-get-symbol-from-keyword-sub #[514 "\3002\301\302\303\"\"\210\3040\207" [found mapc make-closure #[257 "\301!\211\302\267\202z\303!\211\211\304\234\305\234\262\211\304\234\304\234\262\211\305\234\262\211\305\234\262\211\304\234\262\211\304\234\262\300\230\203?\306\307\"\210\300\230\205I\306\307\"\207\303!\211\211\305\234\262\211\304\234\262\300\230\205c\306\307\"\207\303!\211\211\304\234\262\310\300\"\211\205y\306\307\"\207\311\207" [V0 artist-mt-get-tag #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (graphics-operation 9 function-call 74 menu 100)) artist-mt-get-info-part 1 0 throw found artist-mt-get-symbol-from-keyword-sub nil] 12 "\n\n(fn ELEMENT)"] nil] 6 (#$ . 48797)])
#@163 Search the master table for a graphics operation SYMBOL.
Calls RETRIEVE-FN to retrieve information from that symbol's
info-variant-part.

(fn SYMBOL RETRIEVE-FN)
(defalias 'artist-go-retrieve-from-symbol #[514 "\301#\207" [artist-mt artist-go-retrieve-from-symbol-sub] 6 (#$ . 49650)])
#@162 Search the TABLE for a graphics operation SYMBOL.
Calls RETRIEVE-FN to retrieve information from that symbol's
info-variant-part.

(fn TABLE SYMBOL RETRIEVE-FN)
(defalias 'artist-go-retrieve-from-symbol-sub #[771 "\3002\301\302\303#\"\210\3040\207" [found mapc make-closure #[257 "\302!\211\303\267\202_\304!\211\211\305\234\306\234\262\211\305\234\305\234\262\211\305\234\262\211\305\234\262\300=\2032\202=\211\300=\203<\202=\307\211\205G\310\311\301!\"\207\304!\211\211\305\234\262\312\300\301#\211\205^\310\311\"\207\307\207" [V0 V1 artist-mt-get-tag #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (graphics-operation 9 menu 72)) artist-mt-get-info-part 1 0 nil throw found artist-go-retrieve-from-symbol-sub] 12 "\n\n(fn ELEMENT)"] nil] 8 (#$ . 49946)])
#@85 Search the master table, get keyword from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-keyword-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-keyword] 4 (#$ . 50777)])
#@87 Search the master table, get mode-line from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-mode-line-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-mode-line] 4 (#$ . 51008)])
#@88 Search the master table, get arrow-pred from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-arrow-pred-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-arrow-pred] 4 (#$ . 51245)])
#@90 Search the master table, get arrow-set-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-arrow-set-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-arrow-set-fn] 4 (#$ . 51485)])
#@85 Search the master table, get init-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-init-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-init-fn] 4 (#$ . 51731)])
#@90 Search the master table, get prep-fill-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-prep-fill-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-prep-fill-fn] 4 (#$ . 51962)])
#@85 Search the master table, get exit-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-exit-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-exit-fn] 4 (#$ . 52208)])
#@85 Search the master table, get draw-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-draw-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-draw-fn] 4 (#$ . 52439)])
#@86 Search the master table, get draw-how from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-draw-how-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-draw-how] 4 (#$ . 52670)])
#@87 Search the master table, get undraw-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-undraw-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-undraw-fn] 4 (#$ . 52904)])
#@89 Search the master table, get interval-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-interval-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-interval-fn] 4 (#$ . 53141)])
#@87 Search the master table, get fill-pred from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-fill-pred-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-fill-pred] 4 (#$ . 53384)])
#@85 Search the master table, get fill-fn from a graphics operation SYMBOL.

(fn SYMBOL)
(defalias 'artist-go-get-fill-fn-from-symbol #[257 "\300\301\"\207" [artist-go-retrieve-from-symbol artist-go-get-fill-fn] 4 (#$ . 53621)])
#@171 Search for (shifted or unshifted) graphics operation SYMBOL.
If IS-SHIFTED is non-nil, return the shifted symbol,
otherwise the unshifted symbol.

(fn SYMBOL IS-SHIFTED)
(defalias 'artist-go-get-symbol-shift #[514 "\301#\207" [artist-mt artist-go-get-symbol-shift-sub] 6 (#$ . 53853)])
#@173 Search TABLE for (shifted or unshifted) graphics SYMBOL.
If IS-SHIFTED is non-nil, return the shifted symbol,
otherwise the unshifted symbol.

(fn TABLE SYMBOL IS-SHIFTED)
(defalias 'artist-go-get-symbol-shift-sub #[771 "\3002\301\302\303#\"\210\3040\207" [found mapc make-closure #[257 "\302!\211\303\267\202X\304!\211\211\305\234\306\234\262\211\305\234\305\234\262\211\305\234\262\211\305\234\262\300=\2044\300=\205@\307\310\301\203>\202?\"\207\304!\211\211\305\234\262\311\300\301#\211\205W\307\310\"\207\312\207" [V0 V1 artist-mt-get-tag #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (graphics-operation 9 menu 65)) artist-mt-get-info-part 1 0 throw found artist-go-get-symbol-shift-sub nil] 10 "\n\n(fn ELEMENT)"] nil] 8 (#$ . 54149)])
#@158 Search the master table for a function call SYMBOL.
Calls RETRIEVE-FN to retrieve information from that symbol's
info-variant-part.

(fn SYMBOL RETRIEVE-FN)
(defalias 'artist-fc-retrieve-from-symbol #[514 "\301#\207" [artist-mt artist-fc-retrieve-from-symbol-sub] 6 (#$ . 54965)])
#@153 Search TABLE for a function-call SYMBOL.
Calls RETRIEVE-FN to retrieve information from that symbol's
info-variant-part.

(fn TABLE SYMBOL RETRIEVE-FN)
(defalias 'artist-fc-retrieve-from-symbol-sub #[771 "\3002\301\302\303#\"\210\3040\207" [found mapc make-closure #[257 "\302!\211\303\267\2026\304!\211\211\305\234\262\211\300=\205\306\307\301!\"\207\304!\211\211\305\234\262\310\300\301#\211\2055\306\307\"\207\311\207" [V0 V1 artist-mt-get-tag #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (function-call 9 menu 31)) artist-mt-get-info-part 1 throw found artist-fc-retrieve-from-symbol-sub nil] 8 "\n\n(fn ELEMENT)"] nil] 8 (#$ . 55256)])
#@83 Search the master table to get function from a function call SYMBOL.

(fn SYMBOL)
(defalias 'artist-fc-get-fn-from-symbol #[257 "\300\301\"\207" [artist-fc-retrieve-from-symbol artist-fc-get-fn] 4 (#$ . 55960)])
#@67 Call function FN with ARGS, if FN is not nil.

(fn FN &rest ARGS)
(defalias 'artist-funcall '(macro . #[385 "\300\301BBE\207" [if funcall] 7 (#$ . 56179)]))
#@87 Split string STR at occurrences of regexp R, returning a list of strings.

(fn STR R)
(defalias 'artist-string-split #[514 "\300\301\211\302#\211\262\203 \303O!B\262\301\225\262\202\204'C\207\301\225GSW\203;\301\225GOB\262\304!\207" [nil 0 string-match copy-sequence reverse] 9 (#$ . 56345)])
#@57 Write string STR to file FILE-NAME.

(fn STR FILE-NAME)
(defalias 'artist-string-to-file #[514 "\300\301\302\303%\207" [write-region end-is-ignored nil no-message] 8 (#$ . 56669)])
#@57 Read from file FILE-NAME into a string.

(fn FILE-NAME)
(defalias 'artist-file-to-string #[257 "\212\300\301\302Q!\211q\210eb\210\303\304\211\211\305%\210\306ed{!\307!\210\211\262\262)\207" [get-buffer-create "*artist-" "*" insert-file-contents nil t copy-sequence kill-buffer] 8 (#$ . 56858)])
#@41 Clear contents of buffer BUF.

(fn BUF)
(defalias 'artist-clear-buffer #[257 "r\211q\210eb\210\300deZ\301\")\207" [delete-char nil] 4 (#$ . 57164)])
#@210 Run PROGRAM synchronously with the contents of string STDIN to stdin.
Optional args PROGRAM-ARGS are arguments to PROGRAM.
Return a list (RETURN-CODE STDOUT STDERR).

(fn PROGRAM STDIN &optional PROGRAM-ARGS)
(defalias 'artist-system #[770 "\212\205\300\301!\302\303\304Q!\300\305!\203\306\"\210\307!\210\310\311%\216\203G\312\313D\314	;\203@	C\202B	&\202O\313D#\211rq\210ed{)\315!E\262)\266\203)\207" [make-temp-file "artist-stdin." get-buffer-create "*artist-" "*" "artist-stdout." artist-string-to-file artist-clear-buffer make-closure #[0 "\300\203\304\301!\203\305\301!\210\304\303!\203\305\303!\210\302\306 >\205\"\307\302!\207" [V0 V1 V2 V3 file-exists-p delete-file buffer-list kill-buffer] 2] apply call-process nil artist-file-to-string] 13 (#$ . 57320)])
#@32 Return point's current column.
(defalias 'artist-current-column #[0 "i\207" [] 1 (#$ . 58136)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-current-column speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@68 Return point's current line, buffer-relative.  Top of buffer is 0.
(defalias 'artist-current-line #[0 "\300\301`\"i\302U\203\301\202\302\\S\207" [count-lines 1 0] 3 (#$ . 58385)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-current-line speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@78 Move to column X, at row Y from the top of buffer.  Top line is 0.

(fn X Y)
(defalias 'artist-move-to-xy #[514 "\211\302\303`\"i\304U\203\303\202\304\\SZy\210\305\306\302\303`\"i\304U\203&\303\202'\304\\SZy\"\210\307\304]\310\"\210\302\303`\"i\304U\203B\303\202C\304\\S\211^\211	]\211\207" [artist-draw-region-min-y artist-draw-region-max-y count-lines 1 0 insert-char 10 move-to-column t] 8 (#$ . 58720)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-move-to-xy speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@144 Return the character found at column X, row Y.
Also updates the variables `artist-draw-region-min-y' and
`artist-draw-region-max-y'.

(fn X Y)
(defalias 'artist-get-char-at-xy #[514 "\211\302\303`\"i\304U\203\303\202\304\\SZy\210\305\306\302\303`\"i\304U\203(\303\202)\304\\SZy\"\210\307\304]\310\"\210\302\303`\"i\304U\203D\303\202E\304\\S\211^\211	]\211\266\302\303`\"i\304U\203`\303\202a\304\\S\211^\211	]\210g\207" [artist-draw-region-min-y artist-draw-region-max-y count-lines 1 0 insert-char 10 move-to-column t] 10 (#$ . 59291)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-char-at-xy speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@146 Retrieve a replacement for character C from `artist-replacement-table'.
The replacement is used to convert tabs and new-lines to spaces.

(fn C)
(defalias 'artist-get-replacement-char #[257 "\211GW\203H\207\207" [artist-replacement-table] 3 (#$ . 60003)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-replacement-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@84 Retrieve the character at X, Y, converting tabs and new-lines to spaces.

(fn X Y)
(defalias 'artist-get-char-at-xy-conv #[514 "\212\211\303\304`\"i\305U\203\304\202\305\\SZy\210\306\307\303\304`\"i\305U\203+\304\202,\305\\SZy\"\210\310\305]\311\"\210\303\304`\"i\305U\203G\304\202H\305\\S\211^\211	]\211\266\303\304`\"i\305U\203c\304\202d\305\\S\211^\211	]\210g\266\202\211\nGW\203~\nH\262)\207" [artist-draw-region-min-y artist-draw-region-max-y artist-replacement-table count-lines 1 0 insert-char 10 move-to-column t] 12 (#$ . 60423)])
#@62 Replace the character at point with NEW-CHAR.

(fn NEW-CHAR)
(defalias 'artist-replace-char #[257 "\305\306\307\211\211GW\203H\262\310\311!+\207" [blink-matching-paren fill-column overwrite-mode artist-replacement-table last-command-event overwrite-mode-textual 32765 nil self-insert-command 1] 4 (#$ . 60995)])
#@92 Replace characters at point with NEW-CHAR.  COUNT chars are replaced.

(fn NEW-CHAR COUNT)
(defalias 'artist-replace-chars #[514 "\305\306\307\211GW\203H\262\310!+\207" [blink-matching-paren fill-column overwrite-mode artist-replacement-table last-command-event overwrite-mode-textual 32765 nil self-insert-command] 5 (#$ . 61323)])
#@175 Replace contents at point with STRING.
With optional argument SEE-THRU set to non-nil, text in the buffer
"shines thru" blanks in the STRING.

(fn STRING &optional SEE-THRU)
(defalias 'artist-replace-string #[513 "\306\307\"\310\311\307\211\205\230\211@\203\214\211\211GW\203!H\262\312U\203\214iT\313\314`\"i\315U\2036\314\2027\315\\S\211\313\314`\"i\315U\203H\314\202I\315\\SZy\210\316\317\313\314`\"i\315U\203_\314\202`\315\\SZy\"\210\320\315]\321\"\210\313\314`\"i\315U\203{\314\202|\315\\S\211\f^\211
]\211\266\202\221\322!\266\211A\262\202\n+\207" [blink-matching-paren fill-column overwrite-mode artist-replacement-table artist-draw-region-min-y artist-draw-region-max-y append nil overwrite-mode-textual 32765 32 count-lines 1 0 insert-char 10 move-to-column t artist-replace-char] 12 (#$ . 61675)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-replace-string speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@41 Unsets point 1 when not rubber-banding.
(defalias 'artist-no-rb-unset-point1 #[0 "i\303\304`\"i\305U\203\304\202\305\\S\305H\304H\211\303\304`\"i\305U\203)\304\202*\305\\SZy\210\306\307\303\304`\"i\305U\203@\304\202A\305\\SZy\"\210\310\305]\311\"\210\303\304`\"i\305U\203\\\304\202]\305\\S\211	^\211\n]\211\266\312\313H!\210\211\303\304`\"i\305U\203\201\304\202\202\305\\SZy\210\306\307\303\304`\"i\305U\203\230\304\202\231\305\\SZy\"\210\310\305]\311\"\210\303\304`\"i\305U\203\264\304\202\265\305\\S\211	^\211\n]\211\207" [artist-rb-save-data artist-draw-region-min-y artist-draw-region-max-y count-lines 1 0 insert-char 10 move-to-column t artist-replace-char 2] 12 (#$ . 62666)])
#@56 Set point 1 at X, Y when not rubber-banding.

(fn X Y)
(defalias 'artist-no-rb-set-point1 #[514 "i\304\305`\"i\306U\203\305\202\306\\S\306I\210\305I\210\307\211\304\305`\"i\306U\2031\305\2022\306\\SZy\210\310\311\304\305`\"i\306U\203H\305\202I\306\\SZy\"\210\312\306]\313\"\210\304\305`\"i\306U\203d\305\202e\306\\S\211	^\211\n]\211\266\304\305`\"i\306U\203\200\305\202\201\306\\S\211	^\211\n]\210g\266\202I\210\211\304\305`\"i\306U\203\242\305\202\243\306\\SZy\210\310\311\304\305`\"i\306U\203\271\305\202\272\306\\SZy\"\210\312\306]\313\"\210\304\305`\"i\306U\203\325\305\202\326\306\\S\211	^\211\n]\211\266\314!\210\211\304\305`\"i\306U\203\370\305\202\371\306\\SZy\210\310\311\304\305`\"i\306U\203\305\202\306\\SZy\"\210\312\306]\313\"\210\304\305`\"i\306U\203+\305\202,\306\\S\211	^\211\n]\211\266\315\306I\207" [artist-rb-save-data artist-draw-region-min-y artist-draw-region-max-y artist-first-char count-lines 1 0 2 insert-char 10 move-to-column t artist-replace-char 6] 16 (#$ . 63388)])
#@55 This function unsets point 2 when not rubber-banding.
(defalias 'artist-no-rb-unset-point2 #[0 "\303H\304U\205\312i\305\304`\"i\306U\203\304\202\306\\S\307H\310H\211\305\304`\"i\306U\2031\304\2022\306\\SZy\210\311\312\305\304`\"i\306U\203H\304\202I\306\\SZy\"\210\313\306]\314\"\210\305\304`\"i\306U\203d\304\202e\306\\S\211	^\211\n]\211\266\315\316H!\210\211\305\304`\"i\306U\203\211\304\202\212\306\\SZy\210\311\312\305\304`\"i\306U\203\240\304\202\241\306\\SZy\"\210\313\306]\314\"\210\305\304`\"i\306U\203\274\304\202\275\306\\S\211	^\211\n]\211\266\207\207" [artist-rb-save-data artist-draw-region-min-y artist-draw-region-max-y 6 1 count-lines 0 3 4 insert-char 10 move-to-column t artist-replace-char 5] 12 (#$ . 64449)])
#@56 Set point 2 at X, Y when not rubber-banding.

(fn X Y)
(defalias 'artist-no-rb-set-point2 #[514 "i\304\305`\"i\306U\203\305\202\306\\S\307I\210\310I\210\311\211\304\305`\"i\306U\2031\305\2022\306\\SZy\210\312\313\304\305`\"i\306U\203H\305\202I\306\\SZy\"\210\314\306]\315\"\210\304\305`\"i\306U\203d\305\202e\306\\S\211	^\211\n]\211\266\304\305`\"i\306U\203\200\305\202\201\306\\S\211	^\211\n]\210g\266\202I\210\211\304\305`\"i\306U\203\242\305\202\243\306\\SZy\210\312\313\304\305`\"i\306U\203\271\305\202\272\306\\SZy\"\210\314\306]\315\"\210\304\305`\"i\306U\203\325\305\202\326\306\\S\211	^\211\n]\211\266\316!\210\211\304\305`\"i\306U\203\370\305\202\371\306\\SZy\210\312\313\304\305`\"i\306U\203\305\202\306\\SZy\"\210\314\306]\315\"\210\304\305`\"i\306U\203+\305\202,\306\\S\211	^\211\n]\211\266\317\305I\207" [artist-rb-save-data artist-draw-region-min-y artist-draw-region-max-y artist-second-char count-lines 1 0 3 4 5 insert-char 10 move-to-column t artist-replace-char 6] 16 (#$ . 65218)])
#@61 This function unsets point 1 and 2 when not rubber-banding.
(defalias 'artist-no-rb-unset-points #[0 "\300 \210\301 \207" [artist-no-rb-unset-point1 artist-no-rb-unset-point2] 1 (#$ . 66284)])
#@302 Calculates intersection character when drawing a NEW-C on top of an OLD-C.
Return character according to this scheme:

		OLD-C	NEW-C		return
		 -	 |		   +
		 |	 -		   +
		 +	 |		   +
		 +	 -		   +
		 \	 /		   X
		 /	 \		   X
		 X	 /		   X
		 X	 \		   X
		other combinations	   NEW-C

(fn NEW-C OLD-C)
(defalias 'artist-intersection-char #[514 "\211\300U\203\301U\203\302\207\211\301U\203\300U\203\302\207\211\302U\203*\300U\203*\302\207\211\302U\2038\301U\2038\302\207\211\303U\203F\304U\203F\305\207\211\304U\203T\303U\203T\305\207\211\305U\203b\304U\203b\305\207\211\305U\203p\303U\203p\305\207\207" [45 124 43 92 47 88] 4 (#$ . 66484)])
#@270 Restore character to before intersection when removing LINE-C from BUFFER-C.
Return character according to this scheme:

		LINE-C	BUFFER-C	return
		 -	 +		   |
		 |	 +		   -
		 \	 X		   /
		 /	 X		   \
		other combinations	   `artist-erase-char'.

(fn LINE-C BUFFER-C)
(defalias 'artist-unintersection-char #[514 "\301U\203\211\302U\203\303\207\303U\203\211\302U\203\301\207\304U\203*\211\305U\203*\306\207\306U\2038\211\305U\2038\304\207U\203@\207\207" [artist-erase-char 45 43 124 92 88 47] 4 (#$ . 67160)])
#@296 Compute which character to use for lines, if any.
Return value is either nil for the default characters that make up lines, or
a character chosen depending on the variables `artist-borderless-shapes',
`artist-fill-char-set', `artist-fill-char' and
`artist-line-char-set' and `artist-line-char'.
(defalias 'artist-compute-line-char #[0 "\203\n	\203\n\n\207\205\f\207" [artist-borderless-shapes artist-fill-char-set artist-fill-char artist-line-char-set artist-line-char] 1 (#$ . 67697)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-compute-line-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@148 Table used for stepping x and y coordinates in a specific direction.
This table is also used for determining which char to use for that direction.
(defvar artist-direction-info [[1 0 45] [1 1 92] [0 1 124] [-1 1 47] [-1 0 45] [-1 -1 92] [0 -1 124] [1 -1 47]] (#$ . 68347))
#@89 Return the x-step for DIRECTION from the `artist-direction-info' table.

(fn DIRECTION)
(defalias 'artist-direction-step-x #[257 "H\301H\207" [artist-direction-info 0] 3 (#$ . 68626)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-direction-step-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@89 Return the y-step for DIRECTION from the `artist-direction-info' table.

(fn DIRECTION)
(defalias 'artist-direction-step-y #[257 "H\301H\207" [artist-direction-info 1] 3 (#$ . 68968)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-direction-step-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@92 Return the character for DIRECTION from the `artist-direction-info' table.

(fn DIRECTION)
(defalias 'artist-direction-char #[257 "H\301H\207" [artist-direction-info 2] 3 (#$ . 69310)])
#@179 Find the direction from point X1,Y1 to X2,Y2.
Returns a DIRECTION, a number 0--7, coded as follows:

			 5  6  7
			  \ | /
			4 - * - 0
			  / | \
			 3  2  1

(fn X1 Y1 X2 Y2)
(defalias 'artist-find-direction #[1028 "ZZ\300\301!_Y\203\302\207\211\300\301!_Y\203\300\207[\300\301!_Y\203+\303\207\211[\300\301!_Y\2038\304\207\302Y\203F\211\302Y\203F\305\207\302X\203T\211\302Y\203T\306\207\302X\203b\211\302X\203b\307\207\302Y\205o\211\302X\205o\310\207" [2 abs 0 4 6 1 3 5 7] 10 (#$ . 69505)])
#@100 Calculate length for a straight line in DIRECTION from X1,Y1 to X2,Y2.

(fn DIRECTION X1 Y1 X2 Y2)
(defalias 'artist-straight-calculate-length #[1285 "\300U\204\301U\204\302U\203ZT\207\303U\204)\304U\204)\305U\203.ZT\207\306Z!T\207" [7 0 1 3 4 5 abs] 8 (#$ . 70035)])
#@63 Create a straight line from X1,Y1 to X2,Y2.

(fn X1 Y1 X2 Y2)
(defalias 'artist-sline #[1028 "\300$\301%\302\303\\\"\211\304I\210\211\305I\210\211\306I\210\207" [artist-find-direction artist-straight-calculate-length make-vector 4 1 2 3] 11 (#$ . 70330)])
#@42 Save characters under a LINE.

(fn LINE)
(defalias 'artist-save-chars-under-sline #[257 "\211\303H\304H\305H\306\\\307H\306\211W\203\253\211\310\304`\"i\303U\203,\304\202-\303\\SZy\210\311\312\310\304`\"i\303U\203C\304\202D\303\\SZy\"\210\313\303]\314\"\210\310\304`\"i\303U\203_\304\202`\303\\S\211^\211	]\211\266\310\304`\"i\303U\203{\304\202|\303\\S\211^\211	]\210g\266\202I\210\nH\303H\262\\\262\nH\304H\262\\\262\211T\262\202\266\207" [artist-draw-region-min-y artist-draw-region-max-y artist-direction-info 0 1 2 4 3 count-lines insert-char 10 move-to-column t] 18 (#$ . 70612)])
#@53 Table used by line drawing algorithm (eight point).
(defvar artist-octant-info [[2 1 1 0 1 1] [1 2 1 1 0 1] [-1 2 0 1 -1 1] [-2 1 -1 1 -1 0] [-2 -1 -1 0 -1 -1] [-1 -2 -1 -1 0 -1] [1 -2 0 -1 1 -1] [2 -1 1 -1 1 0]] (#$ . 71248))
#@50 Retrieve dfdx component for OCTANT.

(fn OCTANT)
(defalias 'artist-get-dfdx-init-coeff #[257 "SH\301H\207" [artist-octant-info 0] 3 (#$ . 71481)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-dfdx-init-coeff speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@50 Retrieve dfdy component for OCTANT.

(fn OCTANT)
(defalias 'artist-get-dfdy-init-coeff #[257 "SH\301H\207" [artist-octant-info 1] 3 (#$ . 71788)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-dfdy-init-coeff speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@64 Retrieve x-step component for OCTANT when q >= 0.

(fn OCTANT)
(defalias 'artist-get-x-step-q>=0 #[257 "SH\301H\207" [artist-octant-info 2] 3 (#$ . 72095)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-x-step-q>=0 speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@64 Retrieve y-step component for OCTANT when q >= 0.

(fn OCTANT)
(defalias 'artist-get-y-step-q>=0 #[257 "SH\301H\207" [artist-octant-info 3] 3 (#$ . 72408)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-y-step-q>=0 speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@62 Retrieve x-step component for OCTANT for q < 0.

(fn OCTANT)
(defalias 'artist-get-x-step-q<0 #[257 "SH\301H\207" [artist-octant-info 4] 3 (#$ . 72721)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-x-step-q<0 speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@62 Retrieve y-step component for OCTANT for q < 0.

(fn OCTANT)
(defalias 'artist-get-y-step-q<0 #[257 "SH\301H\207" [artist-octant-info 5] 3 (#$ . 73030)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-get-y-step-q<0 speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@155 Find octant for a line from X1,Y1 to X2,Y2.
Octant are numbered 1--8, anti-clockwise as:

		 \3|2/
		 4\|/1
		---+---
		 5/|\8
		 /6|7\

(fn X1 Y1 X2 Y2)
(defalias 'artist-find-octant #[1028 "X\203)X\203ZZY\203\300\207\301\207ZZ[Y\203'\302\207\303\207X\203>Z[ZY\203<\304\207\305\207Z[Z[Y\203L\306\207\307\207" [1 2 8 7 4 3 5 6] 7 (#$ . 73340)])
#@168 Create a new coordinate at X,Y for use in a line.
Optional argument NEW-CHAR can be used for setting the new-char component
in the coord.

(fn X Y &optional NEW-CHAR)
(defalias 'artist-new-coord #[770 "\300\301\"\211\302I\210\211\303I\210\207" [make-vector 4 1 3] 7 (#$ . 73723)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-new-coord speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@50 Retrieve the x component of a COORD.

(fn COORD)
(defalias 'artist-coord-get-x #[257 "\211\300H\207" [0] 3 (#$ . 74155)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-get-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@50 Retrieve the y component of a COORD.

(fn COORD)
(defalias 'artist-coord-get-y #[257 "\211\300H\207" [1] 3 (#$ . 74427)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-get-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@60 Set the x component of a COORD to NEW-X.

(fn COORD NEW-X)
(defalias 'artist-coord-set-x #[514 "\300I\210\207" [0] 5 (#$ . 74699)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-set-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@60 Set the y component of a COORD to NEW-Y.

(fn COORD NEW-Y)
(defalias 'artist-coord-set-y #[514 "\300I\210\207" [1] 5 (#$ . 74984)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-set-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@59 Retrieve the saved char component of a COORD.

(fn COORD)
(defalias 'artist-coord-get-saved-char #[257 "\211\300H\207" [2] 3 (#$ . 75269)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-get-saved-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@57 Retrieve the new char component of a COORD.

(fn COORD)
(defalias 'artist-coord-get-new-char #[257 "\211\300H\207" [3] 3 (#$ . 75568)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-get-new-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@79 Set the saved char component of a COORD to SAVED-CHAR.

(fn COORD SAVED-CHAR)
(defalias 'artist-coord-add-saved-char #[514 "\300I\210\207" [2] 5 (#$ . 75861)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-add-saved-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@73 Set the new char component of a COORD to NEW-CHAR.

(fn COORD NEW-CHAR)
(defalias 'artist-coord-add-new-char #[514 "\300I\210\207" [3] 5 (#$ . 76183)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-add-new-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@73 Set the new char component of a COORD to NEW-CHAR.

(fn COORD NEW-CHAR)
(defalias 'artist-coord-set-new-char #[514 "\300I\210\207" [3] 5 (#$ . 76495)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-coord-set-new-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@67 In POINT-LIST, store a "pixel" at coord X,Y.

(fn POINT-LIST X Y)
(defalias 'artist-put-pixel '(macro . #[771 "\300\301\302\303EDEE\207" [setq append list artist-new-coord] 11 (#$ . 76807)]))
#@94 Run the eight-point algorithm to get a list of coords from X1,Y1 to X2,Y2.

(fn X1 Y1 X2 Y2)
(defalias 'artist-eight-point #[1028 "\301\302$\211SH\303H\262SH\304H\262SH\305H\262SH\306H\262SH\307H\262SH\310H\262Z[\n
Z

\303\n_\n_\\\311\301\301\312\307\"\211\304I\210\211\306I\210\266\203C\"\262=\203=\204\354\211\303Y\203\243\n\\\262	\\\262\n_\\	_\\\262\202\276\\\262\\\262_\\_\\\262\305_\f_\\_\\\262\311\301\312\307\"\211\304I\210\211\306I\210\266\203C\"\262\202q
\207" [artist-octant-info nil artist-find-octant 0 1 2 3 4 5 append make-vector] 27 (#$ . 77011)])
#@63 Save characters originally under POINT-LIST.

(fn POINT-LIST)
(defalias 'artist-save-chars-under-point-list #[257 "\300\301\"\207" [mapcar #[257 "\211\211\302H\262\211\303H\262\211\304\303`\"i\302U\203\303\202\302\\SZy\210\305\306\304\303`\"i\302U\2035\303\2026\302\\SZy\"\210\307\302]\310\"\210\304\303`\"i\302U\203Q\303\202R\302\\S\211^\211	]\211\266\304\303`\"i\302U\203m\303\202n\302\\S\211^\211	]\210g\266\202\311I\210\207" [artist-draw-region-min-y artist-draw-region-max-y 0 1 count-lines insert-char 10 move-to-column t 2] 12 "\n\n(fn COORD)"]] 4 (#$ . 77689)])
#@96 Return a line-char to use when moving from LAST-COORD to NEW-COORD.

(fn LAST-COORD NEW-COORD)
(defalias 'artist-calculate-new-char #[514 "\211\300H\262\211\301H\262\211\300H\262\211\301H\262V\2030\211W\203&\302\207\211V\203.\303\207\304\207W\203H\211W\203>\303\207\211V\203F\302\207\304\207\211=\203P\305\207\306\207" [0 1 47 92 45 111 124] 8 (#$ . 78294)])
#@90 Return a list of coords with line-chars calculated.  Input: POINT-LIST.

(fn POINT-LIST)
(defalias 'artist-calculate-new-chars #[257 "\211A\204\211@\300\301I\210\266\202C\207\211@C@\302A@@\"\301I\210\266\202\303\304\305\"A\"B\207" [111 3 artist-calculate-new-char mapcar make-closure #[257 "\211\301\300\242\"\302I\210\266\202\300\240\210\207" [V0 artist-calculate-new-char 3] 6 "\n\n(fn THIS-COORD)"]] 7 (#$ . 78683)])
#@101 Replace intersecting characters in POINT-LIST.
This function returns a point-list.

(fn POINT-LIST)
(defalias 'artist-modify-new-chars #[257 "\300\301\"\207" [mapcar #[257 "\211\211\300H\262\211\301H\262\302\"\300I\210\207" [3 2 artist-intersection-char] 9 "\n\n(fn COORD)"]] 4 (#$ . 79128)])
#@39 Create an endpoint at X, Y.

(fn X Y)
(defalias 'artist-make-endpoint #[514 "\300\301\"\211\302I\210\207" [make-vector 2 1] 6 (#$ . 79438)])
#@57 Retrieve the x component of an ENDPOINT.

(fn ENDPOINT)
(defalias 'artist-endpoint-get-x #[257 "\211\300H\207" [0] 3 (#$ . 79587)])
#@57 Retrieve the y component of an ENDPOINT.

(fn ENDPOINT)
(defalias 'artist-endpoint-get-y #[257 "\211\300H\207" [1] 3 (#$ . 79725)])
#@100 Create a 2-point object of ENDPOINT1, ENDPOINT2 and SHAPEINFO.

(fn ENDPOINT1 ENDPOINT2 SHAPEINFO)
(defalias 'artist-make-2point-object #[771 "E\207" [] 6 (#$ . 79864)])
#@64 Retrieve the first endpoint of a 2-point object OBJ.

(fn OBJ)
(defalias 'artist-2point-get-endpoint1 #[257 "\211\300\234\207" [0] 3 (#$ . 80043)])
#@65 Retrieve the second endpoint of a 2-point object OBJ.

(fn OBJ)
(defalias 'artist-2point-get-endpoint2 #[257 "\211\300\234\207" [1] 3 (#$ . 80197)])
#@69 Retrieve the shapeinfo component of a 2-point object OBJ.

(fn OBJ)
(defalias 'artist-2point-get-shapeinfo #[257 "\211\300\234\207" [2] 3 (#$ . 80352)])
#@258 Draw a line from X1, Y1 to X2, Y2.

Output is a line, which is a list (END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a list of vectors [X Y SAVED-CHAR NEW-CHAR].

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-line #[1028 "\300\"\300\"\301\302\303\304\305\306\307$!!!\"#\207" [artist-make-endpoint artist-make-2point-object mapcar #[257 "\211\211\304H\262\211\305H\262\211\306\305`\"i\304U\203\305\202\304\\SZy\210\307\310\306\305`\"i\304U\2032\305\2023\304\\SZy\"\210\311\304]\312\"\210\306\305`\"i\304U\203N\305\202O\304\\S\211^\211	]\211\266\n\203e\313!\210\207\313\211\314H\262!\210\207" [artist-draw-region-min-y artist-draw-region-max-y artist-line-char-set artist-line-char 0 1 count-lines insert-char 10 move-to-column t artist-replace-char 3] 9 "\n\n(fn COORD)"] artist-modify-new-chars artist-calculate-new-chars artist-save-chars-under-point-list artist-eight-point] 19 (#$ . 80512)])
#@25 Undraw LINE.

(fn LINE)
(defalias 'artist-undraw-line #[257 "\300\301\302!\"\207" [mapcar #[257 "\211\211\302H\262\211\303H\262\211\304\303`\"i\302U\203\303\202\302\\SZy\210\305\306\304\303`\"i\302U\2032\303\2023\302\\SZy\"\210\307\302]\310\"\210\304\303`\"i\302U\203N\303\202O\302\\S\211^\211	]\211\266\311\211\312H\262!\210\207" [artist-draw-region-min-y artist-draw-region-max-y 0 1 count-lines insert-char 10 move-to-column t artist-replace-char 2] 9 "\n\n(fn COORD)"] artist-2point-get-shapeinfo] 5 (#$ . 81519)])
#@507 Draw a straight line from X1, Y1 to X2, Y2.
Straight lines are vertical, horizontal or diagonal lines.
They are faster to draw and most often they are what you need
when drawing a simple image.

Output is a straight line, which is a list on the form
(END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a vector [START-X START-Y LENGTH-OF-LINE DIRECTION
                        ORIGINAL-CHAR-1 ORIGINAL-CHAR-2 ... ].

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-sline #[1028 "\305\306$!\211\307H\310H\311H\312\\\313H\314!\312\315\"\316W\203\303\211\317\310`\"i\307U\203;\310\202<\307\\SZy\210\320\321\317\310`\"i\307U\203R\310\202S\307\\SZy\"\210\322\307]\323\"\210\317\310`\"i\307U\203n\310\202o\307\\S\211^\211	]\211\266\n\203\207\324!\210\202\222\324\325H\"!\210TW\204\242\315\"\262\fH\307H\262\\\262\fH\310H\262\\\262T\262\202!\326#\207" [artist-draw-region-min-y artist-draw-region-max-y artist-line-char-set artist-line-char artist-direction-info artist-save-chars-under-sline artist-sline 0 1 2 4 3 artist-direction-char artist-make-endpoint nil count-lines insert-char 10 move-to-column t artist-replace-char artist-intersection-char artist-make-2point-object] 21 (#$ . 82065)])
#@41 Undraw a straight line LINE.

(fn LINE)
(defalias 'artist-undraw-sline #[257 "\211\205\226\303!\211\304H\305H\306H\307\\\310H\307\211W\205\224\211\311\305`\"i\304U\203-\305\202.\304\\SZy\210\312\313\311\305`\"i\304U\203D\305\202E\304\\SZy\"\210\314\304]\315\"\210\311\305`\"i\304U\203`\305\202a\304\\S\211^\211	]\211\266\316H!\210\nH\304H\262\\\262\nH\305H\262\\\262\211T\262\202\266\206\207" [artist-draw-region-min-y artist-draw-region-max-y artist-direction-info artist-2point-get-shapeinfo 0 1 2 4 3 count-lines insert-char 10 move-to-column t artist-replace-char] 15 (#$ . 83393)])
#@278 Draw a rectangle with corners at X1, Y1 and X2, Y2.

Output is a rectangle, which is a list on the form
(END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a list of four straight lines.

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-rect #[1028 "\203\f	\203\f\n\202\205\f\211\305$\305$\305$\305		$\306\"\306\"\307F#*\207" [artist-borderless-shapes artist-fill-char-set artist-fill-char artist-line-char-set artist-line-char artist-draw-sline artist-make-endpoint artist-make-2point-object] 18 (#$ . 84024)])
#@35 Undraw RECTANGLE.

(fn RECTANGLE)
(defalias 'artist-undraw-rect #[257 "\211\205 \300!\301\302\234!\210\301\303\234!\210\301\304\234!\210\301\305\234!\262\207" [artist-2point-get-shapeinfo artist-undraw-sline 3 2 1 0] 5 (#$ . 84653)])
#@224 Compute square corners from rectangle corners at X1, Y1 and X2, Y2.
The square's first corner will be X1, Y1.  The position of the second
corner depends on which of X2 and Y2 is most far away from X1, Y1.

(fn X1 Y1 X2 Y2)
(defalias 'artist-rect-corners-squarify #[1028 "ZZ\301W\203\302\202\303\301W\203\302\202\303\304\211\305!\305!V\203@\262\306\305!_\245!\\\262\202T\306\n\305!__\\!\262\262		F\207" [artist-aspect-ratio 0 -1 1 nil abs round] 14 (#$ . 84901)])
#@272 Draw a square with corners at X1, Y1 and X2, Y2.

Output is a square, which is a list on the form
(END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a list of four straight lines.

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-square #[1028 "\203\f	\203\f\n\202\205\f\211\305$\211\306\234\307\234\310\234\311\234\312\"\312\"\313$\313$\313\n$\313	$\314F#*\207" [artist-borderless-shapes artist-fill-char-set artist-fill-char artist-line-char-set artist-line-char artist-rect-corners-squarify 0 1 2 3 artist-make-endpoint artist-draw-sline artist-make-2point-object] 23 (#$ . 85415)])
#@29 Undraw SQUARE.

(fn SQUARE)
(defalias 'artist-undraw-square #[257 "\211\205 \300!\301\302\234!\210\301\303\234!\210\301\304\234!\210\301\305\234!\262\207" [artist-2point-get-shapeinfo artist-undraw-sline 3 2 1 0] 5 (#$ . 86133)])
#@65 Fill rectangle RECT from X1,Y1 to X2,Y2.

(fn RECT X1 Y1 X2 Y2)
(defalias 'artist-fill-rect #[1285 "^T^T]]ZW\205u\211\303\304`\"i\305U\203(\304\202)\305\\SZy\210\306\307\303\304`\"i\305U\203?\304\202@\305\\SZy\"\210\310\305]\311\"\210\303\304`\"i\305U\203[\304\202\\\305\\S\211^\211	]\211\266\312\n\"\210T\262\202\207" [artist-draw-region-min-y artist-draw-region-max-y artist-fill-char count-lines 1 0 insert-char 10 move-to-column t artist-replace-chars] 18 (#$ . 86376)])
#@61 Fill a SQUARE from X1,Y1 to X2,Y2.

(fn SQUARE X1 Y1 X2 Y2)
(defalias 'artist-fill-square #[1285 "\303$\211\304\234\305\234\306\234\307\234^T^T]]ZW\205\207\211\310\305`\"i\304U\203:\305\202;\304\\SZy\210\311\312\310\305`\"i\304U\203Q\305\202R\304\\SZy\"\210\313\304]\314\"\210\310\305`\"i\304U\203m\305\202n\304\\S\211^\211	]\211\266\315\n\"\210T\262\202#\207" [artist-draw-region-min-y artist-draw-region-max-y artist-fill-char artist-rect-corners-squarify 0 1 2 3 count-lines insert-char 10 move-to-column t artist-replace-chars] 23 (#$ . 86889)])
#@109 Draw a character at X1, Y1.
The character is replaced with the character in `artist-fill-char'.

(fn X1 Y1)
(defalias 'artist-pen #[514 "\211\306\307`\"i\310U\203\307\202\310\\SZy\210\311\312\306\307`\"i\310U\203(\307\202)\310\\SZy\"\210\313\310]\314\"\210\306\307`\"i\310U\203D\307\202E\310\\S\211^\211	]\211\266\315\n\203[\202e\f\203c
\202e!\207" [artist-draw-region-min-y artist-draw-region-max-y artist-line-char-set artist-line-char artist-fill-char-set artist-fill-char count-lines 1 0 insert-char 10 move-to-column t artist-replace-char artist-default-fill-char] 10 (#$ . 87484)])
#@334 Draw a line from last pen position to X1, Y1.
The character is replaced with the character in `artist-fill-char'.
This will store all points in `artist-key-poly-point-list' in reversed
order (I assume it is faster to cons to the beginning of the list than
to append to the end of the list, when doing free-hand drawing).

(fn X1 Y1)
(defalias 'artist-pen-line #[514 "\203	\202\n\203\202\f
@@
@A\211\306\307`\"i\310U\203)\307\202*\310\\SZy\210\311\312\306\307`\"i\310U\203@\307\202A\310\\SZy\"\210\313\310]\314\"\210\306\307`\"i\310U\203\\\307\202]\310\\S\211^\211]\211\266\315	!\210\316$\266B
B\211)\207" [artist-line-char-set artist-line-char artist-fill-char-set artist-fill-char artist-default-fill-char artist-key-poly-point-list count-lines 1 0 insert-char 10 move-to-column t artist-replace-char artist-draw-line artist-draw-region-min-y artist-draw-region-max-y] 12 (#$ . 88102)])
#@77 Reset the last x and y points to X1, Y1 when doing pen-drawing.

(fn X1 Y1)
(defalias 'artist-pen-reset-last-xy #[514 "\301 \210BC\211\207" [artist-key-poly-point-list artist-clear-arrow-points] 4 (#$ . 89036)])
#@112 Set arrow points for pen drawing using X1, Y1.
Also, the `artist-key-poly-point-list' is reversed.

(fn X1 Y1)
(defalias 'artist-pen-set-arrow-points #[514 "\303!\211G\304Y\205U@@@AA@@A@A\305\306!\211@@@AA@@A@A\305\307$\262\307\f\f$\262\310#\310\n\n#\211\266\212\207" [artist-key-poly-point-list artist-arrow-point-1 artist-arrow-point-2 seq-uniq 2 nil reverse artist-find-direction artist-make-arrow-point] 18 (#$ . 89258)])
#@129 Run figlet rendering TEXT using FONT.
EXTRA-ARGS for figlet, for the command line, may be specified.

(fn TEXT FONT EXTRA-ARGS)
(defalias 'artist-figlet-run #[771 "\203\211\203\301P\302\303\"B\202)\203\301P\202)\211\203(\302\303\"\202)\304\305#\211\306\234\307\234\310\234\306U\204C\311\312#\210\207" [artist-figlet-program "-f" artist-string-split "[ 	]+" nil artist-system 0 1 2 error "Failed to render font: %s (%d)"] 12 (#$ . 89726)])
#@66 Read fonts in with the shell command.
Returns a list of strings.
(defalias 'artist-figlet-get-font-list #[0 "\301\302\303#\211\304\234\305\234\306\234\304U\204\307\310#\210\311\312\"\207" [artist-figlet-list-fonts-command artist-system "/bin/sh" nil 0 1 2 error "Failed to read available fonts: %s (%d)" artist-string-split ".flf\n"] 9 (#$ . 90197)])
#@102 Read in fonts on MS-Windows by collecting output of the `figlet' program.
Returns a list of strings.
(defalias 'artist-figlet-get-font-list-windows #[0 "\302\303	\304D#\211\305\234\306\234\307\234\305U\204\310\311#\210\312\313\"\303C\314\315\316\"\"\210\317\320\242\"\207" [shell-file-name shell-command-switch artist-system nil "figlet -I2" 0 1 2 error "Failed to read available fonts: %s (%d)" artist-string-split "\n" mapc make-closure #[257 "\211\300\302\303\304!\300\242\"\240)\207" [V0 default-directory append file-expand-wildcards "*.flf"] 5 "\n\n(fn DIR)"] mapcar #[257 "\300\301\302#\207" [replace-regexp-in-string "\\.flf\\'" ""] 5 "\n\n(fn FILE)"]] 10 (#$ . 90565)])
#@38 Read any extra arguments for figlet.
(defalias 'artist-figlet-choose-font #[0 "\302>\203\303 \202
\304 \305\306	\307Q\310\311\"\"\211\312\230\203	\207\207" [system-type artist-figlet-default-font (windows-nt ms-dos) artist-figlet-get-font-list-windows artist-figlet-get-font-list completing-read "Select font (default " "): " mapcar #[257 "\211B\207" [] 3 "\n\n(fn FONT)"] ""] 6 (#$ . 91264) nil])
#@38 Read any extra arguments for figlet.
(defalias 'artist-figlet-get-extra-args #[0 "\300\301!\211\302\230?\205\211\207" [read-string "Extra args to figlet: " ""] 3 (#$ . 91676)])
#@38 Render TEXT using figlet.

(fn TEXT)
(defalias 'artist-figlet #[257 "\300 \301 \302#\207" [artist-figlet-choose-font artist-figlet-get-extra-args artist-figlet-run] 7 (#$ . 91861)])
#@140 At position X, Y, insert text TEXT.
If SEE-THRU is non-nil, then blanks in TEXT do not replace text
in the buffer.

(fn X Y TEXT SEE-THRU)
(defalias 'artist-text-insert-common #[1028 "\306\307\"\310GW\205\f\\\211\311\312`\"i\310U\203\"\312\202#\310\\SZy\210\313\314\311\312`\"i\310U\2039\312\202:\310\\SZy\"\210\315\310]\316\"\210\311\312`\"i\310U\203U\312\202V\310\\S\211^\211	]\211\266@\317\320\"\321\322\320\211\205\376\211@\203\362\211\211
GW\203\207
H\262\323U\203\362iT\311\312`\"i\310U\203\234\312\202\235\310\\S\211\311\312`\"i\310U\203\256\312\202\257\310\\SZy\210\313\314\311\312`\"i\310U\203\305\312\202\306\310\\SZy\"\210\315\310]\316\"\210\311\312`\"i\310U\203\341\312\202\342\310\\S\211^\211	]\211\266\202\367\324!\266\211A\262\202p+\266A\262T\262\202\207" [artist-draw-region-min-y artist-draw-region-max-y blink-matching-paren fill-column overwrite-mode artist-replacement-table artist-string-split "\n" 0 count-lines 1 insert-char 10 move-to-column t append nil overwrite-mode-textual 32765 32 artist-replace-char] 19 (#$ . 92053)])
#@109 At position X, Y, insert text TEXT.
Let text already in buffer shine thru the TEXT inserted.

(fn X Y TEXT)
(defalias 'artist-text-insert-see-thru #[771 "\300\301$\207" [artist-text-insert-common t] 8 (#$ . 93171)])
#@113 At position X, Y, insert text TEXT.
Let blanks in TEXT overwrite any text already in the buffer.

(fn X Y TEXT)
(defalias 'artist-text-insert-overwrite #[771 "\300\301$\207" [artist-text-insert-common nil] 8 (#$ . 93397)])
#@277 Prompt for text to render, render it at X,Y.
This is done by calling the function specified by
`artist-text-renderer-function', which must return a list of strings,
to be inserted in the buffer.

Text already in the buffer "shines thru" blanks in the rendered text.

(fn X Y)
(defalias 'artist-text-see-thru #[514 "\301\302!\205\n!\303#\207" [artist-text-renderer-function read-string "Type text to render: " artist-text-insert-see-thru] 8 (#$ . 93630)])
#@269 Prompt for text to render, render it at X,Y.
This is done by calling the function specified by
`artist-text-renderer-function', which must return a list of strings,
to be inserted in the buffer.

Blanks in the rendered text overwrite any text in the buffer.

(fn X Y)
(defalias 'artist-text-overwrite #[514 "\301\302!\205\n!\303#\207" [artist-text-renderer-function read-string "Type text to render: " artist-text-insert-overwrite] 8 (#$ . 94099)])
#@43 Retrieve the interval for repeated spray.
(defalias 'artist-spray-get-interval #[0 "\207" [artist-spray-interval] 1 (#$ . 94561)])
#@132 Generate N random points within a radius of RADIUS.
Returns a list of points.  Each point is on the form (X1 . Y1).

(fn N RADIUS)
(defalias 'artist-spray-random-points #[514 "\300\301V\203*\302\303\304!_\303!\305\306!_!\305\307!_!B\211B\266\204S\262\202\207" [nil 0 0.017453292519943295 random 359 round cos sin] 10 (#$ . 94700)])
#@30 Spray at X1, Y1.

(fn X1 Y1)
(defalias 'artist-spray #[514 "\211_\305\"\211\205\217\211@@\\A\\\306\"\211	>\211\204$\n\2021\211A\204.\211@\2021\211A@\211\307\310`\"i\311U\203B\310\202C\311\\SZy\210\312\313\307\310`\"i\311U\203Y\310\202Z\311\\SZy\"\210\314\311]\315\"\210\307\310`\"i\311U\203u\310\202v\311\\S\211^\211\f]\211\266\316!\266\211A\262\202\207" [artist-spray-radius artist-spray-chars artist-spray-new-char artist-draw-region-min-y artist-draw-region-max-y artist-spray-random-points artist-get-char-at-xy-conv count-lines 1 0 insert-char 10 move-to-column t artist-replace-char] 18 (#$ . 95050)])
#@72 Clear circle CIRCLE at X1, Y1 through X2, Y2.

(fn CIRCLE X1 Y1 X2 Y2)
(defalias 'artist-spray-clear-circle #[1285 "\300!\207" [artist-undraw-circle] 7 (#$ . 95697)])
#@81 Set spray radius from CIRCLE at X1, Y1 through X2, Y2.

(fn CIRCLE X1 Y1 X2 Y2)
(defalias 'artist-spray-set-radius #[1285 "ZZ\301\302\211_\211_\\!!\211\303U\205\304\211\207" [artist-spray-radius round sqrt 0 1] 13 (#$ . 95871)])
#@111 Erase a character at X1, Y1.
The character is replaced with the character in `artist-erase-char'.

(fn X1 Y1)
(defalias 'artist-erase-char #[514 "\211\303\304`\"i\305U\203\304\202\305\\SZy\210\306\307\303\304`\"i\305U\203(\304\202)\305\\SZy\"\210\310\305]\311\"\210\303\304`\"i\305U\203D\304\202E\305\\S\211^\211	]\211\266\312\n!\207" [artist-draw-region-min-y artist-draw-region-max-y artist-erase-char count-lines 1 0 insert-char 10 move-to-column t artist-replace-char] 10 (#$ . 96117)])
#@66 Erase rectangle RECT from X1, Y1, X2, Y2.

(fn RECT X1 Y1 X2 Y2)
(defalias 'artist-erase-rect #[1285 "\305\211\211\306$\210\307%,\207" [artist-erase-char artist-fill-char artist-line-char artist-fill-char-set artist-line-char-set t artist-draw-rect artist-fill-rect] 11 (#$ . 96630)])
#@498 Find one endpoint for line through X1, Y1.
The endpoint is searched for in the direction defined by STEP-X, STEP-Y,
accepting characters in the list ACCEPT-SET, stopping immediately
when finding characters in the list REJECT-SET.  Fuzziness, that is
the number of consecutive characters not in ACCEPT-SET to allow as
part of the line, is determined by the variable `artist-vaporize-fuzziness'.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X1 Y1 STEP-X STEP-Y ACCEPT-SET REJECT-SET)
(defalias 'artist-vap-find-endpoint #[1542 "\301\211\204\214\302\"\211>\203\266\303\202\211>\203G\262\262\n\\\262	\\\262\304W\204A\304W\203\210\266\303\202\304V\203r>\204r
\\\262\211\f\\\262\302\"\262S\262\202L>\203\203\262	\262\266\202\303\262\266\210\202B\207" [artist-vaporize-fuzziness nil artist-get-char-at-xy-conv t 0] 18 (#$ . 96936)])
#@117 Find endpoints for a horizontal line through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X Y)
(defalias 'artist-vap-find-endpoints-horiz #[514 "\300\301\302\303\304&\300\305\302\306\307&D\207" [artist-vap-find-endpoint 1 0 (45 43) (32) -1 (45 43) (32)] 10 (#$ . 97857)])
#@115 Find endpoints for a vertical line through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X Y)
(defalias 'artist-vap-find-endpoints-vert #[514 "\300\301\302\303\304&\300\301\305\306\307&D\207" [artist-vap-find-endpoint 0 1 (124 43) (32) -1 (124 43) (32)] 10 (#$ . 98163)])
#@129 Find endpoints for a diagonal line (made by /'s) through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X Y)
(defalias 'artist-vap-find-endpoints-swne #[514 "\300\301\302\303\304&\300\302\301\305\306&D\207" [artist-vap-find-endpoint 1 -1 (47 88) (32) (47 88) (32)] 10 (#$ . 98468)])
#@129 Find endpoints for a diagonal line (made by \'s) through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X Y)
(defalias 'artist-vap-find-endpoints-nwse #[514 "\300\301\211\302\303&\300\304\211\305\306&D\207" [artist-vap-find-endpoint 1 (92 88) (32) -1 (92 88) (32)] 10 (#$ . 98783)])
#@138 Given a point X1, Y1, return a list of endpoints of lines through X, Y.
An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X Y)
(defalias 'artist-vap-find-endpoints #[514 "?\205H\301\"\211\302\267\202E\303\"\202F\304\"\202F\305\"\202F\306\"\202F\307\303\"\304\"\"\202F\307\305\"\306\"\"\202F\310\262\207" [artist-line-char-set artist-get-char-at-xy-conv #s(hash-table size 6 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (45 15 124 22 47 29 92 36 43 43 88 56)) artist-vap-find-endpoints-horiz artist-vap-find-endpoints-vert artist-vap-find-endpoints-swne artist-vap-find-endpoints-nwse append nil] 8 (#$ . 99098)])
#@44 Group elements in list L in pairs.

(fn L)
(defalias 'artist-vap-group-in-pairs #[257 "\211\204\300\207\211A\204\f\207\301@A@DC\302AA!\"\207" [nil append artist-vap-group-in-pairs] 5 (#$ . 99774)])
#@121 Given ENDPOINT1 and ENDPOINT2, vaporize the line between them.
An endpoint is a pair (X . Y).

(fn ENDPOINT1 ENDPOINT2)
(defalias 'artist-vaporize-by-endpoints #[514 "@A@A\302$\303H\304H\305H\306	Z!\306\nZ!\306\nZ!\306Z!\306\fZ!\306
\fZ!\306
\fZ!\306
Z!\257\234\307Y\205\316\310\"\311\"\211\312\313`\"i\307U\203v\313\202w\307\\SZy\210\314\315\312\313`\"i\307U\203\215\313\202\216\307\\SZy\"\210\316\307]\317\"\210\312\313`\"i\307U\203\251\313\202\252\307\\S\211^\211	]\211\266\320!\266\\\262\211\\\262S\262\202W\207" [artist-draw-region-min-y artist-draw-region-max-y artist-find-direction [1 1 0 -1 -1 -1 0 1] [0 1 1 1 0 -1 -1 -1] [45 92 124 47 45 92 124 47] abs 0 artist-get-char-at-xy-conv artist-unintersection-char count-lines 1 insert-char 10 move-to-column t artist-replace-char] 23 (#$ . 99985)])
#@259 Vaporize (erase) the straight line through X1, Y1.
Do this by replacing the characters that forms the line with
`artist-erase-char'.  Output is a list of endpoints for lines through
X1, Y1.  An endpoint is a cons pair, (ENDPOINT-X . ENDPOINT-Y).

(fn X1 Y1)
(defalias 'artist-vaporize-line #[514 "\300\"\301\302\303!\"\210\207" [artist-vap-find-endpoints mapc #[257 "\211@A@\300\"\207" [artist-vaporize-by-endpoints] 6 "\n\n(fn ENDPOINTS)"] artist-vap-group-in-pairs] 7 (#$ . 100868)])
#@57 Vaporize lines reachable from point X1, Y1.

(fn X1 Y1)
(defalias 'artist-vaporize-lines #[514 "\300C\301\302\303\"\304\"\"\210\211\242??\205/\211\242\211\242A\240\210\242\305@A\"\301\302\306\"\"\266\202
\207" [nil mapc make-closure #[257 "\300\300\242B\240\207" [V0] 4 "\n\n(fn EP)"] artist-vap-find-endpoints artist-vaporize-line #[257 "\300\300\242B\240\207" [V0] 4 "\n\n(fn ENDPOINT)"]] 9 (#$ . 101366)])
#@149 Create a point-list for first quadrant.
Points go from (X-RADIUS, 0) to (0, Y-RADIUS).
Quadrant is generated around origin.

(fn X-RADIUS Y-RADIUS)
(defalias 'artist-ellipse-generate-quadrant #[514 "\211_\211_\300_\300_\301\302\302	_\301\303\301\302
\301\304\305\"\211\306I\210\211\307I\210\266\203C\"\262\310	
_[\\\311\f_\\!\262W\203\226T\262\\\262\302W\203c	\\\\\262\202xS\262Z\262\312\n[$\262\303\301\304\305\"\211\306I\210\211\307I\210\266\203C\"\262\202B\310	\313\\_\313\\_S_S_\\_[\\!\262\302V\203S\262Z\262\302V\203\332\n\\[\\\262\202\360T\262\\\262\312[$\262\303\301\304\305\"\211\306I\210\211\307I\210\266\203C\"\262\202\270\207" [2 nil 0 append make-vector 4 1 3 round 0.25 + 0.5] 21 (#$ . 101795)])
#@110 Create a new item at X, Y, with WIDTH.
This is for use in fill-info in ellipses and circles.

(fn X Y WIDTH)
(defalias 'artist-new-fill-item #[771 "\300\301\"\211\302I\210\211\303I\210\207" [make-vector 3 1 2] 7 (#$ . 102624)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-new-fill-item speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@58 Retrieve the x component of a FILL-ITEM.

(fn FILL-ITEM)
(defalias 'artist-fill-item-get-x #[257 "\211\300H\207" [0] 3 (#$ . 103007)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-get-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@68 Set the x component of a FILL-ITEM to NEW-X.

(fn FILL-ITEM NEW-X)
(defalias 'artist-fill-item-set-x #[514 "\300I\210\207" [0] 5 (#$ . 103296)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-set-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@58 Retrieve the y component of a FILL-ITEM.

(fn FILL-ITEM)
(defalias 'artist-fill-item-get-y #[257 "\211\300H\207" [1] 3 (#$ . 103598)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-get-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@68 Set the y component of a FILL-ITEM to NEW-Y.

(fn FILL-ITEM NEW-Y)
(defalias 'artist-fill-item-set-y #[514 "\300I\210\207" [1] 5 (#$ . 103887)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-set-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@62 Retrieve the width component of a FILL-ITEM.

(fn FILL-ITEM)
(defalias 'artist-fill-item-get-width #[257 "\211\300H\207" [2] 3 (#$ . 104189)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-get-width speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@80 Set the width component of a FILL-ITEM to NEW-WIDTH.

(fn FILL-ITEM NEW-WIDTH)
(defalias 'artist-fill-item-set-width #[514 "\300I\210\207" [2] 5 (#$ . 104490)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-fill-item-set-width speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@100 Add offsets X-CENTER and Y-CENTER to coordinates in POINT-LIST.

(fn X-CENTER Y-CENTER POINT-LIST)
(defalias 'artist-ellipse-point-list-add-center #[771 "\300\301\302#\"\207" [mapcar make-closure #[257 "\211\300\211\302H\262\\\302I\210\266\211\301\211\303H\262\\\303I\210\207" [V0 V1 0 1] 6 "\n\n(fn P)"]] 8 (#$ . 104813)])
#@97 Add offsets X-CENTER and Y-CENTER to fill-items in FILL-INFO.

(fn X-CENTER Y-CENTER FILL-INFO)
(defalias 'artist-ellipse-fill-info-add-center #[771 "\300\301\302#\"\207" [mapcar make-closure #[257 "\211\300\211\302H\262\\\302I\210\266\211\301\211\303H\262\\\303I\210\207" [V0 V1 0 1] 6 "\n\n(fn P)"]] 8 (#$ . 105157)])
#@81 Remove fill-infos from FILL-INFO that fills a zero-width field.

(fn FILL-INFO)
(defalias 'artist-ellipse-remove-0-fills #[257 "\211\204\300\207\211@\211\301H\262\302U\203\303A!\207\304@C\303A!\"\207" [nil 2 0 artist-ellipse-remove-0-fills append] 5 (#$ . 105497)])
#@132 Compute fill info for ellipse around 0,0 from POINT-LIST.
The POINT-LIST is expected to cover the first quadrant.

(fn POINT-LIST)
(defalias 'artist-ellipse-compute-fill-info #[257 "\300C\300\211C\301\302\303#\"\210\304\242\305\306\307\242!A\"\"\262\310!\207" [nil mapc make-closure #[257 "\211\211\302H\262\211\303H\262\304_S\302]Z\301\242\203!\301\242U\204>\300\305\300\242\306\307\"\211\303I\210\211\304I\210\266\203C\"\240\210\301\240\207" [V0 V1 0 1 2 append make-vector 3] 15 "\n\n(fn COORD)"] append mapcar #[257 "\211\211\300H\262\211\301H\262[\211\302H\262\303\304\"\211\301I\210\211\302I\210\207" [0 1 2 make-vector 3] 8 "\n\n(fn I)"] reverse artist-ellipse-remove-0-fills] 10 (#$ . 105778)])
#@94 Mirror a POINT-LIST describing first quadrant to create a complete ellipse.

(fn POINT-LIST)
(defalias 'artist-ellipse-mirror-quadrant #[257 "\301\211\302!@\211\211\303H\262\304U\203\211\303I\210\266\210\305\306\307\310!A\"\"\262\306\311\312\310!A!\"\262\305\"\207" [artist-ellipse-right-char nil last 3 47 append mapcar #[257 "\211\211\300H\262\211\301H\262\211\302H\262[\303U\203\304\202(\304U\203'\303\202(\305\306\"\211\302I\210\211\300I\210\207" [3 0 1 47 92 make-vector 4] 9 "\n\n(fn COORD)"] reverse #[257 "\211\211\302H\262\211\303H\262[\211\304H\262\305U\203\306\2022\306U\203'\305\2022U\2031	\2022\307\310\"\211\304I\210\211\302I\210\207" [artist-ellipse-right-char artist-ellipse-left-char 3 0 1 47 92 make-vector 4] 9 "\n\n(fn COORD)"] butlast] 9 (#$ . 106521)])
#@519 Draw an ellipse with center at X1, Y1 and X-RADIUS and Y-RADIUS.

Output is an ellipse, which is a list (END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a two-element vector on the form [POINT-LIST FILL-INFO].

POINT-LIST is a list of vectors on the form [X Y SAVED-CHAR NEW-CHAR].
FILL-INFO is a list of vectors on the form [X Y ELLIPSE-WIDTH-ON-THIS-LINE].

Ellipses with zero Y-RADIUS are not drawn correctly.

(fn X1 Y1 X-RADIUS Y-RADIUS)
(defalias 'artist-draw-ellipse-general #[1028 "\300\"\301!\302\303\304\"\305!\262\306!\262\307#\262\310#\262\311\312\313\314!!\"\262\211\304I\210\211\315I\210\316\317\"\317\"#\207" [artist-ellipse-generate-quadrant artist-ellipse-compute-fill-info make-vector 2 0 artist-calculate-new-chars artist-ellipse-mirror-quadrant artist-ellipse-point-list-add-center artist-ellipse-fill-info-add-center mapcar #[257 "\211\211\304H\262\211\305H\262\211\306\305`\"i\304U\203\305\202\304\\SZy\210\307\310\306\305`\"i\304U\2032\305\2023\304\\SZy\"\210\311\304]\312\"\210\306\305`\"i\304U\203N\305\202O\304\\S\211^\211	]\211\266\n\203e\313!\210\207\313\211\314H\262!\210\207" [artist-draw-region-min-y artist-draw-region-max-y artist-line-char-set artist-line-char 0 1 count-lines insert-char 10 move-to-column t artist-replace-char 3] 9 "\n\n(fn COORD)"] artist-modify-new-chars artist-save-chars-under-point-list 1 artist-make-2point-object artist-make-endpoint] 12 (#$ . 107356)])
#@522 Draw an ellipse with center at X1, Y1 and X-RADIUS and Y-RADIUS.

Output is an ellipse, which is a list (END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a two-element vector on the form [POINT-LIST FILL-INFO].

POINT-LIST is a list of vectors on the form [X Y SAVED-CHAR NEW-CHAR].
FILL-INFO is a list of vectors on the form [X Y ELLIPSE-WIDTH-ON-THIS-LINE].

The Y-RADIUS must be 0, but the X-RADIUS must not be 0.

(fn X1 Y1 X-RADIUS Y-RADIUS)
(defalias 'artist-draw-ellipse-with-0-height #[1028 "\304\305_!S\306_\304!ZT\203	\202\307\310\311\312\305\310\"W\203\\\211\n\311\312\313\"\211\306I\210\211\314I\210\266\203\211\f\211\315\306`\"i\310U\203P\306\202Q\310\\SZy\210\316\317\315\306`\"i\310U\203g\306\202h\310\\SZy\"\210\320\310]\321\"\210\315\306`\"i\310U\203\203\306\202\204\310\\S\211\n^\211]\211\266\315\306`\"i\310U\203\237\306\202\240\310\\S\211\n^\211]\210g\266\202\305I\210\266\211\315\306`\"i\310U\203\310\306\202\311\310\\SZy\210\316\317\315\306`\"i\310U\203\337\306\202\340\310\\SZy\"\210\320\310]\321\"\210\315\306`\"i\310U\203\373\306\202\374\310\\S\211\n^\211]\211\266\322!\210\323C\"\262T\262\266\202\211\310I\210\211\306\311I\210\324\325\"\325\n\n\"#\207" [artist-line-char-set artist-line-char artist-draw-region-min-y artist-draw-region-max-y abs 2 1 45 0 nil make-vector 4 3 count-lines insert-char 10 move-to-column t artist-replace-char append artist-make-2point-object artist-make-endpoint] 23 (#$ . 108906)])
#@443 Draw an ellipse with center at X1, Y1 and point X2,Y2.

Output is an ellipse, which is a list (END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a two-element vector on the form [POINT-LIST FILL-INFO].

POINT-LIST is a list of vectors on the form [X Y SAVED-CHAR NEW-CHAR].
FILL-INFO is a list of vectors on the form [X Y ELLIPSE-WIDTH-ON-THIS-LINE].

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-ellipse #[1028 "\203\f	\203\f\n\202\205\f\211\305Z!\305Z!\306\307_!\306\307_!U\203BU\204B\310$\202J\311$*\207" [artist-borderless-shapes artist-fill-char-set artist-fill-char artist-line-char-set artist-line-char abs round 1.4142135623730951 artist-draw-ellipse-with-0-height artist-draw-ellipse-general] 14 (#$ . 110503)])
#@31 Undraw ELLIPSE.

(fn ELLIPSE)
(defalias 'artist-undraw-ellipse #[257 "\211\205\300!\301H\302\303\"\262\207" [artist-2point-get-shapeinfo 0 mapcar #[257 "\211\211\302H\262\211\303H\262\211\304\303`\"i\302U\203\303\202\302\\SZy\210\305\306\304\303`\"i\302U\2032\303\2023\302\\SZy\"\210\307\302]\310\"\210\304\303`\"i\302U\203N\303\202O\302\\S\211^\211	]\211\266\311\211\312H\262!\210\207" [artist-draw-region-min-y artist-draw-region-max-y 0 1 count-lines insert-char 10 move-to-column t artist-replace-char 2] 9 "\n\n(fn COORD)"]] 5 (#$ . 111336)])
#@441 Draw a circle with center at X1, Y1 and point X2,Y2.

Output is an ellipse, which is a list (END-POINT-1 END-POINT-2 SHAPE-INFO).

END-POINT-1 and END-POINT-2 are two-element vectors on the form [X Y].
SHAPE-INFO is a two-element vector on the form [POINT-LIST FILL-INFO].

POINT-LIST is a list of vectors on the form [X Y SAVED-CHAR NEW-CHAR].
FILL-INFO is a list of vectors on the form [X Y ELLIPSE-WIDTH-ON-THIS-LINE].

(fn X1 Y1 X2 Y2)
(defalias 'artist-draw-circle #[1028 "\203\f	\203\f\n\202\205\f\211\306Z!\306Z!\307\310\211_
_
__\\!!\307
\245!\311$*\207" [artist-borderless-shapes artist-fill-char-set artist-fill-char artist-line-char-set artist-line-char artist-aspect-ratio abs round sqrt artist-draw-ellipse-general] 14 (#$ . 111915)])
(defalias 'artist-undraw-circle 'artist-undraw-ellipse)
#@104 Fill an ELLIPSE centered at X,Y with radius X-RADIUS and Y-RADIUS.

(fn ELLIPSE X Y X-RADIUS Y-RADIUS)
(defalias 'artist-fill-ellipse #[1285 "\300!\301H\302\303\"\207" [artist-2point-get-shapeinfo 1 mapcar #[257 "\211\211\303H\262\211\304H\262\211\305\304`\"i\303U\203\304\202\303\\SZy\210\306\307\305\304`\"i\303U\2032\304\2023\303\\SZy\"\210\310\303]\311\"\210\305\304`\"i\303U\203N\304\202O\303\\S\211^\211	]\211\266\312\n\211\313H\262\"\210\207" [artist-draw-region-min-y artist-draw-region-max-y artist-fill-char 0 1 count-lines insert-char 10 move-to-column t artist-replace-chars 2] 9 "\n\n(fn FILL-ITEM)"]] 9 (#$ . 112750)])
(defalias 'artist-fill-circle 'artist-fill-ellipse)
#@88 Copy rectangle RECT drawn from X1, Y1 to X2, Y2, then clear it.

(fn RECT X1 Y1 X2 Y2)
(defalias 'artist-cut-rect #[1285 "\300!\210\301$\210\302%\207" [artist-undraw-rect artist-copy-generic artist-erase-rect] 11 (#$ . 113462)])
#@99 Copy a SQUARE drawn from X1, Y1 to X2, Y2 (made square), then clears it.

(fn SQUARE X1 Y1 X2 Y2)
(defalias 'artist-cut-square #[1285 "\300!\210\301$\211\302\234\303\234\304\234\305\234\306$\210\307\n%\207" [artist-undraw-square artist-rect-corners-squarify 0 1 2 3 artist-copy-generic artist-erase-rect] 16 (#$ . 113707)])
#@92 Retrieve contents from the buffer at X, Y.  WIDTH characters are returned.

(fn X Y WIDTH)
(defalias 'artist-get-buffer-contents-at-xy #[771 "\211\302\303`\"i\304U\203\303\202\304\\SZy\210\305\306\302\303`\"i\304U\203(\303\202)\304\\SZy\"\210\307\304]\310\"\210\302\303`\"i\304U\203D\303\202E\304\\S\211^\211	]\211\266`\212\\\211\302\303`\"i\304U\203g\303\202h\304\\SZy\210\305\306\302\303`\"i\304U\203~\303\202\304\\SZy\"\210\307\304]\310\"\210\302\303`\"i\304U\203\232\303\202\233\304\\S\211^\211	]\211\266`)\311\"\210\212\\\211\302\303`\"i\304U\203\303\303\202\304\304\\SZy\210\305\306\302\303`\"i\304U\203\332\303\202\333\304\\SZy\"\210\307\304]\310\"\210\302\303`\"i\304U\203\366\303\202\367\304\\S\211^\211	]\211\266`)\262{\207" [artist-draw-region-min-y artist-draw-region-max-y count-lines 1 0 insert-char 10 move-to-column t untabify] 13 (#$ . 114054)])
#@185 Copy a rectangular area with corners at X1, Y1 and X2, Y2.
Output is a copy buffer, a list of strings, representing the
original contents of that area in the buffer.

(fn X1 Y1 X2 Y2)
(defalias 'artist-copy-generic #[1028 "^^]]ZT\303X\203)\304#B\262T\262\202\2033\305!\211\207\305!\211\207" [artist-interface-with-rect killed-rectangle artist-copy-buffer nil artist-get-buffer-contents-at-xy reverse] 14 (#$ . 114976)])
#@73 Copy rectangle RECT drawn from X1, Y1 to X2, Y2.

(fn RECT X1 Y1 X2 Y2)
(defalias 'artist-copy-rect #[1285 "\300!\210\301$\207" [artist-undraw-rect artist-copy-generic] 10 (#$ . 115432)])
#@87 Copy a SQUARE drawn from X1, Y1 to X2, Y2 (but made square).

(fn SQUARE X1 Y1 X2 Y2)
(defalias 'artist-copy-square #[1285 "\300!\210\301$\211\302\234\303\234\304\234\305\234\306$\207" [artist-undraw-square artist-rect-corners-squarify 0 1 2 3 artist-copy-generic] 15 (#$ . 115631)])
#@57 Paste the contents of the copy-buffer at X,Y.

(fn X Y)
(defalias 'artist-paste #[514 "\203	\202	\n\211\203\211??\205\211\306\307`\"i\310U\203$\307\202%\310\\SZy\210\311\312\306\307`\"i\310U\203;\307\202<\310\\SZy\"\210\313\310]\314\"\210\306\307`\"i\310U\203W\307\202X\310\\S\211^\211\f]\211\266\211@\315\316\315\"\317\320\315\211\205\211@\203\370\211\211GW\203\215H\262\321U\203\370iT\306\307`\"i\310U\203\242\307\202\243\310\\S\211\306\307`\"i\310U\203\264\307\202\265\310\\SZy\210\311\312\306\307`\"i\310U\203\313\307\202\314\310\\SZy\"\210\313\310]\314\"\210\306\307`\"i\310U\203\347\307\202\350\310\\S\211^\211\f]\211\266\202\375\322!\266\211A\262\202t+\266\211A\262T\262\202
\323\324!\207" [artist-interface-with-rect killed-rectangle artist-copy-buffer artist-draw-region-min-y artist-draw-region-max-y blink-matching-paren count-lines 1 0 insert-char 10 move-to-column t nil append overwrite-mode-textual 32765 32 artist-replace-char message "Nothing to paste" fill-column overwrite-mode artist-replacement-table] 15 (#$ . 115933)])
#@62 Determine if the position X is too far to the right.

(fn X)
(defalias 'artist-ff-too-far-right #[257 "\247\203	\211V\207\302\267\202\211\303 \304ZV\207\211	V\207\305\306!\207" [artist-flood-fill-right-border fill-column #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (window-width 15 fill-column 22)) window-width 2 error "Invalid value for `artist-flood-fill-right-border'"] 4 (#$ . 117045)])
#@70 Find the rightmost position in this run, starting at X, Y.

(fn X Y)
(defalias 'artist-ff-get-rightmost-from-xy #[514 "\212\300\"\211T\262\301!\204#\300\"U\203#\262T\262\202\n\262)\207" [artist-get-char-at-xy-conv artist-ff-too-far-right] 8 (#$ . 117490)])
#@77 Determine whether the position X,Y is on the topmost line or not.

(fn X Y)
(defalias 'artist-ff-is-topmost-line #[514 "\211\300U\207" [0] 4 (#$ . 117769)])
#@80 Determine whether the position X,Y is on the bottommost line or not.

(fn X Y)
(defalias 'artist-ff-is-bottommost-line #[514 "\212db\210\300 \210\301\302`\"i\303U\203\302\202\303\\S`dU\203%SY\202(Y\262)\207" [beginning-of-line count-lines 1 0] 5 (#$ . 117932)])
#@87 Flood-fill starting at X1, Y1.  Fill with the char in `artist-fill-char'.

(fn X1 Y1)
(defalias 'artist-flood-fill #[514 "\306\307\"\203
	\202\n\211	U\204+\306\310\311\"\211\312I\210\211\313I\210\266\203C\262??\205{\211A\262\242\211\211\314H\262\211\312H\262\314\211\211\306\211\315\211\316		\"\262\317		\"?\262\320		\"?\262\262\262	\314Y\203\276\n\307\n\n\"U\203\276\203\262\307		S\"\211\fU\203\260\211U\204\260		S\306\310\311\"\211\312I\210\211\313I\210\266\203
B\262
\262\262S\262	\202j\262\262	Y\203	\203\307		T\"\211\fU\203\377\211U\204\377		T\306\310\311\"\211\312I\210\211\313I\210\266\203
B\262
\262S\262	\202\304\211\321\312`\"i\314U\203\312\202\314\\SZy\210\322\323\321\312`\"i\314U\2033\312\2024\314\\SZy\"\210\324\314]\325\"\210\321\312`\"i\314U\203O\312\202P\314\\S\211^\211\f]\211\266\326		ZT\"\210
\203v\327 \203s\330 \210\331 \210\266\n\202+)\207" [artist-fill-char-set artist-fill-char artist-default-fill-char artist-draw-region-min-y artist-draw-region-max-y artist-flood-fill-show-incrementally nil artist-get-char-at-xy-conv make-vector 4 1 3 0 -1 artist-ff-get-rightmost-from-xy artist-ff-is-topmost-line artist-ff-is-bottommost-line count-lines insert-char 10 move-to-column t artist-replace-chars input-pending-p discard-input artist-update-display] 22 (#$ . 118211)])
#@169 Create an arrow point at X, Y for a line in direction DIRECTION.
Optional argument STATE can be used to set state (default is nil).

(fn X Y DIRECTION &optional STATE)
(defalias 'artist-make-arrow-point #[1027 "\212\302\303\304\"\305 \211\306\307`\"i\304U\203\307\202\304\\SZy\210\310\311\306\307`\"i\304U\203/\307\2020\304\\SZy\"\210\312\304]\313\"\210\306\307`\"i\304U\203K\307\202L\304\\S\211^\211	]\211\266\211`\314\223\210\304I\210\307\211\306\307`\"i\304U\203z\307\202{\304\\SZy\210\310\311\306\307`\"i\304U\203\221\307\202\222\304\\SZy\"\210\312\304]\313\"\210\306\307`\"i\304U\203\255\307\202\256\304\\S\211^\211	]\211\266\306\307`\"i\304U\203\311\307\202\312\304\\S\211^\211	]\210g\266\202I\210\315I\210\316I\210\266\202)\207" [artist-draw-region-min-y artist-draw-region-max-y make-vector 4 0 make-marker count-lines 1 insert-char 10 move-to-column t nil 2 3] 18 (#$ . 119623)])
#@68 Retrieve the marker component of an ARROW-POINT.

(fn ARROW-POINT)
(defalias 'artist-arrow-point-get-marker #[257 "\211\300H\207" [0] 3 (#$ . 120565)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-arrow-point-get-marker speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@71 Retrieve the orig char component of an ARROW-POINT.

(fn ARROW-POINT)
(defalias 'artist-arrow-point-get-orig-char #[257 "\211\300H\207" [1] 3 (#$ . 120878)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-arrow-point-get-orig-char speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@71 Retrieve the direction component of an ARROW-POINT.

(fn ARROW-POINT)
(defalias 'artist-arrow-point-get-direction #[257 "\211\300H\207" [2] 3 (#$ . 121200)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-arrow-point-get-direction speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@67 Retrieve the state component of an ARROW-POINT.

(fn ARROW-POINT)
(defalias 'artist-arrow-point-get-state #[257 "\211\300H\207" [3] 3 (#$ . 121522)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-arrow-point-get-state speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@85 Set the state component of an ARROW-POINT to NEW-STATE.

(fn ARROW-POINT NEW-STATE)
(defalias 'artist-arrow-point-set-state #[514 "\300I\207" [3] 5 (#$ . 121832)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-arrow-point-set-state speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@26 Clear current endpoints.
(defalias 'artist-clear-arrow-points #[0 "\302\211\211\207" [artist-arrow-point-1 artist-arrow-point-2 nil] 3 (#$ . 122158)])
#@93 Generic function for setting arrow-points for poly-shapes from POINT-LIST.

(fn POINT-LIST)
(defalias 'artist-set-arrow-points-for-poly #[257 "\211\302\234\303\234\304!\305!\304!\305!\306$\307!@\307	\310\"@\304!\305!\304!\305!\306$\311\f\f\n#\311#\211\207" [artist-arrow-point-1 artist-arrow-point-2 0 1 artist-endpoint-get-x artist-endpoint-get-y artist-find-direction last 2 artist-make-arrow-point] 19 (#$ . 122317)])
#@143 Generic function for setting arrow-points for 2-point shapes.
The 2-point shape SHAPE is drawn from X1, Y1 to X2, Y2.

(fn SHAPE X1 Y1 X2 Y2)
(defalias 'artist-set-arrow-points-for-2points #[1285 "\302!\303!\304!\305!\304!\305!\306\307		$#\306\307$#\211\207" [artist-arrow-point-1 artist-arrow-point-2 artist-2point-get-endpoint1 artist-2point-get-endpoint2 artist-endpoint-get-x artist-endpoint-get-y artist-make-arrow-point artist-find-direction] 19 (#$ . 122777)])
#@63 Undraw current continuous shape with point at X, Y.

(fn X Y)
(defalias 'artist-key-undraw-continously #[514 "\300\207" [nil] 3 (#$ . 123276)])
#@57 Undraw current poly shape with point at X, Y.

(fn X Y)
(defalias 'artist-key-undraw-poly #[514 "\302!\211\205\n\211	!\207" [artist-curr-go artist-key-shape artist-go-get-undraw-fn-from-symbol] 5 (#$ . 123426)])
#@49 Undraw current 1-point shape at X, Y.

(fn X Y)
(defalias 'artist-key-undraw-1point #[514 "\300\207" [nil] 3 (#$ . 123646)])
#@49 Undraw current 2-point shape at X, Y.

(fn X Y)
(defalias 'artist-key-undraw-2points #[514 "\302!\211\205\n\211	!\207" [artist-curr-go artist-key-shape artist-go-get-undraw-fn-from-symbol] 5 (#$ . 123777)])
#@41 Common routine undrawing current shape.
(defalias 'artist-key-undraw-common #[0 "\303!i\304\305`\"i\306U\203\305\202\306\\S\307\267\202+\310\"\210\202V\311\"\210\202V\247\203>\305U\203>\312\"\210\202V\247\203Q\313U\203Q\314\"\210\202V\315\316\"\210\211\304\305`\"i\306U\203g\305\202h\306\\SZy\210\317\320\304\305`\"i\306U\203~\305\202\306\\SZy\"\210\321\306]\322\"\210\304\305`\"i\306U\203\232\305\202\233\306\\S\211	^\211\n]\211\207" [artist-curr-go artist-draw-region-min-y artist-draw-region-max-y artist-go-get-draw-how-from-symbol count-lines 1 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (artist-do-continously 27 artist-do-poly 35)) artist-key-undraw-continously artist-key-undraw-poly artist-key-undraw-1point 2 artist-key-undraw-2points message "Undrawing \"%s\"s is not yet implemented" insert-char 10 move-to-column t] 11 (#$ . 123992)])
#@49 Draw current continuous shape at X,Y.

(fn X Y)
(defalias 'artist-key-draw-continously #[514 "\302!\211\205\211\"\211\207" [artist-curr-go artist-key-shape artist-go-get-draw-fn-from-symbol] 6 (#$ . 124931)])
#@64 Draw current poly-point shape with nth point at X,Y.

(fn X Y)
(defalias 'artist-key-draw-poly #[514 "\303!\304	!\305	!\205$\211\207" [artist-curr-go artist-key-endpoint1 artist-key-shape artist-go-get-draw-fn-from-symbol artist-endpoint-get-x artist-endpoint-get-y] 10 (#$ . 125152)])
#@46 Draw current 1-point shape at X,Y.

(fn X Y)
(defalias 'artist-key-draw-1point #[514 "\302!\211\205\211\"\211\207" [artist-curr-go artist-key-shape artist-go-get-draw-fn-from-symbol] 6 (#$ . 125456)])
#@46 Draw current 2-point shape at X,Y.

(fn X Y)
(defalias 'artist-key-draw-2points #[514 "\303!\304	!\305	!\205$\211\207" [artist-curr-go artist-key-endpoint1 artist-key-shape artist-go-get-draw-fn-from-symbol artist-endpoint-get-x artist-endpoint-get-y] 10 (#$ . 125669)])
#@43 Common routine for drawing current shape.
(defalias 'artist-key-draw-common #[0 "\303!i\304\305`\"i\306U\203\305\202\306\\S\307\267\202+\310\"\210\202V\311\"\210\202V\247\203>\305U\203>\312\"\210\202V\247\203Q\313U\203Q\314\"\210\202V\315\316\"\210\211\304\305`\"i\306U\203g\305\202h\306\\SZy\210\317\320\304\305`\"i\306U\203~\305\202\306\\SZy\"\210\321\306]\322\"\210\304\305`\"i\306U\203\232\305\202\233\306\\S\211	^\211\n]\211\207" [artist-curr-go artist-draw-region-min-y artist-draw-region-max-y artist-go-get-draw-how-from-symbol count-lines 1 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (artist-do-continously 27 artist-do-poly 35)) artist-key-draw-continously artist-key-draw-poly artist-key-draw-1point 2 artist-key-draw-2points message "Drawing \"%s\"s is not yet implemented" insert-char 10 move-to-column t] 11 (#$ . 125958)])
#@32 Reset the current draw-region.
(defalias 'artist-draw-region-reset #[0 "\302\303\211\207" [artist-draw-region-max-y artist-draw-region-min-y 0 1000000] 2 (#$ . 126887)])
#@133 Trim lines in current draw-region from MIN-Y to MAX-Y.
Trimming here means removing white space at end of a line.

(fn MIN-Y MAX-Y)
(defalias 'artist-draw-region-trim-line-endings #[514 "\211W\203\f\262\262\212\211X\205s\302\211\303\304`\"i\302U\203%\304\202&\302\\SZy\210\305\306\303\304`\"i\302U\203<\304\202=\302\\SZy\"\210\307\302]\310\"\210\303\304`\"i\302U\203X\304\202Y\302\\S\211^\211	]\211\266\311\210\312 \210\211T\262\202\262)\207" [artist-draw-region-min-y artist-draw-region-max-y 0 count-lines 1 insert-char 10 move-to-column t nil delete-horizontal-space] 11 (#$ . 127066)])
#@51 Update current continuous shape at X,Y.

(fn X Y)
(defalias 'artist-key-do-continously-continously #[514 "\301!\211\205\211\"\207" [artist-curr-go artist-go-get-draw-fn-from-symbol] 6 (#$ . 127689)])
#@66 Update current poly-point shape with nth point at X,Y.

(fn X Y)
(defalias 'artist-key-do-continously-poly #[514 "\304!\305!\306	!\307	!\n\204\310 \210\311\"\207\203\"!\210\205.$\211\207" [artist-curr-go artist-key-endpoint1 artist-rubber-banding artist-key-shape artist-go-get-draw-fn-from-symbol artist-go-get-undraw-fn-from-symbol artist-endpoint-get-x artist-endpoint-get-y artist-no-rb-unset-point2 artist-no-rb-set-point2] 11 (#$ . 127900)])
#@48 Update current 1-point shape at X,Y.

(fn X Y)
(defalias 'artist-key-do-continously-1point #[514 "\300\207" [nil] 3 (#$ . 128376)])
#@63 Update current 2-point shape with 2nd point at X,Y.

(fn X Y)
(defalias 'artist-key-do-continously-2points #[514 "\304!\305!\306	!\307	!\n\204\310 \210\311\"\207\203\"!\210\205.$\211\207" [artist-curr-go artist-key-endpoint1 artist-rubber-banding artist-key-shape artist-go-get-draw-fn-from-symbol artist-go-get-undraw-fn-from-symbol artist-endpoint-get-x artist-endpoint-get-y artist-no-rb-unset-point2 artist-no-rb-set-point2] 11 (#$ . 128514)])
#@44 Common routine for updating current shape.
(defalias 'artist-key-do-continously-common #[0 "\303!i\304\305`\"i\306U\203\305\202\306\\S\307\267\202+\310\"\210\202V\311\"\210\202V\247\203>\305U\203>\312\"\210\202V\247\203Q\313U\203Q\314\"\210\202V\315\316\"\210\211\304\305`\"i\306U\203g\305\202h\306\\SZy\210\317\320\304\305`\"i\306U\203~\305\202\306\\SZy\"\210\321\306]\322\"\210\304\305`\"i\306U\203\232\305\202\233\306\\S\211	^\211\n]\211\207" [artist-curr-go artist-draw-region-min-y artist-draw-region-max-y artist-go-get-draw-how-from-symbol count-lines 1 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (artist-do-continously 27 artist-do-poly 35)) artist-key-do-continously-continously artist-key-do-continously-poly artist-key-do-continously-1point 2 artist-key-do-continously-2points message "Drawing \"%s\"s is not yet implemented" insert-char 10 move-to-column t] 11 (#$ . 128990)])
#@58 Set point for current continuous shape at X,Y.

(fn X Y)
(defalias 'artist-key-set-point-continously #[514 "\302!\303!\304!\305!\306!	\204\"\203R\"\266\202T\203-\"\210\203D \203D\203G\"\210\202G\307 \210\211\203R\211\"\210\266	?\211\207" [artist-curr-go artist-key-is-drawing artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-clear-arrow-points] 10 (#$ . 129970)])
#@163 Set point for current poly-point shape at X,Y.
If optional argument THIS-IS-LAST-POINT is non-nil, this point is the last.

(fn X Y &optional THIS-IS-LAST-POINT)
(defalias 'artist-key-set-point-poly #[770 "\306!\307!\310!\311!\312!\313!\314!\315!	\204c\203)\"\210\n\2047\316\"\210\202H\205G

$\317\"\317\"C\320 \210\321\322\323\324\325!\"\207\326\f!\327\f!\f\f\n\204\203\330 \210\205\202$\203\224\331!\326!\262\327!\266\202\332
\317\"C\"\f\204\314\262\211\262\317\"\n\204\271\316\"\210\202\310\205\307$\322\333!\207	\203\326	
!\210\203\354 \203\354\203\354
\"\210\203 \203\203
!\210\202\320 \210\203

!\210\334\211\334\211\207" [artist-curr-go artist-key-is-drawing artist-rubber-banding artist-key-shape artist-key-endpoint1 artist-key-poly-point-list artist-go-get-draw-fn-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-fill-pred-from-symbol artist-go-get-fill-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol artist-no-rb-set-point1 artist-make-endpoint artist-clear-arrow-points t message "%s" substitute-command-keys "First point set. Set next with \\[artist-key-set-point], set last with C-u \\[artist-key-set-point]" artist-endpoint-get-x artist-endpoint-get-y artist-no-rb-unset-points artist-2point-get-endpoint2 append "Point set" nil] 21 (#$ . 130523)])
#@55 Set point for current 1-point shape at X,Y.

(fn X Y)
(defalias 'artist-key-set-point-1point #[514 "\303!\304!\305!\306!\307!\310!\203\"\210\203(\"\210\2033\"\210\203J \203J\211\203M\211\"\210\202M\311 \210\203X\"\210\266\312\211\211\207" [artist-curr-go artist-key-shape artist-key-is-drawing artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-draw-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol artist-clear-arrow-points nil] 12 (#$ . 132052)])
#@70 Set first or second point in current 2-point shape at X,Y.

(fn X Y)
(defalias 'artist-key-set-point-2points #[514 "\305!\306!\307!\310!\311!\312!\313!\314!	\204V\203)\n\n\"\210\n\2047\315\n\n\"\210\202H\205G\n\n\f\f$\316\n\n\"\317 \210\320\211\207\321\f!\322\f!\n\204r\323 \210	\205q	$\203\202%\210\203\231 \203\231\203\231%\210\203\263 \203\263\203\266%\210\202\266\317 \210\203\306%\210\324\211\207" [artist-curr-go artist-key-is-drawing artist-rubber-banding artist-key-shape artist-key-endpoint1 artist-go-get-draw-fn-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-fill-pred-from-symbol artist-go-get-fill-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol artist-no-rb-set-point1 artist-make-endpoint artist-clear-arrow-points t artist-endpoint-get-x artist-endpoint-get-y artist-no-rb-unset-points nil] 18 (#$ . 132667)])
#@100 Common routine for setting point in current shape.
With non-nil ARG, set the last point.

(fn ARG)
(defalias 'artist-key-set-point-common #[257 "\305!i\306\307`\"i\310U\203\307\202\310\\S	\211\204\311 \210\312\267\202:\313\"\210\314\"\210\202e\315#\210\202e\247\203M\307U\203M\316\"\210\202e\247\203`\317U\203`\320\"\210\202e\321\322\"\210\n\203v\211\203v	\204v\323\f\"\210\211\306\307`\"i\310U\203\207\307\202\210\310\\SZy\210\324\325\306\307`\"i\310U\203\236\307\202\237\310\\SZy\"\210\326\310]\327\"\210\306\307`\"i\310U\203\272\307\202\273\310\\S\211^\211\f]\211\266\330	!\207" [artist-curr-go artist-key-is-drawing artist-trim-line-endings artist-draw-region-min-y artist-draw-region-max-y artist-go-get-draw-how-from-symbol count-lines 1 0 artist-draw-region-reset #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (artist-do-continously 35 artist-do-poly 48)) artist-key-set-point-continously artist-key-do-continously-continously artist-key-set-point-poly artist-key-set-point-1point 2 artist-key-set-point-2points message "Drawing \"%s\"s is not yet implemented" artist-draw-region-trim-line-endings insert-char 10 move-to-column t artist-mode-line-show-curr-operation] 13 (#$ . 133728)])
#@118 Move cursor up N lines (default is 1), updating current shape.
If N is negative, move cursor down.

(fn &optional N)
(defalias 'artist-previous-line #[256 "i[y\210\301\302\"\266\205\303 \207" [artist-key-is-drawing move-to-column t artist-key-do-continously-common] 5 (#$ . 135020) "p"])
#@118 Move cursor down N lines (default is 1), updating current shape.
If N is negative, move cursor up.

(fn &optional N)
(defalias 'artist-next-line #[256 "iy\210\301\302\"\266\205\303 \207" [artist-key-is-drawing move-to-column t artist-key-do-continously-common] 5 (#$ . 135321) "p"])
#@120 Move cursor backward N chars (default is 1), updating current shape.
If N is negative, move forward.

(fn &optional N)
(defalias 'artist-backward-char #[256 "\211\300V\203\301[!\207\301!\207" [0 artist-forward-char] 3 (#$ . 135617) "p"])
#@120 Move cursor forward N chars (default is 1), updating current shape.
If N is negative, move backward.

(fn &optional N)
(defalias 'artist-forward-char #[256 "\211\301Y\203\n\302\202\303\304!i\301_\\]\204\305\306\"\207\305\306\"\210\307 \207" [artist-key-is-drawing 0 1 -1 abs move-to-column t artist-key-do-continously-common] 8 (#$ . 135866) "p"])
#@96 Set a point for the current shape.  With optional ARG, set the last point.

(fn &optional ARG)
(defalias 'artist-key-set-point #[256 "\300!\207" [artist-key-set-point-common] 3 (#$ . 136232) "P"])
#@45 Set current fill character to be C.

(fn C)
(defalias 'artist-select-fill-char #[257 "\211\302=\203\f\303\304\305!\207\306\211\304\307\"\207" [artist-fill-char-set artist-fill-char 13 nil message "Fill canceled" t "Fill set to \"%c\""] 4 (#$ . 136436) "cType fill char (type RET to turn off): "])
#@45 Set current line character to be C.

(fn C)
(defalias 'artist-select-line-char #[257 "\211\303=\203\304\305\306!\210\202\307\211\305\310\"\210\n\205\311 \207" [artist-line-char-set artist-line-char artist-key-is-drawing 13 nil message "Normal lines" t "Line drawn with \"%c\"" artist-key-do-continously-common] 4 (#$ . 136744) "cType line char (type RET to turn off): "])
#@46 Set current erase character to be C.

(fn C)
(defalias 'artist-select-erase-char #[257 "\211\302=\203\303\304\305!\210\202\211\304\306\"\210	\205\307 \207" [artist-erase-char artist-key-is-drawing 13 32 message "Normal erasing" "Erasing with \"%c\"" artist-key-do-continously-common] 4 (#$ . 137132) "cType char to use when erasing (type RET for normal): "])
#@71 Convert a list of characters, CHAR-LIST, to a string.

(fn CHAR-LIST)
(defalias 'artist-charlist-to-string #[257 "\211\260\207" [] 2 (#$ . 137506)])
#@57 Convert a string, STR, to list of characters.

(fn STR)
(defalias 'artist-string-to-charlist #[257 "\300\301\"\207" [append nil] 4 (#$ . 137662)])
#@96 Set current spray characters to be CHARS, starting with INITIAL-CHAR.

(fn CHARS INITIAL-CHAR)
(defalias 'artist-select-spray-chars #[514 "\211\302\303\304!\305!#\207" [artist-spray-chars artist-spray-new-char message "Spray-chars set to \"%s\", initial: \"%s\"" artist-charlist-to-string char-to-string] 7 (#$ . 137816) (byte-code "\301\302\303!\"\304!\305\306\307@!\306\211\204H\301\310\311\n$!\262\305\232\203+\262\304!@\262\211\235??\262\204\310\312\307!\"\262\202\266\204D\207" [artist-spray-chars read-string "Select spray-can characters, lightest first: " artist-charlist-to-string artist-string-to-charlist "" nil char-to-string format "%sSelect initial-character, one of \"%s\" (%s): " "Not in spray-chars: \"%s\". "] 13)])
#@47 Select drawing operation OP-STR.

(fn OP-STR)
(defalias 'artist-select-operation #[257 "\304!\211\205\n\305!\204\306\307\"\210\203!	\232\204!\306\310!\210\203,\n\203,\311 \210\211\203A\n\203A	\312=\204A\313 \210\266\314!\207" [artist-key-is-drawing artist-key-draw-how artist-rubber-banding artist-curr-go artist-mt-get-symbol-from-keyword artist-go-get-draw-how-from-symbol error "Unknown drawing method: %s" "Cannot switch to a different kind of shape while drawing" artist-key-undraw-common 1 artist-key-draw-common artist-mode-line-show-curr-operation] 6 (#$ . 138589) (byte-code "\301\302\"C\207" [artist-key-compl-table completing-read "Select operation: "] 3)])
#@110 Toggle rubber-banding.
If optional argument STATE is positive, turn rubber-banding on.

(fn &optional STATE)
(defalias 'artist-toggle-rubber-banding #[256 "\203\302\303!\210\211\204	?\202\304!\305V\211\203\306\307!\207\306\310!\207" [artist-key-is-drawing artist-rubber-banding error "Cannot toggle rubber-banding while drawing" prefix-numeric-value 0 message "Rubber-banding is now on" "Rubber-banding is now off"] 3 (#$ . 139289) nil])
#@114 Toggle trimming of line-endings.
If optional argument STATE is positive, turn trimming on.

(fn &optional STATE)
(defalias 'artist-toggle-trim-line-endings #[256 "\211\204	?\202\301!\302V\211\203\303\304!\207\303\305!\207" [artist-trim-line-endings prefix-numeric-value 0 message "Trimming is now on" "Trimming is now off"] 3 (#$ . 139745) nil])
#@106 Toggle borders of shapes.
If optional argument STATE is positive, turn borders on.

(fn &optional STATE)
(defalias 'artist-toggle-borderless-shapes #[256 "\211\204	?\202\301!\302V\211\203\303\304!\207\303\305!\207" [artist-borderless-shapes prefix-numeric-value 0 message "Borders are now off" "Borders are now on"] 3 (#$ . 140106) nil])
#@44 Toggle first arrow for shape, if possible.
(defalias 'artist-toggle-first-arrow #[0 "\212??\205E\211\211\302H\262\211\303H\262\211\304H\262\211\305H\262	H?\306!b\210\211\2039\203=\307!\210\202=\307!\210\302I\266\211)\207" [artist-arrow-point-1 artist-arrows 3 0 2 1 marker-position artist-replace-char] 12 (#$ . 140458) nil])
#@45 Toggle second arrow for shape, if possible.
(defalias 'artist-toggle-second-arrow #[0 "\212??\205E\211\211\302H\262\211\303H\262\211\304H\262\211\305H\262	H?\306!b\210\211\2039\203=\307!\210\202=\307!\210\302I\266\211)\207" [artist-arrow-point-2 artist-arrows 3 0 2 1 marker-position artist-replace-char] 12 (#$ . 140813) nil])
#@27 Select drawing pen lines.
(defalias 'artist-select-op-pen-line #[0 "\300\301!\207" [artist-select-operation "Pen Line"] 2 (#$ . 141170) nil])
#@23 Select drawing lines.
(defalias 'artist-select-op-line #[0 "\300\301!\207" [artist-select-operation "line"] 2 (#$ . 141318) nil])
#@32 Select drawing straight lines.
(defalias 'artist-select-op-straight-line #[0 "\300\301!\207" [artist-select-operation "straight line"] 2 (#$ . 141454) nil])
#@28 Select drawing rectangles.
(defalias 'artist-select-op-rectangle #[0 "\300\301!\207" [artist-select-operation "rectangle"] 2 (#$ . 141617) nil])
#@25 Select drawing squares.
(defalias 'artist-select-op-square #[0 "\300\301!\207" [artist-select-operation "square"] 2 (#$ . 141768) nil])
#@28 Select drawing poly-lines.
(defalias 'artist-select-op-poly-line #[0 "\300\301!\207" [artist-select-operation "poly-line"] 2 (#$ . 141910) nil])
#@37 Select drawing straight poly-lines.
(defalias 'artist-select-op-straight-poly-line #[0 "\300\301!\207" [artist-select-operation "straight poly-line"] 2 (#$ . 142061) nil])
#@26 Select drawing ellipses.
(defalias 'artist-select-op-ellipse #[0 "\300\301!\207" [artist-select-operation "ellipse"] 2 (#$ . 142239) nil])
#@25 Select drawing circles.
(defalias 'artist-select-op-circle #[0 "\300\301!\207" [artist-select-operation "circle"] 2 (#$ . 142384) nil])
#@35 Select rendering text (see thru).
(defalias 'artist-select-op-text-see-thru #[0 "\300\301!\207" [artist-select-operation "text see-thru"] 2 (#$ . 142526) nil])
#@36 Select rendering text (overwrite).
(defalias 'artist-select-op-text-overwrite #[0 "\300\301!\207" [artist-select-operation "text overwrite"] 2 (#$ . 142692) nil])
#@18 Select spraying.
(defalias 'artist-select-op-spray-can #[0 "\300\301!\207" [artist-select-operation "spray-can"] 2 (#$ . 142861) nil])
#@35 Select setting size for spraying.
(defalias 'artist-select-op-spray-set-size #[0 "\300\301!\207" [artist-select-operation "spray set size"] 2 (#$ . 143002) nil])
#@28 Select erasing characters.
(defalias 'artist-select-op-erase-char #[0 "\300\301!\207" [artist-select-operation "erase char"] 2 (#$ . 143170) nil])
#@28 Select erasing rectangles.
(defalias 'artist-select-op-erase-rectangle #[0 "\300\301!\207" [artist-select-operation "erase rectangle"] 2 (#$ . 143323) nil])
#@33 Select vaporizing single lines.
(defalias 'artist-select-op-vaporize-line #[0 "\300\301!\207" [artist-select-operation "vaporize line"] 2 (#$ . 143486) nil])
#@36 Select vaporizing connected lines.
(defalias 'artist-select-op-vaporize-lines #[0 "\300\301!\207" [artist-select-operation "vaporize lines"] 2 (#$ . 143650) nil])
#@28 Select cutting rectangles.
(defalias 'artist-select-op-cut-rectangle #[0 "\300\301!\207" [artist-select-operation "cut rectangle"] 2 (#$ . 143819) nil])
#@25 Select cutting squares.
(defalias 'artist-select-op-cut-square #[0 "\300\301!\207" [artist-select-operation "cut square"] 2 (#$ . 143978) nil])
#@28 Select copying rectangles.
(defalias 'artist-select-op-copy-rectangle #[0 "\300\301!\207" [artist-select-operation "copy rectangle"] 2 (#$ . 144128) nil])
#@25 Select copying squares.
(defalias 'artist-select-op-copy-square #[0 "\300\301!\207" [artist-select-operation "cut square"] 2 (#$ . 144289) nil])
#@17 Select pasting.
(defalias 'artist-select-op-paste #[0 "\300\301!\207" [artist-select-operation "paste"] 2 (#$ . 144440) nil])
#@23 Select flood-filling.
(defalias 'artist-select-op-flood-fill #[0 "\300\301!\207" [artist-select-operation "flood-fill"] 2 (#$ . 144572) nil])
#@52 Perform the update of the X Windows pointer shape.
(defalias 'artist-update-pointer-shape #[0 "\300\301!\207" [set-mouse-color nil] 2 (#$ . 144720)])
#@86 Set the shape of the X Windows pointer to NEW-POINTER-SHAPE.

(fn NEW-POINTER-SHAPE)
(defalias 'artist-set-pointer-shape #[257 "\211\301 \207" [x-pointer-shape artist-update-pointer-shape] 2 (#$ . 144876)])
#@62 Check whether the shift-key is pressed in event EV.

(fn EV)
(defalias 'artist-event-is-shifted #[257 "\300\301!>\207" [shift event-modifiers] 4 (#$ . 145090)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-event-is-shifted speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@29 Function that does nothing.
(defalias 'artist-do-nothing #[0 "\300\207" [nil] 1 (#$ . 145407) nil])
#@66 Compute the corresponding up key sequence for event EV.

(fn EV)
(defalias 'artist-compute-up-event-key #[257 "\300!\301\302\303!P!\304\305!>\262\203\306\307\"\207\306\307\"\207" [event-basic-type make-symbol "S-" symbol-name shift event-modifiers make-vector 1] 7 (#$ . 145513)])
#@47 Perform drawing action for event EV.

(fn EV)
(defalias 'artist-down-mouse-1 #[257 "\306\307\310!>\262\"\311!	\n\312=\205\f\313\314!\315\316 \"\317\320$\216\312=\2034\321!!\210\322\316 \323#\210\324 \210\325\326!\210\327\267\202X\330!\210\202\204\331!\210\202\204\247\203k\332U\203k\333!\210\202\204\247\203~\334U\203~\335!\210\202\204\336\337\"\210\"\203\216\340	\n\"\210\211*\207" [artist-curr-go artist-draw-region-min-y artist-draw-region-max-y window-system x-pointer-shape echo-keystrokes artist-go-get-symbol-shift shift event-modifiers artist-go-get-draw-how-from-symbol x 0 artist-compute-up-event-key lookup-key current-global-map make-closure #[0 "\305=\203\n\306\300!\210\302\203\307\310 \301\302#\210\311\f!\207" [V0 V1 V2 window-system artist-key-is-drawing x artist-set-pointer-shape define-key current-global-map artist-mode-line-show-curr-operation] 4] artist-set-pointer-shape define-key artist-do-nothing artist-draw-region-reset artist-mode-line-show-curr-operation t #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (artist-do-continously 72 artist-do-poly 80)) artist-mouse-draw-continously artist-mouse-draw-poly 1 artist-mouse-draw-1point 2 artist-mouse-draw-2points message "Drawing \"%s\"s is not yet implemented" artist-draw-region-trim-line-endings artist-pointer-shape artist-trim-line-endings] 13 (#$ . 145809) "@e"])
#@61 Choose operation for event EV and operation OP.

(fn EV OP)
(defalias 'artist-mouse-choose-operation #[514 "\211C\211\242\300=\203\"\301!\302\303 \"\304\305$\216\306\303 \307#\210)\266\310\242@!\311\242@!<\204V\312\242@\313\"\312\242@\314\"\315\316!>\262\211\203N\202O\317!\320!\207\211<?\205_\321!\207" [no-popup-menus artist-compute-up-event-key lookup-key current-global-map make-closure #[0 "\300\304!\240\210\302\205\305\306 \301\302#\207" [V0 V1 V2 artist-popup-menu-table tmm-prompt define-key current-global-map] 4] define-key artist-do-nothing artist-go-get-draw-fn-from-symbol artist-fc-get-fn-from-symbol artist-go-get-symbol-shift nil t shift event-modifiers artist-go-get-keyword-from-symbol artist-select-operation call-interactively] 12 (#$ . 147252) (byte-code "\302\303!\211@\262!\210\304 \203\305\306	\"\202\307D\207" [last-input-event artist-popup-menu-table select-window event-start display-popup-menus-p x-popup-menu t no-popup-menus] 4)])
#@63 Erase character or rectangle, depending on event EV.

(fn EV)
(defalias 'artist-down-mouse-3 #[257 "\302\303!\210)\304	!\207" [artist-curr-go artist-key-is-drawing erase-char artist-down-mouse-1 artist-mode-line-show-curr-operation] 3 (#$ . 148256) "@e"])
#@98 From the last SHIFT-STATE and EV, determine if the shift-state has changed.

(fn SHIFT-STATE EV)
(defalias 'artist-shift-has-changed #[514 "\300\207" [nil] 3 (#$ . 148520)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put artist-shift-has-changed speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@89 Convert a window-relative coordinate COORD to a buffer-relative coordinate.

(fn COORD)
(defalias 'artist-coord-win-to-buf #[257 "\211@A\300 \212\301 b\210\302\303`\"i\304U\203\303\202\304\\S)\\\\B\207" [window-hscroll window-start count-lines 1 0] 8 (#$ . 148850)])
#@76 Adjust the X position with regards to `display-line-numbers-mode'.

(fn X)
(defalias 'artist--adjust-x #[257 "\300 \211\301U\203\n\207Z\302Z\207" [line-number-display-width 0 2] 4 (#$ . 149132)])
#@172 Generic function for shapes that require 1 point as input.
Operation is done continuously while the mouse button is hold down.
The event, EV, is the mouse event.

(fn EV)
(defalias 'artist-mouse-draw-continously #[257 "\211C\304\305\"\304\306\"\242\307\310!>\262C\211\242\203\202C\311\242!C\312\242!\313\242!\314\242!\315\242!C\316\242!\211\205@\211 \317\242!\320	\242!\321\242!\211\211@\262\322\323!!C\324\242@!C\242AC\305C\325\211@\262!\210
\203|
\242\242\"\210	\204\207\326\242\242\"\210\327\330\"\216\331\327\332&!\210)\211\242\203\270\333\242!\210\f\203\305\f\242\242\"\210\203\340 \203\340\203\343\242\242\"\210\202\343\334 \210\203\360\242\242\"\210\242\242\211\335\336`\"i\337U\203\336\202\337\\SZy\210\340\341\335\336`\"i\337U\203\336\202\337\\SZy\"\210\342\337]\306\"\210\335\336`\"i\337U\2036\336\2027\337\\S\211\n^\211]\211\207" [artist-curr-go artist-rubber-banding artist-draw-region-min-y artist-draw-region-max-y artist-go-get-symbol-shift nil t shift event-modifiers artist-go-get-draw-how-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-draw-fn-from-symbol artist-go-get-interval-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol event-start artist-coord-win-to-buf posn-col-row artist--adjust-x select-window artist-no-rb-set-point1 make-closure #[0 "\300\242\205	\301\300\242!\207" [V0 cancel-timer] 2] internal--track-mouse #[0 "\315\300\242\211\242\316=\262\204\317\320\300\242!>\205\320\311\321\322\323\300\242!!!\240\210\312\324\311\242@!\240\210\313\311\242A\240\210\314\242\203:\325\314\242!\210\310\323\300\242!\211@\262=\203\310\303\242\300\242\266\306\242\203Z\306\242\312\242\313\242\"\210\312\242\313\242\211\326\327`\"i\330U\203m\327\202n\330\\SZy\210\331\332\326\327`\"i\330U\203\204\327\202\205\330\\SZy\"\210\333\330]\334\"\210\326\327`\"i\330U\203\240\327\202\241\330\\S\211 ^ \211!]\211!\266\307\203\310\306\242\203\310\314\335\307\211\306\242\312\242\313\242%\240\210\300\336 \240\210\202\207" [V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 dragging mouse-movement down event-modifiers artist-coord-win-to-buf posn-col-row event-start artist--adjust-x cancel-timer count-lines 1 0 insert-char 10 move-to-column t run-at-time read--potential-mouse-event track-mouse artist-draw-region-min-y artist-draw-region-max-y] 8] cancel-timer artist-clear-arrow-points count-lines 1 0 insert-char 10 move-to-column] 37 (#$ . 149339)])
#@108 Generic function for shapes requiring several points as input.
The event, EV, is the mouse event.

(fn EV)
(defalias 'artist-mouse-draw-poly #[257 "\211C\304\305!\210\306\307\"C\306\310\"C\242\311\312!>\262C\211\242\203$\242\202&\242C\313\242!C\314\242!\315\242!\316\242!\317\242!C\320\242!C\321\242!C\322\242!C\323	\242!\324\n\242!\325\242!\211\211@\262\326\327!!C\330\242@!C\242AC\242C\242C\310C\307C\307C\307C\331\211@\262!\210\203\231\242\242\"\210	\204\246\332\242\242\"\210\333\334\335&!\210\336\242!\240\210\203\347\242!\210\242\203\242 \203
\242\203
\242\242!\210\242\203\f\203\f \203\203\"\242!\210\202\"\337 \210\203-\242!\210\242\242\211\340\341`\"i\342U\203@\341\202A\342\\SZy\210\343\344\340\341`\"i\342U\203W\341\202X\342\\SZy\"\210\345\342]\310\"\210\340\341`\"i\342U\203s\341\202t\342\\S\211\n^\211]\211\207" [artist-curr-go artist-rubber-banding artist-draw-region-min-y artist-draw-region-max-y message "Mouse-1: set new point, mouse-2: set last point" artist-go-get-symbol-shift nil t shift event-modifiers artist-go-get-draw-how-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-draw-fn-from-symbol artist-go-get-undraw-fn-from-symbol artist-go-get-fill-pred-from-symbol artist-go-get-fill-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol event-start artist-coord-win-to-buf posn-col-row artist--adjust-x select-window artist-no-rb-set-point1 internal--track-mouse make-closure #[0 "\323\242?\205\223\320\242\203e\324\325\300\242!>\204\326\325\300\242!>\203e<\2048\327 \210\321\306\242\2056\306\242\314\242\315\242\316\242\317\242$\240\210\321\242\203N\330\321\242!\314\331!\240\210\315\332!\240\266\322\333\314\242\315\242\"\322\242B\240\210\321\334\240\210\320\334\240\210\202\206\335\325\300\242!>\203\200\336\300\242!\337=\204\206\336\300\242!\340=\204\206\324\325\300\242!>\204\222\326\325\300\242!>\203\253\336\300\242!\337=\204\244\336\300\242!\340=\203\253\323\341\240\210\202\206\320\242\204}\335\325\300\242!>\203}\336\300\242!\342=\203}\305\242\343\303\242\204\317\302\242\202\321\301\242!=\204\335\344\345!\210\202v\301\346=\334\"\240\210\302\346=\341\"\240\210\303\300\242\347\325!>\262\240\210\304\303\242\203\302\242\202\301\242\240\210\305\343\304\242!\240\210\306\350\304\242!\240\210\307\351\304\242!\240\210\310\352\304\242!\240\210\311\353\304\242!\240\210\313\354\355\356\300\242!!!\240\210\316\357\313\242@!\240\210\317\313\242A\240\210<\203_\321\306\242\205Z\306\242\314\242\315\242\316\242\317\242$\240\210\202m\360\314\242\315\242\"\210\361\316\242\317\242\"\210\304\242=\362\341!\210)\320\341\240\210\202\206\300\242\211\242\363=\262\203>\320\242\203>\312\356\300\242!\211@\262=\203>\313\354\355\356\300\242!!!\240\210\316\357\313\242@!\240\210\317\313\242A\240\210\307\242\203\276\307\242\321\242!\210<\203\331\321\306\242\205\324\306\242\314\242\315\242\316\242\317\242$\240\210\202\343\364 \210\361\316\242\317\242\"\210\316\242\317\242\211\365\366`\"i\367U\203\366\366\202\367\367\\SZy\210\370\371\365\366`\"i\367U\203
\366\202\367\\SZy\"\210\372\367]\341\"\210\365\366`\"i\367U\203)\366\202*\367\\S\211>^>\211?]\211?\266\202\206\300\242\211\242\363=\262\203[\320\242\203[\312\356\300\242!\211@\262=\203\206\300\242\211\242\363=\262\203k\320\242\203\206\320\242\203\202\335\325\300\242!>\203\202\336\300\242!\342=\204\206\323\341\240\210\323\242\204\300\373 \240\210\202\207" [V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 click event-modifiers drag artist-no-rb-unset-points artist-2point-get-endpoint2 artist-endpoint-get-x artist-endpoint-get-y artist-make-endpoint nil down event-basic-type mouse-2 mouse-3 t mouse-1 artist-go-get-draw-how-from-symbol message "Cannot switch operation" artist-go-get-symbol-shift shift artist-go-get-draw-fn-from-symbol artist-go-get-undraw-fn-from-symbol artist-go-get-fill-pred-from-symbol artist-go-get-fill-fn-from-symbol artist-coord-win-to-buf posn-col-row event-start artist--adjust-x artist-no-rb-set-point1 artist-no-rb-set-point2 artist-mode-line-show-curr-operation mouse-movement artist-no-rb-unset-point2 count-lines 1 0 insert-char 10 move-to-column read--potential-mouse-event artist-rubber-banding artist-curr-go artist-draw-region-min-y artist-draw-region-max-y] 8] reverse artist-clear-arrow-points count-lines 1 0 insert-char 10 move-to-column] 50 (#$ . 151971) "@e"])
#@131 Generic function for shapes requiring only 1 point as input.
Operation is done once.  The event, EV, is the mouse event.

(fn EV)
(defalias 'artist-mouse-draw-1point #[257 "\303\304\"\303\305\"\306\307!>\262\211\203\202\310!\311!\312!\313!\314!\315!\316!\317\320!!\321@!A\322\211@\262!\210	\203N	\"\210\203Y\"\210\203d\"\210\203y \203y\203|\"\210\202|\323 \210\203\207\"\210\211\324\325`\"i\326U\203\230\325\202\231\326\\SZy\210\327\330\324\325`\"i\326U\203\257\325\202\260\326\\SZy\"\210\331\326]\305\"\210\324\325`\"i\326U\203\313\325\202\314\326\\S\211	^\211\n]\211\207" [artist-curr-go artist-draw-region-min-y artist-draw-region-max-y artist-go-get-symbol-shift nil t shift event-modifiers artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-draw-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol event-start artist-coord-win-to-buf posn-col-row artist--adjust-x select-window artist-clear-arrow-points count-lines 1 0 insert-char 10 move-to-column] 23 (#$ . 156628) "@e"])
#@102 Generic function for shapes requiring 2 points as input.
The event, EV, is the mouse event.

(fn EV)
(defalias 'artist-mouse-draw-2points #[257 "\211C\304\305\"\304\306\"\242\307\310!>\262C\211\242\203\202C\311\242!C\312\242!\313\242!\314\242!\315\242!C\316\242!C\317\242!C\320\242!C\321	\242!\322\n\242!\323\242!\211\211@\262\324\325!!C\326\242@!\242A\305C\305C\305C\327\211@\262!\210\203\203\"\210	\204\214\330\"\210\331\332\333&!\210	\204\323\334 \210\211\242\205\321\242\242\242$\240\210\203\350\242\242\242%\210\242\203\f\242 \203\f\n\242\203\f\n\242\242\242\242%\210	\203/	 \203/\2032\242\242\242%\210\2022\335 \210\203G\242\242\242%\210\242\242\211\336\337`\"i\340U\203Z\337\202[\340\\SZy\210\341\342\336\337`\"i\340U\203q\337\202r\340\\SZy\"\210\343\340]\306\"\210\336\337`\"i\340U\203\215\337\202\216\340\\S\211\n^\211]\211\207" [artist-curr-go artist-rubber-banding artist-draw-region-min-y artist-draw-region-max-y artist-go-get-symbol-shift nil t shift event-modifiers artist-go-get-draw-how-from-symbol artist-go-get-init-fn-from-symbol artist-go-get-prep-fill-fn-from-symbol artist-go-get-exit-fn-from-symbol artist-go-get-draw-fn-from-symbol artist-go-get-undraw-fn-from-symbol artist-go-get-fill-pred-from-symbol artist-go-get-fill-fn-from-symbol artist-go-get-arrow-pred-from-symbol artist-go-get-arrow-set-fn-from-symbol event-start artist-coord-win-to-buf posn-col-row artist--adjust-x select-window artist-no-rb-set-point1 internal--track-mouse make-closure #[0 "\300\242\211\242\321=\262\204\322\323\300\242!>\205\326\313\324\325\326\300\242!!!\240\210\316\327\313\242@!\240\210\317\313\242A\240\210\312\326\300\242!\211@\262=\203\316\"\203M\307\242\203P\307\242\320\242!\210\202P\330 \210\303\242\300\242\266\"\203o\320\306\242\205j\306\242\314\315\316\242\317\242$\240\210\202v\331\316\242\317\242\"\210\316\242\317\242\211\332\333`\"i\334U\203\211\333\202\212\334\\SZy\210\335\336\332\333`\"i\334U\203\240\333\202\241\334\\SZy\"\210\337\334]\340\"\210\332\333`\"i\334U\203\274\333\202\275\334\\S\211#^#\211$]\211$\266\300\341 \240\210\202\207" [V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 mouse-movement down event-modifiers artist-coord-win-to-buf posn-col-row event-start artist--adjust-x artist-no-rb-unset-point2 artist-no-rb-set-point2 count-lines 1 0 insert-char 10 move-to-column t read--potential-mouse-event artist-rubber-banding artist-draw-region-min-y artist-draw-region-max-y] 8] artist-no-rb-unset-points artist-clear-arrow-points count-lines 1 0 insert-char 10 move-to-column] 44 (#$ . 157797) "@e"])
#@41 Submit via mail a bug report on Artist.
(defalias 'artist-submit-bug-report #[0 "\302\303!\210\304\305!\205#\306C\307\310\311\"\242\"\210\312\313	P\242\314\211\315&\262\207" [artist-maintainer-address artist-version require reporter y-or-n-p "Do you want to submit a bug report on Artist? " (window-system window-system-version artist-rubber-banding artist-interface-with-rect artist-aspect-ratio artist-curr-go artist-key-poly-point-list artist-key-shape artist-key-draw-how artist-arrow-point-1 artist-arrow-point-2) mapc make-closure #[257 "\301!\205\211J?\205\300\302\300\242\"\240\207" [V0 boundp delq] 5 "\n\n(fn X)"] reporter-submit-bug-report "artist.el " nil "Hello Tomas,\n\nI have a nice bug report on Artist for you! Here it is:"] 8 (#$ . 160557) nil])
(byte-code "\300\301\302\303#\210\304\301\302\305#\210\306\307!\207" [defalias artist-uniq seq-uniq nil make-obsolete "28.1" provide artist] 4)

Youez - 2016 - github.com/yon3zu
LinuXploit