You can subscribe to this list here.
2002 |
Jan
(6) |
Feb
(5) |
Mar
(5) |
Apr
|
May
(2) |
Jun
|
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
(8) |
Dec
(18) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(3) |
Dec
|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(4) |
Aug
|
Sep
|
Oct
(3) |
Nov
(1) |
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
(1) |
Mar
(5) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(1) |
2010 |
Jan
(2) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
(6) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
(2) |
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
(2) |
Oct
(3) |
Nov
|
Dec
(1) |
2014 |
Jan
(4) |
Feb
(3) |
Mar
(3) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
From: <mat...@fr...> - 2004-10-18 10:51:15
|
Hello, Selon Vladimir Sedach <se...@cp...>: > I've written a bit of code to shuffle between IMAGO images and SDL > surfaces. It should be fast enough to do manipulations on small > sprites in real-time on a reasonably fast machine. Nice! > (defun convert-to-image (surface) > "Given a 24 or 32-bit depth SDL surface, returns an IMAGO RGB image > of the same width and height and RGB pixel contents." > (assert (or (=3D 24 (sdl:pixel-format-bits-per-pixel > (sdl:surface-format surface))) > (=3D 32 (sdl:pixel-format-bits-per-pixel > (sdl:surface-format surface))))) > (let* ((width (sdl:surface-w surface)) (height (sdl:surface-h surface= )) > (image (make-instance 'imago:rgb-image :width width :height he= ight)) > (image-array (imago:image-pixels image))) > ;; Note that on 32 bit machines, width and height are 32 bit ints > (declare (type fixnum width height) > (type (simple-array (unsigned-byte 32) (* *)) image-array)= ) > (with-surface-lock surface > (dotimes (y height) > (declare (type fixnum y)) > (dotimes (x width) > (declare (type fixnum x)) > (setf (aref image-array y x) (sdl:get-pixel surface x y))))) > image)) A little note: using the IMAGO:DO-IMAGE-PIXELS macro could make the code a little bit more abstract as well as more efficient. Here is what the body of that function would look like: (defun convert-to-image (surface) (let ((image (make-instance 'imago:rgb-image :width (sdl:surface-w surface) :height (sdl:surface-h surface)))) (with-surface-lock surface (imago:do-image-pixels (image pixel x y) (setf pixel (sdl:get-pixel surface x y))))) image)) -- Matthieu Villeneuve |
From: Vladimir S. <se...@cp...> - 2004-10-18 03:09:35
|
Hello, I've written a bit of code to shuffle between IMAGO images and SDL surfaces. It should be fast enough to do manipulations on small sprites in real-time on a reasonably fast machine. It only works on RGB(A) images, since I found the overhead for extracting/packing channels is too high. Blitting versions forthcoming when I need them and figure out a good interface for specifying rectangles (for some reason SDL's don't seem all that good to me). (large-ish) screenshot: http://members.shaw.ca/vsedach/imago_sdl_screen.png Vladimir PS - I think my version of with-surface-lock is more correct than the one that comes with cl-sdl right now (sdl:with-locked-surface). Here are the goodies: (declaim (optimize (speed 3) (safety 0))) (defmacro with-surface-lock (surface &body body) (let ((surf (gensym "surface-lock-"))) `(let ((,surf ,surface)) (when (/= 0 (sdl:lock-surface ,surf)) (error "Couldn't lock SDL surface ~A" ,surf)) (unwind-protect (progn ,@body) (sdl:unlock-surface ,surf))))) (defun convert-to-image (surface) "Given a 24 or 32-bit depth SDL surface, returns an IMAGO RGB image of the same width and height and RGB pixel contents." (assert (or (= 24 (sdl:pixel-format-bits-per-pixel (sdl:surface-format surface))) (= 32 (sdl:pixel-format-bits-per-pixel (sdl:surface-format surface))))) (let* ((width (sdl:surface-w surface)) (height (sdl:surface-h surface)) (image (make-instance 'imago:rgb-image :width width :height height)) (image-array (imago:image-pixels image))) ;; Note that on 32 bit machines, width and height are 32 bit ints (declare (type fixnum width height) (type (simple-array (unsigned-byte 32) (* *)) image-array)) (with-surface-lock surface (dotimes (y height) (declare (type fixnum y)) (dotimes (x width) (declare (type fixnum x)) (setf (aref image-array y x) (sdl:get-pixel surface x y))))) image)) (defmethod convert-to-surface ((image imago:rgb-image) &optional (depth 24)) "Given an IMAGO RGB image, returns an SDL surface of <depth> bit color depth and the same width and height." (let* ((width (imago:image-width image)) (height (imago:image-height image)) (image-array (imago:image-pixels image)) (surface (sdl:create-rgb-surface sdl:+swsurface+ width height depth 0 0 0 0))) (declare (type fixnum width height) (type (simple-array (unsigned-byte 32) (* *)) image-array)) (with-surface-lock surface (dotimes (y height) (declare (type fixnum y)) (dotimes (x width) (declare (type fixnum x)) (sdl:faster-draw-pixel surface x y (aref image-array y x))))) surface)) |
From: Vladimir S. <se...@cp...> - 2004-10-18 03:09:24
|
Hello, I recently wrote some functions to blit mirrored surfaces. These seem to run ok and are pretty useful if you've got a large sprite and don't want to keep two copies around. Vladimir Code: (declaim (optimize (speed 3) (safety 0))) (defun blit-surface-flip-x (source source-rect dest dest-rect) (sgum:with-foreign-objects ((src-line sdl:rect) (dst-line sdl:rect)) (let ((x-offset 0) (y-offset 0) (x-start 0) (y-start 0) (max-y 0) (width (sdl:surface-w source)) (height (sdl:surface-h source))) (declare (type fixnum x-offset y-offset x-start y-start max-y width height)) (unless (sgum:null-pointer-p dest-rect) (setf x-offset (sdl:rect-x dest-rect) y-offset (sdl:rect-y dest-rect))) (unless (sgum:null-pointer-p source-rect) (setf x-start (sdl:rect-x source-rect) y-start (sdl:rect-y source-rect) width (sdl:rect-w source-rect) height (sdl:rect-h source-rect))) (setf (sdl:rect-w src-line) 1 (sdl:rect-h src-line) height (sdl:rect-y src-line) y-start (sdl:rect-w dst-line) 1 (sdl:rect-h dst-line) height (sdl:rect-y dst-line) y-offset max-y (+ width x-start)) (dotimes (col (1+ width)) (declare (type fixnum col)) (setf (sdl:rect-x src-line) (- max-y col) (sdl:rect-x dst-line) (+ col x-offset)) (sdl:blit-surface source src-line dest dst-line))))) (defun blit-surface-flip-y (source source-rect dest dest-rect) (sgum:with-foreign-objects ((src-line sdl:rect) (dst-line sdl:rect)) (let ((x-offset 0) (y-offset 0) (x-start 0) (y-start 0) (max-x 0) (width (sdl:surface-w source)) (height (sdl:surface-h source))) (declare (type fixnum x-offset y-offset x-start y-start max-x width height)) (unless (sgum:null-pointer-p dest-rect) (setf x-offset (sdl:rect-x dest-rect) y-offset (sdl:rect-y dest-rect))) (unless (sgum:null-pointer-p source-rect) (setf x-start (sdl:rect-x source-rect) y-start (sdl:rect-y source-rect) width (sdl:rect-w source-rect) height (sdl:rect-h source-rect))) (setf (sdl:rect-w src-line) width (sdl:rect-h src-line) 1 (sdl:rect-x src-line) x-start (sdl:rect-w dst-line) width (sdl:rect-h dst-line) 1 (sdl:rect-x dst-line) x-offset max-x (+ height y-start)) (dotimes (row (1+ height)) (declare (type fixnum row)) (setf (sdl:rect-y src-line) (- max-x row) (sdl:rect-y dst-line) (+ row y-offset)) (sdl:blit-surface source src-line dest dst-line))))) |
From: Matthew D. <md...@an...> - 2004-07-03 16:52:09
|
On Sat, 3 Jul 2004, Julian Stecklina wrote: > I hope there is someone left on this list to commit this. I'll take a look as soon as my computer quits acting up. |
From: Julian S. <der...@we...> - 2004-07-03 13:55:41
|
se...@cp... writes: > Hello, > > Seems attachements don't work so well. The code follows: Yes. You included it as application/octet-stream, but text/plain would be less problematic. :) I hope there is someone left on this list to commit this. Regards, -- Julian Stecklina Signed/encrypted mail welcome. Key-ID: 0xD65B2AB5 -> GIVE stylish confetti to HEAVILY ARMED CLOWN <- -> Heavily Armed Clown: Wheeee!! <- |
From: <se...@cp...> - 2004-07-03 04:11:59
|
Hello, Seems attachements don't work so well. The code follows: ;;; Code for loading SDL_keysym.h, and the actual values ;;; Copyleft 2004, Vladimir Sedach. ;;; This code comes with absolutely no warranty. (defpackage "SDLK" (:use "COMMON-LISP") (:export +numkeys+ print-name parse-keysym-file)) (in-package "SDLK") (defvar +numkeys+ 322) (defvar *print-key-table*) (defun read-keysym-line (string) (read-key-line string "SDLK_" 2 10)) (defun read-mod-line (string) (read-key-line string "KMOD_" 4 16)) (defun read-key-line (kstring prefix num-offset num-base) (macrolet ((check-pos (form) `(let ((pos ,form)) (if pos pos (return-from read-key-line))))) (let ((offset (search prefix kstring :test #'char=))) (when offset (let* ((name-start (+ offset (length prefix))) (name-end (check-pos (position-if (lambda (ch) (or (char= ch #\Space) (char= ch #\Tab))) kstring :start name-start))) (name (subseq kstring name-start name-end)) (num-start (+ num-offset (check-pos (position #\= kstring :test #'char= :start name-end)))) (num-end (check-pos (position #\, kstring :start num-start :test #'char=))) (num-string (subseq kstring num-start num-end)) (num (parse-integer num-string :radix num-base :junk-allowed nil))) (values (string-upcase (substitute #\- #\_ name :test #'char=)) num)))))) (defvar *print-name-list* ()) (defvar *export-list* ()) (defun read-kfile-line (line) (let (name num) (if (multiple-value-setq (name num) (read-keysym-line line)) (progn (push (cons num (string-capitalize name)) *print-name-list*) (when (> num +numkeys+) (setf +numkeys+ num)) (setf name (format nil (if (= (length name) 1) "+~A+" "~A") name))) (if (multiple-value-setq (name num) (read-mod-line line)) (setf name (format nil "MOD-~A" name)))) (when name (let ((sym (intern name))) (push sym *export-list*) `(defconstant ,sym ,num))))) (defmacro print-name (kchar) "Returns a string of the SDL character's kchar's name suitable for pretty printing." `(aref sdlk::*print-key-table* ,kchar)) (defun parse-keysym-file (filename &optional (stream *standard-output*)) "Parses SDL_keysym.h and prints out defconstants, export and print-name making forms suitable for reading." (with-open-file (ks filename :direction :input) (let* ((line t) (constant-list (remove nil (loop while line do (setq line (read-line ks nil nil)) collect (read-kfile-line line))))) (dolist (const constant-list) (pprint const stream)) (pprint `(export ',*export-list*) stream) (let ((kparray (make-array (1+ +numkeys+) :initial-element "")) (*print-array* t)) (loop for (num . print-name) in *print-name-list* do (setf (aref kparray num) print-name)) (pprint `(setf *print-key-table* ,kparray) stream)) (setf *print-name-list* () *export-list* ())))) ;;; Actual key entries from my SDL_keysym.h (DEFCONSTANT UNKNOWN 0) (DEFCONSTANT FIRST 0) (DEFCONSTANT BACKSPACE 8) (DEFCONSTANT TAB 9) (DEFCONSTANT CLEAR 12) (DEFCONSTANT RETURN 13) (DEFCONSTANT PAUSE 19) (DEFCONSTANT ESCAPE 27) (DEFCONSTANT SPACE 32) (DEFCONSTANT EXCLAIM 33) (DEFCONSTANT QUOTEDBL 34) (DEFCONSTANT HASH 35) (DEFCONSTANT DOLLAR 36) (DEFCONSTANT AMPERSAND 38) (DEFCONSTANT QUOTE 39) (DEFCONSTANT LEFTPAREN 40) (DEFCONSTANT RIGHTPAREN 41) (DEFCONSTANT ASTERISK 42) (DEFCONSTANT PLUS 43) (DEFCONSTANT COMMA 44) (DEFCONSTANT MINUS 45) (DEFCONSTANT PERIOD 46) (DEFCONSTANT SLASH 47) (DEFCONSTANT +0+ 48) (DEFCONSTANT +1+ 49) (DEFCONSTANT +2+ 50) (DEFCONSTANT +3+ 51) (DEFCONSTANT +4+ 52) (DEFCONSTANT +5+ 53) (DEFCONSTANT +6+ 54) (DEFCONSTANT +7+ 55) (DEFCONSTANT +8+ 56) (DEFCONSTANT +9+ 57) (DEFCONSTANT COLON 58) (DEFCONSTANT SEMICOLON 59) (DEFCONSTANT LESS 60) (DEFCONSTANT EQUALS 61) (DEFCONSTANT GREATER 62) (DEFCONSTANT QUESTION 63) (DEFCONSTANT AT 64) (DEFCONSTANT LEFTBRACKET 91) (DEFCONSTANT BACKSLASH 92) (DEFCONSTANT RIGHTBRACKET 93) (DEFCONSTANT CARET 94) (DEFCONSTANT UNDERSCORE 95) (DEFCONSTANT BACKQUOTE 96) (DEFCONSTANT +A+ 97) (DEFCONSTANT +B+ 98) (DEFCONSTANT +C+ 99) (DEFCONSTANT +D+ 100) (DEFCONSTANT +E+ 101) (DEFCONSTANT +F+ 102) (DEFCONSTANT +G+ 103) (DEFCONSTANT +H+ 104) (DEFCONSTANT +I+ 105) (DEFCONSTANT +J+ 106) (DEFCONSTANT +K+ 107) (DEFCONSTANT +L+ 108) (DEFCONSTANT +M+ 109) (DEFCONSTANT +N+ 110) (DEFCONSTANT +O+ 111) (DEFCONSTANT +P+ 112) (DEFCONSTANT +Q+ 113) (DEFCONSTANT +R+ 114) (DEFCONSTANT +S+ 115) (DEFCONSTANT +T+ 116) (DEFCONSTANT +U+ 117) (DEFCONSTANT +V+ 118) (DEFCONSTANT +W+ 119) (DEFCONSTANT +X+ 120) (DEFCONSTANT +Y+ 121) (DEFCONSTANT +Z+ 122) (DEFCONSTANT DELETE 127) (DEFCONSTANT WORLD-0 160) (DEFCONSTANT WORLD-1 161) (DEFCONSTANT WORLD-2 162) (DEFCONSTANT WORLD-3 163) (DEFCONSTANT WORLD-4 164) (DEFCONSTANT WORLD-5 165) (DEFCONSTANT WORLD-6 166) (DEFCONSTANT WORLD-7 167) (DEFCONSTANT WORLD-8 168) (DEFCONSTANT WORLD-9 169) (DEFCONSTANT WORLD-10 170) (DEFCONSTANT WORLD-11 171) (DEFCONSTANT WORLD-12 172) (DEFCONSTANT WORLD-13 173) (DEFCONSTANT WORLD-14 174) (DEFCONSTANT WORLD-15 175) (DEFCONSTANT WORLD-16 176) (DEFCONSTANT WORLD-17 177) (DEFCONSTANT WORLD-18 178) (DEFCONSTANT WORLD-19 179) (DEFCONSTANT WORLD-20 180) (DEFCONSTANT WORLD-21 181) (DEFCONSTANT WORLD-22 182) (DEFCONSTANT WORLD-23 183) (DEFCONSTANT WORLD-24 184) (DEFCONSTANT WORLD-25 185) (DEFCONSTANT WORLD-26 186) (DEFCONSTANT WORLD-27 187) (DEFCONSTANT WORLD-28 188) (DEFCONSTANT WORLD-29 189) (DEFCONSTANT WORLD-30 190) (DEFCONSTANT WORLD-31 191) (DEFCONSTANT WORLD-32 192) (DEFCONSTANT WORLD-33 193) (DEFCONSTANT WORLD-34 194) (DEFCONSTANT WORLD-35 195) (DEFCONSTANT WORLD-36 196) (DEFCONSTANT WORLD-37 197) (DEFCONSTANT WORLD-38 198) (DEFCONSTANT WORLD-39 199) (DEFCONSTANT WORLD-40 200) (DEFCONSTANT WORLD-41 201) (DEFCONSTANT WORLD-42 202) (DEFCONSTANT WORLD-43 203) (DEFCONSTANT WORLD-44 204) (DEFCONSTANT WORLD-45 205) (DEFCONSTANT WORLD-46 206) (DEFCONSTANT WORLD-47 207) (DEFCONSTANT WORLD-48 208) (DEFCONSTANT WORLD-49 209) (DEFCONSTANT WORLD-50 210) (DEFCONSTANT WORLD-51 211) (DEFCONSTANT WORLD-52 212) (DEFCONSTANT WORLD-53 213) (DEFCONSTANT WORLD-54 214) (DEFCONSTANT WORLD-55 215) (DEFCONSTANT WORLD-56 216) (DEFCONSTANT WORLD-57 217) (DEFCONSTANT WORLD-58 218) (DEFCONSTANT WORLD-59 219) (DEFCONSTANT WORLD-60 220) (DEFCONSTANT WORLD-61 221) (DEFCONSTANT WORLD-62 222) (DEFCONSTANT WORLD-63 223) (DEFCONSTANT WORLD-64 224) (DEFCONSTANT WORLD-65 225) (DEFCONSTANT WORLD-66 226) (DEFCONSTANT WORLD-67 227) (DEFCONSTANT WORLD-68 228) (DEFCONSTANT WORLD-69 229) (DEFCONSTANT WORLD-70 230) (DEFCONSTANT WORLD-71 231) (DEFCONSTANT WORLD-72 232) (DEFCONSTANT WORLD-73 233) (DEFCONSTANT WORLD-74 234) (DEFCONSTANT WORLD-75 235) (DEFCONSTANT WORLD-76 236) (DEFCONSTANT WORLD-77 237) (DEFCONSTANT WORLD-78 238) (DEFCONSTANT WORLD-79 239) (DEFCONSTANT WORLD-80 240) (DEFCONSTANT WORLD-81 241) (DEFCONSTANT WORLD-82 242) (DEFCONSTANT WORLD-83 243) (DEFCONSTANT WORLD-84 244) (DEFCONSTANT WORLD-85 245) (DEFCONSTANT WORLD-86 246) (DEFCONSTANT WORLD-87 247) (DEFCONSTANT WORLD-88 248) (DEFCONSTANT WORLD-89 249) (DEFCONSTANT WORLD-90 250) (DEFCONSTANT WORLD-91 251) (DEFCONSTANT WORLD-92 252) (DEFCONSTANT WORLD-93 253) (DEFCONSTANT WORLD-94 254) (DEFCONSTANT WORLD-95 255) (DEFCONSTANT KP0 256) (DEFCONSTANT KP1 257) (DEFCONSTANT KP2 258) (DEFCONSTANT KP3 259) (DEFCONSTANT KP4 260) (DEFCONSTANT KP5 261) (DEFCONSTANT KP6 262) (DEFCONSTANT KP7 263) (DEFCONSTANT KP8 264) (DEFCONSTANT KP9 265) (DEFCONSTANT KP-PERIOD 266) (DEFCONSTANT KP-DIVIDE 267) (DEFCONSTANT KP-MULTIPLY 268) (DEFCONSTANT KP-MINUS 269) (DEFCONSTANT KP-PLUS 270) (DEFCONSTANT KP-ENTER 271) (DEFCONSTANT KP-EQUALS 272) (DEFCONSTANT UP 273) (DEFCONSTANT DOWN 274) (DEFCONSTANT RIGHT 275) (DEFCONSTANT LEFT 276) (DEFCONSTANT INSERT 277) (DEFCONSTANT HOME 278) (DEFCONSTANT END 279) (DEFCONSTANT PAGEUP 280) (DEFCONSTANT PAGEDOWN 281) (DEFCONSTANT F1 282) (DEFCONSTANT F2 283) (DEFCONSTANT F3 284) (DEFCONSTANT F4 285) (DEFCONSTANT F5 286) (DEFCONSTANT F6 287) (DEFCONSTANT F7 288) (DEFCONSTANT F8 289) (DEFCONSTANT F9 290) (DEFCONSTANT F10 291) (DEFCONSTANT F11 292) (DEFCONSTANT F12 293) (DEFCONSTANT F13 294) (DEFCONSTANT F14 295) (DEFCONSTANT F15 296) (DEFCONSTANT NUMLOCK 300) (DEFCONSTANT CAPSLOCK 301) (DEFCONSTANT SCROLLOCK 302) (DEFCONSTANT RSHIFT 303) (DEFCONSTANT LSHIFT 304) (DEFCONSTANT RCTRL 305) (DEFCONSTANT LCTRL 306) (DEFCONSTANT RALT 307) (DEFCONSTANT LALT 308) (DEFCONSTANT RMETA 309) (DEFCONSTANT LMETA 310) (DEFCONSTANT LSUPER 311) (DEFCONSTANT RSUPER 312) (DEFCONSTANT MODE 313) (DEFCONSTANT COMPOSE 314) (DEFCONSTANT HELP 315) (DEFCONSTANT PRINT 316) (DEFCONSTANT SYSREQ 317) (DEFCONSTANT BREAK 318) (DEFCONSTANT MENU 319) (DEFCONSTANT POWER 320) (DEFCONSTANT EURO 321) (DEFCONSTANT UNDO 322) (DEFCONSTANT MOD-NONE 0) (DEFCONSTANT MOD-LCTRL 64) (DEFCONSTANT MOD-RCTRL 128) (DEFCONSTANT MOD-LALT 256) (DEFCONSTANT MOD-RALT 512) (DEFCONSTANT MOD-LMETA 1024) (DEFCONSTANT MOD-RMETA 2048) (DEFCONSTANT MOD-NUM 4096) (DEFCONSTANT MOD-CAPS 8192) (DEFCONSTANT MOD-MODE 16384) (EXPORT '(MOD-MODE MOD-CAPS MOD-NUM MOD-RMETA MOD-LMETA MOD-RALT MOD-LALT MOD-RCTRL MOD-LCTRL MOD-NONE UNDO EURO POWER MENU BREAK SYSREQ PRINT HELP COMPOSE MODE RSUPER LSUPER LMETA RMETA LALT RALT LCTRL RCTRL LSHIFT RSHIFT SCROLLOCK CAPSLOCK NUMLOCK F15 F14 F13 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 PAGEDOWN PAGEUP END HOME INSERT LEFT RIGHT DOWN UP KP-EQUALS KP-ENTER KP-PLUS KP-MINUS KP-MULTIPLY KP-DIVIDE KP-PERIOD KP9 KP8 KP7 KP6 KP5 KP4 KP3 KP2 KP1 KP0 WORLD-95 WORLD-94 WORLD-93 WORLD-92 WORLD-91 WORLD-90 WORLD-89 WORLD-88 WORLD-87 WORLD-86 WORLD-85 WORLD-84 WORLD-83 WORLD-82 WORLD-81 WORLD-80 WORLD-79 WORLD-78 WORLD-77 WORLD-76 WORLD-75 WORLD-74 WORLD-73 WORLD-72 WORLD-71 WORLD-70 WORLD-69 WORLD-68 WORLD-67 WORLD-66 WORLD-65 WORLD-64 WORLD-63 WORLD-62 WORLD-61 WORLD-60 WORLD-59 WORLD-58 WORLD-57 WORLD-56 WORLD-55 WORLD-54 WORLD-53 WORLD-52 WORLD-51 WORLD-50 WORLD-49 WORLD-48 WORLD-47 WORLD-46 WORLD-45 WORLD-44 WORLD-43 WORLD-42 WORLD-41 WORLD-40 WORLD-39 WORLD-38 WORLD-37 WORLD-36 WORLD-35 WORLD-34 WORLD-33 WORLD-32 WORLD-31 WORLD-30 WORLD-29 WORLD-28 WORLD-27 WORLD-26 WORLD-25 WORLD-24 WORLD-23 WORLD-22 WORLD-21 WORLD-20 WORLD-19 WORLD-18 WORLD-17 WORLD-16 WORLD-15 WORLD-14 WORLD-13 WORLD-12 WORLD-11 WORLD-10 WORLD-9 WORLD-8 WORLD-7 WORLD-6 WORLD-5 WORLD-4 WORLD-3 WORLD-2 WORLD-1 WORLD-0 DELETE +Z+ +Y+ +X+ +W+ +V+ +U+ +T+ +S+ +R+ +Q+ +P+ +O+ +N+ +M+ +L+ +K+ +J+ +I+ +H+ +G+ +F+ +E+ +D+ +C+ +B+ +A+ BACKQUOTE UNDERSCORE CARET RIGHTBRACKET BACKSLASH LEFTBRACKET AT QUESTION GREATER EQUALS LESS SEMICOLON COLON +9+ +8+ +7+ +6+ +5+ +4+ +3+ +2+ +1+ +0+ SLASH PERIOD MINUS COMMA PLUS ASTERISK RIGHTPAREN LEFTPAREN QUOTE AMPERSAND DOLLAR HASH QUOTEDBL EXCLAIM SPACE ESCAPE PAUSE RETURN CLEAR TAB BACKSPACE FIRST UNKNOWN)) ;;; Note: The following has been hand-edited! (SETF *PRINT-KEY-TABLE* #("Unknown" "" "" "" "" "" "" "" "Backspace" "Tab" "" "" "Clear" "Return" "" "" "" "" "" "Pause" "" "" "" "" "" "" "" "Escape" "" "" "" "" "Space" "!" "\"" "#" "!" "" "&" "'" "(" ")" "*" "+" "," "-" "." "/" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ":" ";" "<" "=" ">" "?" "@" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "[" "\\" "]" "^" "_" "`" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "" "" "" "" "Delete" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "World-0" "World-1" "World-2" "World-3" "World-4" "World-5" "World-6" "World-7" "World-8" "World-9" "World-10" "World-11" "World-12" "World-13" "World-14" "World-15" "World-16" "World-17" "World-18" "World-19" "World-20" "World-21" "World-22" "World-23" "World-24" "World-25" "World-26" "World-27" "World-28" "World-29" "World-30" "World-31" "World-32" "World-33" "World-34" "World-35" "World-36" "World-37" "World-38" "World-39" "World-40" "World-41" "World-42" "World-43" "World-44" "World-45" "World-46" "World-47" "World-48" "World-49" "World-50" "World-51" "World-52" "World-53" "World-54" "World-55" "World-56" "World-57" "World-58" "World-59" "World-60" "World-61" "World-62" "World-63" "World-64" "World-65" "World-66" "World-67" "World-68" "World-69" "World-70" "World-71" "World-72" "World-73" "World-74" "World-75" "World-76" "World-77" "World-78" "World-79" "World-80" "World-81" "World-82" "World-83" "World-84" "World-85" "World-86" "World-87" "World-88" "World-89" "World-90" "World-91" "World-92" "World-93" "World-94" "World-95" "Kp0" "Kp1" "Kp2" "Kp3" "Kp4" "Kp5" "Kp6" "Kp7" "Kp8" "Kp9" "Kp-Period" "Kp-Divide" "Kp-Multiply" "Kp-Minus" "Kp-Plus" "Kp-Enter" "Kp-Equals" "Up" "Down" "Right" "Left" "Insert" "Home" "End" "Page Up" "Page Down" "F1" "F2" "F3" "F4" "F5" "F6" "F7" "F8" "F9" "F10" "F11" "F12" "F13" "F14" "F15" "" "" "" "Numlock" "Capslock" "Scrollock" "Right Shift" "Left Shift" "Right Ctrl" "Left Ctrl" "Right Alt" "Left Alt" "Right Meta" "Left Meta" "Left Super" "Right Super" "Mode" "Compose" "Help" "Print" "Sysreq" "Break" "Menu" "Power" "Euro" "Undo")) ;;; This is some hand-added code (defconstant ctrl (logior lctrl rctrl)) (defconstant shift (logior lshift rshift)) (defconstant alt (logior lalt ralt)) (defconstant meta (logior lmeta rmeta)) (export '(ctrl shift alt meta)) -- End of code Vladimir |
From: <se...@cp...> - 2004-07-02 17:17:26
|
Hi, I've written a stand-alone parser for SDL_keysym.h and some little utilities to make keyboard handling with cl-sdl a little easier. The attached file already has the parser's output, so it should just be load-and-go for most people. For anyone managing the SF CVS, feel free to include it with cl-sdl with whatever changes you feel it needs, under the cl-sdl license. Vladimir Sedach |
From: Shawn B. <sa...@vc...> - 2003-11-04 07:16:04
|
Matthew Danish <md...@an...> writes: > 0.2.2 is out, please report any bugs to the mailing lists. The release > is mostly bugfixes and some minor enhancements. Awesome! Just thought I'd let you know that I'm writing a real time strategy in cl-sdl. So far I have green blobbies on a "grassy"green speckled map (it scrolls too) moving to the square you click the mouse on. OH YA! :) Shawn |
From: Matthew D. <md...@an...> - 2003-11-03 21:16:39
|
0.2.2 is out, please report any bugs to the mailing lists. The release is mostly bugfixes and some minor enhancements. -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: <sa...@vc...> - 2003-11-01 05:55:12
|
> I am unable to duplicate the slow-down. On my system, both timings are > fairly close. Could it have to do with the version of UFFI? Is your system the same as mine? I have some time this weekend so I'll play around somemore and see what I can find. Shawn |
From: Matthew D. <md...@an...> - 2003-10-31 04:08:39
|
I am unable to duplicate the slow-down. On my system, both timings are fairly close. -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Dirk G. <di...@di...> - 2003-10-26 23:04:16
|
Hi. I've been playing around with CL-SDL for a bit, and I must say that it feels great to be able to access SDL from Common Lisp. :) However, I was a bit disappointed when I wanted to try to get input from my gamepad, since SDL joystick support seems to be non-existant in the current version. Luckily, you guys did a good job on the code, so I was able to read it (I'm relatively new to Lisp), and extend it with SDL's joystick routines. And everything seems to work fine. :) I must admit though, I haven't been able to test everything. Apparently my D-pad and analog sticks are recognized by SDL as 2 axes each, and not as hat and balls. So I've only been able to try buttons and axes. Also, I've only tried it on one platform: CMUCL on Debian unstable on an Intel Centrino based laptop. Two things worth are noting. First, I always receive a 'ghost event' for each of my buttons and axes when the application starts. I suspect this is SDL related though. Perhaps it's some kind of calibration? Second, it seems the SDL_Joystick struct is not documented, and is only used in opaque pointers. I translated that into an 'empty' struct definition: (def-foreign-struct joystick) Was that the right thing to do, or did I get lucky in my tests? :) I've attached my changes as diffs against the current CVS. (I hope that's okay for this list?) I've added the low-level functions to sdl/sdl.lisp, and added functions in sdl/sdl-ext.lisp to make the event loop macro work. Also, I updated examples/2d-test.lisp to process joystick events. Hopefully you can make use of this for the next release. Regards, Dirk Gerrits di...@di... |
From: Shawn B. <sa...@vc...> - 2003-10-21 08:22:49
|
Matthew Danish <md...@an...> writes: > On Sat, Oct 18, 2003 at 06:02:21PM -0700, Shawn Betts wrote: > > I've been playing around with the demos and I wrote a little demo of > > my own that blits a bunch of bmps to the screen. I also wrote a C > > program that does the same thing and it's disturbing how slow the lisp > > version is. I played around and it seems to be sdl:blit-surface that > > is the slow down! If I remove that call, the C and lisp versions are > > pretty much the same speed. > > Would you mind sending the program so I can take a look at it too? Or > better, a minimal test case which demonstrates the problem. And which > platform you are using too. Hi Matthew, Sorry about that, I should have known better :). I've attached my .c and .lisp file. My machine is: AMD Athalon 950Mhz, Matrox G200 video card I'm running CMUCL 18e, and cl-sdl from CVS. On my machine the C code runs 10 times faster than the lisp. Here's a sample run: 502 rogueboner:~/src/sdltest$ ./mytest 1000 tics: 5 time: 0 503 rogueboner:~/src/sdltest$ ./mytest 10000 tics: 44 time: 0 504 rogueboner:~/src/sdltest$ ./mytest 100000 tics: 432 time: 1 Here's a test run of the lisp version: * (hammer::hammer "examples/rock.png" 1000) 49 0 * (hammer::hammer "examples/rock.png" 10000) 476 0 * (hammer::hammer "examples/rock.png" 100000) 4776 0 The code just blits n images to the screen randomly and then flips the screen. Note that the C version is hardcoded to load rock.png. |
From: Matthew D. <md...@an...> - 2003-10-20 18:24:57
|
On Sat, Oct 18, 2003 at 06:02:21PM -0700, Shawn Betts wrote: > I've been playing around with the demos and I wrote a little demo of > my own that blits a bunch of bmps to the screen. I also wrote a C > program that does the same thing and it's disturbing how slow the lisp > version is. I played around and it seems to be sdl:blit-surface that > is the slow down! If I remove that call, the C and lisp versions are > pretty much the same speed. Would you mind sending the program so I can take a look at it too? Or better, a minimal test case which demonstrates the problem. And which platform you are using too. -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Chris B. <el...@19...> - 2003-10-20 06:36:42
|
Matthew Danish <md...@an...> writes: > If anyone is still subscribed to this list, and is interested in helping > out a bit, I wouldn't mind some people testing out the latest CVS to see > if it is settled enough for a release. Also, if I forgot to incorporate > your bugfix/patch/idea and you think it should go in, please let me > know. Basic goal of this release is to have something less buggy than > the previous one (erp). Hi everyone, Great work, Matthew, and everyone else who have contributed! I just got the latest cl-sdl from cvs, and I'm running debian testing updated this weekend, which is sdl 1.2. When I build I get: Undefined foreign symbol: "get_pixel" and, indeed, I don't see `get_pixel' in the sdl headers anywhere. Was this removed, maybe? When I #+nil out the references to it in sdl.lisp and sdl-ext.lisp, everything builds okay. Most of the numbered tutorials run but don't display anything for me, but the :solar-system and :torus ones work. My own (meagre) code works, so I probably won't spend too much time on the tutorials unless someone needs help tracking this down. Anyway, I really appreciate the work, and I'm very excited about this project moving forward (though it's more than functional enough for my purposes as is). Best wishes, cbb -- 20:16:53 up 195 days, 5:12, 0 users, load average: 0.02, 0.03, 0.00 |
From: Shawn B. <sa...@vc...> - 2003-10-19 14:53:03
|
Hi cl-sdl people, First of all, cl-sdl is AWESOME! I once dreamed of writing a cl-sdl but found this instead :). Now I can actually get some REAL hacking done! I've been playing around with the demos and I wrote a little demo of my own that blits a bunch of bmps to the screen. I also wrote a C program that does the same thing and it's disturbing how slow the lisp version is. I played around and it seems to be sdl:blit-surface that is the slow down! If I remove that call, the C and lisp versions are pretty much the same speed. I noticed a patch that's supposed to speed things up on this mailing list. Will this be going into CVS? Or should it be a patch for uffi? I imagine using cmucl specific code in cl-sdl wouldn't make sense if you spent all this effort getting uffi in :). So, I guess my question is: is this slowness issue being addressed? Shawn |
From: Matthew D. <md...@an...> - 2003-10-19 10:55:51
|
If anyone is still subscribed to this list, and is interested in helping out a bit, I wouldn't mind some people testing out the latest CVS to see if it is settled enough for a release. Also, if I forgot to incorporate your bugfix/patch/idea and you think it should go in, please let me know. Basic goal of this release is to have something less buggy than the previous one (erp). -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Julian St. <der...@we...> - 2003-06-29 17:22:11
|
Hello, I've made some changes to cl-sdl-timot to support FreeBSD. A diff and Makefile.fbsd is attached. Regards, Julian Stecklina -- Support strong cryptography. Key ID : D65B2AB5 Fingerprint: FA38 DCD3 00EC 97B8 6DD8 D7CC 35D8 8D0E D65B 2AB5 Key server : pgp.mit.edu |
From: Dan K. <cl...@ch...> - 2003-05-07 08:20:52
|
> One problem: the test now gets an error when a key is pressed. > Research continues... Well, I did some more-careful testing, and ascertained that this was caused by a separate patch I had loaded unintentionally. So the patch as I gave it in my prior email does NOT have this problem. Woohoo! | Dan Knapp, Knight of the Random Seed | http://brain.mics.net/~dankna/ | ONES WHO DOES NOT HAVE TRIFORCE CAN'T GO IN. |
From: Dan K. <da...@ch...> - 2003-05-06 08:36:20
|
I've just spent some time pinpointing and correcting a major inefficiency in cl-sdl under cmucl. It seems that the (alien:slot) method of accessing fields of foreign structs is very slow, something on the order of a third of a second on my 550MHz system, because it has to perform quite a lot of lookup and consing. Below is a short patch to sdl-ffi/ffi/uffi.lisp. It fixes this problem by making the accessors defined for each specific slot be closures over the parameters needed, and by precompiling the actual marshalling/unmarshalling code. (alien:slot) actually conses together the marshalling code each time! Unfortunately, in order to do this, I had to make reference to the cmucl internals, as you will see, which promises to be a pain to maintain. There's no way around that, but I made sure to do the minimum amount of wheel-reinvention, calling existing internal functions wherever possible. It's fairly difficult to temporarily install this in a way which will let me profile its effect but won't mess up my installation. For testing, I loaded it by hand, rebuilt the relevant accessors, and ran 2d-test.lisp from sdl-demos. I had to modify the test slightly, because #'cl-sdl:clear-screen has another efficiency issue, which I don't understand yet; my sole modification was commenting out the line which calls it. One problem: the test now gets an error when a key is pressed. Research continues... Data printed by the test before my modification: Rectangles per second: 10.5 Rectangles per second: 16.0 Rectangles per second: 13.5 Rectangles per second: 16.5 Rectangles per second: 14.5 Rectangles per second: 13.0 Rectangles per second: 13.0 And after: Rectangles per second: 29.5 Rectangles per second: 34.5 Rectangles per second: 38.0 Rectangles per second: 37.5 Rectangles per second: 35.5 Rectangles per second: 35.5 Rectangles per second: 37.0 Rectangles per second: 36.0 Rectangles per second: 24.0 Rectangles per second: 36.0 To rebuild the accessors, I did: (in-package :sdl) (def-foreign-struct-accessors (rect) x y w h) (def-foreign-struct-accessors (color) r g b) (def-foreign-struct-accessors (pixel-format) palette bits-per-pixel bytes-per-pixel r-loss g-loss b-loss a-loss r-shift g-shift b-shift a-shift r-mask g-mask b-mask a-mask color-key alpha) (def-foreign-struct-accessors (surface) w h pixels format flags pitch offset locked format-version) (def-foreign-struct-accessors (video-info) vfmt video-mem) (in-package :user) All those field names are taken directly from sdl/sdl/sdl.lisp. Just as a side note, it runs faster still if you call (sdl:display-format) on the image, once it's loaded. I was able to get up to 50-60fps that way. Here, then, is the patch itself: --- /usr/share/common-lisp/source/sdl-ffi/ffi/uffi.lisp 2003-01-01 14:08:48.000000000 -0500 +++ /home/dankna/sdl-ffi-uffi-mine.lisp 2003-05-06 03:26:46.000000000 -0400 @@ -348,17 +348,33 @@ `(uffi:null-pointer-p ,ptr)) (defmacro def-foreign-struct-accessor ((struct-name) slot) - (let ((accessor-name (intern (format nil "~A-~A" struct-name slot))) - (var (gensym "VAR")) - (val (gensym "VAL"))) + (let ((accessor-name (intern (format nil "~A-~A" struct-name slot)))) `(progn - (declaim (inline ,accessor-name (setf ,accessor-name))) - (defun ,accessor-name (,var) - (slot ,var ,struct-name ,slot)) - (defun (setf ,accessor-name) (,val ,var) - (setf (slot ,var ,struct-name ,slot) - ,val)) - (export '(,accessor-name))))) + (declaim (inline ,accessor-name (setf ,accessor-name))) + (let* ((type (alien::parse-alien-type ',struct-name)) + (field (alien::slot-or-lose type ',slot)) + (field-offset (alien::alien-record-field-offset field)) + (field-type (alien::alien-record-field-type field)) + (extractor-backend (alien::compute-extract-lambda field-type)) + (depositor-backend (alien::compute-deposit-lambda field-type)) + (extractor-frontend (lambda (alien) + (funcall extractor-backend + (alien::alien-value-sap alien) + field-offset + nil))) + (depositor-frontend (lambda (value alien) + (funcall depositor-backend + (alien::alien-value-sap alien) + field-offset + nil + value)))) + (setq extractor-backend + (compile nil (coerce extractor-backend 'function)) + depositor-backend + (compile nil (coerce depositor-backend 'function))) + (setf (fdefinition ',accessor-name) extractor-frontend) + (setf (fdefinition '(setf ,accessor-name)) depositor-frontend) + (export ',accessor-name)))))) (defmacro def-foreign-struct-accessors ((struct-name) &rest slots) `(progn Hopefully that one problem can be fixed quickly, so the patch can be committed. I don't have very much time to devote to recreational coding, so I'm really hoping that somebody else can assist, but I'll do what I can. I think cl-sdl is a package which could potentially become very useful indeed, and it's worth all of our efforts to improve it. | Dan Knapp, Knight of the Random Seed | http://brain.mics.net/~dankna/ | ONES WHO DOES NOT HAVE TRIFORCE CAN'T GO IN. |
From: Matthew D. <md...@an...> - 2002-12-09 00:11:44
|
Posted in the Files section. A year in the making... j/k =) Enjoy -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Matthew D. <md...@an...> - 2002-12-08 11:44:40
|
I'm planning on shifting around the directory structure today, so if there are any changes you would like to submit, I highly recommend isolating them before running cvs update[*]. Then you can send them to me separately. Then I will establish a module named ``cl-sdl'' which points to the ``cl-sdl-timot'' tree (the current one). The directory structure I envision is: doc/ opengl/ opengl/c/ sdl/ sdl/c/ sdl-img/ sdl-img/c/ sdl-ttf/ sdl-ttf/c/ sdl-mix/ sdl-mix/c/ examples/ examples/nehe/ And further sub-projects can be added later on. I am looking forward to putting together some kind of alpha release sometime soon. I think that the project has gotten useful enough, and stable enough, that this should be feasible. And then there's ``release early, release often'' =) * CVS might take care of everything for you, but I'm not entirely sure. -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Matthew D. <md...@an...> - 2002-12-07 18:39:27
|
On Sat, Dec 07, 2002 at 06:14:55PM +0100, Frederic Brunel wrote: > Hi all, > > I've just try the Timot version of CL-SDL and it seems to work > for me with Allegro CL. What are the difference between this > version and the others in CVS? Do you plan to stay with this > version? I think it need to be cleaned and need to have a > better file structure. It is a new set of bindings based off of an initial project of Timo Tossavainen that only worked on CMUCL. It's been cleaned up a lot and converted to use specific wrapper macros that convert it to UFFI. Thus it works cross-platform. This is the only active tree as far as I know. Yes, it does need to be cleaned up a bit but I've put aside some of the more superficial issues until the design settles down a bit more. There is now a STYLE document in the tree explaining some of the issues I encountered while putting the code together over the past few weeks. If you haven't seen it already it might be worth reading over to catch up. > Anyway, what are you plans for the development now? How about Improve and port. I may take up a side-project and see what gets used/needs to get done for it. > implementing a nice way to call GL functions with optionals and > keyword-ed arguments as I'd already suggested? Where do you want to > put this kind of stuff? Into a separate package... GLL (GL-LISP) or GLCL (GL-CL) perhaps? -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |
From: Frederic B. <fre...@fr...> - 2002-12-07 17:10:32
|
Hi all, I've just try the Timot version of CL-SDL and it seems to work for me with Allegro CL. What are the difference between this version and the others in CVS? Do you plan to stay with this version? I think it need to be cleaned and need to have a better file structure. Anyway, what are you plans for the development now? How about implementing a nice way to call GL functions with optionals and keyword-ed arguments as I'd already suggested? Where do you want to put this kind of stuff? -- Frederic Brunel (brunel @ mail.dotcom dot fr) "You can't rush art." |
From: Matthew D. <md...@an...> - 2002-12-02 04:35:16
|
On Mon, Dec 02, 2002 at 04:29:54AM +0100, Frederic Brunel wrote: > > C function pointers. See > > http://sdldoc.csn.ul.ie/sdlglgetprocaddress.php > > Yes, I already know how to use it in C. But can you use this > address directly in Lisp? There is not a way in all FFI I've > seen to said: Use this function pointer for a function with > prototype X. Dealing with function pointers and FFI is at a > level we don't have access. Which is why I propose we keep a table of said function pointers--in C land--and pass a key to that table back to the Lisp. -- ; Matthew Danish <md...@an...> ; OpenPGP public key: C24B6010 on keyring.debian.org ; Signed or encrypted mail welcome. ; "There is no dark side of the moon really; matter of fact, it's all dark." |