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


#@42 Non-nil means use glyphs when available.
(defvar gamegrid-use-glyphs t (#$ . 83))
(make-variable-buffer-local 'gamegrid-use-glyphs)#@41 Non-nil means use color when available.
(defvar gamegrid-use-color t (#$ . 220))
(make-variable-buffer-local 'gamegrid-use-color)#@34 Name of the font used in X mode.
(defvar gamegrid-font "-*-courier-medium-r-*-*-*-140-100-75-*-*-iso8859-*" (#$ . 355))
(make-variable-buffer-local 'gamegrid-font)#@41 Indicates the face to use as a default.
(defvar gamegrid-face nil (#$ . 524))
(make-variable-buffer-local 'gamegrid-face)
(defvar gamegrid-display-options nil nil)
(make-variable-buffer-local 'gamegrid-display-options)
(defvar gamegrid-buffer-width 0 nil)
(make-variable-buffer-local 'gamegrid-buffer-width)
(defvar gamegrid-buffer-height 0 nil)
(make-variable-buffer-local 'gamegrid-buffer-height)
(defvar gamegrid-blank 0 nil)
(make-variable-buffer-local 'gamegrid-blank)
(defvar gamegrid-timer nil nil)
(make-variable-buffer-local 'gamegrid-timer)
(defvar gamegrid-display-mode nil nil)
(make-variable-buffer-local 'gamegrid-display-mode)
(defvar gamegrid-display-table nil nil)
(make-variable-buffer-local 'gamegrid-display-table)
(defvar gamegrid-face-table nil nil)
(make-variable-buffer-local 'gamegrid-face-table)
(defvar gamegrid-buffer-start 1 nil)
(make-variable-buffer-local 'gamegrid-buffer-start)#@32 Number of high scores to keep.
(defvar gamegrid-score-file-length 50 (#$ . 1440))
(make-variable-buffer-local 'gamegrid-score-file-length)#@145 A directory for game scores which can't be shared.
If Emacs was built without support for shared game scores, then this
directory will be used.
(defvar gamegrid-user-score-file-directory (locate-user-emacs-file "games/") (#$ . 1585))
(defvar gamegrid-grid-x-face nil)
(defvar gamegrid-mono-x-face nil)
(defvar gamegrid-mono-tty-face nil)#@29 Desired glyph height in mm.
(defvar gamegrid-glyph-height-mm 5.0 (#$ . 1928))#@113 Calculate appropriate glyph size in pixels based on display resolution.
Return a multiple of 8 no less than 16.
(defalias 'gamegrid-calculate-glyph-size #[0 "\301 \302\203 \303\304\305\2368\306\307\2368\310\236A\206 \311#\202/ \312 \205/ \313 \205/ \312 \314\313 !\245\262\211\203E \211_\315\304\\\316\245!\316_\317]\207\317\207" [gamegrid-glyph-height-mm frame-monitor-attributes nil / 4 geometry 2 mm-size scale-factor 1.0 display-pixel-height display-mm-height float floor 8 16] 7 (#$ . 2012)])#@53 Generate the XPM format image used for each square.
(defalias 'gamegrid-xpm #[0 "\300 \211\301\245\302_Z\303\304\305\"r\211q\210\306\307\"\216\310\311\211#c\210\312\211W\203a \211T\313c\210Z\312\211W\203@ \314\315c\266\211T\262\202. \266\312\211W\203U \314\316c\266\211T\262\202C \210\317c\266\211T\262\202 \210\310\320\321\322\"\321\323\"\321\324\"$\312\211W\203\205 \314c\266\211T\262\202s \266\312\211W\203\335 ZS\313c\210\312\211W\203\250 \314\315c\266\211T\262\202\226 \210Z\312\211W\203\277 \314\316c\266\211T\262\202\255 \266\313c\210SU\204\322 \325c\266\202\326 \326c\266\211T\262\202\210 \210\327 *\207" [gamegrid-calculate-glyph-size 8 2 generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] format "/* XPM */\nstatic char *noname[] = {\n/* width height ncolors chars_per_pixel */\n\"%s %s 3 1\",\n/* colors */\n\"+ s col1\",\n\". s col2\",\n\"- s col3\",\n/* pixels */\n" 0 "\"" nil "-" "+" "\",\n" "\"%s%s%s\",\n" make-string 45 46 43 ",\n" "\n};\n" buffer-string] 11 (#$ . 2525)])#@49 Generate XBM format image used for each square.
(defalias 'gamegrid-xbm #[0 "\300 \211\301\245S\302_Z\303\304\305\"r\211q\210\306\307\"\216\310\311\211#c\210\312\211W\203? \313\314Z\315\"\314\316\"P!\210\317c\210\211T\262\202  \210\314\315\"\314\316\"\320\321\322C\323\302\245\324\"C#\"\320\321\322C\323	\302\245\325\"C#\"\312\211W\203\214 \313\326\327\"\327=\203 \202\200 !\210\317c\210\211T\262\202j \266\312\211W\203\277 Z\313\314\315\"\314Z\316\"P!\266\211SU\204\265 \317c\210\202\270 \330c\210\211T\262\202\217 \210\331 *\207" [gamegrid-calculate-glyph-size 4 2 generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] format "/* gamegrid XBM */\n#define gamegrid_width %s\n#define gamegrid_height %s\nstatic unsigned char gamegrid_bits[] = {\n" 0 gamegrid-insert-xbm-bits make-string 49 48 ", \n" apply concat append make-list "10" "01" logand 1 " };\n" buffer-string] 14 (#$ . 3625)])#@263 Convert binary to hex and insert in current buffer.
STR should be a string composed of 1s and 0s and be a multiple of
8 in length.  Divide it into 8 bit bytes, reverse the order of
each, convert them to hex and insert them in comma separated C
format.

(fn STR)
(defalias 'gamegrid-insert-xbm-bits #[257 "\211G\300\245\301\211W\2054 \302\300_\300_\300\\O!\303\304\"\305\306\"c\210SU\204+ \307c\210\266\211T\262\202 \207" [8 0 reverse string-to-number 2 format "0x%02x" ", "] 8 (#$ . 4616)])#@14 

(fn EVENT)
(defalias 'gamegrid-event-x #[257 "\300\301!!@\207" [posn-col-row event-end] 4 (#$ . 5123)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gamegrid-event-x speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@14 

(fn EVENT)
(defalias 'gamegrid-event-y #[257 "\300\301!!A\207" [posn-col-row event-end] 4 (#$ . 5377)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put gamegrid-event-y speed -1 put byte-optimizer byte-compile-inline-expand] 5)#@20 

(fn COLOR SHADE)
(defalias 'gamegrid-color #[514 "\300\301_!\211\302H_\303H_\304H_\305\306$\207" [floor 255 0 1 2 format "#%02x%02x%02x"] 11 (#$ . 5631)])#@13 

(fn FACE)
(defalias 'gamegrid-set-font #[257 "\205 \3011 \302\"0\207\210\303\207" [gamegrid-font (error) set-face-font nil] 4 (#$ . 5802)])#@19 

(fn FACE COLOR)
(defalias 'gamegrid-setup-face #[514 "\300\"\210\301\"\210\302!\210\303\304\"\207" [set-face-foreground set-face-background gamegrid-set-font set-face-stipple nil] 5 (#$ . 5954)])
(defalias 'gamegrid-make-mono-tty-face #[0 "\300\301!\302\303\"\210\207" [make-face gamegrid-mono-tty-face set-face-inverse-video t] 4])#@14 

(fn COLOR)
(defalias 'gamegrid-make-color-tty-face #[257 "\2119\203\n \211J\202 \211\300\301\302\"!\303!\304\"\210\207" [intern format "gamegrid-color-tty-face-%s" make-face gamegrid-setup-face] 7 (#$ . 6301)])
(defalias 'gamegrid-make-grid-x-face #[0 "\300\301!\302!\210\207" [make-face gamegrid-x-border-face gamegrid-set-font] 3])
(defalias 'gamegrid-make-mono-x-face #[0 "\300\301!\302\303!\211\204 \304\305 \236\243\262\306\"\210\207" [make-face gamegrid-mono-x-face face-foreground default foreground-color frame-parameters gamegrid-setup-face] 5])#@14 

(fn COLOR)
(defalias 'gamegrid-make-color-x-face #[257 "\300\301\"\302\303\304\"!\305!\306\"\210\207" [gamegrid-color 1.0 intern format "gamegrid-color-x-face-%s" make-face gamegrid-setup-face] 7 (#$ . 6874)])#@39 

(fn DATA-SPEC-LIST COLOR-SPEC-LIST)
(defalias 'gamegrid-make-face #[514 "\303!\303!\304\267\202/ \305!\207\204 \306 \207	\204  \307 	\207\310!\207\n\204- \311 \n\207\312\207" [gamegrid-grid-x-face gamegrid-mono-x-face gamegrid-mono-tty-face gamegrid-match-spec-list #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (color-x 12 grid-x 16 mono-x 25 color-tty 34 mono-tty 38)) gamegrid-make-color-x-face gamegrid-make-grid-x-face gamegrid-make-mono-x-face gamegrid-make-color-tty-face gamegrid-make-mono-tty-face nil] 6 (#$ . 7096)])#@14 

(fn COLOR)
(defalias 'gamegrid-colorize-glyph #[257 "\300\301\302\303\304 \305\306\307\310\311\n\312\"B\313\311\314\"B\315\311\f\316\"BE\257\301\317\303\320 \305\306\321\311\n\316\"\322\311\f\323\"\257\nD!\207" [find-image :type xpm :data gamegrid-xpm :ascent center :color-symbols "col1" gamegrid-color 0.6 "col2" 0.8 "col3" 1.0 xbm gamegrid-xbm :foreground :background 0.5] 15 (#$ . 7681)])#@13 

(fn SPEC)
(defalias 'gamegrid-match-spec #[257 "\211@A@\301=\204! <\203 >\204! 9\205\" =\205\" \211\207" [gamegrid-display-mode t] 5 (#$ . 8088)])#@18 

(fn SPEC-LIST)
(defalias 'gamegrid-match-spec-list #[257 "\211\205 \300@!\206 \301A!\207" [gamegrid-match-spec gamegrid-match-spec-list] 3 (#$ . 8251)])#@39 

(fn DATA-SPEC-LIST COLOR-SPEC-LIST)
(defalias 'gamegrid-make-glyph #[514 "\301!\301!\302\303!\203 \304!\202: \305=\203  \306!\202: <\203+ \307!\202: \310!\205: \311\312\313\314#\210\315!)\207" [image-scaling-factor gamegrid-match-spec-list 1.0 characterp vector colorize gamegrid-colorize-glyph find-image vectorp lwarn gamegrid :warning "Using obsolete XEmacs style \"glyph\"; convert to an Emacs image-spec instead" gamegrid-make-image-from-vector] 8 (#$ . 8415)])#@62 Convert an XEmacs style "glyph" to an image-spec.

(fn VECT)
(defalias 'gamegrid-make-image-from-vector #[257 "\300\301DG\302\211W\203 HC\244\262\211T\262\202 \266\211\303\304D\244\207" [image :type 0 :ascent center] 7 (#$ . 8901)])
(make-obsolete 'gamegrid-make-image-from-vector nil "29.1")
(defalias 'gamegrid-display-type #[0 "\203 \302 \203 \303\207	\203 \304 \203 \305 \203 \306\207\304 \203\" \307\207	\203- \305 \203- \310\207\311 \2034 \312\207\313\207" [gamegrid-use-glyphs gamegrid-use-color display-images-p glyph display-graphic-p display-color-p color-x mono-x color-tty display-multi-font-p mono-tty emacs-tty] 1])
(defalias 'gamegrid-setup-default-font #[0 "\303\304\305\306\307 P!\"	\310=\205\203 \311\312\211\313W\203A \nH\211<\2039 \211@\314=\2039 \315!A\2035 W\2038 \211\262\210\210\211T\262\202 \210\211\205\201 \211\316W\205\201 \317\304\320\"\321 \322 \323\245\245\311\211\324!_\325\245\262\326\327\245_!\262\211\245\327_\262\330\331\320\326\325_!EC\"\266\204\262\207" [gamegrid-face gamegrid-display-mode gamegrid-display-table copy-face default intern "gamegrid-face-" buffer-name glyph nil 0 256 image image-size 1 face-attribute :height display-pixel-height display-mm-height 25.4 float 10 floor 72.27 face-spec-set t] 12])
(defalias 'gamegrid-initialize-display #[0 "\306 \307 \310\311\312\"\313\211\311W\2036 H\314@\3158\"\316A@\3158\"\nI\210	I\266\211T\262\202\f \210\317 \210	\312\211\207" [gamegrid-display-mode gamegrid-display-table gamegrid-face-table gamegrid-display-options buffer-display-table cursor-type gamegrid-display-type make-display-table make-vector 256 nil 0 gamegrid-make-glyph 2 gamegrid-make-face gamegrid-setup-default-font] 7])#@10 

(fn C)
(defalias 'gamegrid-set-face #[257 "\303=\203 \304`S`\305	HCD#\207\306`S`\307\nH$\207" [gamegrid-display-mode gamegrid-display-table gamegrid-face-table glyph add-text-properties display put-text-property face] 7 (#$ . 10642)])#@12 

(fn X Y)
(defalias 'gamegrid-cell-offset #[514 "	T_\\\\\207" [gamegrid-buffer-start gamegrid-buffer-width] 5 (#$ . 10888)])#@12 

(fn X Y)
(defalias 'gamegrid-get-cell #[514 "\300\"f\207" [gamegrid-cell-offset] 5 (#$ . 11022)])#@14 

(fn X Y C)
(defalias 'gamegrid-set-cell #[771 "\212\301\302\"b\210\303\304!\210\305\304\"\210\306!*\207" [buffer-read-only nil gamegrid-cell-offset delete-char 1 insert-char gamegrid-set-face] 6 (#$ . 11129)])#@27 

(fn WIDTH HEIGHT BLANK)
(defalias 'gamegrid-init-buffer #[771 "\306\"\307P\310\311 \210`\312\211W\203$ \310c\266\211T\262\202 \210\f\313=\2034 \314\315ed\"\316#\210eb)\207" [gamegrid-buffer-width gamegrid-buffer-height buffer-read-only gamegrid-buffer-start gamegrid-display-mode gamegrid-face make-string "\n" nil erase-buffer 0 glyph overlay-put make-overlay face] 8 (#$ . 11351)])#@16 

(fn OPTIONS)
(defalias 'gamegrid-init #[257 "\304\211\305\211\306p!\210\307 \207" [buffer-read-only truncate-lines line-spacing gamegrid-display-options t 0 buffer-disable-undo gamegrid-initialize-display] 4 (#$ . 11756)])#@20 

(fn PERIOD FUNC)
(defalias 'gamegrid-start-timer #[514 "\301\211p$\211\207" [gamegrid-timer run-with-timer] 7 (#$ . 11990)])#@14 

(fn DELAY)
(defalias 'gamegrid-set-timer #[257 "\205 \301\211\302H\303H\304HE#\207" [gamegrid-timer timer-set-time 1 2 3] 7 (#$ . 12125)])
(defalias 'gamegrid-kill-timer #[0 "\203 \301!\210\302\211\207" [gamegrid-timer cancel-timer nil] 2])#@974 Add the current score to the high score file.

If REVERSE is non-nil, treat lower scores as better than higher
scores.  This is useful for games where lower scores are better.

On POSIX systems there may be a shared game directory for all users in
which the scorefiles are kept.  On such systems Emacs doesn't create
the score file FILE in this directory, if it doesn't already exist.
In this case Emacs searches for FILE in the directory specified by
`gamegrid-user-score-file-directory' and creates it there, if
necessary.

To add the score file for a game to the system wide shared game
directory, create the file with the shell command "touch" in this
directory and make sure that it is owned by the correct user and
group.  You probably need special user privileges to do this.

On non-POSIX systems Emacs searches for FILE in the directory
specified by the variable `temporary-file-directory'.  If necessary,
FILE is created there.

(fn FILE SCORE &optional REVERSE)
(defalias 'gamegrid-add-score #[770 "\301>\203\f \302#\207\303#\207" [system-type (windows-nt ms-dos) gamegrid-add-score-insecure gamegrid-add-score-with-update-game-score] 7 (#$ . 12384)])#@37 

(fn FILE SCORE &optional REVERSE)
(defalias 'gamegrid-add-score-with-update-game-score #[770 "\304\305\306\"!\307\310\206 \311\"\311U?\211\203 \312!\203% \313\n$\202\205 	\203? \314\305\"!\203? \315\305\"$\202\205 	\203Y \314\316\n!!\204P \317\n\320\"\210\313\n$\202\205 \314\316\n!!\204f \317\n\320\"\210\305\n\"\314!\204{ \321\322\323\323\324\323\325&\210\315$\262)\207" [exec-directory gamegrid-shared-game-dir gamegrid-user-score-file-directory shared-game-score-directory file-modes expand-file-name "update-game-score" logand 3072 0 file-name-absolute-p gamegrid-add-score-insecure file-exists-p gamegrid-add-score-with-update-game-score-1 directory-file-name make-directory t write-region "" nil silent excl] 13 (#$ . 13559)])#@44 

(fn FILE TARGET SCORE &optional REVERSE)
(defalias 'gamegrid-add-score-with-update-game-score-1 #[1027 "\306\307\310!\311 \312\313\314 \260\3151R \316\317\320\321\322\"\316\316\323\324\f!\325\203. \321*!\2022 \326!\327\2059 \330\324!E\"BBBBBBBB\")0\210\202[ \210\331+\332\333\331\"\210\334!\203l \335!\210\336\337!\210\202p \340!\210\341!\212\211\203\212 \342!\210\343\316\331\316#\210\335!\210\202\217 \344!\210\345 \210eb\210\346\324!\347\350 \347\260\316\331#\210\351 *\207" [user-mail-address default-directory inhibit-quit exec-directory gamegrid-score-file-length gamegrid-shared-game-dir "/" generate-new-buffer " *update-game-score loss*" user-full-name " <" ">  " current-time-string (quit) nil apply call-process expand-file-name "update-game-score" "-m" int-to-string "-d" file-name-directory append ("-r") t eval (ignore nil) buffer-modified-p display-buffer error "Failed to update game score file" kill-buffer find-buffer-visiting switch-to-buffer revert-buffer find-file-read-only view-mode search-forward " " user-login-name beginning-of-line shared-game-score-directory quit-flag] 22 (#$ . 14331)])#@47 

(fn FILE SCORE &optional DIRECTORY REVERSE)
(defalias 'gamegrid-add-score-insecure #[1026 "\212\304\206 \"\262\305\306!!\204 \307\306!\310\"\210\311!\210\312db\210\313\314\315 \316 \n%c\210\317\320ed#\210\211\204= \321ed\"\210eb\210y\210`d|\210\310\322 \210\323 )\207" [temporary-file-directory buffer-read-only user-mail-address gamegrid-score-file-length expand-file-name file-exists-p file-name-directory make-directory t find-file-other-window nil format "%05d	%s	%s <%s>\n" current-time-string user-full-name sort-fields 1 reverse-region save-buffer view-mode] 10 (#$ . 15488)])
(provide 'gamegrid)
