[pal-cvs] CVS pal
tneste
tneste at common-lisp.net
Wed Jul 18 21:29:56 UTC 2007
Update of /project/pal/cvsroot/pal
In directory clnet:/tmp/cvs-serv26613
Modified Files:
ffi.lisp package.lisp pal.lisp todo.txt
Log Message:
Added DRAW-CIRCLE
--- /project/pal/cvsroot/pal/ffi.lisp 2007/07/18 20:41:34 1.8
+++ /project/pal/cvsroot/pal/ffi.lisp 2007/07/18 21:29:56 1.9
@@ -681,7 +681,7 @@
(defconstant +gl-points+ 0)
(defconstant +gl-ONE-MINUS-DST-ALPHA+ #x305)
(defconstant +gl-ONE-MINUS-DST-COLOR+ #x307)
-(defconstant +MAX-TEXTURE-SIZE+ #xD33)
+(defconstant +gl-MAX-TEXTURE-SIZE+ #xD33)
(defconstant +gl-ONE-MINUS-SRC-ALPHA+ #x303)
(defconstant +gl-ONE-MINUS-SRC-COLOR+ #x301)
(defconstant +gl-texture-mag-filter+ #x2800)
@@ -879,6 +879,14 @@
(list :uint)
(range :int))
+(cffi:defcfun ("glGetIntegerv" %gl-get-integer) :void
+ (value :int)
+ (data :pointer))
+
+(defun gl-get-integer (value)
+ (cffi:with-foreign-object (data :int)
+ (%gl-get-integer value data)
+ (cffi:mem-ref data :int)))
#+win32 (cffi:defcfun "SHGetFolderPathA" :int (owner :pointer) (folder :int) (handle :pointer) (flags :int) (path :pointer))
--- /project/pal/cvsroot/pal/package.lisp 2007/07/18 20:41:34 1.8
+++ /project/pal/cvsroot/pal/package.lisp 2007/07/18 21:29:56 1.9
@@ -6,6 +6,8 @@
#:+gl-line-smooth+
#:make-font
#:+gl-scissor-test+
+ #:gl-get-integer
+ #:+gl-max-texture-size+
#:+gl-smooth+
#:+gl-compile+
#:+gl-points+
--- /project/pal/cvsroot/pal/pal.lisp 2007/07/18 20:41:34 1.14
+++ /project/pal/cvsroot/pal/pal.lisp 2007/07/18 21:29:56 1.15
@@ -1,8 +1,8 @@
;; Notes:
;; tags-resources-free?
-;; box/box/line overlap functions, fast v-dist
;; do absolute paths for data-path work?
-;; draw-circle
+;; box/box/line overlap functions, fast v-dist
+;; load-image-to-array
(declaim (optimize (speed 3)
@@ -31,6 +31,7 @@
(defvar *mouse-x* 0)
(defvar *mouse-y* 0)
(defvar *current-image* nil)
+(defvar *max-texture-size* 0)
(declaim (type list *messages*)
(type list *clip-stack*)
@@ -81,6 +82,7 @@
(reset-tags)
(define-tags default-font (load-font "default-font"))
(setf *data-paths* nil
+ *max-texture-size* (pal-ffi:gl-get-integer pal-ffi:+gl-max-texture-size+)
*messages* nil
*pressed-keys* (make-hash-table :test 'eq)
*ticks* (get-internal-real-time)
@@ -153,11 +155,11 @@
(error "Data file not found: ~a" file))))
(defun get-gl-info ()
- (format nil "Vendor: ~a~%Renderer: ~a~%Version: ~a~%Extensions: ~a~%"
- (pal-ffi:gl-get-string pal-ffi:+gl-vendor+)
- (pal-ffi:gl-get-string pal-ffi:+gl-renderer+)
- (pal-ffi:gl-get-string pal-ffi:+gl-version+)
- (pal-ffi:gl-get-string pal-ffi:+gl-extensions+)))
+ (list :vendor (pal-ffi:gl-get-string pal-ffi:+gl-vendor+)
+ :rendered (pal-ffi:gl-get-string pal-ffi:+gl-renderer+)
+ :version (pal-ffi:gl-get-string pal-ffi:+gl-version+)
+ :extensions (pal-ffi:gl-get-string pal-ffi:+gl-extensions+)
+ :max-texture-size *max-texture-size*))
@@ -372,7 +374,6 @@
(third pixel)
(fourth pixel))))))
-
(defun image-from-fn (width height smoothp fn)
(let* ((mode pal-ffi:+gl-rgb+)
(width (min 1024 width))
@@ -639,7 +640,13 @@
(pal-ffi:gl-vertex2f (vx p) (vy p))))))
(pal-ffi:gl-pop-attrib))
-
+(defun draw-circle (pos radius r g b a &key (fill t) absolutep (size 1f0) smoothp (segments 30))
+ (declare (type vec pos) (type fixnum segments))
+ (draw-polygon (loop for a from 0 to (* 2 pi) by (/ (* 2 pi) segments) collecting
+ (v+ pos
+ (v (* (sin a) radius)
+ (* (cos a) radius))))
+ r g b a :fill fill :absolutep absolutep :size size :smoothp smoothp))
;;; Samples
@@ -753,12 +760,13 @@
(defun draw-text (text pos &optional font)
(declare (type vec pos) (type simple-string text) (type (or font boolean) font))
(with-transformation (:pos pos)
- (let ((font (if font
- font
- (tag 'default-font))))
+ (let* ((font (if font
+ font
+ (tag 'default-font)))
+ (first-dl (pal-ffi:font-first-dl font)))
(set-image (pal-ffi:font-image font))
(loop for char across text do
- (pal-ffi:gl-call-list (+ (pal-ffi:font-first-dl font) (char-code char)))))))
+ (pal-ffi:gl-call-list (+ first-dl (char-code char)))))))
(declaim (inline get-font-height))
(defun get-font-height (&optional font)
--- /project/pal/cvsroot/pal/todo.txt 2007/07/18 20:41:36 1.9
+++ /project/pal/cvsroot/pal/todo.txt 2007/07/18 21:29:56 1.10
@@ -1,7 +1,5 @@
TODO:
-- More drawing primitives.
-
- Add align, scale and angle options to DRAW-IMAGE*.
- Improved texture handling
More information about the Pal-cvs
mailing list