//! draws a line from to with color void CImage::drawLine(const vector2di& from, const vector2di& to, const SColor &color) { AbsRectangle clip; GetClip(clip, this); vector2di p[2]; if (ClipLine(clip, p[0], p[1], from, to)) { u32 alpha = extractAlpha(color.color); switch (Format) { case ECF_A1R5G5B5: if (alpha == 256) { RenderLine16_Decal(this, p[0], p[1], SharedColorConverter::getInstance().A8R8G8B8toA1R5G5B5( color.color)); } else { RenderLine16_Blend(this, p[0], p[1], SharedColorConverter::getInstance().A8R8G8B8toA1R5G5B5( color.color), alpha >> 3); } break; case ECF_A8R8G8B8: if (alpha == 256) { RenderLine32_Decal(this, p[0], p[1], color.color); } else { RenderLine32_Blend(this, p[0], p[1], color.color, alpha); } break; default: { break; } } } }
//! draws a line from to with color void CImage::drawLine(const core::position2d<s32>& from, const core::position2d<s32>& to, const SColor &color) { AbsRectangle clip; GetClip( clip, this ); core::position2d<s32> p[2]; if ( ClipLine( clip, p[0], p[1], from, to ) ) { u32 alpha = extractAlpha( color.color ); switch ( Format ) { case ECF_A1R5G5B5: if ( alpha == 256 ) { RenderLine16_Decal( this, p[0], p[1], video::A8R8G8B8toA1R5G5B5( color.color ) ); } else { RenderLine16_Blend( this, p[0], p[1], video::A8R8G8B8toA1R5G5B5( color.color ), alpha >> 3 ); } break; case ECF_A8R8G8B8: if ( alpha == 256 ) { RenderLine32_Decal( this, p[0], p[1], color.color ); } else { RenderLine32_Blend( this, p[0], p[1], color.color, alpha ); } break; default: break; } } }