[cl-gd-devel] :do-not-draw of draw-freetype-string

Jong-won Choi jc at itsec.co.kr
Fri Mar 30 09:04:46 UTC 2007


Edi Weitz wrote:
> Could you please send a self-contained example that I can use to
> reproduce your problem?  Also, it's generally a good idea to tell us
> which Lisp you are using, which OS you are on, and so on.
>   

I thought they are unrelated on this specific problem (maybe I'm wrong). 
I'm using LW4.4.5 and Ubuntu LTS

>   
>> I think there was no transformer for x and y coordinates, and
>> finally gd-image-string-ft was called with the exactly same x and y
>> arguments of draw-freetype-string.
>>
>> I do not have this problem with old cl-gd (0.4.8).  Here is a diff
>> output between 0.4.8 and 0.5.3(draw-freetype-string only):
>>     
>
> I don't see anything in the diff that would affect transformations.
>   

I don't know much about cl-gd details. But with 0.4.8 code, _image_ in 
with-transformed-alternative(code below) is not *null-image* yet. I 
think that's the main difference between 0.4.8 and 0.5.3. I'm guessing, 
for 0.5.3 code (find image *transformers* ...) returns nil with 
*null-image*, in contrast to 0.4.8 code returns a correct(?) 
transformer. For this one I can't send you a simple example - because 
the existing code is very hairy.
------------------------------------
(defmacro with-transformed-alternative ((&rest transformations) &body body)
  "Internal macro used to make functions
transformation-aware. TRANSFORMATION is a list of (EXPR
TRANSFORMATION) pairs where each EXPR will be replaced by the
transformation denoted by TRANSFORMATION."
  (with-unique-names (transformer)
    (let ((transformations-alist
            (loop for (expr transformation) in transformations
                  collect `(,expr . (funcall (,transformation 
,transformer) ,expr)))))
      ;; note that we always use the name 'IMAGE' - no problem because
      ;; this is a private macro
      `(let ((,transformer (find image *transformers* :key #'image)))
        (cond (,transformer
                ,(sublis transformations-alist
                         `(progn , at body)
                         :test #'equal))
              (t (progn
                   , at body)))))))



More information about the Cl-gd-devel mailing list