On Sun, 18 Mar 2007 19:20:52 -0400, "Andrei Stebakov" lispercat@gmail.com wrote:
When I call it (get-bounding-rect "Some #\Newline text" "arial" 50) I get an error:
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
Ah, yes, there was a bug in there. Thanks for the report. The new release should fix that.
(defun get-bounding-rect (text font font-size) (with-image* (0 0) (let ((rect (draw-freetype-string 0 0 text :do-not-draw t :font-name font :angle 0 :line-spacing 1.05d0 :color (find-color 0 0 255 :resolve t) :point-size font-size))) (values (- (aref rect 2) (aref rect 0)) (- (aref rect 3) (aref rect 5)) (aref rect 0) (aref rect 1) rect))))
Here's an easier version:
(defun get-bounding-rect (text font font-size) (let ((rect (draw-freetype-string 0 0 text :do-not-draw t :font-name font :line-spacing 1.05d0 :point-size font-size))) (values (- (aref rect 2) (aref rect 0)) (- (aref rect 3) (aref rect 5)) (aref rect 0) (aref rect 1) rect)))
I think it doesn't like my :line-spacing 1.05d0 parameter.
That wasn't really the problem (but it showed the symptoms).
Also I am not sure that I can provide a string with #Newline.
You can't do it the way you did. There are basically two easy ways to do it in portable Common Lisp. Number one:
(get-bounding-rect "Some text" "arial" 50)
Number two:
(get-bounding-rect #.(format nil "Some~%text") "arial" 50)
Or use CL-INTERPOL:
(get-bounding-rect #?"Some\ntext" "arial" 50)
Cheers, Edi.
cl-gd-announce@common-lisp.net