Hello,
I'm currently writing an API for a simple 2D graphics library for Gambit, based on TinyPTC and SDL.
However, it seems that I have some issues with conversion of Scheme data to C.
Here is the API idea: (PTC-OPEN name width height) creates a window (PTC-CLOSE) closes the window (PTC-UPDATE buffer) blits the buffer to the window
I chose to represent the buffer with a vector. I'd even prefer an U32VECTOR for colors are represented by an unsigned integer, however.
The update function works like this:
int scm_ptc_update (___SCMOBJ) { int idx; ___SCMOBJ ___temp; // for the type test if ( ___VECTORP(obj) ) { for(idx=0 ; idx < width * height ; idx++ ) { buffer[idx] = ___INT ( ___VECTORREF (obj, idx)); } // Call the underlying update function return (( ptc_update (buffer)) == PTC_SUCCESS ? ___TRU : ___FAL ); } else { return ( ___FAL ); } };
If the test program fills the vector with
(vector-set! buffer (random-integer 255))
I see large vertical and periodical stripes, and , roughly, grey noise, instead of blue noise. Printf-ing the values shows a lot of them greater than 255. Therefor, I reckon that my conversion is not correct.
How should I then read a Scheme int32 value to store it in C ?
Subsidiary question: how can I call pp or pretty-print from withing C? To do something like ___PRETTYPRINT(obj);
Cordially,
Adrien.