[pal-cvs] CVS pal

tneste tneste at common-lisp.net
Wed Jul 18 19:25:57 UTC 2007


Update of /project/pal/cvsroot/pal
In directory clnet:/tmp/cvs-serv871

Modified Files:
	pal.lisp 
Log Message:
Added DRAW-POLYGON*

--- /project/pal/cvsroot/pal/pal.lisp	2007/07/16 20:46:24	1.12
+++ /project/pal/cvsroot/pal/pal.lisp	2007/07/18 19:25:57	1.13
@@ -1,11 +1,8 @@
 ;; Notes:
 ;; tags-resources-free?
-;; circle/box/point overlap functions, fast v-dist
+;; box/box/line overlap functions, fast v-dist
 ;; do absolute paths for data-path work?
-;; draw-image* aligns & scale, angle?
-;; draw-polygon*, draw-circle
-;; rgbas for textured polys.
-;; opengl state macros
+;; draw-circle
 
 
 (declaim (optimize (speed 3)
@@ -447,12 +444,12 @@
           (let ((x (case halign
                      (:right (coerce (- width) 'single-float))
                      (:left 0f0)
-                     (:middle (coerce (- (/ width 2)) 'single-float))
+                     (:middle (- (/ width 2f0)))
                      (otherwise 0f0)))
                 (y (case valign
                      (:bottom (coerce (- height) 'single-float))
                      (:top 0f0)
-                     (:middle (coerce (- (/ height 2)) 'single-float))
+                     (:middle (- (/ height 2f0)))
                      (otherwise 0f0))))
             (with-gl pal-ffi:+gl-quads+
               (pal-ffi:gl-tex-coord2f 0f0 0f0)
@@ -604,6 +601,43 @@
          (pal-ffi:gl-vertex2f (vx p) (vy p))))
      (pal-ffi:gl-pop-attrib))))
 
+(defun draw-polygon* (points &key image tex-coords colors)
+  (declare (type list points tex-coords colors) (type (or boolean image) image))
+  (pal-ffi:gl-push-attrib (logior pal-ffi:+gl-current-bit+ pal-ffi:+gl-enable-bit+))
+  (cond
+    ((and image tex-coords)
+     (set-image image)
+     (cond
+       (colors
+        (pal-ffi:gl-shade-model pal-ffi:+gl-smooth+)
+        (with-gl pal-ffi:+gl-polygon+
+          (loop
+             for p in points
+             for tc in tex-coords
+             for c in colors
+             do
+             (pal-ffi:gl-tex-coord2f (/ (vx tc) (pal-ffi:image-texture-width image)) (/ (vy tc) (pal-ffi:image-texture-height image)))
+             (pal-ffi:gl-color4ub (first c) (second c) (third c) (fourth c))
+             (pal-ffi:gl-vertex2f (vx p) (vy p)))))
+       (t
+        (with-gl pal-ffi:+gl-polygon+
+          (loop
+             for p in points
+             for tc in tex-coords
+             do
+             (pal-ffi:gl-tex-coord2f (/ (vx tc) (pal-ffi:image-texture-width image)) (/ (vy tc) (pal-ffi:image-texture-height image)))
+             (pal-ffi:gl-vertex2f (vx p) (vy p)))))))
+    (t
+     (pal-ffi:gl-shade-model pal-ffi:+gl-smooth+)
+     (pal-ffi:gl-disable pal-ffi:+gl-texture-2d+)
+     (with-gl pal-ffi:+gl-polygon+
+       (loop
+          for p in points
+          for c in colors
+          do
+          (pal-ffi:gl-color4ub (first c) (second c) (third c) (fourth c))
+          (pal-ffi:gl-vertex2f (vx p) (vy p))))))
+  (pal-ffi:gl-pop-attrib))
 
 
 




More information about the Pal-cvs mailing list