;ELC   
;;; Compiled
;;; in Emacs version 29.4
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\207" [require cl-lib xml dom] 2)#@191 Create a new, empty SVG image with dimensions WIDTH x HEIGHT.
ARGS can be used to provide `stroke' and `stroke-width' parameters to
any further elements added.

(fn WIDTH HEIGHT &rest ARGS)
(defalias 'svg-create #[642 "\300\301\302B\303B\304\305\306\307\310\"?\205 \311\312\313\n\"\"BBBB\"\207" [dom-node svg width height (version . "1.1") (xmlns . "http://www.w3.org/2000/svg") append plist-get :xmlns:xlink ((xmlns:xlink . "http://www.w3.org/1999/xlink")) svg--arguments nil] 14 (#$ . 165)])#@129 Add a gradient with ID to SVG.
TYPE is `linear' or `radial'.
STOPS is a list of percentage/color pairs.

(fn SVG ID TYPE STOPS)
(defalias 'svg-gradient #[1028 "\300\301\302\303=\203 \304\202 \305\306B\307B\310\311\"$\"\207" [svg--def apply dom-node linear linearGradient radialGradient id ((x1 . 0) (x2 . 0) (y1 . 0) (y2 . 1)) mapcar #[257 "\300\301\302\303\304@\"B\305ABD\"\207" [dom-node stop offset format "%s%%" stop-color] 7 "\n\n(fn STOP)"]] 13 (#$ . 671)])#@286 Create a rectangle on SVG, starting at position X/Y, of WIDTH/HEIGHT.
ARGS is a plist of modifiers.  Possible values are

:stroke-width PIXELS   The line width.
:stroke-color COLOR    The line color.
:gradient ID           The gradient ID to use.

(fn SVG X Y WIDTH HEIGHT &rest ARGS)
(defalias 'svg-rectangle #[1413 "\300\301\302\303B\304B\305B\306B\307\n\"BBBB\"\"\207" [svg--append dom-node rect width height x y svg--arguments] 17 (#$ . 1151)])#@104 Create a circle of RADIUS on SVG.
X/Y denote the center of the circle.

(fn SVG X Y RADIUS &rest ARGS)
(defalias 'svg-circle #[1156 "\300\301\302\303B\304B\305B\306\f	\"BBB\"\"\207" [svg--append dom-node circle cx cy r svg--arguments] 15 (#$ . 1619)])#@129 Create an ellipse of X-RADIUS/Y-RADIUS on SVG.
X/Y denote the center of the ellipse.

(fn SVG X Y X-RADIUS Y-RADIUS &rest ARGS)
(defalias 'svg-ellipse #[1413 "\300\301\302\303	B\304	B\305	B\306	B\307\n\"BBBB\"\"\207" [svg--append dom-node ellipse cx cy rx ry svg--arguments] 17 (#$ . 1886)])#@91 Create a line starting in X1/Y1, ending at X2/Y2 on SVG.

(fn SVG X1 Y1 X2 Y2 &rest ARGS)
(defalias 'svg-line #[1413 "\300\301\302\303	B\304B\305\nB\306	B\307\n\"BBBB\"\"\207" [svg--append dom-node line x1 x2 y1 y2 svg--arguments] 17 (#$ . 2192)])#@107 Create a polyline going through POINTS on SVG.
POINTS is a list of x/y pairs.

(fn SVG POINTS &rest ARGS)
(defalias 'svg-polyline #[642 "\300\301\302\303\304\305\306#B\307\"B\"\"\207" [svg--append dom-node polyline points mapconcat #[257 "\300\301@A#\207" [format "%s %s"] 5 "\n\n(fn PAIR)"] ", " svg--arguments] 12 (#$ . 2456)])#@106 Create a polygon going through POINTS on SVG.
POINTS is a list of x/y pairs.

(fn SVG POINTS &rest ARGS)
(defalias 'svg-polygon #[642 "\300\301\302\303\304\305\306#B\307\"B\"\"\207" [svg--append dom-node polygon points mapconcat #[257 "\300\301@A#\207" [format "%s %s"] 5 "\n\n(fn PAIR)"] ", " svg--arguments] 12 (#$ . 2801)])#@230 Insert IMAGE into the SVG structure.
IMAGE should be a file name if DATAP is nil, and a binary string
otherwise.  IMAGE-TYPE should be a MIME image type, like
"image/jpeg" or the like.

(fn SVG IMAGE IMAGE-TYPE DATAP &rest ARGS)
(defalias 'svg-embed #[1156 "\300\301\302\303\304			#B\305\n\"B\"\"\207" [svg--append dom-node image xlink:href svg--image-data svg--arguments] 14 (#$ . 3143)])#@354 Insert image placed at RELATIVE-FILENAME into the SVG structure.
RELATIVE-FILENAME will be searched in `file-name-directory' of the
image's `:base-uri' property.  If `:base-uri' is not specified for the
image, then embedding won't work.  Embedding large images using this
function is much faster than `svg-embed'.

(fn SVG RELATIVE-FILENAME &rest ARGS)
(defalias 'svg-embed-base-uri-image #[642 "\300\301\302\303B\304\"B\"\"\207" [svg--append dom-node image xlink:href svg--arguments] 11 (#$ . 3546)])#@44 Add TEXT to SVG.

(fn SVG TEXT &rest ARGS)
(defalias 'svg-text #[642 "\300\301\302\303\"\304!#\"\207" [svg--append dom-node text svg--arguments svg--encode-text] 10 (#$ . 4060)])#@13 

(fn TEXT)
(defalias 'svg--encode-text #[257 "\300\301\302\"r\211q\210\303\304\"\216c\210\305\211\2035 \211@eb\210\306@\307\302#\203. \310A\302\211\307$\210\202 A\266\202\202 \210eb\210m\204\\ g\211\311W\203K \312u\266\2029 \313\312!\210\314\315\316\"\317\261\266\2029 \320 *\207" [generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] (("&" . "&amp;") ("<" . "&lt;") (">" . "&gt;")) search-forward nil replace-match 128 1 delete-char "&#" format "%d" ";" buffer-string] 9 (#$ . 4251)])#@17 

(fn SVG NODE)
(defalias 'svg--append #[514 "\300\211@:\203 \211@\202 \211A@\262\236A\2053 \301\302\303\300\211@:\203( \211@\202) \211A@\262\236A!\304Q\"\211\203A \211@A\241\266\202G \305\"\266\306!\207" [id dom-by-id "\\`" regexp-quote "\\'" dom-append-child svg-possibly-update-image] 9 (#$ . 4813)])#@31 

(fn IMAGE IMAGE-TYPE DATAP)
(defalias 'svg--image-data #[771 "\300\301\302\"r\211q\210\303\304\"\216\305\306!\210\203 c\210\202 \307!\210\310ed\302#\210eb\210\311\312\261\210\313 *\207" [generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] set-buffer-multibyte nil insert-file-contents base64-encode-region "data:" ";base64," buffer-string] 8 (#$ . 5135)])#@17 

(fn SVG ARGS)
(defalias 'svg--arguments #[514 "\301\302\"\206 \303\211@:\203 \211@\202 \211A@\262\236A\301\304\"\2066 \305\211@:\203/ \211@\2020 \211A@\262\236A\301\306\"\307\203E \303BC\262\203P \310BB\262\203[ \311BB\262\301\312\"\203w \313\314\315\316\317\311\320\321\301\312\"\"B\257\"\262\307\211\211:\203\254 \262\211A\262\242\262\211@\262\322>\204\244 \323\324!\325\307O\"BB\262AA\262\202{ \266\207" [obarray plist-get :stroke-width stroke-width :stroke-color stroke-color :fill-color nil stroke fill :gradient append (x1 . 0) (x2 . 0) (y1 . 0) (y2 . 1) format "url(#%s)" (:stroke-color :stroke-width :gradient :fill-color) intern symbol-name 1] 17 (#$ . 5566)])#@16 

(fn SVG DEF)
(defalias 'svg--def #[514 "\300\301\302\"\206 \303\302!\304\"\210\211\262\"\210\207" [dom-append-child dom-by-tag defs dom-node dom-add-child-before] 7 (#$ . 6287)])#@112 Return an image object from SVG.
PROPS is passed on to `create-image' as its PROPS list.

(fn SVG &rest PROPS)
(defalias 'svg-image #[385 "\300\301\302\303\304\"r\211q\210\305\306\"\216\307!\210\310 *\262\311\304%\207" [apply create-image generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] svg-print buffer-string svg] 8 (#$ . 6481)])#@105 Insert SVG as an image at point.
If the SVG is later changed, the image will also be updated.

(fn SVG)
(defalias 'svg-insert-image #[257 "\300!\301 \302!\210\303\304#\207" [svg-image point-marker insert-image dom-set-attribute :image] 7 (#$ . 6887)])#@12 

(fn SVG)
(defalias 'svg-possibly-update-image #[257 "\300\211@:\203 \211@\202 \211A@\262\236A\211\2051 \301\302!!\2051 r\302!q\210\303\211T\304\305!$)\207" [:image buffer-live-p marker-buffer put-text-property display svg-image] 8 (#$ . 7148)])#@72 Convert DOM into a string containing the xml representation.

(fn DOM)
(defalias 'svg-print #[257 "\211;\203 \211c\207\300\301@\"c\210\211A@\211\2034 \211@\300\302@\"\303H\304U\204- \300\305@A#c\210A\266\202\202 \210\306c\210\211AA\211\203O \211@\307c\210\310!\210A\266\202\202; \210\300\311@\"c\207" [format "<%s" "%s" 0 58 " %s=\"%s\"" ">" " " svg-print "</%s>"] 7 (#$ . 7409)])#@60 Remove the element identified by ID from SVG.

(fn SVG ID)
(defalias 'svg-remove #[514 "\300\301\302!\303Q\"@\211\205 \304\"\207" [dom-by-id "\\`" regexp-quote "\\'" dom-remove-node] 7 (#$ . 7805)])#@97 Delete PROPERTY from PLIST.
This is in contrast to merely setting it to 0.

(fn PLIST PROPERTY)
(defalias 'svg--plist-delete #[514 "\300\203 @=\204 \301@A@#\262AA\262\202 \207" [nil plist-put] 7 (#$ . 8014)])#@36 

(fn COMMAND-SYMBOL COMMAND-ARGS)
(defalias 'svg--path-command-symbol #[514 "\300!\301\302\"\203 \303\302\"\202 \303\304\"\305\203 \227\202! \226!\207" [symbol-name plist-member :relative plist-get :default-relative intern] 6 (#$ . 8240)])#@29 

(fn RX RY X Y &rest ARGS)
(defalias 'svg--elliptical-arc-coordinates #[1156 "\300\301\"\206\n \302\300\303\"\203 \304\202 \302\300\305\"\203! \304\202\" \302\257\207" [plist-get :x-axis-rotation 0 :large-arc 1 :sweep] 12 (#$ . 8496)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--elliptical-arc-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol a mapcan #[257 "\300\301\"\207" [apply svg--elliptical-arc-coordinates] 4 "\n\n(fn COORDINATES)"]] 6 (#$ . 8750)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--moveto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol m mapcan #[257 "\211@AD\207" [] 3 "\n\n(fn COORDINATES)"]] 6 (#$ . 9007)])#@19 

(fn &rest ARGS)
(defalias 'svg--closepath-command #[128 "\300\301\"C\207" [svg--path-command-symbol z] 4 (#$ . 9216)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--lineto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol l mapcan #[257 "\211@AD\207" [] 3 "\n\n(fn COORDINATES)"]] 6 (#$ . 9343)])#@35 

(fn COORDINATE-LIST &rest ARGS)
(defalias 'svg--horizontal-lineto-command #[385 "\300\301\"B\207" [svg--path-command-symbol h] 5 (#$ . 9552)])#@35 

(fn COORDINATE-LIST &rest ARGS)
(defalias 'svg--vertical-lineto-command #[385 "\300\301\"B\207" [svg--path-command-symbol v] 5 (#$ . 9704)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--curveto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol c apply append] 6 (#$ . 9854)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--smooth-curveto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol s apply append] 6 (#$ . 10020)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--quadratic-bezier-curveto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol q apply append] 6 (#$ . 10194)])#@36 

(fn COORDINATES-LIST &rest ARGS)
(defalias 'svg--smooth-quadratic-bezier-curveto-command #[385 "\300\301\"\302\303\"B\207" [svg--path-command-symbol t apply append] 6 (#$ . 10378)])#@33 

(fn COMMAND DEFAULT-RELATIVE)
(defalias 'svg--eval-path-command #[514 "\300\301D\"\302K\303K\304K\305K\306K\307K\310K\311K\312K\313K\314\315\n\f&\216\302\316M\210\303\317M\210\304\320M\210\305\321M\210\306\322M\210\307\323M\210\310\324M\210\311\325M\210\312\326M\210\313\327M\210\330\331\332!\333#)\207" [append :default-relative elliptical-arc smooth-quadratic-bezier-curveto quadratic-bezier-curveto smooth-curveto curveto vertical-lineto horizontal-lineto lineto closepath moveto make-closure #[0 "\312\311M\210\313\310M\210\314\307M\210\315\306M\210\316\305M\210\317\304M\210\320\303M\210\321\302M\210\322\301M\210\323\300M\207" [V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 elliptical-arc smooth-quadratic-bezier-curveto quadratic-bezier-curveto smooth-curveto curveto vertical-lineto horizontal-lineto lineto closepath moveto] 2] svg--elliptical-arc-command svg--smooth-quadratic-bezier-curveto-command svg--quadratic-bezier-curveto-command svg--smooth-curveto-command svg--curveto-command svg--vertical-lineto-command svg--horizontal-lineto-command svg--lineto-command svg--closepath-command svg--moveto-command mapconcat prin1-to-string apply " "] 25 (#$ . 10569)])#@262 Add the outline of a shape to SVG according to COMMANDS.
Coordinates by default are absolute.  ARGS is a plist of
modifiers.  If :relative is t, then coordinates are relative to
the last position, or -- initially -- to the origin.

(fn SVG COMMANDS &rest ARGS)
(defalias 'svg-path #[642 "\300\301\"\302\301\"\303\304\305\306\307\"\"\310#\311\312\313\314B\315\"B\"\"\207" [plist-get :relative svg--plist-delete mapconcat identity mapcar make-closure #[257 "\301\300\"\207" [V0 svg--eval-path-command] 4 "\n\n(fn COMMAND)"] " " svg--append dom-node path d svg--arguments] 14 (#$ . 11757)])#@211 Add a clipping path to SVG, where ARGS is a plist of modifiers.
If applied to a shape via the :clip-path property, parts of that
shape which lie outside of the clipping path are not drawn.

(fn SVG &rest ARGS)
(defalias 'svg-clip-path #[385 "\300\301\302\"\"\303\"\210\207" [dom-node clipPath svg--arguments svg--append] 7 (#$ . 12365)])#@58 Add the custom node TAG to SVG.

(fn SVG TAG &rest ARGS)
(defalias 'svg-node #[642 "\300\301\"\"\302\"\210\207" [dom-node svg--arguments svg--append] 8 (#$ . 12712)])
(provide 'svg)
