コード例 #1
0
ファイル: PngImage.cpp プロジェクト: droidenko/dava.framework
void PngImageExt::FindNonOpaqueRect(Rect2i & rect)
{
	rect = Rect2i(0, 0, GetWidth(), GetHeight());
	for (uint32 y = 0; y < GetHeight(); ++y)
		if (IsHorzLineOpaque(y))
		{
			rect.y++;
			rect.dy--;
		}else break;
	
	for (uint32 x = 0; x < GetWidth(); ++x)
		if (IsVertLineOpaque(x))
		{
			rect.x++;
			rect.dx--;
		}else break;
		
	if ((rect.dx == 0) && (rect.dy == 0))
	{
		rect.x = rect.y = 0; 
		rect.dx = rect.dy = 1;
		return;
	}
	
	for (int32 y = GetHeight() - 1; y >= 0; --y)
		if (IsHorzLineOpaque(y))rect.dy--;
		else break;
	
	for (int32 x = GetWidth() - 1; x >= 0; --x)
		if (IsVertLineOpaque(x))rect.dx--;
		else break;
}
コード例 #2
0
void PngImageExt::FindNonOpaqueRect(Rect2i & rect)
{
	rect = Rect2i(0, 0, width, height);
	for (int y = 0; y < height; ++y)
		if (IsHorzLineOpaque(y))
		{
			rect.y++;
			rect.dy--;
		}else break;
	
	for (int x = 0; x < width; ++x)
		if (IsVertLineOpaque(x))
		{
			rect.x++;
			rect.dx--;
		}else break;
		
	if ((rect.dx == 0) && (rect.dy == 0))
	{
		rect.x = rect.y = 0; 
		rect.dx = rect.dy = 1;
		return;
	}
	
	for (int y = height - 1; y >= 0; --y)
		if (IsHorzLineOpaque(y))rect.dy--;
		else break;
	
	for (int x = width - 1; x >= 0; --x)
		if (IsVertLineOpaque(x))rect.dx--;
		else break;
}