If you don't need a color conversion it's even more simple.
You need something like this:

void DrawBitmap(BitmapType *bmp)
{
    UInt16 err;
    BitmapType *myBmp;
    UInt8 *src, *dst;
    Int16 i;

    myBmp = BmpCreate( bmp->width, bmp->height, 4, NULL, &err );
    if ( err != errNone )
        return;
    src = (UInt8*) BmpGetBits( bmp );
    dst = (UInt8*) BmpGetBits( myBmp );

    // convert from 8 bit to 4 bit grayscale
    for ( i = 0; i < bmp->width * bmp->height / 2; i++ )
    {
        UInt8 b, bHi, bLo;
        b = *src++;
        bHi = b >> 4; // 8bit -> 4bit - we ignore 4 low bits
        b = *src++;
        bLo = b >> 4;

        *dst++ = (bHi<<4) | bLo;
    }
    WinDrawBitmap( myBmp, 0, 0 );
    BmpDelete( myBmp );
}

Very simple isn't it? What's the problem?

If the original bitmap has 0 value as black and 255 as white (standard
grayscale format) you need to invert it (just use ~(b>>4) in conversion).
For color original bitmap you should get RGB from the palette for every
pixel and convert to grayscale using formula like I wrote in my previous
letter.

Good luck,
Alex

PS. It's for PalmOS 3.5 of course. For earlier versions you have to write
your own BmpXXXX() functions. But it's not difficult.

----- Original Message -----
From: "Hans Han"
Sent: Monday, November 13, 2000 12:38 PM
Subject: Re: How to convert a 8-bits bitmaps to 4-bits Grayscale bitmaps


> Hi,
>
> For preformance reason, I want write on the  Bitmap data area of  an
> offscreen window directly while I receive the bitmap from network.  The
> pixel size of  window is 4 , so how to covert the 8-bits grayscale values
to
> 4-bits index value? Wait for help.
>
> Regrads
>
> Hans
> ----- Original Message -----
> From: "Hans Han"
> Sent: Friday, November 10, 2000 4:12 PM
> Subject: How to convert a 8-bits bitmaps to 4-bits Grayscale bitmaps
>
>
> > Hi All,
> >
> >
> > I wonder how to convert 8-bits bitmaps to 4-bits Grayscale bitmaps.Any
> tips
> > or sourcecode are welcome.
> >
> > Thanks
> >
> > Hans





-- 
For information on using the ACCESS Developer Forums, or to unsubscribe, please 
see http://www.access-company.com/developers/forums/

Reply via email to