コード例 #1
0
// ****************************************************************************
//
//  Function Name:	RWindowView::RWindowView( )
//
//  Description:		Render this views background
//
//  Returns:			Nothing
//
//  Exceptions:		None
//
// ****************************************************************************
//
void RWindowView::RenderBackground( RDrawingSurface& drawingSurface, const R2dTransform&, const RIntRect& rcRender ) const
	{
	// Fill in the background
	if( !drawingSurface.IsPrinting( ) )
		{
		RColor	backgroundColor	= GetBackgroundColor( );
		if ( backgroundColor.GetFillMethod() == RColor::kSolid )
			{
			RSolidColor	solid	= backgroundColor.GetSolidColor( );
			//	Check for something close to TRUE GRAY and alter it slightly
#ifdef _WINDOWS
			const YColorComponent	kHitBits			= 0xC0;
			const YColorComponent	kNewColor		= 0x77;
			const YColorComponent	kGrayColor		= 0x80;
#elif	defined( MAC )
			const YColorComponent	kHitBits			= 0xF000;
			const YColorComponent	kNewColor		= 0x7777;
			const YColorComponent	kGrayColor		= 0x8000;
#endif	//	_WINDOWS or MAC
			YColorComponent	redColor		= (solid.GetRed( ) & kHitBits);
			YColorComponent	greenColor	= (solid.GetGreen( ) & kHitBits);
			YColorComponent	blueColor	= (solid.GetBlue( ) & kHitBits);
			if ( (kGrayColor == redColor) && (redColor == greenColor) && (greenColor == blueColor) )
				{
				backgroundColor = RSolidColor( kNewColor, kNewColor, kNewColor );
				}
			}
		drawingSurface.SetForegroundMode( kNormal );
		drawingSurface.SetFillColor( backgroundColor );
		drawingSurface.FillRectangle( rcRender );
		}
	}
コード例 #2
0
// ****************************************************************************
//
//  Function Name:	RSolidColor::RSolidColor( )
//
//  Description:		Constructor
//
//  Returns:			Nothing
//
//  Exceptions:		None
//
// ****************************************************************************
//
RSolidColor::RSolidColor( const RSolidColor& left, const RSolidColor& right, YPercentage percent )
	{
	int	nRedValue	= right.GetRed() - left.GetRed();
	int	nGreenValue	= right.GetGreen() - left.GetGreen();
	int	nBlueValue	= right.GetBlue() - left.GetBlue();
	TpsAssert( percent >= 0.0 && percent <= 1.0, "Percent is not in range 0 - 1" );
	*this = RSolidColor( static_cast<YColorComponent>( left.GetRed() + (nRedValue * percent) ),
								static_cast<YColorComponent>( left.GetGreen() + (nGreenValue * percent) ),
								static_cast<YColorComponent>( left.GetBlue() + (nBlueValue * percent) ) );
	}