[cells-gtk-devel] cells-gtk & cl-2d

Peter Hildebrandt peter.hildebrandt at gmail.com
Fri Oct 2 17:26:42 UTC 2009


Hi Nikolay,

I am not familiar with cl-2d, therefore just a few general suggestions

(1) Have you tried the cl-cairo2 mailing list?  At first glance this looks
more like a cl-cairo than like a cells-gtk problem

(2) Try deactivating threading (you might need to recompile the whole thing
to make sure everything is up to date).  There is a constant in one of the
central files (cells-gtk.asd ?).  That might give you better debugging
output

(3) Have you looked into the 2d drawing functions I included in the
drawing-area widget?  Of course I don't know what you are trying to do, but
possibly the approach there will work for you.  Currently it only supports a
few basic shapes (circles, arcs, rectangles, lines, arrows), but on the plus
side, there is full support for user interaction (mouse-over events, drag
and drop support, etc.)

Good luck
Peter

On Fri, Oct 2, 2009 at 6:33 PM, <marsijanin at gmail.com> wrote:

> Good ${current_time_of_day}
>
> I'm trying to use cl-2d plotting library (http://github.com/tpapp/cl-2d)
> with cl-cairo2 support in cells-gtk. First I tried to make an
> cl-2d:frame from cells-gtk:cairo-context of cells-gtk:cairo-drawing-area:
>
>
> CL-USER> (in-package :cgtk)
> #<PACKAGE "CELLS-GTK">
> CGTK> (defmodel test-app (gtk-app)
>  ()
>  (:default-initargs :title "Test"
>    :position :center
>    :width 800 :height 600
>    :kids (c?
>            (the-kids
>             (mk-hbox
>              :kids
>              (list
>               (make-instance 'cairo-drawing-area :width 640 :height 480
> :fm-parent *parent* :md-name :draw
>                              :expand t :fill t)
>               (mk-button :label "test"
>                          :on-clicked (callback (w e d)
>                                        ;; cl-cairo2::with-gtk-context dose
> not setup
>                                        ;; width, height & pixel-based-p
> properties of the context
>                                        ;; needed by cl-2d:as-frame
>                                        (with-accessors ((widget-width
> width)
>                                                         (widget-height
> height)
>                                                         (context
> cairo-context)) (find-widget :draw)
>                                          (with-slots ((context-width
> cl-cairo2:width)
>                                                       (context-height
> cl-cairo2:height)
>
> (context-pixel-based-p cl-cairo2:pixel-based-p)) context
>                                            (setf context-width widget-width
>  context-height widget-height
>                                                  context-pixel-based-p t))
>                                          (print (cl-2d::vertical-interval
> (cl-2d:as-frame context))))))))))))
>
> #<STANDARD-CLASS TEST-APP>
> CGTK> (cells-gtk-init)
>
> "----------UTILSRESET----------------------------------"
> #()
> CGTK> (start-win 'test-app)
>
> "----------UTILSRESET----------------------------------"
> 0> registering handlers for #.(sb-sys:int-sap #x080d2898)
> 0> c-link> query link :draw cells-store2 nil
> #<CL-2D:INTERVAL left=480  right=0> ;; <--- vertical-interval of the
> cl-2d:frame, created by calling cl-2d:frame
> 0> c-link> kick link :draw cells-store2 #<cells::c-link {ba79009}>
> 0> not-to-be cairo-drawing area erasing everything drawTEST-APP6
>
> And then I tried to call cl-2d:plot-simple on with cl-2d:frame and
> got strange error about unknown CAIRO_STATUS_T value:
>
>
> CGTK> (defmodel test-app (gtk-app)
>  ()
>  (:default-initargs :title "Test"
>    :position :center
>    :width 800 :height 600
>    :kids (c?
>            (the-kids
>             (mk-hbox
>              :kids
>              (list
>               (make-instance 'cairo-drawing-area :width 640 :height 480
> :fm-parent *parent* :md-name :draw
>                              :expand t :fill t)
>               (mk-button :label "test"
>                          :on-clicked (callback (w e d)
>                                        ;; cl-cairo2::with-gtk-context dose
> not setup
>                                        ;; width, height & pixel-based-p
> properties of the context
>                                        ;; needed by cl-2d:as-frame
>                                        (with-accessors ((widget-width
> width)
>                                                         (widget-height
> height)
>                                                         (context
> cairo-context)) (find-widget :draw)
>                                          (with-slots ((context-width
> cl-cairo2:width)
>                                                       (context-height
> cl-cairo2:height)
>
> (context-pixel-based-p cl-cairo2:pixel-based-p)) context
>                                            (setf context-width widget-width
>  context-height widget-height
>                                                  context-pixel-based-p t))
>                                          (cl-2d:plot-simple (cl-2d:as-frame
> context)
>
> (cl-2d:make-interval  1 2)
>
> (cl-2d:make-interval  3 4)
>                                                             :x-title "x"
>                                                             :y-title
> "y"))))))))))
>
>
> STYLE-WARNING:
>   redefining SHARED-INITIALIZE :AFTER (#<STANDARD-CLASS TEST-APP>
>                                        #<BUILT-IN-CLASS T>) in DEFMETHOD
> #<STANDARD-CLASS TEST-APP>
> CGTK> (start-win 'test-app)
> 1> c-link> kick link :draw cells-store2 #<cells::c-link {d0a3801}>
> 0> registering handlers for #.(sb-sys:int-sap #x0810f8c0)
> 0> c-link> query link :draw cells-store2 #<cells::c-link {d0a3801}>
> 0> show error message
> 0> md-awaken :after
> 1> processing dlg
> .2> running dialog
> 1> showed dialog -9 :no
> 1> destroying self (not-to-be)
> 0> >>>> ERROR REPORTING --> #<simple-error {bbfcc79}>
>
> And here is debugger output:
>
>
> -1208503376 is not defined as a value for enum type #<CFFI::FOREIGN-ENUM
> CL-CAIRO2::CAIRO_STATUS_T>.
>   [Condition of type SIMPLE-ERROR]
>
> Restarts:
>  0: [TERMINATE-THREAD] Terminate this thread (#<THREAD "gtk-main-thread"
> RUNNING {B0D1409}>)
>
> Backtrace:
>  0: ((LAMBDA (CELLS-GTK::C2)) #<SIMPLE-ERROR {BBFCC79}>)
>      Locals:
>        CELLS-GTK::C2 = #<SIMPLE-ERROR {BBFCC79}>
>  1: (CELLS-GTK::MAIN-LOOP)
>      Locals:
>        SB-KERNEL:*HANDLER-CLUSTERS* = :<NOT-AVAILABLE>
>        SB-KERNEL:*RESTART-CLUSTERS* = :<NOT-AVAILABLE>
>        #:COUNT[MAIN-LOOP]594 = :<NOT-AVAILABLE>
>        #:G600 = (#<SIMPLE-ERROR {BBFCC79}>)
>        #:NEXT[MAIN-LOOP]592 = :<NOT-AVAILABLE>
>        #:START[MAIN-LOOP]593 = :<NOT-AVAILABLE>
>  2: ((FLET CELLS-GTK::GTK-THREAD))
>      Locals:
>        CELLS-GTK::GTK-MAIN-THREAD = #<SB-THREAD:THREAD "gtk-main-thread"
> RUNNING {B0D1409}>
>  3: ((LAMBDA ()))
>      Locals:
>        CELLS-GTK::GTK-MAIN-THREAD = #<SB-THREAD:THREAD "gtk-main-thread"
> RUNNING {B0D1409}>
>        CELLS-GTK::SO = #<SWANK-BACKEND::SLIME-OUTPUT-STREAM {B71B6A9}>
>  4: ((LAMBDA ()))
>      [No Locals]
>  5: ((FLET #:WITHOUT-INTERRUPTS-BODY-[BLOCK375]380))
>      [No Locals]
>  6: ((FLET SB-THREAD::WITH-MUTEX-THUNK))
>      [No Locals]
>      Catch-tags:
>        SB-IMPL::%END-OF-THE-WORLD
>        SB-INT:TOPLEVEL-CATCHER
>  7: ((FLET #:WITHOUT-INTERRUPTS-BODY-[CALL-WITH-MUTEX]267))
>      [No Locals]
>  8: (SB-THREAD::CALL-WITH-MUTEX ..)
>      Locals:
>        SB-DEBUG::ARG-0 = #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK)
> {AF142205}>
>        SB-DEBUG::ARG-1 = #S(SB-THREAD:MUTEX ..)
>        SB-DEBUG::ARG-2 = #<SB-THREAD:THREAD "gtk-main-thread" RUNNING
> {B0D1409}>
>        SB-DEBUG::ARG-3 = T
>  9: ((LAMBDA ()))
>      [No Locals]
>  10: ("foreign function: #x8063A3B")
>  11: ("foreign function: #x80523BD")
>  12: ("foreign function: #x805BC20")
>  13: ("foreign function: #xB7FA965C")
>
>
> Can anyone please help to solve this problem?
>
> Best, Nikolay V. Razbegaev.
>
> _______________________________________________
> cells-gtk-devel site list
> cells-gtk-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/cells-gtk-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cells-gtk-devel/attachments/20091002/be429a1f/attachment.html>


More information about the cells-gtk-devel mailing list