我試圖在Lisp中編寫自己的放置像素(Gdk)pixbuf。當我終於意識到如何在CL中操作C指針時,出現了新的障礙 - (gdk:pixbuf-get-pixels pb)會返回負數。我的問題是:我可以將它轉換成一個有效的指針嗎?我嘗試使用cffi:convert-from-foreign和cffi:translate-from-foreign(它們之間有什麼區別?)失敗了。lambda-gtk負指針
下面是我的實際(不工作)代碼:
(defun put-pixel (pixbuf x y r g b)
(let ((p (+ (gdk:pixbuf-get-pixels pixbuf) (* x (gdk:pixbuf-get-n-channels pixbuf)) (* y (gdk:pixbuf-get-rowstride pixbuf)))))
(setf (cffi:mem-aref p :unsigned-char 0) r)
(setf (cffi:mem-aref p :unsigned-char 1) g)
(setf (cffi:mem-aref p :unsigned-char 2) b)))
嗯,看來事情真的是錯功能。我不得不嘗試不同的方法。 – x13n 2009-11-18 10:52:44