cells-cvs
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- 721 discussions
Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv27500
Modified Files:
Celtk.asd Celtk.lisp demos.lisp entry.lisp ltktest-ci.lisp
multichoice.lisp run.lisp timer.lisp tk-interp.lisp
widget.lisp
Log Message:
Celtk2 alpha release
--- /project/cells/cvsroot/Celtk/Celtk.asd 2006/05/12 08:30:13 1.6
+++ /project/cells/cvsroot/Celtk/Celtk.asd 2006/05/16 02:52:22 1.7
@@ -15,7 +15,9 @@
:depends-on (:cells :cl-opengl :cl-glu)
:serial t
:components ((:file "Celtk")
+ (:file "tk-structs")
(:file "tk-interp")
+ (:file "tk-events")
(:file "tk-object")
(:file "widget")
(:file "font")
@@ -35,6 +37,6 @@
(:file "frame")
(:file "togl")
(:file "run")
- (:file "demos")
(:file "ltktest-ci")
- (:file "gears")))
+ (:file "lotsa-widgets")
+ (:file "demos")))
--- /project/cells/cvsroot/Celtk/Celtk.lisp 2006/05/15 05:15:37 1.20
+++ /project/cells/cvsroot/Celtk/Celtk.lisp 2006/05/16 02:52:22 1.21
@@ -24,8 +24,8 @@
(:nicknames "CTK")
(:use :common-lisp :utils-kt :cells :cffi)
(:export
- #:<1>
- #:title$ #:pop-up #:event-root-x #:event-root-y
+ #:<1> #:tk-event-type #:xsv #:name #:x-root #:y-root
+ #:title$ #:pop-up
#:window #:panedwindow #:mk-row #:c?pack-self #:mk-stack #:mk-text-widget #:text-widget
#:mk-panedwindow
#:mk-stack #:mk-radiobutton #:mk-radiobutton-ex #:mk-radiobutton #:mk-label
@@ -47,7 +47,7 @@
#:timer #:timers #:repeat #:executions #:state #:timer-reset #:make-timer-steps
#:^widget-menu #:widget-menu #:tk-format-now
#:coords #:^coords #:tk-translate-keysym
- #:do-on-event #:*tkw*))
+ #:*tkw*))
(defpackage :celtk-user
(:use :common-lisp :utils-kt :cells :celtk))
--- /project/cells/cvsroot/Celtk/demos.lisp 2006/05/15 05:15:37 1.14
+++ /project/cells/cvsroot/Celtk/demos.lisp 2006/05/16 02:52:22 1.15
@@ -25,10 +25,10 @@
(defun ctk::tk-test () ;; ACL project manager needs a zero-argument function, in project package
(test-window
- ;; 'one-button-window
- ;;'ltktest-cells-inside
- ;; OK 'menu-button-test
- ;; OK 'spinbox-test
+ ;; true tester: 'one-button-window
+ ;; Not so good: 'ltktest-cells-inside
+ ;; 'menu-button-test
+ ;; 'spinbox-test
'lotsa-widgets
;; Now in Gears project 'gears-demo
))
--- /project/cells/cvsroot/Celtk/entry.lisp 2006/05/15 05:15:37 1.6
+++ /project/cells/cvsroot/Celtk/entry.lisp 2006/05/16 02:52:22 1.7
@@ -46,18 +46,27 @@
:id (gentemp "ENT")
:xscrollcommand (c-in nil)
:textvariable (c? (intern (^path)))
- :virtual-event-handlers (c? (list `(tracewrite ,(lambda (self event client-data)
- (declare (ignore event client-data))
- (let ((new-value (tcl-get-var *tki* (^path)
- (var-flags :TCL_GLOBAL_ONLY :TCL_LEAVE_ERR_MSG))))
- (unless (string= new-value (^md-value))
- (setf (^md-value) new-value)))))))
+ :event-handler (lambda (self xe)
+ (TRC nil "widget-event-handler" self (xsv type xe) )
+ (case (tk-event-type (xsv type xe))
+ (:virtualevent
+ (trc nil "v/e" (xsv name xe))
+ (case (read-from-string (string-upcase (xsv name xe)))
+ (trace
+ (TRC nil "entry e/h trace" self (when (plusp (xsv user-data xe))
+ (tcl-get-string (xsv user-data xe))))
+ ;; assuming write op, but data field shows that
+ (let ((new-value (tcl-get-var *tki* (^path)
+ (var-flags :TCL_NAMESPACE_ONLY))))
+ (unless (string= new-value (^md-value))
+ (setf (^md-value) new-value))))))))
:md-value (c-in "")))
(defmethod md-awaken :after ((self entry)) ;; move this to a traces slot on widget
(with-integrity (:client `(:trace ,self))
- (tk-format-now "trace add variable ~a write TraceOP" (^path))))
+ (tk-format-now "trace add variable ~a write TraceOP" (^path))
+ ))
;;; /// this next replicates the handling of tk-mirror-variable because
;;; those leverage the COMMAND mechanism, which entry lacks
@@ -90,9 +99,14 @@
:yscrollcommand (c-in nil)
:modified (c-in nil)
:borderwidth (c? (if (^modified) 8 2))
- :virtual-event-handlers (c? (list `(modified ,(lambda (self event client-data)
- (eko ("<<Modified>> !!TK value for text-widget" self event client-data)
- (setf (^modified) t))))))))
+ :event-handler (lambda (self xe)
+ (case (tk-event-type (xsv type xe))
+ (:virtualevent
+ (case (read-from-string (string-upcase (xsv name xe)))
+ (modified
+ (eko (nil "<<Modified>> !!TK value for text-widget" self)
+ (setf (^modified) t)))))))))
+
;;;(defvar +tk-keysym-table+
;;; (let ((ht (make-hash-table :test 'string=)))
;;; (with-open-file (ksyms "/0dev/math-paper/tk-keysym.dat" :direction :input)
--- /project/cells/cvsroot/Celtk/ltktest-ci.lisp 2006/05/15 05:15:37 1.4
+++ /project/cells/cvsroot/Celtk/ltktest-ci.lisp 2006/05/16 02:52:22 1.5
@@ -327,22 +327,13 @@
; This also simplifies Celtk since it just has to pass the Tk code along with "grid <path> "
; appended.
;
- :event-handlers nil #+not (c? (list
- (list '(<1> "%X %Y")
- (lambda (self event root-x root-y)
- (declare (ignorable event root-x root-y))
-
- ;
- ; Stolen from the original. It means "when the left button is
- ; pressed on this widget, popup this menu where the button was pressed"
- ; The only difference is that here we get to specify this along with
- ; the rest of the configuration of this instance, whereas in the original
- ; the enabling code was just "out there" in a long sequence of other
- ; imperatives setting up this widget and that. ie, It is nice having
- ; everything about X collected in one place. In case you are wondering,
- ; a standard event-handler is created for any widget with handlers.
- ;
- (pop-up (^widget-menu :bkg-pop) root-x root-y)))))
+ :event-handler (c? (lambda (self xe)
+ (case (tk-event-type (xsv type xe))
+ (:virtualevent
+ (trc "canvas virtual" (xsv name xe)))
+ (:buttonpress
+ (TRC "canvas buttonpress" self (xsv x-root xe)(xsv y-root xe))
+ (pop-up (^widget-menu :bkg-pop) (xsv x-root xe) (xsv y-root xe))))))
:menus (c? (the-kids
;
--- /project/cells/cvsroot/Celtk/multichoice.lisp 2006/05/15 05:15:37 1.5
+++ /project/cells/cvsroot/Celtk/multichoice.lisp 2006/05/16 02:52:22 1.6
@@ -69,16 +69,14 @@
:id (gentemp "LBX")
:xscrollcommand (c-in nil)
:yscrollcommand (c-in nil)
- :virtual-event-handlers
- (c? (assert (selector self))
- (when (selector self) ;; if not? Figure out how listbox tracks own selection
- (list `(ListboxSelect ,(lambda (self event client-data)
- (declare (ignore client-data event))
- (trc "NEW listbox callback firing" self )
- (let ((selection (parse-integer (tk-eval "~a curselection" (^path)))))
- (trc "NEW listbox selection" self selection)
- (setf (selection (selector self))
- (md-value (elt (^kids) selection)))))))))))
+ :event-handler (lambda (self xe)
+ (case (tk-event-type (xsv type xe))
+ (:virtualevent
+ (case (read-from-string (string-upcase (xsv name xe)))
+ (ListboxSelect
+ (let ((selection (parse-integer (tk-eval "~a curselection" (^path)))))
+ (setf (selection (selector self))
+ (md-value (elt (^kids) selection)))))))))))
(defmodel listbox-item (tk-object)
((item-text :initarg :item-text :accessor item-text
--- /project/cells/cvsroot/Celtk/run.lisp 2006/05/15 05:15:37 1.9
+++ /project/cells/cvsroot/Celtk/run.lisp 2006/05/16 02:52:22 1.10
@@ -38,7 +38,7 @@
;; not recommended by Tcl doc (tcl-do-when-idle (get-callback 'tcl-idle-proc) 42)
(tk-app-init *tki*)
(tk-togl-init *tki*)
- (tk-format-now "proc TraceOP {n1 n2 op} {event generate $n1 <<tracewrite>> -data {$n1 $op}}")
+ (tk-format-now "proc TraceOP {n1 n2 op} {event generate $n1 <<trace>> -data $op}")
(with-integrity ()
(setf *tkw* (make-instance root-class))
@@ -48,9 +48,7 @@
(tk-format `(:fini) "wm deiconify .")
(tk-format-now "bind . <Escape> {destroy .}")
- ;; one or the other of...
- (tcl-do-one-event-loop)#+either-or (Tk_MainLoop)
- )
+ (tcl-do-one-event-loop))
(defcallback main-window-proc :void ((client-data :int)(xe :pointer))
(declare (ignore client-data))
@@ -73,28 +71,11 @@
(defun tcl-do-one-event-loop ()
(loop while (plusp (tk-get-num-main-windows))
do (loop until (zerop (Tcl_DoOneEvent 2))) ;; 2== TCL_DONT_WAIT
- (sleep *event-loop-delay*)
+ (sleep *event-loop-delay*) ;; give the IDE a few cycles
finally ;;(tk-eval "exit")
- (tcl-delete-interp *tki*)
+ (tcl-delete-interp *tki*) ;; probably unnecessary
(setf *tki* nil)))
-
-
-(defmethod do-on-event (self event-type$ &rest args &aux (event-type (intern event-type$ :ctk)))
- (assert (symbolp event-type))
- (trc nil "on event!!!" self event-type args)
- (bif (ecb (gethash event-type (event-handlers self)))
- (apply ecb self event-type args)
- (progn
- (trc "no event handlers for" self event-type (symbol-package event-type))
- (loop for k being the hash-keys of (event-handlers self)
- do (trc "known key" k (symbol-package k))))))
-
-(defmethod do-on-command (self &rest args)
- (bif (ocb (on-command self))
- (apply ocb self args)
- (trc "weird, no on-command value" self args)))
-
(defun test-window (root-class)
"nails existing window as a convenience in iterative development"
(declare (ignorable root-class))
--- /project/cells/cvsroot/Celtk/timer.lisp 2006/05/15 05:15:37 1.4
+++ /project/cells/cvsroot/Celtk/timer.lisp 2006/05/16 02:52:22 1.5
@@ -52,7 +52,7 @@
(export '(repeat ^repeat)))
(defmodel timer ()
- ((id :cell nil :initarg :id :accessor id :initform (gentemp "AFTER")
+ ((id :cell nil :initarg :id :accessor id :initform :anon
:documentation "A debugging aid")
(tag :cell nil :initarg :tag :accessor tag :initform :anon
:documentation "A debugging aid")
@@ -99,8 +99,9 @@
(setf (id self) (set-timer self (^delay)))))))))))
(defun set-timer (self time)
- (setf (gethash (id self) (dictionary *tkw*)) self) ;; redundant but fast
- (tk-eval "after ~a {event generate . <<time-is-up>> -data ~a}" time (id self)))
+ (let ((lookup-id (gentemp "AFTER")))
+ (setf (gethash lookup-id (dictionary *tkw*)) self)
+ (tk-eval "after ~a {event generate . <<time-is-up>> -data ~a}" time lookup-id)))
(defobserver timers ((self tk-object) new-value old-value)
(dolist (k (set-difference old-value new-value))
--- /project/cells/cvsroot/Celtk/tk-interp.lisp 2006/05/15 05:15:37 1.7
+++ /project/cells/cvsroot/Celtk/tk-interp.lisp 2006/05/16 02:52:22 1.8
@@ -160,8 +160,6 @@
(pathName :string)
(related-tkwin :pointer))
-
-
;;; --- Togl (Version 1.7 and above needed!) -----------------------------
@@ -253,39 +251,7 @@
(tcl-eval interp script))
-#+testing
-(defun exec-button ()
- (tk-interp-init-ensure)
- (let ((interp (Tcl_CreateInterp)))
- (tk-app-init interp)
- (togl_init interp)
- #+works (progn
- (eval-script interp "button .b1 -text Hello")
- (eval-script interp "pack .b1"))
- (eval-script interp "togl .t1 -height 100 -height 100 -ident t1")
- ;;(eval-script interp "puts \"Hello puts\"")
- )
- (Tk_MainLoop))
-
-#+testing
-(defun test-result ()
- (tk-interp-init-ensure)
- (let ((*tki* (Tcl_CreateInterp)))
- (tk-app-init *tki*)
- #+wait (eval-script *tki* "font families")
- #+ok (eval-script *tki* "tk scaling")
- #+ok (progn
- (eval-script *tki* "set xyz 42")
- (eval-script *tki* "set xyz"))
- ;;(trc "string result:" (tcl-get-string-result interp))
- (trc "tk-eval result:" (tk-eval "tk scaling"))
- (trc "tk-eval-list result:" (tk-eval-list "font families"))))
-
-;;;(defun exec-main ()
-;;; (main "\\0devtools\\frgotk\\psu-rc-gui.tcl"))
-;;;
-;;;#+test
-;;;(exec-main)
+
;;; Togl stuff
--- /project/cells/cvsroot/Celtk/widget.lisp 2006/05/15 05:15:37 1.5
+++ /project/cells/cvsroot/Celtk/widget.lisp 2006/05/16 02:52:22 1.6
@@ -22,6 +22,31 @@
(in-package :Celtk)
+;;; --- widget tkwin window glue -----------------------
+
+(defun widget-to-tkwin (self)
+ (tk-name-to-window *tki* (path self) (tk-main-window *tki*)))
+
+(defun xwin-register (self)
+ (when (tkwin self)
+ (let ((xwin (tkwin-window (tkwin self))))
+ (when (plusp xwin)
+ (setf (gethash xwin (xwins .tkw)) self)
+ xwin))))
+
+(defun tkwin-widget (tkwin)
+ (gethash tkwin (tkwins *tkw*)))
+
+(defun xwin-widget (xwin) ;; assignment of xwin is deferred so...all this BS..
+ (when (plusp xwin)
+ (or (gethash xwin (xwins *tkw*))
+ (loop for self being the hash-values of (tkwins *tkw*)
+ using (hash-key tkwin)
+ unless (xwin self) ;; we woulda found it by now
+ do (when (eql xwin (xwin-register self))
+ (return-from xwin-widget self))
+ finally (trc "xwin-widget > no widget for xwin " xwin)))))
+
;;; --- widget -----------------------------------------
(defmodel widget (family tk-object)
@@ -35,10 +60,7 @@
(packing :reader packing :initarg :packing :initform nil)
(gridding :reader gridding :initarg :gridding :initform nil)
(enabled :reader enabled :initarg :enabled :initform t)
- (event-handlers :reader event-handlers :initarg :event-handlers :initform nil)
- (virtual-event-handlers :reader virtual-event-handlers :initarg :virtual-event-handlers :initform nil)
- (needs-event-handler-p :reader needs-event-handler-p
- :initform (c? (or (^event-handlers)(^virtual-event-handlers))))
+ (event-handler :reader event-handler :initarg :event-handler :initform nil)
(menus :reader menus :initarg :menus :initform nil
:documentation "An assoc of an arbitrary key and the associated CLOS menu instances (not their tk ids)")
(image-files :reader image-files :initarg :image-files :initform nil)
@@ -48,26 +70,12 @@
(:default-initargs
:id (gentemp "W")))
-(defobserver needs-event-handler-p ()
- (when new-value
+(defobserver event-handler ()
+ (when new-value ;; \\\ work out how to unregister any old value
(with-integrity (:client `(:post-make-tk ,self))
+ (trc "creating event handler for" self)
(tk-create-event-handler-ex self 'widget-event-handler -1)))) ;; // make this -1 more efficient
-(defun widget-to-tkwin (self)
- (tk-name-to-window *tki* (path self) (tk-main-window *tki*)))
-
-(defcallback widget-event-handler :void ((client-data :int)(xe :pointer))
- (trc "bingo" (tk-event-type (xsv type xe)))
- (case (tk-event-type (xsv type xe))
- (:virtualevent
- (let* ((self (xwin-widget (xsv event-window xe)))
- (name (read-from-string (string-upcase (xsv name xe))))
- (entry (assoc name (^virtual-event-handlers))))
- (TRC "widget-event-handler" self name)
- (if entry
- (funcall (second entry) self xe client-data)
- (trc "no handler for" name self))))))
-
(defun tk-create-event-handler-ex (widget callback-name &rest masks)
(let ((self-tkwin (widget-to-tkwin widget)))
(assert (plusp self-tkwin))
@@ -77,6 +85,13 @@
(get-callback callback-name)
self-tkwin)))
+(defcallback widget-event-handler :void ((client-data :int)(xe :pointer))
+ (let ((self (tkwin-widget client-data)))
+ (assert self () "widget-event-handler > no widget for tkwin ~a" client-data)
+ (bif (h (^event-handler))
+ (funcall h self xe)
+ (trc "widget-event-handler > warning: no handler in instance requesting event handling" self))))
+
(defclass commander ()
()
(:default-initargs
@@ -112,26 +127,6 @@
(tk-name-to-window *tki* (^path) (tk-main-window *tki*))))))
(setf (gethash tkwin (tkwins .tkw)) self)))
-(defun xwin-register (self)
- (when (tkwin self)
- (let ((xwin (tkwin-window (tkwin self))))
- (when (plusp xwin)
- (setf (gethash xwin (xwins .tkw)) self)
- xwin))))
-
-(defun tkwin-widget (tkwin)
- (gethash tkwin (tkwins *tkw*)))
-
-(defun xwin-widget (xwin) ;; assignment of xwin is deferred so...all this BS..
- (when (plusp xwin)
- (or (gethash xwin (xwins *tkw*))
- (loop for self being the hash-values of (tkwins *tkw*)
- using (hash-key tkwin)
- unless (xwin self) ;; we woulda found it by now
- do (when (eql xwin (xwin-register self))
- (return-from xwin-widget self))
- finally (trc "xwin-widget > no widget for xwin " xwin)))))
-
(defmethod make-tk-instance ((self widget))
(setf (gethash (^path) (dictionary .tkw)) self)
(trc nil "mktki" self (^path))
@@ -139,6 +134,10 @@
(when (tk-class self)
(tk-format-now "~(~a~) ~a ~{~(~a~) ~a~^ ~}" ;; call to this GF now integrity-wrapped by caller
(tk-class self) (path self)(tk-configurations self)))
+ #+tryinafter (tkwin-register self)))
+
+(defmethod make-tk-instance :after ((self widget))
+ (with-integrity (:client `(:post-make-tk ,self))
(tkwin-register self)))
(defmethod tk-configure ((self widget) option value)
1
0
Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv18787
Modified Files:
togl.lisp
Added Files:
tk-structs.lisp
Log Message:
--- /project/cells/cvsroot/Celtk/togl.lisp 2006/05/15 05:15:37 1.4
+++ /project/cells/cvsroot/Celtk/togl.lisp 2006/05/15 09:00:47 1.5
@@ -130,8 +130,7 @@
(def-togl-callback display ())
(def-togl-callback reshape ())
(def-togl-callback destroy ())
-(def-togl-callback timer ()
- (check-faux-events))
+(def-togl-callback timer ())
(defmethod make-tk-instance ((self togl))
(with-integrity (:client `(:make-tk ,self))
--- /project/cells/cvsroot/Celtk/tk-structs.lisp 2006/05/15 09:00:48 NONE
+++ /project/cells/cvsroot/Celtk/tk-structs.lisp 2006/05/15 09:00:48 1.1
(in-package :celtk)
(defctype Window :unsigned-long) ;; <sigh> The XWindow pointer stored in the tkwin record
(defctype Time :unsigned-long)
(defctype Tk_Uid :string)
(defcstruct tk-fake-win
"Used by macros to peek at tkwins (why use a fake window definition?)"
(display :pointer)
(dummy1 :pointer)
(screen-num :int)
(visual :pointer)
(depth :int)
(window Window)
(dummy2 :pointer)
(dummy3 :pointer)
(parent-ptr Window)
(dummy4 :pointer)
(dummy5 :pointer)
(pathName :string)
;;; Tk_Uid nameUid;
;;; Tk_Uid classUid;
;;; XWindowChanges changes;
;;; unsigned int dummy6; /* dirtyChanges */
;;; XSetWindowAttributes atts;
;;; unsigned long dummy7; /* dirtyAtts */
;;; unsigned int flags;
;;; char *dummy8; /* handlerList */
;;;#ifdef TK_USE_INPUT_METHODS
;;; XIC dummy9; /* inputContext */
;;;#endif /* TK_USE_INPUT_METHODS */
;;; ClientData *dummy10; /* tagPtr */
;;; int dummy11; /* numTags */
;;; int dummy12; /* optionLevel */
;;; char *dummy13; /* selHandlerList */
;;; char *dummy14; /* geomMgrPtr */
;;; ClientData dummy15; /* geomData */
;;; int reqWidth, reqHeight;
;;; int internalBorderLeft;
;;; char *dummy16; /* wmInfoPtr */
;;; char *dummy17; /* classProcPtr */
;;; ClientData dummy18; /* instanceData */
;;; char *dummy19; /* privatePtr */
;;; int internalBorderRight;
;;; int internalBorderTop;
;;; int internalBorderBottom;
;;; int minReqWidth;
;;; int minReqHeight;
)
(defun tkwin-pathname (tkwin)
(foreign-slot-value tkwin 'tk-fake-win 'pathname))
(defun tkwin-window (tkwin)
"Get the (different!) XWindow pointer from the tkwin data structure.
Note that the Xwindow structure is not allocated straight away, not until
(I guess) the XWindow server has gotten involved with the widget."
(foreign-slot-value tkwin 'tk-fake-win 'window))
#|
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* True if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window event; /* Window on which event was requested. */
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
int x_root, y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
Tk_Uid name; /* Name of virtual event. */
Bool same_screen; /* same screen flag */
Tcl_Obj *user_data; /* application-specific data reference; Tk will
* decrement the reference count *once* when it
* has finished processing the event. */
} XVirtualEvent;
|#
(defcstruct x-virtual-event
"Virtual event, OK?"
(type :int)
(serial :unsigned-long)
(send-event :boolean)
(display :pointer)
(event-window Window)
(root-window Window)
(sub-window Window)
(time Time)
(x :int)
(y :int)
(x-root :int)
(y-root :int)
(state :unsigned-int)
(name :string)
(same-screen :boolean)
(user-data :pointer)
)
(defmacro xsv (slot-name xptr)
`(foreign-slot-value ,xptr 'X-Virtual-Event ',slot-name))
(defun xevent-type (xe)
(tk-event-type (xsv type xe)))
(defcenum tcl-event-flag-values
(:tcl-dont-wait 2)
(:tcl-window-events 4)
(:tcl-file-events 8)
(:tcl-timer-events 16)
(:tcl-idle-events 32)
(:tcl-all-events -3))
(defcenum tcl-variable-related-flag
"Flags passed to getvar, setvar, tracevar, etc"
(:TCL_GLOBAL_ONLY 1)
(:TCL_NAMESPACE_ONLY 2)
(:TCL_APPEND_VALUE 4)
(:TCL_LIST_ELEMENT 8)
(:TCL_TRACE_READS #x10)
(:TCL_TRACE_WRITES #x20)
(:TCL_TRACE_UNSETS #x40)
(:TCL_TRACE_DESTROYED #x80)
(:TCL_INTERP_DESTROYED #x100)
(:TCL_LEAVE_ERR_MSG #x200)
(:TCL_TRACE_ARRAY #x800)
;; Required to support old variable/vdelete/vinfo traces */
(:TCL_TRACE_OLD_STYLE #x1000)
;; Indicate the semantics of the result of a trace */
(:TCL_TRACE_RESULT_DYNAMIC #x8000)
(:TCL_TRACE_RESULT_OBJECT #x10000))
(defun var-flags (&rest kws)
(apply '+ (loop for kw in kws
collecting (foreign-enum-value 'tcl-variable-related-flag kw))))
1
0
Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv26494
Added Files:
Gears.lpr lotsa-widgets.lisp tk-events.lisp
Log Message:
--- /project/cells/cvsroot/Celtk/Gears.lpr 2006/05/13 14:36:58 NONE
+++ /project/cells/cvsroot/Celtk/Gears.lpr 2006/05/13 14:36:58 1.1
;; -*- lisp-version: "8.0 [Windows] (May 5, 2006 15:39)"; cg: "1.81"; -*-
(in-package :cg-user)
(defpackage :GEARS)
(define-project :name :gears
:modules (list (make-instance 'module :name "gears.lisp"))
:projects (list (make-instance 'project-module :name "CELTK")
(make-instance 'project-module :name
"C:\\0devtools\\cl-opengl\\glu"))
:libraries nil
:distributed-files nil
:internally-loaded-files nil
:project-package-name :gears
:main-form nil
:compilation-unit t
:verbose nil
:runtime-modules '(:cg-dde-utils :cg.base :cg.bitmap-pane
:cg.bitmap-pane.clipboard :cg.bitmap-stream
:cg.button :cg.caret :cg.check-box :cg.choice-list
:cg.choose-printer :cg.clipboard
:cg.clipboard-stack :cg.clipboard.pixmap
:cg.color-dialog :cg.combo-box :cg.common-control
:cg.comtab :cg.cursor-pixmap :cg.curve
:cg.dialog-item :cg.directory-dialog
:cg.directory-dialog-os :cg.drag-and-drop
:cg.drag-and-drop-image :cg.drawable
:cg.drawable.clipboard :cg.dropping-outline
:cg.edit-in-place :cg.editable-text
:cg.file-dialog :cg.fill-texture
:cg.find-string-dialog :cg.font-dialog
:cg.gesture-emulation :cg.get-pixmap
:cg.get-position :cg.graphics-context
:cg.grid-widget :cg.grid-widget.drag-and-drop
:cg.group-box :cg.header-control :cg.hotspot
:cg.html-dialog :cg.html-widget :cg.icon
:cg.icon-pixmap :cg.ie :cg.item-list
:cg.keyboard-shortcuts :cg.lamp :cg.lettered-menu
:cg.lisp-edit-pane :cg.lisp-text :cg.lisp-widget
:cg.list-view :cg.mci :cg.menu :cg.menu.tooltip
:cg.message-dialog :cg.multi-line-editable-text
:cg.multi-line-lisp-text :cg.multi-picture-button
:cg.multi-picture-button.drag-and-drop
:cg.multi-picture-button.tooltip :cg.ocx
:cg.os-widget :cg.os-window :cg.outline
:cg.outline.drag-and-drop
:cg.outline.edit-in-place :cg.palette
:cg.paren-matching :cg.picture-widget
:cg.picture-widget.palette :cg.pixmap
:cg.pixmap-widget :cg.pixmap.file-io
:cg.pixmap.printing :cg.pixmap.rotate :cg.printing
:cg.progress-indicator :cg.project-window
:cg.property :cg.radio-button :cg.rich-edit
:cg.rich-edit-pane :cg.rich-edit-pane.clipboard
:cg.rich-edit-pane.printing :cg.sample-file-menu
:cg.scaling-stream :cg.scroll-bar
:cg.scroll-bar-mixin :cg.selected-object
:cg.shortcut-menu :cg.static-text :cg.status-bar
:cg.string-dialog :cg.tab-control
:cg.template-string :cg.text-edit-pane
:cg.text-edit-pane.file-io :cg.text-edit-pane.mark
:cg.text-or-combo :cg.text-widget :cg.timer
:cg.toggling-widget :cg.toolbar :cg.tooltip
:cg.trackbar :cg.tray :cg.up-down-control
:cg.utility-dialog :cg.web-browser
:cg.web-browser.dde :cg.wrap-string
:cg.yes-no-list :cg.yes-no-string :dde)
:splash-file-module (make-instance 'build-module :name "")
:icon-file-module (make-instance 'build-module :name "")
:include-flags '(:top-level :debugger)
:build-flags '(:allow-runtime-debug :purify)
:autoload-warning t
:full-recompile-for-runtime-conditionalizations nil
:default-command-line-arguments "+M +t \"Console for Debugging\""
:additional-build-lisp-image-arguments '(:read-init-files nil)
:old-space-size 256000
:new-space-size 6144
:runtime-build-option :standard
:on-initialization 'gears::gears
:on-restart 'do-default-restart)
;; End of Project Definition
--- /project/cells/cvsroot/Celtk/lotsa-widgets.lisp 2006/05/13 14:36:58 NONE
+++ /project/cells/cvsroot/Celtk/lotsa-widgets.lisp 2006/05/13 14:36:58 1.1
(in-package :celtk-user)
(defmodel lotsa-widgets (window)
()
(:default-initargs
:kids (c? (the-kids
(demo-all-menubar)
(mk-row (:packing (c?pack-self))
(mk-label :text "aaa"
:image-files (list (list 'kt (make-pathname #+lispworks :host #-lispworks :device "c"
:directory '(:absolute "0dev" "Celtk")
:name "kt69" :type "gif")))
:height 200
:width 300
:image (c? (format nil "~(~a.~a~)" (ctk::^path) 'kt)))
(assorted-canvas-items)
(mk-stack ()
(mk-text-widget
:id :my-text
:md-value (c?n "hello, world")
:height 8
:width 25)
(spin-package-with-symbols))
(mk-stack ()
(mk-row (:id :radio-ny :selection (c-in 'yes))
(mk-radiobutton-ex ("yes" 'yes))
(mk-radiobutton-ex ("no" 'no))
(mk-label :text (c? (string (selection (upper self selector))))))
(mk-row ()
(mk-checkbutton :id :check-me
:text "Check Me"
:md-value (c-in t))
(mk-label :text (c? (if (fm^v :check-me) "checked" "unchecked"))))
(mk-row ()
(mk-button-ex ("Time now?" (setf (fm^v :push-time)
(get-universal-time))))
(mk-label :text (c? (time-of-day (^md-value)))
:id :push-time
:md-value (c-in (get-universal-time))))
(style-by-edit-menu)
(style-by-widgets)
(mk-row (:layout-anchor 'sw)
(mk-entry
:id :enter-me)
(mk-label :text (c? (conc$ "echo " (fm^v :enter-me))))))
(duelling-scrolled-lists)
)))))
(defun style-by-edit-menu ()
(mk-row ("Style by Edit Menu")
(mk-label :text "Four score and seven years ago today"
:wraplength 600
:tkfont (c? (list
(selection (fm^ :app-font-face))
(selection (fm^ :app-font-size))
(if (fm^v :app-font-italic)
'italic 'roman)
(if (fm^v :app-font-bold)
'bold 'normal))))))
(defun spin-package-with-symbols ()
(mk-stack ()
(mk-spinbox
:id :spin-pkg
:md-value (cells::c?n "cells")
:tk-values (mapcar 'down$
(sort (mapcar 'package-name
(list-all-packages))
'string>)))
(mk-scrolled-list
:id :spinpkg-sym-list
:list-height 6
:list-item-keys (c? (let* ((spinner (fm^ :spin-pkg))
(item (when spinner (md-value spinner)))
(pkg (find-package (string-upcase item))))
(when pkg
(loop for sym being the symbols in pkg
for n below 25
counting sym into symct
collecting sym into syms
finally (trc "syms found !!!" symct)
(return syms)))))
:list-item-factory (lambda (sym)
(make-instance 'listbox-item
:fm-parent *parent*
:md-value sym
:item-text (down$ (symbol-name sym)))))))
(defun duelling-scrolled-lists ()
(mk-row ()
(mk-scrolled-list
:id :pkg-list
:selection (c-in (find-package "ASDF"))
:list-height 6
:list-item-keys (list-all-packages)
:list-item-factory (lambda (pkg)
(make-instance 'listbox-item
:fm-parent *parent*
:md-value pkg
:item-text (down$ (package-name pkg)))))
(mk-scrolled-list
:id :pkg-sym-list
:list-height 6
:list-item-keys (c? (bwhen (pkg (selection (fm^ :pkg-list)))
(loop for sym being the present-symbols in pkg
for n below 25
collecting sym)))
:list-item-factory (lambda (sym)
(make-instance 'listbox-item
:md-value sym
:fm-parent *parent*
:item-text (down$ (symbol-name sym)))))))
(defun assorted-canvas-items ()
(mk-canvas
:height 350
:kids (c? (the-kids
(mk-bitmap :coords (list 140 140)
:bitmap "@\\0dev\\Celtk\\x1.xbm" #+not "@\\temp\\gsl.xbm")
(mk-rectangle :coords (list 10 10 100 60)
:tk-fill "red")
(mk-text-item :coords (list 100 80)
:text "i am an item"
:tk-fill 'blue)
(mk-arc :coords (list 10 100 100 160)
:start 45
:tk-fill "orange")
(mk-line :coords (list 250 10 300 40 250 70 400 100)
:width 8
:smooth 'bezier
:joinstyle 'miter
:arrow 'both
:tk-fill 'purple)
(mk-oval :coords (list 10 200 100 260)
:tk-fill "yellow")
(mk-polygon :coords (list 250 210 300 220 340 200 260 180)
:width 4
:tk-fill 'green
:smooth 'bezier
:joinstyle 'miter)
(mk-arc :coords (list 10 300 100 360)
:start 45
:tk-fill "white")
))))
(defun style-by-widgets ()
(mk-stack ("Style by Widgets" :id :widstyle)
(mk-row (:id :stywid
:packing-side 'left
:layout-anchor 'sw)
(mk-popup-menubutton
:id :font-face
:initial-value (c? (second (^entry-values)))
:entry-values (c? (eko ("popup ff") (subseq (tk-eval-list "font families") 4 10))))
(mk-scale :id :font-size
:md-value (c-in 14)
:tk-label "Font Size"
:from 7 :to 24
:orient 'horizontal))
(mk-label :text "Four score and seven years ago today, our fathers broguht forth on this continent a new nation..."
:wraplength 200
:justify 'left
:tkfont (c? (list
(selection (fm^ :font-face))
(md-value (fm^ :font-size)))))))
(defun demo-all-menubar ()
(mk-menubar
:id 'mbar
:kids (c? (the-kids
(mk-menu-entry-cascade
:id 'file
:label "File"
:kids (c? (the-kids
(mk-menu
:id 'filemenu
:kids (c? (the-kids
(mk-menu-entry-command :label "New" :command "exit")
(mk-menu-entry-command :label "Open" :command "tk_getOpenFile")
(mk-menu-entry-command :label "Close" :command "exit")
(mk-menu-entry-separator)
(mk-menu-entry-command :label "Quit"
:state (c? (if t ;; (md-value (fm^ :check-me))
'normal 'disabled))
:command "exit")))))))
(mk-menu-entry-cascade
:id 'editcascade
:label "Edit"
:kids (c? (the-kids
(mk-menu
:id 'editmenu
:kids (c? (the-kids
(mk-menu-entry-command :label "Undo"
:on-command (lambda (self)
(trc "edit menu undo" self)))
(mk-menu-entry-separator)
(mk-menu-entry-command :label "Cut" :command "exit")
(mk-menu-entry-command :label "Copy" :command "exit")
(mk-menu-entry-command :label "Paste" :command "exit")
(mk-menu-entry-command :label "Clear" :command "exit")
(mk-menu-entry-separator)
(mk-menu-radio-group :id :app-font-face
:selection (c-in "courier")
:kids (c? (the-kids
(mk-menu-entry-radiobutton :label "Times" :value "times")
(mk-menu-entry-radiobutton :label "Courier" :value "courier")
(mk-menu-entry-radiobutton :label "Helvetica" :value "helvetica"))))
(mk-menu-entry-separator)
(mk-menu-entry-cascade
:id :app-font-size
:label "Font Size"
:menu (c? (path (kid1 self)))
:selection (c-in 12)
:kids (c? (the-kids
(mk-menu
:id :fsztoff
:tearoff 1
:kids (c? (the-kids
(loop for (label value) in '(("9" 9)("12" 12)("14" 14))
collecting (mk-menu-entry-radiobutton :label label :value value))))))))
(mk-menu-entry-separator)
(mk-menu-entry-checkbutton :id :app-font-italic :label "Italic")
(mk-menu-entry-checkbutton :id :app-font-bold :label "Bold" :md-value (c-in t))))))))))))
--- /project/cells/cvsroot/Celtk/tk-events.lisp 2006/05/13 14:36:58 NONE
+++ /project/cells/cvsroot/Celtk/tk-events.lisp 2006/05/13 14:36:58 1.1
(in-package :celtk)
#|
typedef struct {
int type;
unsigned long serial; /* # of last request processed by server */
Bool send_event; /* True if this came from a SendEvent request */
Display *display; /* Display the event was read from */
Window event; /* Window on which event was requested. */
Window root; /* root window that the event occured on */
Window subwindow; /* child window */
Time time; /* milliseconds */
int x, y; /* pointer x, y coordinates in event window */
int x_root, y_root; /* coordinates relative to root */
unsigned int state; /* key or button mask */
Tk_Uid name; /* Name of virtual event. */
Bool same_screen; /* same screen flag */
Tcl_Obj *user_data; /* application-specific data reference; Tk will
* decrement the reference count *once* when it
* has finished processing the event. */
} XVirtualEvent;
|#
(defctype Window-ptr :unsigned-long)
(defctype Time :unsigned-long)
(defctype Tk_Uid :string)
(defcstruct x-virtual-event
(type :int)
(serial :unsigned-long)
(send-event :boolean)
(display :pointer)
(event-window Window-ptr)
(root-window Window-ptr)
(sub-window Window-ptr)
(time Time)
(x :int)
(y :int)
(x-root :int)
(y-root :int)
(state :unsigned-int)
(name Tk_Uid)
(same-screen :boolean)
(user-data :string)
)
(defcenum tcl-event-flag-values
(:tcl-dont-wait 2)
(:tcl-window-events 4)
(:tcl-file-events 8)
(:tcl-timer-events 16)
(:tcl-idle-events 32)
(:tcl-all-events -3))
(defcfun ("Tcl_DoOneEvent" Tcl_DoOneEvent) :int
(flags :int))
(defcfun ("Tcl_DoWhenIdle" tcl-do-when-idle) :void
(tcl-idle-proc :pointer)
(client-data :int))
(defcallback tcl-idle-proc :void ((client-data :int))
(unless (c-stopped)
(print (list :idle-proc :client-data client-data))))
;; Tk_MainLoop
(defcfun ("Tk_MainLoop" Tk_MainLoop) :void)
(defcfun ("Tk_CreateEventHandler" tk-create-event-handler) :void
(tkwin :pointer)
(mask :int)
(proc :pointer)
(client-data :int))
(defcallback tk-event-proc :void ((client-data :int)(XEvent :pointer))
(trc "yowza tk-event-proc" client-data XEvent (tk-event-type (mem-aref XEvent :int))
[42 lines skipped]
1
0
Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv19613
Added Files:
x1.xbm
Log Message:
--- /project/cells/cvsroot/Celtk/x1.xbm 2006/05/13 13:44:25 NONE
+++ /project/cells/cvsroot/Celtk/x1.xbm 2006/05/13 13:44:25 1.1
#define x1_width 626
#define x1_height 428
static char x1_bits[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x03,0x80,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x80,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,
0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,
0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,
0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x03,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,
0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,
0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,
0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,
0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,
0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
[1858 lines skipped]
1
0
Update of /project/cells/cvsroot/Celtk
In directory clnet:/tmp/cvs-serv17026
Modified Files:
CELTK.lpr Celtk.lisp demos.lisp entry.lisp ltktest-ci.lisp
run.lisp tk-interp.lisp
Log Message:
--- /project/cells/cvsroot/Celtk/CELTK.lpr 2006/05/12 08:30:13 1.9
+++ /project/cells/cvsroot/Celtk/CELTK.lpr 2006/05/13 13:26:42 1.10
@@ -8,6 +8,7 @@
:modules (list (make-instance 'module :name "Celtk.lisp")
(make-instance 'module :name "tk-interp.lisp")
(make-instance 'module :name "tk-object.lisp")
+ (make-instance 'module :name "tk-events.lisp")
(make-instance 'module :name "widget.lisp")
(make-instance 'module :name "font.lisp")
(make-instance 'module :name "layout.lisp")
--- /project/cells/cvsroot/Celtk/Celtk.lisp 2006/05/12 08:30:13 1.18
+++ /project/cells/cvsroot/Celtk/Celtk.lisp 2006/05/13 13:26:43 1.19
@@ -24,6 +24,7 @@
(:nicknames "CTK")
(:use :common-lisp :utils-kt :cells :cffi)
(:export
+ #:<1>
#:title$ #:pop-up #:event-root-x #:event-root-y
#:window #:panedwindow #:mk-row #:c?pack-self #:mk-stack #:mk-text-widget #:text-widget
#:mk-panedwindow
@@ -127,7 +128,7 @@
;
; --- debug stuff ---
;
- (let ((yes '( ))
+ (let ((yes '("bind" "entry"))
(no '("tk-events")))
(declare (ignorable yes no))
@@ -135,7 +136,7 @@
(break "Hey, fix this.")
(replace tk$ "{Alt Q}" :start1 st))
- (when nil #+not (and (or (null yes) (find-if (lambda (s) (search s tk$)) yes))
+ (when (and (or (null yes) (find-if (lambda (s) (search s tk$)) yes))
(not (find-if (lambda (s) (search s tk$)) no)))
(format t "~&tk> ~a~%" tk$)))
@@ -144,7 +145,7 @@
; --- serious stuff ---
;
(setf *tk-last* tk$)
- (eval-script *tki* tk$))
+ (tcl-eval-ex *tki* tk$))
(defun tk-format (defer-info fmt$ &rest fmt-args)
"Format then send to wish (via user queue)"
--- /project/cells/cvsroot/Celtk/demos.lisp 2006/05/12 08:30:14 1.12
+++ /project/cells/cvsroot/Celtk/demos.lisp 2006/05/13 13:26:43 1.13
@@ -24,21 +24,13 @@
(in-package :celtk-user)
(defun ctk::tk-test () ;; ACL project manager needs a zero-argument function, in project package
- #+test (dolist (dll (ff:list-all-foreign-libraries))
- (when (find-if (lambda (lib)
- (search lib (pathname-name dll))) '("ftgl" "tcl" "tk"))
- (print `(unloading foreign library ,dll))
- (ff:unload-foreign-library dll)))
- ;(cffi:use-foreign-library ctk::tcl)
- ;(cffi:use-foreign-library ctk::tk)
- ;(cffi:use-foreign-library ctk::togl)
(test-window
- ;;'one-button
- 'ltktest-cells-inside
- ;;'menu-button-test
- ;;'spinbox-test
- ;; 'lotsa-widgets
- ;;'gears-demo
+ ;; dont try this one, it is deliberately dysfunctional 'one-button
+ ;; OK 'ltktest-cells-inside
+ ;; OK 'menu-button-test
+ ;; OK 'spinbox-test
+ 'lotsa-widgets
+ ;; Now in Gears project 'gears-demo
))
(defmodel one-button (window)
@@ -72,6 +64,10 @@
:width 25)
(make-instance 'button
:fm-parent *parent*
+ :text "<<kenny>>"
+ :command "event generate . <<kenny>> -data \"Hi mom\"")
+ (make-instance 'button
+ :fm-parent *parent*
:text "time now?"
:on-command (c? (lambda (self)
(trc "we got callbacks" self))))
--- /project/cells/cvsroot/Celtk/entry.lisp 2006/05/12 08:30:14 1.4
+++ /project/cells/cvsroot/Celtk/entry.lisp 2006/05/13 13:26:43 1.5
@@ -84,12 +84,26 @@
:xscrollcommand (c-in nil)
:yscrollcommand (c-in nil)
:modified (c-in nil)
- :bindings (c? (list (list '|<<Modified>>|
+ :borderwidth (c? (if (^modified) 8 2))
+ :bindings nil #+not (c? (list (list '|<<Modified>>|
(lambda (self event &rest args)
(eko ("<<Modified>> !!TK value for text-widget" self event args)
- (setf (^modified) t))))))))
+ nil #+not (setf (^modified) t))))))))
+
+(defcallback entry-modified-handler :void ((self-tkwin :int)(XEvent :pointer))
+ (trc "yowza entry-modified-handler" self-tkwin XEvent (mem-aref XEvent :int)
+ (TK-EVENT-TYPE (mem-aref XEvent :int))))
+
+(defmethod make-tk-instance :after ((self text-widget))
+ (with-integrity(:client `(:post-make-tk ,self))
+ ;;(tk-format-now "bind ~a <<Modified>> {set bxbxbxbx}" (^path)) ;; {event generate ~:*~a <<yowza>>}" (^path))
+ (let ((self-tkwin (widget-to-tkwin self)))
+ (assert (plusp self-tkwin))
+ (trc "setting up text-widget virtual-event handler" self :tkwin self-tkwin)
+ (tk-create-event-handler self-tkwin (expt 2 30) (callback entry-modified-handler) self-tkwin))))
+
;;;(defvar +tk-keysym-table+
;;; (let ((ht (make-hash-table :test 'string=)))
;;; (with-open-file (ksyms "/0dev/math-paper/tk-keysym.dat" :direction :input)
--- /project/cells/cvsroot/Celtk/ltktest-ci.lisp 2006/05/12 08:30:14 1.2
+++ /project/cells/cvsroot/Celtk/ltktest-ci.lisp 2006/05/13 13:26:43 1.3
@@ -328,7 +328,7 @@
; appended.
;
:bindings (c? (list
- (list '(|<1>| "%X %Y")
+ (list '(<1> "%X %Y")
(lambda (self event root-x root-y)
(declare (ignorable event root-x root-y))
--- /project/cells/cvsroot/Celtk/run.lisp 2006/05/12 08:30:14 1.7
+++ /project/cells/cvsroot/Celtk/run.lisp 2006/05/13 13:26:43 1.8
@@ -44,13 +44,14 @@
;; not recommended by Tcl doc (tcl-do-when-idle (get-callback 'tcl-idle-proc) 42)
(tk-app-init *tki*)
(tk-togl-init *tki*)
-
(tk-format-now "proc TraceOP {n1 n2 op} {call-back-event $n1 $op}")
(tk-format-now "set tk-events {}")
+ (tk-format-now "event add <<kenny>> <Meta-Alt-Control-X><Control-S>")
(tk-format-now "proc call-back {w args} {global tk-events; lappend tk-events [concat do-on-command \\\"$w\\\" $args]}")
(tk-format-now "proc call-back-event {w e args} {global tk-events; lappend tk-events [concat do-on-event \\\"$w\\\" \\\"$e\\\" $args]}")
;; (tk-format-now "bind . <Escape> {call-back-event %W :type <Escape> :time %t}")
-
+ (tk-create-event-handler (tk-main-window *tki*) (expt 2 30) (callback tk-event-proc) 42)
+
(with-integrity ()
(setf *tkw* (make-instance root-class)))
@@ -88,7 +89,7 @@
do (tk-process-event e))))
(progn
(trc nil "tcl-do-one-event-loop sees no events" (get-internal-real-time))
- (sleep *event-loop-delay*)))))
+ #+nah (sleep *event-loop-delay*)))))
(defun tk-process-event (event)
(trc nil "tk-process-event >" event *package*)
--- /project/cells/cvsroot/Celtk/tk-interp.lisp 2006/05/12 08:30:14 1.5
+++ /project/cells/cvsroot/Celtk/tk-interp.lisp 2006/05/13 13:26:43 1.6
@@ -29,10 +29,10 @@
(define-foreign-library Tcl
(:darwin (:framework "Tcl"))
- (:windows (:or "/tcl/bin/Tcl84.dll")))
+ (:windows (:or "/tcl/bin/Tcl85.dll")))
(define-foreign-library Tk
(:darwin (:framework "Tk"))
- (:windows (:or "/tcl/bin/tk84.dll")))
+ (:windows (:or "/tcl/bin/tk85.dll")))
;; Togl
(define-foreign-library Togl
@@ -47,7 +47,7 @@
(defmethod translate-from-foreign (value (type (eql 'tcl-retcode)))
(unless (eq value (foreign-enum-value 'tcl-retcode-values :tcl-ok))
- (error "*** Tcl error !"))
+ (error "Tcl error: ~a" (tcl-get-string-result *tki*)))
value)
;; --- initialization ----------------------------------------
@@ -129,44 +129,31 @@
(with-foreign-string (filename-cstr filename)
(%Tcl_EvalFile interp filename-cstr)))
-;; Tcl_Eval
+(defcfun ("Tcl_Eval" tcl-eval) tcl-retcode
+ (interp :pointer)
+ (script-cstr :string))
-(defcfun ("Tcl_Eval" %Tcl_Eval) tcl-retcode
+(defcfun ("Tcl_EvalEx" tcl_evalex) tcl-retcode
(interp :pointer)
- (script-cstr :pointer))
+ (script-cstr :string)
+ (num-bytes :int)
+ (flags :int))
+
+(defun tcl-eval-ex (i s)
+ (tcl_evalex i s -1 0))
(defcfun ("Tcl_GetStringResult" tcl-get-string-result) :string
(interp :pointer))
(defcfun ("Tk_GetNumMainWindows" tk-get-num-main-windows) :int)
+(defcfun ("Tk_MainWindow" tk-main-window) :pointer (interp :pointer))
+(defcfun ("Tk_NameToWindow" tk-name-to-window) :pointer
+ (interp :pointer)
+ (pathName :string)
+ (related-tkwin :pointer))
-(defun Tcl_Eval (interp script)
- (with-foreign-string (script-cstr script)
- (%Tcl_Eval interp script-cstr)))
-
-(defcenum tcl-event-flag-values
- (:tcl-dont-wait 2)
- (:tcl-window-events 4)
- (:tcl-file-events 8)
- (:tcl-timer-events 16)
- (:tcl-idle-events 32)
- (:tcl-all-events -3))
-
-(defcfun ("Tcl_DoOneEvent" Tcl_DoOneEvent) :int
- (flags :int))
-
-(defcfun ("Tcl_DoWhenIdle" tcl-do-when-idle) :void
- (tcl-idle-proc :pointer)
- (client-data :int))
-
-(defcallback tcl-idle-proc :void ((client-data :int))
- (unless (c-stopped)
- (print (list :idle-proc :client-data client-data))))
-
-;; Tk_MainLoop
-
-(defcfun ("Tk_MainLoop" Tk_MainLoop) :void)
-
+(defun widget-to-tkwin (self)
+ (tk-name-to-window *tki* (^path) (tk-main-window *tki*)))
;;; --- Togl (Version 1.7 and above needed!) -----------------------------
@@ -257,7 +244,7 @@
(assert interp)
(assert script)
- (Tcl_Eval interp script))
+ (tcl-eval interp script))
#+testing
(defun exec-button ()
1
0
Update of /project/cells/cvsroot/gears
In directory clnet:/tmp/cvs-serv2832
Added Files:
gears.lisp gears.lpr
Log Message:
--- /project/cells/cvsroot/gears/gears.lisp 2006/05/12 08:33:46 NONE
+++ /project/cells/cvsroot/gears/gears.lisp 2006/05/12 08:33:46 1.1
;;;; -*- Mode: lisp; indent-tabs-mode: nil -*-
;;; gears.lisp --- Celtk/Togl version of cl-opengl Lisp version of gears.c (GLUT Mesa demos).
;;;
;;; Simple program with rotating 3-D gear wheels.
(defpackage :gears
(:use :common-lisp :utils-kt :cells :celtk))
(in-package :gears)
(defvar *startx*)
(defvar *starty*)
(defvar *xangle0*)
(defvar *yangle0*)
(defvar *xangle*)
(defvar *yangle*)
(defparameter *vTime* 100)
(defun gears () ;; ACL project manager needs a zero-argument function, in project package
(let ((*startx* nil)
(*starty* nil)
(*xangle0* nil)
(*yangle0* nil)
(*xangle* 0.2)
(*yangle* 0.0))
(test-window 'gears-demo)))
(defmodel gears-demo (window)
((gear-ct :initform (c-in 1) :accessor gear-ct :initarg :gear-ct)
(scale :initform (c-in 1) :accessor scale :initarg :scale))
(:default-initargs
:title$ "Rotating Gear Widget Test"
:kids (c? (the-kids
(mk-stack (:packing (c?pack-self "-side left -fill both"))
(mk-label :text "Click and drag to rotate image")
(mk-row ()
(mk-button-ex (" Add " (incf (gear-ct .tkw))))
(mk-button-ex ("Remove" (when (plusp (gear-ct .tkw))
(decf (gear-ct .tkw)))))
(mk-entry :id :vtime
:md-value (c-in "10"))
(mk-button-ex (" Quit " (tk-eval "destroy ."))))
(make-instance 'gears
:fm-parent *parent*
:width 400 :height 400
:timer-interval (c? (let ((n$ (md-value (fm-other :vtime))))
(format nil "~a" (max 1 (or (parse-integer n$ :junk-allowed t) 0)))))
:double 1 ;; "yes"
:bindings (c? (list
(list '(ctk::|<1>| "%X %Y")
(lambda (self event root-x root-y)
(declare (ignorable self event root-x root-y))
(RotStart self root-x root-y)
0))
(list '(ctk::|<B1-Motion>| "%X %Y")
(lambda (self event root-x root-y)
(declare (ignore event))
(RotMove self root-x root-y)
0))))))))))
(defun RotStart (self x y)
;(trc "Rotstart!!!" self x y)
(setf *startx* x)
(setf *starty* y)
(setf *xangle0* (rotx self))
(setf *yangle0* (roty self)))
(defun RotMove (self x y)
;(trc "RotMove!!!!" self x y)
(setf *xangle* (+ *xangle0* (- x *startx*)))
(setf *yangle* (+ *yangle0* (- y *starty*)))
(setf (rotx self) *xangle*)
(assert (eql *xangle* (rotx self)))
(setf (roty self) *yangle*)
(trc nil "RotMove x y" *xangle* *yangle*))
(defconstant +pif+ (coerce pi 'single-float))
(defmodel gears (togl)
((rotx :initform (c-in 40) :accessor rotx :initarg :rotx)
(roty :initform (c-in 25) :accessor roty :initarg :roty)
(rotz :initform (c-in 10) :accessor rotz :initarg :rotz)
(gear1 :initarg :gear1 :accessor gear1
:initform (c_? (trc "making list!!!!! 1")
(let ((dl (gl:gen-lists 1)))
(gl:with-new-list (dl :compile)
(gl:material :front :ambient-and-diffuse #(0.8 0.1 0.0 1.0))
(draw-gear 1.0 4.0 1.0 20 0.7))
dl)))
(gear2 :initarg :gear2 :accessor gear2
:initform (c_? (let ((dl (gl:gen-lists 1)))
(gl:with-new-list (dl :compile)
(gl:material :front :ambient-and-diffuse #(0.0 0.8 0.2 1.0))
(draw-gear 0.5 2.0 2.0 10 0.7))
dl)))
(gear3 :initarg :gear3 :accessor gear3
:initform (c_? (let ((dl (gl:gen-lists 1)))
(gl:with-new-list (dl :compile)
(gl:material :front :ambient-and-diffuse #(0.2 0.2 1.0 1.0))
(draw-gear 1.3 2.0 0.5 10 0.7))
dl)))
(angle :initform (c-in 0.0) :accessor angle :initarg :angle)
(frame-count :cell nil :initform 0 :accessor frame-count)
(t0 :cell nil :initform 0 :accessor t0)
;
(width :initarg :wdith :initform 400 :accessor width)
(height :initarg :wdith :initform 400 :accessor height)))
(defmethod togl-timer-using-class ((self gears))
(trc nil "enter gear timer" self (togl-ptr self) (get-internal-real-time))
(incf (^angle) 2.0)
(Togl_PostRedisplay (togl-ptr self)))
(defmethod togl-create-using-class ((self gears))
(gl:light :light0 :position #(5.0 5.0 10.0 0.0))
(gl:enable :cull-face :lighting :light0 :depth-test)
(gl:material :front :ambient-and-diffuse #(0.8 0.1 0.0 1.0))
(gl:enable :normalize)
(truc self))
(defmethod togl-reshape-using-class ((self gears))
(truc self t))
(defun truc (self &optional truly)
(let ((width (Togl_width (togl-ptr self)))
(height (Togl_height (togl-ptr self))))
(trc "enter gear reshape" self width (width self))
(gl:viewport 0 (- height (height self)) (width self) (height self))
(unless truly
(gl:matrix-mode :projection)
(gl:load-identity)
(let ((h (/ height width)))
(gl:frustum -1 1 (- h) h 5 60)))
(progn
(gl:matrix-mode :modelview)
(gl:load-identity)
(gl:translate 0 0 -30))))
(defmethod togl-display-using-class ((self gears) &aux (scale (scale (upper self gears-demo))))
(declare (ignorable scale))
(gl:clear-color 0 0 0 1)
(gl:clear :color-buffer-bit :depth-buffer-bit)
(gl:with-pushed-matrix
(gl:rotate (^rotx) 1 0 0)
(gl:rotate (^roty) 0 1 0)
(gl:rotate (^rotz) 0 0 1)
(gl:with-pushed-matrix
(gl:translate -3 -2 0)
(gl:rotate (^angle) 0 0 1)
(gl:call-list (^gear1)))
(gl:with-pushed-matrix
(gl:translate 3.1 -2 0)
(gl:rotate (- (* -2 (^angle)) 9) 0 0 1)
(gl:call-list (^gear2)))
(gl:with-pushed-matrix ; gear3
(gl:translate -3.1 4.2 0.0)
(gl:rotate (- (* -2 (^angle)) 25) 0 0 1)
(gl:call-list (^gear3))))
(Togl_SwapBuffers (togl-ptr self))
#+shhh (print-frame-rate self))
(defun draw-gear (inner-radius outer-radius width n-teeth tooth-depth)
"Draw a gear."
(declare (single-float inner-radius outer-radius width tooth-depth)
(fixnum n-teeth))
(let ((r0 inner-radius)
(r1 (- outer-radius (/ tooth-depth 2.0)))
(r2 (+ outer-radius (/ tooth-depth 2.0)))
(da (/ (* 2.0 +pif+) n-teeth 4.0)))
(gl:shade-model :flat)
(gl:normal 0 0 1)
;; Draw front face.
(gl:with-primitives :quad-strip
(dotimes (i (1+ n-teeth))
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* width 0.5))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* width 0.5))
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* width 0.5))
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* width 0.5)))))
;; Draw front sides of teeth.
(gl:with-primitives :quads
(dotimes (i n-teeth)
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* width 0.5))
(gl:vertex (* r2 (cos (+ angle da))) (* r2 (sin (+ angle da)))
(* width 0.5))
(gl:vertex (* r2 (cos (+ angle (* 2 da))))
(* r2 (sin (+ angle (* 2 da))))
(* width 0.5))
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* width 0.5)))))
(gl:normal 0 0 -1)
;; Draw back face.
(gl:with-primitives :quad-strip
(dotimes (i (1+ n-teeth))
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* width -0.5))
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* width -0.5))
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* width -0.5))
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* width -0.5)))))
;; Draw back sides of teeth.
(gl:with-primitives :quads
(dotimes (i n-teeth)
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* (- width) 0.5))
(gl:vertex (* r2 (cos (+ angle (* 2 da))))
(* r2 (sin (+ angle (* 2 da))))
(* (- width) 0.5))
(gl:vertex (* r2 (cos (+ angle da))) (* r2 (sin (+ angle da)))
(* (- width) 0.5))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* (- width) 0.5)))))
;; Draw outward faces of teeth.
(gl:with-primitives :quad-strip
(dotimes (i n-teeth)
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* width 0.5))
(gl:vertex (* r1 (cos angle)) (* r1 (sin angle)) (* (- width) 0.5))
(let* ((u (- (* r2 (cos (+ angle da))) (* r1 (cos angle))))
(v (- (* r2 (sin (+ angle da))) (* r1 (sin angle))))
(len (sqrt (+ (* u u) (* v v)))))
(setq u (/ u len))
(setq v (/ u len))
(gl:normal v (- u) 0.0)
(gl:vertex (* r2 (cos (+ angle da))) (* r2 (sin (+ angle da)))
(* width 0.5))
(gl:vertex (* r2 (cos (+ angle da))) (* r2 (sin (+ angle da)))
(* (- width) 0.5))
(gl:normal (cos angle) (sin angle) 0.0)
(gl:vertex (* r2 (cos (+ angle (* 2 da))))
(* r2 (sin (+ angle (* 2 da))))
(* width 0.5))
(gl:vertex (* r2 (cos (+ angle (* 2 da))))
(* r2 (sin (+ angle (* 2 da))))
(* (- width) 0.5))
(setq u (- (* r1 (cos (+ angle (* 3 da))))
(* r2 (cos (+ angle (* 2 da))))))
(setq v (- (* r1 (sin (+ angle (* 3 da))))
(* r2 (sin (+ angle (* 2 da))))))
(gl:normal v (- u) 0.0)
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* width 0.5))
(gl:vertex (* r1 (cos (+ angle (* 3 da))))
(* r1 (sin (+ angle (* 3 da))))
(* (- width) 0.5))
(gl:normal (cos angle) (sin angle) 0.0))))
(gl:vertex (* r1 (cos 0)) (* r1 (sin 0)) (* width 0.5))
(gl:vertex (* r1 (cos 0)) (* r1 (sin 0)) (* (- width) 0.5)))
;; Draw inside radius cylinder.
(gl:shade-model :smooth)
(gl:with-primitives :quad-strip
(dotimes (i (1+ n-teeth))
(let ((angle (/ (* i 2.0 +pif+) n-teeth)))
(gl:normal (- (cos angle)) (- (sin angle)) 0.0)
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* (- width) 0.5))
(gl:vertex (* r0 (cos angle)) (* r0 (sin angle)) (* width 0.5)))))))
(defun print-frame-rate (window)
(with-slots (frame-count t0) window
(incf frame-count)
(let ((time (get-internal-real-time)))
(when (= t0 0)
(setq t0 time))
(when (>= (- time t0) (* 5 internal-time-units-per-second))
(let* ((seconds (/ (- time t0) internal-time-units-per-second))
(fps (/ frame-count seconds)))
(declare (ignorable fps))
#+shh (format *terminal-io* "~D frames in ~3,1F seconds = ~6,3F FPS~%"
frame-count seconds fps))
(setq t0 time)
(setq frame-count 0)))))
--- /project/cells/cvsroot/gears/gears.lpr 2006/05/12 08:33:46 NONE
+++ /project/cells/cvsroot/gears/gears.lpr 2006/05/12 08:33:46 1.1
;; -*- lisp-version: "8.0 [Windows] (May 11, 2006 6:29)"; cg: "1.81"; -*-
(in-package :cg-user)
(defpackage :GEARS)
(define-project :name :gears
:modules (list (make-instance 'module :name "gears.lisp"))
:projects (list (make-instance 'project-module :name
"..\\Celtk\\CELTK")
(make-instance 'project-module :name
"C:\\0devtools\\cl-opengl\\glu"))
:libraries nil
:distributed-files nil
:internally-loaded-files nil
:project-package-name :gears
:main-form nil
:compilation-unit t
:verbose nil
:runtime-modules '(:cg-dde-utils :cg.base :cg.bitmap-pane
:cg.bitmap-pane.clipboard :cg.bitmap-stream
:cg.button :cg.caret :cg.check-box :cg.choice-list
:cg.choose-printer :cg.clipboard
:cg.clipboard-stack :cg.clipboard.pixmap
:cg.color-dialog :cg.combo-box :cg.common-control
:cg.comtab :cg.cursor-pixmap :cg.curve
:cg.dialog-item :cg.directory-dialog
:cg.directory-dialog-os :cg.drag-and-drop
:cg.drag-and-drop-image :cg.drawable
:cg.drawable.clipboard :cg.dropping-outline
:cg.edit-in-place :cg.editable-text
:cg.file-dialog :cg.fill-texture
:cg.find-string-dialog :cg.font-dialog
:cg.gesture-emulation :cg.get-pixmap
:cg.get-position :cg.graphics-context
:cg.grid-widget :cg.grid-widget.drag-and-drop
:cg.group-box :cg.header-control :cg.hotspot
:cg.html-dialog :cg.html-widget :cg.icon
:cg.icon-pixmap :cg.ie :cg.item-list
:cg.keyboard-shortcuts :cg.lamp :cg.lettered-menu
:cg.lisp-edit-pane :cg.lisp-text :cg.lisp-widget
:cg.list-view :cg.mci :cg.menu :cg.menu.tooltip
:cg.message-dialog :cg.multi-line-editable-text
:cg.multi-line-lisp-text :cg.multi-picture-button
:cg.multi-picture-button.drag-and-drop
:cg.multi-picture-button.tooltip :cg.ocx
:cg.os-widget :cg.os-window :cg.outline
:cg.outline.drag-and-drop
:cg.outline.edit-in-place :cg.palette
:cg.paren-matching :cg.picture-widget
:cg.picture-widget.palette :cg.pixmap
:cg.pixmap-widget :cg.pixmap.file-io
:cg.pixmap.printing :cg.pixmap.rotate :cg.printing
:cg.progress-indicator :cg.project-window
:cg.property :cg.radio-button :cg.rich-edit
:cg.rich-edit-pane :cg.rich-edit-pane.clipboard
:cg.rich-edit-pane.printing :cg.sample-file-menu
:cg.scaling-stream :cg.scroll-bar
:cg.scroll-bar-mixin :cg.selected-object
:cg.shortcut-menu :cg.static-text :cg.status-bar
:cg.string-dialog :cg.tab-control
:cg.template-string :cg.text-edit-pane
:cg.text-edit-pane.file-io :cg.text-edit-pane.mark
:cg.text-or-combo :cg.text-widget :cg.timer
:cg.toggling-widget :cg.toolbar :cg.tooltip
:cg.trackbar :cg.tray :cg.up-down-control
:cg.utility-dialog :cg.web-browser
:cg.web-browser.dde :cg.wrap-string
:cg.yes-no-list :cg.yes-no-string :dde)
:splash-file-module (make-instance 'build-module :name "")
:icon-file-module (make-instance 'build-module :name "")
:include-flags '(:top-level :debugger)
:build-flags '(:allow-runtime-debug :purify)
:autoload-warning t
:full-recompile-for-runtime-conditionalizations nil
:default-command-line-arguments "+M +t \"Console for Debugging\""
:additional-build-lisp-image-arguments '(:read-init-files nil)
:old-space-size 256000
:new-space-size 6144
:runtime-build-option :standard
:on-initialization 'gears::gears
:on-restart 'do-default-restart)
;; End of Project Definition
1
0
Update of /project/cells/cvsroot/gears
In directory clnet:/tmp/cvs-serv2386
Log Message:
Status:
Vendor Tag: tcvs-vendor
Release Tags: tcvs-release
No conflicts created by this import
1
0
Update of /project/cells/cvsroot/cells
In directory clnet:/tmp/cvs-serv940
Modified Files:
cells.lpr family-values.lisp
Log Message:
--- /project/cells/cvsroot/cells/cells.lpr 2006/05/01 20:23:14 1.10
+++ /project/cells/cvsroot/cells/cells.lpr 2006/05/12 08:27:39 1.11
@@ -1,4 +1,4 @@
-;; -*- lisp-version: "8.0 [Windows] (Apr 21, 2006 10:24)"; cg: "1.81"; -*-
+;; -*- lisp-version: "8.0 [Windows] (May 5, 2006 15:39)"; cg: "1.81"; -*-
(in-package :cg-user)
--- /project/cells/cvsroot/cells/family-values.lisp 2006/03/16 05:28:28 1.2
+++ /project/cells/cvsroot/cells/family-values.lisp 2006/05/12 08:27:39 1.3
@@ -97,5 +97,4 @@
data))
(defobserver sorted-kids ()
- (setf (sort-map self) new-value)) ;; cellular trick to avoid cyclicity
-
+ (setf (sort-map self) new-value)) ;; cellular trick to avoid cyclicity
\ No newline at end of file
1
0
Update of /project/cells/cvsroot/cells/utils-kt
In directory clnet:/tmp/cvs-serv940/utils-kt
Modified Files:
utils-kt.lpr
Log Message:
--- /project/cells/cvsroot/cells/utils-kt/utils-kt.lpr 2006/05/03 08:22:16 1.8
+++ /project/cells/cvsroot/cells/utils-kt/utils-kt.lpr 2006/05/12 08:27:40 1.9
@@ -1,4 +1,4 @@
-;; -*- lisp-version: "8.0 [Windows] (Apr 21, 2006 10:24)"; cg: "1.81"; -*-
+;; -*- lisp-version: "8.0 [Windows] (May 5, 2006 15:39)"; cg: "1.81"; -*-
(in-package :cg-user)
1
0
Update of /project/cells/cvsroot/cells/cells-test
In directory clnet:/tmp/cvs-serv940/cells-test
Modified Files:
cells-test.lpr df-interference.lisp
Log Message:
--- /project/cells/cvsroot/cells/cells-test/cells-test.lpr 2006/03/18 00:14:01 1.4
+++ /project/cells/cvsroot/cells/cells-test/cells-test.lpr 2006/05/12 08:27:39 1.5
@@ -1,4 +1,4 @@
-;; -*- lisp-version: "8.0 [Windows] (Mar 7, 2006 20:04)"; cg: "1.81"; -*-
+;; -*- lisp-version: "8.0 [Windows] (May 5, 2006 15:39)"; cg: "1.81"; -*-
(in-package :cg-user)
--- /project/cells/cvsroot/cells/cells-test/df-interference.lisp 2006/03/16 05:22:08 1.2
+++ /project/cells/cvsroot/cells/cells-test/df-interference.lisp 2006/05/12 08:27:39 1.3
@@ -118,3 +118,11 @@
))
+(defmodel skipper ()
+ ((price :initform (c-in 0) :accessor price)
+ (max-price :accessor max-price
+ :initform (c? (if .cache
+ (max (^price) .cache)
+ (^price))))
+ (half-max :accessor half-max
+ :initform (c? (floor (^half-max)
\ No newline at end of file
1
0