chiark
/
gitweb
/
~mdw
/
clg
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
26efbc9
)
Change to COLOR-PARSE and some bug fixes
author
espen
<espen>
Tue, 11 Apr 2006 18:28:38 +0000
(18:28 +0000)
committer
espen
<espen>
Tue, 11 Apr 2006 18:28:38 +0000
(18:28 +0000)
gdk/gdk.lisp
patch
|
blob
|
blame
|
history
diff --git
a/gdk/gdk.lisp
b/gdk/gdk.lisp
index 398b331de239b5cb8e0b3a3f44de293ceb6374e6..cc1af87638873d9d1e5558ed6048babe1166fa59 100644
(file)
--- a/
gdk/gdk.lisp
+++ b/
gdk/gdk.lisp
@@
-20,7
+20,7
@@
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gdk.lisp,v 1.2
4 2006-04-10 18:38:42
espen Exp $
+;; $Id: gdk.lisp,v 1.2
5 2006-04-11 18:28:38
espen Exp $
(in-package "GDK")
(in-package "GDK")
@@
-511,7
+511,7
@@
(defmethod allocate-foreign ((color color) &rest initargs)
;; Color structs are allocated as memory chunks by gdk, and since
;; there is no gdk_color_new we have to use this hack to get a new
;; color chunk
;; Color structs are allocated as memory chunks by gdk, and since
;; there is no gdk_color_new we have to use this hack to get a new
;; color chunk
- (with-memory (location #.(foreign-size (find-class 'color)))
+ (with-
allocated-
memory (location #.(foreign-size (find-class 'color)))
(%color-copy location)))
(defun %scale-value (value)
(%color-copy location)))
(defun %scale-value (value)
@@
-520,7
+520,7
@@
(defun %scale-value (value)
(float (truncate (* value 65535)))))
(defmethod initialize-instance ((color color) &rest initargs
(float (truncate (* value 65535)))))
(defmethod initialize-instance ((color color) &rest initargs
- &key
red green blue
)
+ &key
(red 0.0) (green 0.0) (blue 0.0)
)
(declare (ignore initargs))
(call-next-method)
(with-slots ((%red red) (%green green) (%blue blue)) color
(declare (ignore initargs))
(call-next-method)
(with-slots ((%red red) (%green green) (%blue blue)) color
@@
-529,23
+529,25
@@
(defmethod initialize-instance ((color color) &rest initargs
%green (%scale-value green)
%blue (%scale-value blue))))
%green (%scale-value green)
%blue (%scale-value blue))))
-(defbinding
color-parse (spec &optional (make-instance 'color)
) boolean
+(defbinding
%color-parse (
) boolean
(spec string)
(color color :return))
(spec string)
(color color :return))
+(defun color-parse (spec &optional (color (make-instance 'color)))
+ (multiple-value-bind (succeeded-p color) (%color-parse spec color)
+ (if succeeded-p
+ color
+ (error "Parsing color specification ~S failed." spec))))
+
(defun ensure-color (color)
(etypecase color
(null nil)
(color color)
(defun ensure-color (color)
(etypecase color
(null nil)
(color color)
+ (string (color-parse color))
(vector
(make-instance 'color
(vector
(make-instance 'color
- :red (svref color 0) :green (svref color 1) :blue (svref color 2)))
- (string
- (multiple-value-bind (succeeded-p color) (parse-color color)
- (if succeeded-p
- color
- (error "Parsing color specification ~S failed." color))))))
-
+ :red (svref color 0) :green (svref color 1) :blue (svref color 2)))))
+
;;; Drawable
;;; Drawable