X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=gdk%2Fgdk.region.lisp;h=cb03290ba8e50ac2fabc27a3fb61a65166a34e4a;hb=495dc322bd9688ebffaf62a736fa3c4a21a63ebb;hp=b6f7e4e9591d763f50c1690f9d5baeb8f7a45c92;hpb=5d32c53a9b28cf514deef28e69583301bc378287;p=cl-gtk2.git diff --git a/gdk/gdk.region.lisp b/gdk/gdk.region.lisp index b6f7e4e..cb03290 100644 --- a/gdk/gdk.region.lisp +++ b/gdk/gdk.region.lisp @@ -30,17 +30,8 @@ (fill-rule gdk-fill-rule)) (defun region-from-polygon (points fill-rule) - (let ((n (length points))) - (with-foreign-object (pts 'point-cstruct n) - (let ((i 0)) - (map nil (lambda (pt) - (gobject::copy-slots-to-native - pt - (inc-pointer pts (* i (foreign-type-size 'point-cstruct))) - (gobject::g-boxed-cstruct-wrapper-info-cstruct-description (gobject::get-g-boxed-foreign-info 'point))) - (incf i)) - points)) - (gdk-region-polygon pts n fill-rule)))) + (with-foreign-boxed-array (n pts point points) + (gdk-region-polygon pts n fill-rule))) (export 'region-from-polygon) @@ -79,7 +70,7 @@ (export 'region-get-rectangles) -(defcfun (region-is-empty "gdk_region_is_empty") :boolean +(defcfun (region-is-empty "gdk_region_empty") :boolean (region (g-boxed-foreign region))) (export 'region-is-empty) @@ -161,18 +152,8 @@ (data :pointer)) (defun region-spans-intersect-foreach (region spans sorted fn) - (let ((n (length spans))) - (with-stable-pointer (ptr fn) - (with-foreign-object (spans-ptr 'span-cstruct n) - (let ((i 0)) - (map nil - (lambda (span) - (gobject::copy-slots-to-native - span - (inc-pointer spans-ptr (* i (foreign-type-size 'span-cstruct))) - (gobject::g-boxed-cstruct-wrapper-info-cstruct-description (gobject::get-g-boxed-foreign-info 'span))) - (incf i)) - spans)) - (gdk-region-spans-intersect-foreach region spans-ptr n sorted (callback gdk-region-spans-intersect-foreach) ptr))))) + (with-stable-pointer (ptr fn) + (with-foreign-boxed-array (n spans-ptr span spans) + (gdk-region-spans-intersect-foreach region spans-ptr n sorted (callback gdk-region-spans-intersect-foreach) ptr)))) (export 'region-spans-intersect-foreach)