x11: Fix x-graphics-vdc-extent and x-graphics-set-clip-rectangle.
authorMatt Birkholz <matt@birchwood-abbey.net>
Sun, 20 Jan 2019 19:38:04 +0000 (11:38 -0800)
committerChris Hanson <org/chris-hanson/cph>
Sat, 26 Jan 2019 22:47:27 +0000 (14:47 -0800)
x-graphics-vdc-extent should have had one argument and returned a
vector, and x-graphics-set-clip-rectangle needed to accept floats.

(cherry picked from commit cc175b7ef75231a0220d7f384e4fc1c1dd80df67)

src/x11/x11-graphics.scm
src/x11/x11.cdecl
src/x11/x11graph.c

index c0bd90d781ec50b6ecabb75ed8bd032e61f25807..06feffba108147e184f807183596b24fb381a961 100644 (file)
@@ -34,26 +34,29 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
   ;; Set the virtual device coordinates to the given values.
   (C-call "x_graphics_set_vdc_extent" window x-left y-bottom x-right y-top))
 
-(define (x-graphics-vdc-extent window vector)
-  (let* ((floats (malloc (* 4 (C-sizeof "float")) 'float))
+(define (x-graphics-vdc-extent window)
+  (let* ((limits (make-vector 4))
+        (floats (malloc (* 4 (C-sizeof "float")) 'float))
         (scan (copy-alien floats)))
-    (C-call "x_graphics_vdc_extent" window floats)
-    (vector-set! vector 0 (C-> floats "float"))
+    (C-call "x_graphics_vdc_extent" window scan)
+    (vector-set! limits 0 (C-> scan "float"))
     (alien-byte-increment! scan (C-sizeof "float"))
-    (vector-set! vector 1 (C-> floats "float"))
+    (vector-set! limits 1 (C-> scan "float"))
     (alien-byte-increment! scan (C-sizeof "float"))
-    (vector-set! vector 2 (C-> floats "float"))
+    (vector-set! limits 2 (C-> scan "float"))
     (alien-byte-increment! scan (C-sizeof "float"))
-    (vector-set! vector 3 (C-> floats "float"))
-    (free floats)))
+    (vector-set! limits 3 (C-> scan "float"))
+    (free floats)
+    limits))
 
 (define (x-graphics-reset-clip-rectangle window)
   (C-call "x_graphics_reset_clip_rectangle" window))
 
 (define (x-graphics-set-clip-rectangle window x-left y-bottom x-right y-top)
   ;; Set the clip rectangle to the given coordinates.
-  (C-call "x_graphics_set_clip_rectangle"
-         window x-left y-bottom x-right y-top))
+  (C-call "x_graphics_set_clip_rectangle" window
+         (->flonum x-left) (->flonum y-bottom)
+         (->flonum x-right) (->flonum y-top)))
 
 (define (x-graphics-reconfigure window width height)
   (C-call "x_graphics_reconfigure" window width height))
index f8d9928df0594eb935055b68e5a285e2076d1c02..3da023ebd0c3d13806ed8ed8ce9fc4d77b3234b2 100644 (file)
@@ -712,7 +712,7 @@ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
 (extern void
        x_graphics_set_clip_rectangle
        (xw (* (struct xwindow)))
-       (x_left int) (y_bottom int) (x_right int) (y_top int))
+       (x_left float) (y_bottom float) (x_right float) (y_top float))
 
 (extern void
        x_graphics_reconfigure
index f70bfd3b028933f4f18e3f6bd2872ca45690d2aa..33ce6f7baa49377e59f5a30391f452223fd76505 100644 (file)
@@ -215,7 +215,8 @@ x_graphics_reset_clip_rectangle (struct xwindow * xw)
 
 void
 x_graphics_set_clip_rectangle (struct xwindow * xw,
-                              int x_left, int y_bottom, int x_right, int y_top)
+                              float x_left, float y_bottom,
+                              float x_right, float y_top)
 {
   set_clip_rectangle (xw,
                      (X_COORDINATE (x_left, xw, -1)),