diff options
| -rw-r--r-- | indra/llui/llui.cpp | 6 | ||||
| -rw-r--r-- | indra/llui/llui.h | 2 | ||||
| -rw-r--r-- | indra/newview/llcolorswatch.cpp | 30 | 
3 files changed, 24 insertions, 14 deletions
| diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 19c42bf61a..1e2fe09cd9 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -950,7 +950,7 @@ void gl_ring( F32 radius, F32 width, const LLColor4& center_color, const LLColor  }  // Draw gray and white checkerboard with black border -void gl_rect_2d_checkerboard(const LLRect& rect) +void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha)  {  	// Initialize the first time this is called.  	const S32 PIXELS = 32; @@ -971,11 +971,11 @@ void gl_rect_2d_checkerboard(const LLRect& rect)  	gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);  	// ...white squares -	gGL.color3f( 1.f, 1.f, 1.f ); +	gGL.color4f( 1.f, 1.f, 1.f, alpha );  	gl_rect_2d(rect);  	// ...gray squares -	gGL.color3f( .7f, .7f, .7f ); +	gGL.color4f( .7f, .7f, .7f, alpha );  	gGL.flush();  	glPolygonStipple( checkerboard ); diff --git a/indra/llui/llui.h b/indra/llui/llui.h index fc545c85d5..62d10df8b2 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -79,7 +79,7 @@ void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, const LL  void gl_rect_2d_offset_local( S32 left, S32 top, S32 right, S32 bottom, S32 pixel_offset = 0, BOOL filled = TRUE );  void gl_rect_2d(const LLRect& rect, BOOL filled = TRUE );  void gl_rect_2d(const LLRect& rect, const LLColor4& color, BOOL filled = TRUE ); -void gl_rect_2d_checkerboard(const LLRect& rect); +void gl_rect_2d_checkerboard(const LLRect& rect, GLfloat alpha = 1.0f);  void gl_drop_shadow(S32 left, S32 top, S32 right, S32 bottom, const LLColor4 &start_color, S32 lines); diff --git a/indra/newview/llcolorswatch.cpp b/indra/newview/llcolorswatch.cpp index e7634ff0f4..2bb54d3fe6 100644 --- a/indra/newview/llcolorswatch.cpp +++ b/indra/newview/llcolorswatch.cpp @@ -195,7 +195,7 @@ BOOL LLColorSwatchCtrl::handleMouseUp(S32 x, S32 y, MASK mask)  // assumes GL state is set for 2D  void LLColorSwatchCtrl::draw()  { -	F32 alpha = getDrawContext().mAlpha; +	F32 alpha = getCurrentTransparency();  	mBorder->setKeyboardFocusHighlight(hasFocus());  	// Draw border  	LLRect border( 0, getRect().getHeight(), getRect().getWidth(), mLabelHeight ); @@ -207,19 +207,29 @@ void LLColorSwatchCtrl::draw()  	// Check state  	if ( mValid )  	{ +		if (!mColor.isOpaque()) +		{ +			// Draw checker board. +			gl_rect_2d_checkerboard(interior, alpha); +		} +  		// Draw the color swatch -		gl_rect_2d_checkerboard( interior ); -		gl_rect_2d(interior, mColor, TRUE); -		LLColor4 opaque_color = mColor; -		opaque_color.mV[VALPHA] = 1.f; -		gGL.color4fv(opaque_color.mV); -		if (mAlphaGradientImage.notNull()) +		gl_rect_2d(interior, mColor % alpha, TRUE); + +		if (!mColor.isOpaque())  		{ -			gGL.pushMatrix(); +			// Draw semi-transparent center area in filled with mColor. +			LLColor4 opaque_color = mColor; +			opaque_color.mV[VALPHA] = alpha; +			gGL.color4fv(opaque_color.mV); +			if (mAlphaGradientImage.notNull())  			{ -				mAlphaGradientImage->draw(interior, mColor); +				gGL.pushMatrix(); +				{ +					mAlphaGradientImage->draw(interior, mColor % alpha); +				} +				gGL.popMatrix();  			} -			gGL.popMatrix();  		}  	}  	else | 
