J'essayais d'écrire mon propre put-pixel sur (Gdk) pixbuf en Lisp. Quand j'ai finalement réalisé comment je peux opérer sur des pointeurs C en CL, un nouvel obstacle est apparu - (gdk: pixbuf-get-pixels pb) me renvoie un nombre négatif. Ma question est la suivante: puis-je le convertir en quelque sorte à un pointeur valide? Mes tentatives d'utiliser cffi: convert-from-foreign et cffi: translate-from-foreign (quelle est la différence entre elles?) Échouent.lambda-gtk pointeur négatif
Ci-dessous mon code actuel (ne fonctionne pas):
(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)))
Eh bien, il semble que quelque chose est vraiment mal avec cette fonction. J'ai dû essayer une approche différente. – x13n