cffi changes are generating deprecation warning in cl-gd now

Edi Weitz edi at agharta.de
Tue Jan 28 05:22:27 UTC 2014


Jeff,

Thanks for the report.  The best way to proceed is to make it an issue
here: https://github.com/edicl/cl-gd

Cheers,
Edi.



On Tue, Jan 28, 2014 at 12:42 AM, Jeff Cunningham
<jeffrey at jkcunningham.com> wrote:
> Hi;
>
> A short while ago I started noticing this error message showing up
>
> ;; STYLE-WARNING:
> ;;    bare references to struct types are deprecated. Please use (:POINTER
> (:STRUCT CL-GD::GD-IMAGE))
> ;;    or (:STRUCT CL-GD::GD-IMAGE) instead.
>
> It took me awhile to extract a simple demo case, but I've narrowed it down
> to the WITH-THICKNESS macro call I believe.
> I'm not sure which list would be best for this question, so I cross-posted
> it.
>
> Here's a test case.
>
> (ql:quickload "cl-gd")
> (use-package :cl-gd)
>
> (let* ((x1 -86)
>        (x2 529)
>        (y1 -0.13)
>        (y2 1.16)
>        (xv '(0.0 1.0 2.0 3.0 4.0))
>        (yv '(0.99 0.12 0.66 0.24 0.075)))
>   (with-image* (500 250)
>     (allocate-color 255 255 255)
>     (let ((c (allocate-color 0 0 255)))
>       (with-transformation (:x1 x1 :x2 x2 :y1 y1 :y2 y2)
>         (with-thickness (1)
>           (mapl #'(lambda (x y)
>                     (when (and (cdr x) (cdr y))
>                       (draw-line (car x) (car y) (cadr x) (cadr y) :color
> c))) xv yv))
>         (write-image-to-file "test.png" :if-exists :supersede)))))
>
> If you take out the with-thickness macro call the message disappears.
>
> I played around with that macro but don't really understand enough about the
> intricacies of cffi to fix it.
> Does anyone have any ideas? Here's the macro in question:
>
> (defmacro with-thickness ((thickness &key (image '*default-image*)) &body
> body)
>   "Executes BODY with the current line width of IMAGE set to
> THICKNESS. The image's previous line width is guaranteed to be
> restored before the macro exits. Note that the line width is measured
> in pixels and is not affected by WITH-TRANSFORMATION."
>   (cl-gd::with-unique-names (old-thickness)
>     ;; we rebind everything so we have left-to-right evaluation
>     (cl-gd::with-rebinding (thickness image)
>       `(let ((,old-thickness (thickness ,image)))
>          (unwind-protect
>              (progn
>                (setf (thickness ,image) ,thickness))
>            , at body)
>          (setf (thickness ,image) ,old-thickness)))))
>
>
> Much obliged.
>
> --Jeff Cunningham
>
>


More information about the Cl-gd-devel mailing list