// **************************************************************************** // // 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 ); } }
// **************************************************************************** // // 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) ) ); }