File: zoid.lisp

package info (click to toggle)
clisp 1%3A2.44.1-4.1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 40,080 kB
  • ctags: 12,945
  • sloc: lisp: 77,546; ansic: 32,166; xml: 25,161; sh: 11,568; fortran: 7,094; cpp: 2,636; makefile: 1,234; perl: 164
file content (58 lines) | stat: -rw-r--r-- 2,077 bytes parent folder | download | duplicates (37)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
;;; -*- Mode:Lisp; Package:XLIB; Syntax:COMMON-LISP; Base:10; Lowercase:T -*-

;;; CLX interface for Trapezoid Extension.

;;;
;;;			 TEXAS INSTRUMENTS INCORPORATED
;;;				  P.O. BOX 2909
;;;			       AUSTIN, TEXAS 78769
;;;
;;; Copyright (C) 1987 Texas Instruments Incorporated.
;;;
;;; Permission is granted to any individual or institution to use, copy, modify,
;;; and distribute this software, provided that this complete copyright and
;;; permission notice is maintained, intact, in all copies and supporting
;;; documentation.
;;;
;;; Texas Instruments Incorporated provides this software "as is" without
;;; express or implied warranty.
;;;

(in-package :xlib)

(export '(draw-filled-trapezoids
	   gcontext-trapezoid-alignment ;; Setf'able
	   ))

(define-extension "ZoidExtension")

(defun draw-filled-trapezoids (drawable gcontext points)
  ;; Draw trapezoids on drawable using gcontext.
  ;; Points are a list of either (y1 y2 y3 y4 x1 x2) ;; x-aligned
  ;;                      or     (x1 x2 x3 x4 y1 y2) ;; y-aligned
  ;; Alignment is determined by the GCONTEXT [see gcontext-trapezoid-alignment]
  ;; Alignment is set with the ALIGNMENT keyword argument, which may be
  ;; :X, :Y, or NIL (use previous alignment)
  (declare (type drawable drawable)
	   (type gcontext gcontext)
	   (type sequence points))
  (let* ((display (drawable-display drawable))
	 (opcode (extension-opcode display "ZoidExtension")))
    (with-buffer-request (display opcode :gc-force gcontext)
      ((data card8) 1) ;; X_PolyFillZoid
      (drawable drawable)
      (gcontext gcontext)
      ((sequence :format int16) points))))

(define-gcontext-accessor trapezoid-alignment :default :x
  :set-function set-trapezoid-alignment)

(defun set-trapezoid-alignment (gcontext alignment)
  (declare (type (member :x :y) alignment))
  (let* ((display (gcontext-display gcontext))
	 (opcode (extension-opcode display "ZoidExtension")))
    (with-buffer-request (display opcode)
      ((data card8) 2) ;; X_SetZoidAlignment
      (gcontext gcontext)
      ((member8 %error :x :y) alignment))))