The intermittent not-working seems to be an artefact of the parameter
getting messed up (as I should have known!). Don't understand the bindings
well enough to see why the latter is happening.

martin

On Sun, Nov 15, 2015 at 1:49 AM, Martin DeMello <martindeme...@gmail.com>
wrote:

> Couple of weird problems with the code:
>
> 1. It works sometimes, and sometimes it just displays a grey grid, as
> though the draw callback didn't do anything (though it gets called, because
> the debug text does print out)
>
> 2. As per the debug printf, something odd happens to the xmin parameter,
> though passing it back to canvas-box! works fine.
>
> (display (list i j xmin xmax ymin ymax canvas)) prints out
>
> (8 1 75263102 50 17 67 #<tagged pointer cdCanvas 277bd80>
>
> Code  below:
>
> $ cat chess.scm
> (use iup)
> (use canvas-draw)
> (import canvas-draw-iup)
>
> (define (nlines self) 8)
> (define (ncols self) 8)
> (define (height self line) 50)
> (define (width self col) 50)
>
> (define (draw self i j xmin xmax ymin ymax canvas)
>   (when (and (= i 8) (= j 1))
>     (display (list i j xmin xmax ymin ymax canvas)))
>   (if (= (modulo (+ i j) 2) 0)
>     (canvas-foreground-set! canvas #xFFFFFF)
>     (canvas-foreground-set! canvas #x000000))
>   (canvas-box! canvas xmin xmax ymin ymax))
>
> (define dlg
>   (dialog
>     (vbox
>       (cells name: "chessboard"
>              height-cb: height
>              width-cb: width
>              nlines-cb: nlines
>              draw-cb: (make-cells-draw-cb draw)
>              ncols-cb: ncols)
>       (button title: 'E&xit
>               expand: 'Yes
>               tip: "Close button"
>               action: (lambda (self) 'close)))
>     title: 'IUP))
>
> (show dlg)
> (main-loop)
> (destroy! dlg)
> (exit 0)
>
>
> On Sat, Nov 7, 2015 at 2:58 PM, Martin DeMello <martindeme...@gmail.com>
> wrote:
>
>> Finally had time to finish this off. It needed one more change
>> (pointer->canvas was not being reexported from canvas-draw).
>>
>> Let me know when you've pushed the new egg, and I'll add the chessboard
>> example to the tutorial in the wiki.
>>
>> martin
>>
>> On Wed, Oct 14, 2015 at 11:00 PM, Thomas Chust <ch...@web.de> wrote:
>>
>>> On 2015-10-15 04:04, Martin DeMello wrote:
>>> > [...]
>>> > it looks like the cb-draw callback has format "iiiiiiC", which doesn't
>>> > match the sigil regex. I take it that means callbacks with a Canvas*
>>> > argument are unsupported in chicken-iup?
>>> > [...]
>>>
>>> Hello Martin,
>>>
>>> that is correct, however support is trivial to add: Add the #\C
>>> character to the regular expression for callback signatures, add a case
>>> for #\C typed arguments in the dispatcher that treats them identically
>>> to #\v typed arguments, use pointer->canvas from the canvas-draw egg in
>>> your callback code to add the right type tags to the raw pointer.
>>>
>>> I think that the #\C signature character has been introduced recently in
>>> IUP. Anyway, I added the necessary marshalling code as outlined above to
>>> the iup egg, it is available in the trunk version of the code.
>>>
>>> Ciao,
>>> Thomas
>>>
>>>
>>> --
>>> When C++ is your hammer, every problem looks like your thumb.
>>>
>>> _______________________________________________
>>> Chicken-users mailing list
>>> Chicken-users@nongnu.org
>>> https://lists.nongnu.org/mailman/listinfo/chicken-users
>>>
>>
>>
>
_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to