[mcclim-cvs] CVS mcclim/Extensions

dlichteblau dlichteblau at common-lisp.net
Sun Jan 7 19:32:29 UTC 2007


Update of /project/mcclim/cvsroot/mcclim/Extensions
In directory clnet:/tmp/cvs-serv18071/Extensions

Added Files:
	rgb-image.lisp 
Log Message:

Add a new class RGB-IMAGE (renamed from closure's IMAGELIB:AIMAGE) and
RGB-IMAGE-DESIGN (used to implement CLOSURE/CLIM-DEVICE::RO/IMG).

Drawing code implemented only in CLIM-CLX, and only for true color visuals.

	* Examples/rgb-image.lisp: New file, from
	closure/src/imagelib/basic.lisp.
	
	* Backends/CLX/medium.lisp (MEDIUM-DRAW-IMAGE-DESIGN*,
	MEDIUM-FREE-IMAGE-DESIGN, COMPUTE-RGB-IMAGE-PIXMAP,
	COMPUTE-RGB-IMAGE-MASK, IMAGE-TO-XIMAGE-FOR-DRAWABLE,
	IMAGE-TO-XIMAGE, MASK->BYTE, PIXEL-TRANSLATOR): Methods and
	functions, renamed from original closure code.



--- /project/mcclim/cvsroot/mcclim/Extensions/rgb-image.lisp	2007/01/07 19:32:29	NONE
+++ /project/mcclim/cvsroot/mcclim/Extensions/rgb-image.lisp	2007/01/07 19:32:29	1.1
;;;  (c) copyright 1998 by Gilbert Baumann
;;;
;;;  Permission is hereby granted, free of charge, to any person obtaining
;;;  a copy of this software and associated documentation files (the
;;;  "Software"), to deal in the Software without restriction, including
;;;  without limitation the rights to use, copy, modify, merge, publish,
;;;  distribute, sublicense, and/or sell copies of the Software, and to
;;;  permit persons to whom the Software is furnished to do so, subject to
;;;  the following conditions:
;;; 
;;;  The above copyright notice and this permission notice shall be
;;;  included in all copies or substantial portions of the Software.
;;; 
;;;  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
;;;  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
;;;  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
;;;  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
;;;  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
;;;  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;;;  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
;;;
;;; (Hacked for inclusion into McCLIM by David Lichteblau.)

(in-package :climi)


;;; ARGB image data represented as an (unsigned-byte 32) array

(defclass rgb-image ()
    ((width :initarg :width :accessor image-width)
     (height :initarg :height :accessor image-height)
     (data :initarg :data
	   :accessor image-data
	   :type (or null (simple-array (unsigned-byte 32) (* *))))
     (alphap :initarg :alphap
	     :initform nil
	     :accessor image-alpha-p)))

;;; Applications (closure in particular) might want to cache any
;;; backend-specific data required to draw an RGB-IMAGE.
;;;
;;; To implement this caching, designs must be created separately for each
;;; medium, so that mediums can put their own data into them.

(defclass rgb-image-design (design)
    ((medium :initarg :medium)
     (image :initarg :image)
     (medium-data :initform nil)))

(defun make-rgb-image-design (medium image)
  (make-instance 'rgb-image-design
    :medium medium
    :image image))


;;; Protocol to free cached data

(defgeneric medium-free-image-design (medium design))

(defun free-image-design (design)
  (medium-free-image-design (slot-value design 'medium) design))


;;; Drawing protocol

(defgeneric medium-draw-image-design* (medium design x y))

(defmethod medium-draw-image-design* :before (medium design x y)
  (assert (eq medium (slot-value design 'medium))))



More information about the Mcclim-cvs mailing list