diff options
author | Perttu Ahola <celeron55@gmail.com> | 2010-12-24 11:44:26 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2010-12-24 11:44:26 +0200 |
commit | 705de63dcdfe78157234e1b65652d5c2f762dbd4 (patch) | |
tree | 6aeac4160d1034e7f8cf9daa4232a741c367774d /src/irrlichtwrapper.cpp | |
parent | 1611f00865031e5187bd9b51d2b2e9f8307af62e (diff) | |
download | minetest-705de63dcdfe78157234e1b65652d5c2f762dbd4.tar.gz minetest-705de63dcdfe78157234e1b65652d5c2f762dbd4.tar.bz2 minetest-705de63dcdfe78157234e1b65652d5c2f762dbd4.zip |
ProgressBarTextureMod
Diffstat (limited to 'src/irrlichtwrapper.cpp')
-rw-r--r-- | src/irrlichtwrapper.cpp | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/irrlichtwrapper.cpp b/src/irrlichtwrapper.cpp index c012b136e..fc9f96b18 100644 --- a/src/irrlichtwrapper.cpp +++ b/src/irrlichtwrapper.cpp @@ -146,39 +146,45 @@ video::ITexture * CrackTextureMod::make(video::ITexture *original, return newtexture; } -#if 0 -video::ITexture * createAlphaBlitTexture(const char *name, video::ITexture *base, - video::ITexture *other, v2u32 size, v2s32 pos_base, v2s32 pos_other) +video::ITexture * ProgressBarTextureMod::make(video::ITexture *original, + const char *newname, video::IVideoDriver* driver) { - if(g_device == NULL) - return NULL; - video::IVideoDriver* driver = g_device->getVideoDriver(); - - core::dimension2d<u32> dim(size.X, size.Y); + core::position2d<s32> pos_base(0, 0); + core::dimension2d<u32> dim = original->getOriginalSize(); - video::IImage *baseimage = driver->createImage( - base, - core::position2d<s32>(pos_base.X, pos_base.Y), - dim); + video::IImage *baseimage = driver->createImage(original, pos_base, dim); assert(baseimage); - - video::IImage *otherimage = driver->createImage( - other, - core::position2d<s32>(pos_other.X, pos_other.Y), - dim); - assert(sourceimage); - otherimage->copyToWithAlpha(baseimage, v2s32(0,0), - core::rect<s32>(v2s32(0,0), dim), - video::SColor(255,255,255,255), - core::rect<s32>(v2s32(0,0), dim)); - otherimage->drop(); + core::dimension2d<u32> size = baseimage->getDimension(); - video::ITexture *newtexture = driver->addTexture(name, baseimage); + u32 barheight = 1; + u32 barpad_x = 1; + u32 barpad_y = 1; + u32 barwidth = size.Width - barpad_x*2; + v2u32 barpos(barpad_x, size.Height - barheight - barpad_y); + + u32 barvalue_i = round((float)barwidth * value); + + video::SColor active(255,255,0,0); + video::SColor inactive(255,0,0,0); + for(u32 x0=0; x0<barwidth; x0++) + { + video::SColor *c; + if(x0 < barvalue_i) + c = &active; + else + c = &inactive; + u32 x = x0 + barpos.X; + for(u32 y=barpos.Y; y<barpos.Y+barheight; y++) + { + baseimage->setPixel(x,y, *c); + } + } + + video::ITexture *newtexture = driver->addTexture(newname, baseimage); baseimage->drop(); return newtexture; } -#endif |