Index: [thread] [date] [subject] [author]
  From: Andreas Beck <becka@rz.uni-duesseldorf.de>
  To  : Terry 'Mongoose' Hendrix <stu7440@westga.edu>
  Date: Sun, 4 Jul 1999 12:01:04 +0200

Re: ggi buffer format

>           gui->ExtractColor(&old_image[n], &r, &b, &g);

old_image is an array on ggi_pixels - right ?

But you got it with GetBox - right ?

GeT/Put functions (for efficiency reasons) get/put _packed_ arrays of
ggi_pixels. Indexing them at full width will (except for 32 bit wide modes)
"subsample" the image. Looks like you are working on a 16 bit mode - right ?

> X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 
> X X X X X X X X X X X X X X X X X X X     X X X X X X X X X X X 
> X X X       X X X X X X X X X X X X   X X   X X X X X X X X X X 
> X X   X X   X X X X X X X X X X X X   X X   X X X X X X X X X X 
> X X   X X   X X X X X   X X X X X X   X X   X X X X X   X   X X 
> X X   X X   X X X X X X X   X X X X   X X   X   X   X       X X 
> X X   X X   X   X   X       X X X X   X X   X   X   X   X   X X 
> X X   X X   X   X   X   X   X X X X         X   X   X   X   X X 
> X X X               X   X   X X X X X X X X   X     X   X   X X 
> X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X 

Here you are incrementing the array index twice as fast as expected, as you
are incrementing a pointer to uint32, while it actually is a pointer to
uint16.

> X X   X X X X   X X X X   X X X X   X X X X   X X X X   X X X X 
>   X X X X   X X X X   X X X X   X X X X   X X X X   X X X X   X 

And here you are reading random garbage from the RAM after the image.
Lucky you get no segfault.

> Then I tried it with _w / 2, then drew the pixel out twice.  It *almost
> works.  I get a deformed image that looks like the first "quit"... I tried
> reading the buffer as a matrix too.  I'm stumped...

I'll send you some alpha-enabled blitting code.

CU, ANdy

-- 
= Andreas Beck                    |  Email :  <andreas.beck@ggi-project.org> =

Index: [thread] [date] [subject] [author]