anchor.diff:  ;;; Library General Public License for more details.
   ;;;
   ;;; You should have received a copy of the GNU Library General Public
  -;;; License along with this library; if not, write to the 
  -;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
  +;;; License along with this library; if not, write to the
  +;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   ;;; Boston, MA  02111-1307  USA.
   
   ;;; TODO:
  
positive.code: ;;; Graphics and text recording classes
  
  (eval-when (:compile-toplevel :load-toplevel :execute)
    
    (defun compute-class-vars (names)
      (cons (list 'stream :initarg :stream)
  	  (loop for name in names
  		collecting (list name :initarg (intern (symbol-name name) :keyword)))))
  
    (defun compute-arg-list (names)
      (loop for name in names
  	  nconcing (list (intern (symbol-name name) :keyword) name)))
    )
  
  (defun make-merged-medium (sheet ink clip transform line-style text-style)
    (let ((medium (make-medium (port sheet) sheet)))
      (setf (medium-ink medium) ink)
      ;; First set transformation, then clipping region!
      (setf (medium-transformation medium) transform)
      (setf (medium-clipping-region medium) clip)
      (setf (medium-line-style medium) line-style)
      (setf (medium-text-style medium) text-style)
      medium))
  
  (defmacro def-grecording (name (&rest args) &body body)
    (let ((method-name (intern (format nil "MEDIUM-~A*" name)))
  	(class-name (intern (format nil "~A-OUTPUT-RECORD" name)))
  	(old-medium (gensym))
  	(new-medium (gensym))
  	(border (gensym)))
      `(progn
         (defclass ,class-name (graphics-displayed-output-record-mixin)
  	 ,(compute-class-vars args))
  
negative.code:    (output-history :initform (make-instance 'standard-tree-output-history)
                     :reader stream-output-history)
     (current-output-record :accessor stream-current-output-record)
     (current-text-output-record :initform nil
                                 :accessor stream-current-text-output-record)
     (local-record-p :initform t
                     :documentation "This flag is used for dealing with streams outputting strings char-by-char.")))
  
  