Ok, its pretty clear
that I'm a Penguin. I love Linux, Gnome and the principles of OpenSource. But, and its only a small, yet annoying’
but’ typical of any loving relationship, that there are little
things not done that we take for granted will be done. Sounds
familiar? The Gdk libraries contain some really useful tools, so why
some of the simpler things are omited? For example, there is a gdk_pixBuf_fill
command, for clearing the screen to a single colour by painting each pixel individually, yet there is no
library command for painting a single pixel itself! Not an insurmountable
problem, but a capability that one would expect to be there.
The assumption
is, perhaps, that any drawing operations will be done to GdkDrawables, i.e.
anything in a window rendered to the screen. GtkPixBufs are
‘off-screen’, the buffers that can be draw and worked with
independently or prior to any rendering operation. My guess too is that
if a programmer needs to draw to a buffer, its better done by
rendering to it using Cairo.
To resolve this omission, I’ve examined
the Gdk source code for something useful to hack. Of the course the
right func is the above said gdk_pixbuf_fill. Now I have a usable pixel painting function that runs nicely,
having put together what might be described as the missing
gdk_pixbuf_set_pixel. Now the complement, a gdk_pixbuf_get_pixel
function, is the thing to put together. Where’s all this leading,
one might ask... to the addition of a set of pixbuf image
manipulation commands! More on this later.
Here's the screenshot,
Here's the screenshot,
And the script that built
it.
set pb1 [gnocl::pixBuf load "vyrnwy_small.png"]
set img1 [gnocl::image -image "%?$pb1"]
set box [gnocl::eventBox -child $img1]
$box configure -onMotion {
$pb1 setPixel [list %x %y] #FF0000
$img1 configure -image "%?$pb1"
gnocl::update}
gnocl::window -child $box
Comments