Example #1
0
		//! 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;
					}
				}
			}
		}
Example #2
0
//! 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;
		}
	}
}