[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: using/wrapping container?
From: |
Jan Nieuwenhuizen |
Subject: |
Re: using/wrapping container? |
Date: |
Sun, 14 Nov 2004 02:37:12 +0100 |
User-agent: |
Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux) |
Jan Nieuwenhuizen writes:
The problem condenses in that the gnome-canvas-path-def cannot be set
This
(let ((bezier (make <gnome-canvas-bpath> #:bpath def)))
yields
<unnamed port>: In procedure scm->gvalue in expression (scm->gvalue
pspec-value-type option-value):
<unnamed port>: Don't know how to make values of type #<gtype gpointer>
Tested C-snippet:
GnomeCanvasPathDef *def = gnome_canvas_path_def_new ();
gnome_canvas_path_def_moveto (def, 50.0, 110.0);
gnome_canvas_path_def_curveto (def, 80.0, 105.0, 90.0, 105.0, 110.0, 110.0);
gnome_canvas_path_def_lineto (def, 50.0, 110.0);
gnome_canvas_path_def_closepath (def);
gnome_canvas_item_new (root, gnome_canvas_bpath_get_type (),
"bpath", def,
"fill-color", "black",
"width-pixels", 4,
NULL);
I very much want to get beziers to work, that's an important bit for
LilyPond output.
Jan.
#! /usr/bin/guile -s
!#
(use-modules (gnome gtk)
(gnome gtk gdk-event)
(gnome canvas))
(debug-enable 'debug)
(debug-enable 'backtrace)
(define canvas-width 300)
(define canvas-height canvas-width)
(define output-scale 1.8)
(define-class <gnome-canvas-path-def> (<gobject>)
(closure #:init-value (gnome-canvas-path-def-new)
#:getter get-def #:setter set-def))
(define-method (moveto (this <gnome-canvas-path-def>) x y)
(gnome-canvas-path-def-moveto (get-def this) x y))
(define-method (curveto (this <gnome-canvas-path-def>) x1 y1 x2 y2 x3 y3)
(gnome-canvas-path-def-curveto (get-def this) x1 y1 x2 y2 x3 y3))
(define-method (lineto (this <gnome-canvas-path-def>) x y)
(gnome-canvas-path-def-lineto (get-def this) x y))
(define-method (closepath (this <gnome-canvas-path-def>))
(gnome-canvas-path-def-closepath (get-def this)))
(define (main)
(let* ((window (make <gtk-window> #:type 'toplevel))
(button (make <gtk-button> #:label "Exit"))
(canvas (make <gnome-canvas>))
(vbox (make <gtk-vbox>))
(canvas-root (root canvas)))
(add window vbox)
(add vbox canvas)
(let ((def (make <gnome-canvas-path-def>)))
(moveto def 50.0 110.0)
(curveto def 80.0 105.0 90.0 105.0 110.0 110.0)
(lineto def 50.0 110.0)
(closepath def)
(let ((bezier (make <gnome-canvas-bpath> #:bpath def)))
;;
;;<unnamed port>: In procedure scm->gvalue in expression (scm->gvalue
pspec-value-type option-value):
;;<unnamed port>: Don't know how to make values of type #<gtype gpointer>
;;
;; this could be an alternative, but segfaults when addressing bezier.
;;(let ((bezier (make <gnome-canvas-bpath>)))
;;(set-path-def bezier (get-def def))
;; segfault
(set bezier 'fill-color "black")
;;(set bezier 'width-pixels 2)
;; segfault
;;(move bezier -40 55)
)
(add vbox button)
(connect button 'clicked (lambda (b) (gtk-main-quit)))
(set-child-packing vbox button #f #f 0 'end)
(set-size-request canvas canvas-width canvas-height)
(show-all window)
(gtk-main))))
(main)
--
Jan Nieuwenhuizen <address@hidden> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien | http://www.lilypond.org