see "loadimage" for the function that creates an Image * from a
bitstream. if you look at the xscreensaves hacks (xscr.tgz in
/contrib/andrey on sources) you'll find a couple that use that hack,
most notably "eruption".

you can fullscreen an application in two ways: use that app instead of
rio (then it'll use the entire screen but you won't be able to resize
it, or run any other draw app); or use a helper function (thanks to
Russ):

   % fullscr=`{echo $vgasize | awk -Fx '{print "0 0 " $1 " " $2}'}
   % window -r $fullscr myapp

cheers!

On 6/8/07, Anant Narayanan <[EMAIL PROTECTED]> wrote:
Hi All,

I'm a little new to libdraw and need some advice on drawing bitmap data
 onto a window.

I have with me some bitmap data on memory, the address of the first byte
is known. I also know the width of the bitmap data and the total number
of scanlines in it. The number of pixels in each scanline is rounded up
so that each scanline is word-aligned.

I also know the depth, i.e. the number of bits in a pixel. The color
arrangement per pixel depends on the depth. In the case of a 32-bit
depth, the 8 most significant bits are to be ignored, the next 8 bits
represent the red, the next 8 green and the next 8 blue. For a 16 bit
depth, the most significant bit is ignored and the next 15 bits are for
red, green and blue respectively. So on for 8, 4, 2 and 1-bit depths.

The byte order of the data is the same as that of the host CPU.

Finally, I have with me the co-ordinates of a "mask rectangle", i.e. the
portion of the bitmap that needs to updated on the screen. Consequently,
the first time my function is called, the mask rectangle will be the
entire window size; but later calls will contain mask rectangle
co-ordinates for portions of the screen that need updating.

Now for the questions :)

1) What is the best way to draw this bitmap data onto the screen? Note
that the bitmap data on memory will not stick around, I have to copy it.
 I had a look at the Memimage set of methods, but am not sure that it's
the best way to go about it.

2) Do I have to worry about endianness?

3) A general question (un-related to the description above): How can I
create a "full-screen" window? "full-screen" means the application has
the undivided attention of the user, like many games run in other
operating systems. This is different from just resizing the window to
the size of the screen because the window border would still be visible
in this case :)

Help would be most appreciated!

Thank you,

Regards,
--
Anant

Reply via email to