Beispiel #1
0
static void scan_I8_RGBA8_keyed(I8 const* src, Palette const& pal, RGBA8* dest, int w, I8 transparent)
{
    int x;
    for( x=0; x<w; ++x )
    {
        I8 c = *src++;
        if( c != transparent)
            *dest = pal.GetColour(c);
        ++dest;
    }
}
Beispiel #2
0
void BlitZoomIndexedToRGBx(
    IndexedImg const& srcimg, Box const& srcbox,
    RGBImg& destimg, Box& destbox,
    Palette const& palette,
    int zoom,
    int transparentcolour,
    int maskcolour )
{
    assert( srcimg.Bounds().Contains( srcbox ) );
    assert( zoom >= 1 );

    Box destclipped( destbox );
    Box srcclipped( srcbox );
    clip_blit( srcimg.Bounds(), srcclipped, destimg.Bounds(), destclipped, zoom );

    int y;
    for( y=0; y<destclipped.H(); ++y )
    {
        int x;
        RGBx* dest = destimg.Ptr( destclipped.XMin() + 0, destclipped.YMin() + y );
        uint8_t const* src = srcimg.PtrConst( srcclipped.XMin()+0, srcclipped.YMin()+y/zoom );
        int n=0;
        for( x=0; x<destclipped.W(); ++x )
        {

            RGBx c;// = *dest;
            if( maskcolour != -1 )
                c = palette.GetColour(maskcolour);
            else
                c = palette.GetColour(*src);
            if( *src != transparentcolour )
                *dest = c;
            ++dest;
            if( ++n >= zoom )
            {
                ++src;
                n=0;
            }
        }
    }
}