home *** CD-ROM | disk | FTP | other *** search
- ;;; -*- Scheme -*-
-
- #|
-
- Copyright (c) 1986-91 Massachusetts Institute of Technology
-
- This material was developed by the Scheme project at the Massachusetts
- Institute of Technology, Department of Electrical Engineering and
- Computer Science. Permission to copy this software, to redistribute
- it, and to use it for any purpose is granted, subject to the following
- restrictions and understandings.
-
- 1. Any copy made of this software must include this copyright notice
- in full.
-
- 2. Users of this software agree to make their best efforts (a) to
- return to the MIT Scheme project any improvements or extensions that
- they make, so that these may be included in future releases; and (b)
- to inform MIT of noteworthy uses of this software.
-
- 3. All materials developed as a consequence of the use of this
- software shall duly acknowledge such use, in accordance with the usual
- standards of acknowledging credit in academic research.
-
- 4. MIT has made no warrantee or representation that the operation of
- this software will be error-free, and MIT is under no obligation to
- provide any services, by way of maintenance, update, or otherwise.
-
- 5. In conjunction with products arising from the use of this material,
- there shall be no use of the name of the Massachusetts Institute of
- Technology nor of any adaptation thereof in any advertising,
- promotional, or sales literature without prior written consent from
- MIT in each case.
-
- |#
-
- ;;;; System dependent stuff for box and pointer diagram printer
- ;; Old MIT CScheme implementation
-
- (define screen
- ;; These are the bobcat's dimensions
- (make-rect (make-vect -512 -384)
- (make-vect 1024 0)
- (make-vect 0 768)))
-
- (define move-to
- (make-primitive-procedure 'graphics-move))
- (define line-to
- (make-primitive-procedure 'graphics-line))
-
- (define (drawline start-point end-point)
- (move-to (xcor start-point)
- (ycor start-point))
- (line-to (xcor end-point)
- (ycor end-point)))
-
- (define draw-string
- (make-primitive-procedure 'graphics-label))
-
- (define character-aspect 1)
- (define character-height 16)
-
- (define (sign x)
- (if (< x 0) -1 1))
-
- (define (text-picture string)
- ;; I don't understand why this .5 is needed, but...
- (let* ((character-width (* .5 character-height character-aspect))
- (width (* character-width (string-length string)))
- (height character-height))
- (lambda (rectangle)
- (let ((rwidth (abs (round (xcor (horiz rectangle)))))
- (rheight (abs (round (ycor (vert rectangle))))))
- (if (or (< rwidth width) (< rheight height))
- (default-text-picture rectangle)
- (begin
- (move-to (round (+ (xcor (origin rectangle))
- (* (sign (xcor (horiz rectangle)))
- (/ (- rwidth width) 2))))
- (round (+ (ycor (origin rectangle))
- (* (sign (ycor (vert rectangle)))
- (/ (- rheight height) 2)))))
- (draw-string string)))))))
-
- (define clear-graphics
- (make-primitive-procedure 'graphics-clear))
-
- (define graphics-initialize
- (make-primitive-procedure 'graphics-initialize))
- #|
- (define graphics-set-letter!
- (make-primitive-procedure 'graphics-set-letter))
- (define graphics-set-rotation!
- (make-primitive-procedure 'graphics-set-rotation))
-
- (define (initialize-graphics)
- (graphics-initialize)
- (graphics-set-letter! character-height character-aspect 0)
- (graphics-set-rotation! 0)
- #t)
- |#
-
- (define (draw pict)
- (clear-graphics)
- (pict screen))
-
- (define draw-permanent draw)
-
- ;; Other implementation dependencies
-
- (define double-quote-string "\"")
-
- (define (atom? x)
- (not (pair? x)))
-
- (define (number->string x format)
- ;; format is ignored. Assumed '(HEUR)
- (with-output-to-string
- (lambda ()
- (write x))))
-