From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <14ec7b180706080837o29f4436fh76ea771ad5a4524f@mail.gmail.com> Date: Fri, 8 Jun 2007 09:37:25 -0600 From: "andrey mirtchovski" To: "Fans of the OS Plan 9 from Bell Labs" <9fans@cse.psu.edu> Subject: Re: [9fans] Some libdraw help In-Reply-To: <46697374.1020507@kix.in> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <46697374.1020507@kix.in> Topicbox-Message-UUID: 7b95e93e-ead2-11e9-9d60-3106f5b1d025 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 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 >