Fix to-transparend conversion of backgrounds of sprite image files that don't have an alpha channel

This commit is contained in:
Perttu Ahola 2011-10-16 23:41:43 +03:00
parent 2419d0029a
commit 162619a426

@ -1092,22 +1092,23 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
core::dimension2d<u32> dim = image->getDimension(); core::dimension2d<u32> dim = image->getDimension();
baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); baseimg = driver->createImage(video::ECF_A8R8G8B8, dim);
// Blit
image->copyTo(baseimg);
image->drop();
for(u32 y=0; y<dim.Height; y++) for(u32 y=0; y<dim.Height; y++)
for(u32 x=0; x<dim.Width; x++) for(u32 x=0; x<dim.Width; x++)
{ {
video::SColor c = image->getPixel(x,y); video::SColor c = baseimg->getPixel(x,y);
u32 r = c.getRed(); u32 r = c.getRed();
u32 g = c.getGreen(); u32 g = c.getGreen();
u32 b = c.getBlue(); u32 b = c.getBlue();
if(!(r == r1 && g == g1 && b == b1)) if(!(r == r1 && g == g1 && b == b1))
continue; continue;
c.setAlpha(0); c.setAlpha(0);
image->setPixel(x,y,c); baseimg->setPixel(x,y,c);
} }
// Blit
image->copyTo(baseimg);
image->drop();
} }
} }
/* /*
@ -1150,10 +1151,15 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
core::dimension2d<u32> dim = image->getDimension(); core::dimension2d<u32> dim = image->getDimension();
baseimg = driver->createImage(video::ECF_A8R8G8B8, dim); baseimg = driver->createImage(video::ECF_A8R8G8B8, dim);
// Blit
image->copyTo(baseimg);
image->drop();
for(u32 y=0; y<dim.Height; y++) for(u32 y=0; y<dim.Height; y++)
for(u32 x=0; x<dim.Width; x++) for(u32 x=0; x<dim.Width; x++)
{ {
video::SColor c = image->getPixel(x,y); video::SColor c = baseimg->getPixel(x,y);
u32 r = c.getRed(); u32 r = c.getRed();
u32 g = c.getGreen(); u32 g = c.getGreen();
u32 b = c.getBlue(); u32 b = c.getBlue();
@ -1161,12 +1167,8 @@ bool generate_image(std::string part_of_name, video::IImage *& baseimg,
!(r == r2 && g == g2 && b == b2)) !(r == r2 && g == g2 && b == b2))
continue; continue;
c.setAlpha(0); c.setAlpha(0);
image->setPixel(x,y,c); baseimg->setPixel(x,y,c);
} }
// Blit
image->copyTo(baseimg);
image->drop();
} }
} }
/* /*