diff options
| author | Richard Linden <none@none> | 2013-11-05 19:26:23 -0800 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2013-11-05 19:26:23 -0800 | 
| commit | c35801ef1c56b6c84063f47b490a8d2220b77ca7 (patch) | |
| tree | 5fe354aa156938a675ebe38d4d1101f2f6bed640 /indra | |
| parent | 8c4825c3821c490698806f2b4771800cdb5d6956 (diff) | |
fixed focus issue on inventory
Diffstat (limited to 'indra')
21 files changed, 543 insertions, 508 deletions
| diff --git a/indra/llrender/llrender2dutils.cpp b/indra/llrender/llrender2dutils.cpp index 79db777f4b..df5d79a436 100644 --- a/indra/llrender/llrender2dutils.cpp +++ b/indra/llrender/llrender2dutils.cpp @@ -369,7 +369,7 @@ void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image,  	gl_draw_scaled_rotated_image( x, y, width, height, 0.f, image, color, uv_rect );  } -void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect) +void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_rect, bool scale_inner)  {  	if (NULL == image)  	{ @@ -382,10 +382,10 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border  	F32 border_height_fraction = (F32)border_height / (F32)image->getHeight(0);  	LLRectf scale_rect(border_width_fraction, 1.f - border_height_fraction, 1.f - border_width_fraction, border_height_fraction); -	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect); +	gl_draw_scaled_image_with_border(x, y, width, height, image, color, solid_color, uv_rect, scale_rect, scale_inner);  } -void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect) +void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color, BOOL solid_color, const LLRectf& uv_outer_rect, const LLRectf& center_rect, bool scale_inner)  {  	stop_glerror(); @@ -395,56 +395,6 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex  		return;  	} -	// add in offset of current image to current UI translation -	const LLVector3 ui_scale = gGL.getUIScale(); -	const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale); - -	F32 uv_width = uv_outer_rect.getWidth(); -	F32 uv_height = uv_outer_rect.getHeight(); - -	// shrink scaling region to be proportional to clipped image region -	LLRectf uv_center_rect( -		uv_outer_rect.mLeft + (center_rect.mLeft * uv_width), -		uv_outer_rect.mBottom + (center_rect.mTop * uv_height), -		uv_outer_rect.mLeft + (center_rect.mRight * uv_width), -		uv_outer_rect.mBottom + (center_rect.mBottom * uv_height)); - -	F32 image_width = image->getWidth(0); -	F32 image_height = image->getHeight(0); - -	S32 image_natural_width = llround(image_width * uv_width); -	S32 image_natural_height = llround(image_height * uv_height); - -	LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width, -								uv_center_rect.mTop * image_height, -								uv_center_rect.mRight * image_width, -								uv_center_rect.mBottom * image_height); - -	{	// scale fixed region of image to drawn region -		draw_center_rect.mRight += width - image_natural_width; -		draw_center_rect.mTop += height - image_natural_height; - -		F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight); -		F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop); - -		F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth())); -		F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight())); - -		F32 shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio); - -		draw_center_rect.mLeft = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * shrink_scale * ui_scale.mV[VX]); -		draw_center_rect.mTop = llround(ui_translation.mV[VY] + lerp((F32)height, (F32)draw_center_rect.mTop, shrink_scale) * ui_scale.mV[VY]); -		draw_center_rect.mRight = llround(ui_translation.mV[VX] + lerp((F32)width, (F32)draw_center_rect.mRight, shrink_scale) * ui_scale.mV[VX]); -		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * shrink_scale * ui_scale.mV[VY]); -	} - -	LLRectf draw_outer_rect(ui_translation.mV[VX],  -							ui_translation.mV[VY] + height * ui_scale.mV[VY],  -							ui_translation.mV[VX] + width * ui_scale.mV[VX],  -							ui_translation.mV[VY]); - -	LLGLSUIDefault gls_ui; -	  	if (solid_color)  	{  		if (LLGLSLShader::sNoFixedFunction) @@ -458,174 +408,247 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex  		}  	} -	gGL.getTexUnit(0)->bind(image, true); +	if (center_rect.mLeft == 0.f +		&& center_rect.mRight == 1.f +		&& center_rect.mBottom == 0.f +		&& center_rect.mTop == 1.f) +	{ +		gl_draw_scaled_image(x, y, width, height, image, color, uv_outer_rect); +	} +	else +	{ +		// add in offset of current image to current UI translation +		const LLVector3 ui_scale = gGL.getUIScale(); +		const LLVector3 ui_translation = (gGL.getUITranslation() + LLVector3(x, y, 0.f)).scaledVec(ui_scale); + +		F32 uv_width = uv_outer_rect.getWidth(); +		F32 uv_height = uv_outer_rect.getHeight(); + +		// shrink scaling region to be proportional to clipped image region +		LLRectf uv_center_rect(	uv_outer_rect.mLeft + (center_rect.mLeft * uv_width), +								uv_outer_rect.mBottom + (center_rect.mTop * uv_height), +								uv_outer_rect.mLeft + (center_rect.mRight * uv_width), +								uv_outer_rect.mBottom + (center_rect.mBottom * uv_height)); + +		F32 image_width = image->getWidth(0); +		F32 image_height = image->getHeight(0); + +		S32 image_natural_width = llround(image_width * uv_width); +		S32 image_natural_height = llround(image_height * uv_height); + +		LLRectf draw_center_rect(	uv_center_rect.mLeft * image_width, +									uv_center_rect.mTop * image_height, +									uv_center_rect.mRight * image_width, +									uv_center_rect.mBottom * image_height); +		 +		if (scale_inner) +		{ +			// scale center region of image to drawn region +			draw_center_rect.mRight += width - image_natural_width; +			draw_center_rect.mTop += height - image_natural_height; + +			const F32 border_shrink_width = llmax(0.f, draw_center_rect.mLeft - draw_center_rect.mRight); +			const F32 border_shrink_height = llmax(0.f, draw_center_rect.mBottom - draw_center_rect.mTop); -	gGL.color4fv(color.mV); +			const F32 shrink_width_ratio = center_rect.getWidth() == 1.f ? 0.f : border_shrink_width / ((F32)image_natural_width * (1.f - center_rect.getWidth())); +			const F32 shrink_height_ratio = center_rect.getHeight() == 1.f ? 0.f : border_shrink_height / ((F32)image_natural_height * (1.f - center_rect.getHeight())); + +			const F32 border_shrink_scale = 1.f - llmax(shrink_width_ratio, shrink_height_ratio); +			draw_center_rect.mLeft *= border_shrink_scale; +			draw_center_rect.mTop = lerp((F32)height, (F32)draw_center_rect.mTop, border_shrink_scale); +			draw_center_rect.mRight = lerp((F32)width, (F32)draw_center_rect.mRight, border_shrink_scale); +			draw_center_rect.mBottom *= border_shrink_scale; +		} +		else +		{ +			// keep center region of image at fixed scale, but in same relative position +			F32 scale_factor = llmin((F32)width / draw_center_rect.getWidth(), (F32)height / draw_center_rect.getHeight(), 1.f); +			F32 scaled_width = draw_center_rect.getWidth() * scale_factor; +			F32 scaled_height = draw_center_rect.getHeight() * scale_factor; +			draw_center_rect.setCenterAndSize(uv_center_rect.getCenterX() * width, uv_center_rect.getCenterY() * height, scaled_width, scaled_height); +		} + +		draw_center_rect.mLeft   = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mLeft * ui_scale.mV[VX]); +		draw_center_rect.mTop    = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mTop * ui_scale.mV[VY]); +		draw_center_rect.mRight  = llround(ui_translation.mV[VX] + (F32)draw_center_rect.mRight * ui_scale.mV[VX]); +		draw_center_rect.mBottom = llround(ui_translation.mV[VY] + (F32)draw_center_rect.mBottom * ui_scale.mV[VY]); + +		LLRectf draw_outer_rect(ui_translation.mV[VX],  +								ui_translation.mV[VY] + height * ui_scale.mV[VY],  +								ui_translation.mV[VX] + width * ui_scale.mV[VX],  +								ui_translation.mV[VY]); + +		LLGLSUIDefault gls_ui; + +		gGL.getTexUnit(0)->bind(image, true); + +		gGL.color4fv(color.mV); -	const S32 NUM_VERTICES = 9 * 4; // 9 quads -	LLVector2 uv[NUM_VERTICES]; -	LLVector3 pos[NUM_VERTICES]; +		const S32 NUM_VERTICES = 9 * 4; // 9 quads +		LLVector2 uv[NUM_VERTICES]; +		LLVector3 pos[NUM_VERTICES]; -	S32 index = 0; +		S32 index = 0; -	gGL.begin(LLRender::QUADS); -	{ -		// draw bottom left -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f); -		index++; +		gGL.begin(LLRender::QUADS); +		{ +			// draw bottom left +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		// draw bottom middle -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f); -		index++; +			// draw bottom middle +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		// draw bottom right -		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f); -		index++; +			// draw bottom right +			uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		// draw left  -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			// draw left  +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		// draw middle -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); -		index++; +			// draw middle +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		// draw right  -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			// draw right  +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mBottom); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mBottom, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		// draw top left -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			// draw top left +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mLeft, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mLeft, draw_outer_rect.mTop, 0.f); +			index++; -		// draw top middle -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); -		index++; +			// draw top middle +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mLeft, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mLeft, draw_outer_rect.mTop, 0.f); +			index++; -		// draw top right -		uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			// draw top right +			uv[index] = LLVector2(uv_center_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_center_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_center_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_outer_rect.mRight, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_outer_rect.mRight, draw_outer_rect.mTop, 0.f); +			index++; -		uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop); -		pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f); -		index++; +			uv[index] = LLVector2(uv_center_rect.mRight, uv_outer_rect.mTop); +			pos[index] = LLVector3(draw_center_rect.mRight, draw_outer_rect.mTop, 0.f); +			index++; -		gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES); +			gGL.vertexBatchPreTransformed(pos, uv, NUM_VERTICES); +		} +		gGL.end();  	} -	gGL.end();  	if (solid_color)  	{ diff --git a/indra/llrender/llrender2dutils.h b/indra/llrender/llrender2dutils.h index 2b8964742b..cce3b4ed51 100644 --- a/indra/llrender/llrender2dutils.h +++ b/indra/llrender/llrender2dutils.h @@ -75,8 +75,8 @@ void gl_draw_scaled_target(S32 x, S32 y, S32 width, S32 height, LLRenderTarget*  void gl_draw_scaled_image(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));  void gl_draw_rotated_image(S32 x, S32 y, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f));  void gl_draw_scaled_rotated_image(S32 x, S32 y, S32 width, S32 height, F32 degrees, LLTexture* image, const LLColor4& color = UI_VERTEX_COLOR, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), LLRenderTarget* target = NULL); -void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f)); -void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f)); +void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 border_width, S32 border_height, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), bool scale_inner = true); +void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTexture* image, const LLColor4 &color, BOOL solid_color = FALSE, const LLRectf& uv_rect = LLRectf(0.f, 1.f, 1.f, 0.f), const LLRectf& scale_rect = LLRectf(0.f, 1.f, 1.f, 0.f), bool scale_inner = true);  void gl_stippled_line_3d( const LLVector3& start, const LLVector3& end, const LLColor4& color, F32 phase = 0.f );  diff --git a/indra/llrender/lluiimage.cpp b/indra/llrender/lluiimage.cpp index b954b66350..6f1fae92cd 100644 --- a/indra/llrender/lluiimage.cpp +++ b/indra/llrender/lluiimage.cpp @@ -38,11 +38,9 @@ LLUIImage::LLUIImage(const std::string& name, LLPointer<LLTexture> image)  	mImage(image),  	mScaleRegion(0.f, 1.f, 1.f, 0.f),  	mClipRegion(0.f, 1.f, 1.f, 0.f), -	mUniformScaling(TRUE), -	mNoClip(TRUE), -	mImageLoaded(NULL) -{ -} +	mImageLoaded(NULL), +	mScaleStyle(SCALE_INNER) +{}  LLUIImage::~LLUIImage()  { @@ -52,44 +50,35 @@ LLUIImage::~LLUIImage()  void LLUIImage::setClipRegion(const LLRectf& region)   {   	mClipRegion = region;  -	mNoClip = mClipRegion.mLeft == 0.f -				&& mClipRegion.mRight == 1.f -				&& mClipRegion.mBottom == 0.f -				&& mClipRegion.mTop == 1.f;  }  void LLUIImage::setScaleRegion(const LLRectf& region)   {   	mScaleRegion = region;  -	mUniformScaling = mScaleRegion.mLeft == 0.f -					&& mScaleRegion.mRight == 1.f -					&& mScaleRegion.mBottom == 0.f -					&& mScaleRegion.mTop == 1.f; +} + +void LLUIImage::setScaleStyle(LLUIImage::EScaleStyle style) +{ +	mScaleStyle = style;  }  //TODO: move drawing implementation inside class  void LLUIImage::draw(S32 x, S32 y, const LLColor4& color) const  { -	gl_draw_scaled_image(x, y, getWidth(), getHeight(), mImage, color, mClipRegion); +	draw(x, y, getWidth(), getHeight(), color);  }  void LLUIImage::draw(S32 x, S32 y, S32 width, S32 height, const LLColor4& color) const  { -	if (mUniformScaling) -	{ -		gl_draw_scaled_image(x, y, width, height, mImage, color, mClipRegion); -	} -	else -	{ -		gl_draw_scaled_image_with_border( -			x, y,  -			width, height,  -			mImage,  -			color, -			FALSE, -			mClipRegion, -			mScaleRegion); -	} +	gl_draw_scaled_image_with_border( +		x, y,  +		width, height,  +		mImage,  +		color, +		FALSE, +		mClipRegion, +		mScaleRegion, +		mScaleStyle == SCALE_INNER);  }  void LLUIImage::drawSolid(S32 x, S32 y, S32 width, S32 height, const LLColor4& color) const @@ -101,7 +90,8 @@ void LLUIImage::drawSolid(S32 x, S32 y, S32 width, S32 height, const LLColor4& c  		color,   		TRUE,  		mClipRegion, -		mScaleRegion); +		mScaleRegion, +		mScaleStyle == SCALE_INNER);  }  void LLUIImage::drawBorder(S32 x, S32 y, S32 width, S32 height, const LLColor4& color, S32 border_width) const diff --git a/indra/llrender/lluiimage.h b/indra/llrender/lluiimage.h index 7817ba1c7b..6f47385eb0 100644 --- a/indra/llrender/lluiimage.h +++ b/indra/llrender/lluiimage.h @@ -42,6 +42,12 @@ extern const LLColor4 UI_VERTEX_COLOR;  class LLUIImage : public LLRefCount  {  public: +	enum EScaleStyle +	{ +		SCALE_INNER, +		SCALE_OUTER +	}; +  	typedef boost::signals2::signal<void (void)> image_loaded_signal_t;  	LLUIImage(const std::string& name, LLPointer<LLTexture> image); @@ -49,6 +55,7 @@ public:  	void setClipRegion(const LLRectf& region);  	void setScaleRegion(const LLRectf& region); +	void setScaleStyle(EScaleStyle style);  	LLPointer<LLTexture> getImage() { return mImage; }  	const LLPointer<LLTexture>& getImage() const { return mImage; } @@ -83,12 +90,11 @@ public:  protected:  	image_loaded_signal_t* mImageLoaded; -	std::string			mName; -	LLRectf				mScaleRegion; -	LLRectf				mClipRegion; -	LLPointer<LLTexture> mImage; -	BOOL				mUniformScaling; -	BOOL				mNoClip; +	std::string				mName; +	LLRectf					mScaleRegion; +	LLRectf					mClipRegion; +	LLPointer<LLTexture>	mImage; +	EScaleStyle				mScaleStyle;  };  namespace LLInitParam diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 30b79b4d20..58b66f60ca 100755 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -42,7 +42,9 @@ LLIconCtrl::Params::Params()  :	image("image_name"),  	color("color"),  	use_draw_context_alpha("use_draw_context_alpha", true), -	scale_image("scale_image") +	scale_image("scale_image"), +	min_width("min_width", 0), +	min_height("min_height", 0)  {}  LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p) @@ -51,8 +53,8 @@ LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p)  	mImagep(p.image),  	mUseDrawContextAlpha(p.use_draw_context_alpha),  	mPriority(0), -	mDrawWidth(0), -	mDrawHeight(0) +	mMinWidth(p.min_width), +	mMinHeight(p.min_height)  {  	if (mImagep.notNull())  	{ @@ -97,7 +99,13 @@ void LLIconCtrl::setValue(const LLSD& value )  		mImagep = LLUI::getUIImage(tvalue.asString(), mPriority);  	} -	setIconImageDrawSize(); +	if(mImagep.notNull()  +		&& mImagep->getImage().notNull()  +		&& mMinWidth  +		&& mMinHeight) +	{ +		mImagep->getImage()->setKnownDrawSize(llmax(mMinWidth, mImagep->getWidth()), llmax(mMinHeight, mImagep->getHeight())); +	}  }  std::string LLIconCtrl::getImageName() const @@ -108,14 +116,4 @@ std::string LLIconCtrl::getImageName() const  		return std::string();  } -void LLIconCtrl::setIconImageDrawSize() -{ -	if(mImagep.notNull() && mDrawWidth && mDrawHeight) -	{ -		if(mImagep->getImage().notNull()) -		{ -			mImagep->getImage()->setKnownDrawSize(mDrawWidth, mDrawHeight) ; -		} -	} -} diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h index a19bb99d9d..8b1092df46 100755 --- a/indra/llui/lliconctrl.h +++ b/indra/llui/lliconctrl.h @@ -49,7 +49,10 @@ public:  		Optional<LLUIImage*>	image;  		Optional<LLUIColor>		color;  		Optional<bool>			use_draw_context_alpha; +		Optional<S32>			min_width, +								min_height;  		Ignored					scale_image; +  		Params();  	};  protected: @@ -71,15 +74,12 @@ public:  	void			setImage(LLPointer<LLUIImage> image) { mImagep = image; }  	const LLPointer<LLUIImage> getImage() { return mImagep; } -private: -	void setIconImageDrawSize() ; -  protected:  	S32 mPriority;  	//the output size of the icon image if set. -	S32 mDrawWidth ; -	S32 mDrawHeight ; +	S32 mMinWidth, +		mMinHeight;  	// If set to true (default), use the draw context transparency.  	// If false, will use transparency returned by getCurrentTransparency(). See STORM-698. diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index b13f61ea7e..c59286fc60 100755 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -33,6 +33,7 @@  #include "lllocalcliprect.h"  #include "llpanel.h"  #include "llcriticaldamp.h" +#include "lliconctrl.h"  #include "boost/foreach.hpp"  static const F32 MIN_FRACTIONAL_SIZE = 0.00001f; @@ -268,25 +269,9 @@ void LLLayoutStack::draw()  			// only force drawing invisible children if visible amount is non-zero  			drawChild(panelp, 0, 0, !clip_rect.isEmpty());  		} -	} - -	const LLView::child_list_t * child_listp = getChildList(); -	BOOST_FOREACH(LLView * childp, * child_listp) -	{ -		LLResizeBar * resize_barp = dynamic_cast<LLResizeBar*>(childp); -		if (resize_barp && resize_barp->isShowDragHandle() && resize_barp->getVisible() && resize_barp->getRect().isValid()) +		if (panelp->getResizeBar()->getVisible())  		{ -			LLRect screen_rect = resize_barp->calcScreenRect(); -			if (LLUI::getRootView()->getLocalRect().overlaps(screen_rect) && LLUI::sDirtyRect.overlaps(screen_rect)) -			{ -				LLUI::pushMatrix(); -				{ -					const LLRect& rb_rect(resize_barp->getRect()); -					LLUI::translate(rb_rect.mLeft, rb_rect.mBottom); -					resize_barp->draw(); -				} -				LLUI::popMatrix(); -			} +			drawChild(panelp->getResizeBar());  		}  	}  } @@ -351,6 +336,31 @@ void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed)  static LLTrace::BlockTimerStatHandle FTM_UPDATE_LAYOUT("Update LayoutStacks"); +class LLImagePanel : public LLPanel +{ +public: +	struct Params :	public LLInitParam::Block<Params, LLPanel::Params> +	{ +		Optional<bool> horizontal; +		Params() : horizontal("horizontal", false) {} +	}; +	LLImagePanel(const Params& p) : LLPanel(p), mHorizontal(p.horizontal) {} +	virtual ~LLImagePanel() {} + +	void draw() +	{ +		const LLRect& parent_rect = getParent()->getRect(); +		const LLRect& rect = getRect(); +		LLRect clip_rect( -rect.mLeft, parent_rect.getHeight() - rect.mBottom - 2 +			, parent_rect.getWidth() - rect.mLeft - (mHorizontal ? 2 : 0), -rect.mBottom); +		LLLocalClipRect clip(clip_rect); +		LLPanel::draw(); +	} + +private: +	bool mHorizontal; +}; +  void LLLayoutStack::updateLayout()  {	  	LL_RECORD_BLOCK_TIME(FTM_UPDATE_LAYOUT); @@ -435,8 +445,6 @@ void LLLayoutStack::updateLayout()  		}  		LLRect resize_bar_rect(panel_rect); -		LLResizeBar * resize_barp = panelp->getResizeBar(); -		bool show_drag_handle = resize_barp->isShowDragHandle();  		F32 panel_spacing = (F32)mPanelSpacing * panelp->getVisibleAmount();  		F32 panel_visible_dim = panelp->getVisibleDim();  		S32 panel_spacing_round = (S32)(llround(panel_spacing)); @@ -445,7 +453,7 @@ void LLLayoutStack::updateLayout()  		{  			cur_pos += panel_visible_dim + panel_spacing; -			if (show_drag_handle && panel_spacing_round > mDragHandleThickness) +			if (mShowDragHandle && panel_spacing_round > mDragHandleThickness)  			{  				resize_bar_rect.mLeft = panel_rect.mRight + mDragHandleShift;  				resize_bar_rect.mRight = resize_bar_rect.mLeft + mDragHandleThickness; @@ -456,7 +464,7 @@ void LLLayoutStack::updateLayout()  				resize_bar_rect.mRight = panel_rect.mRight + panel_spacing_round + mResizeBarOverlap;  			} -			if (show_drag_handle) +			if (mShowDragHandle)  			{  				resize_bar_rect.mBottom += mDragHandleSecondIndent;  				resize_bar_rect.mTop -= mDragHandleFirstIndent; @@ -467,7 +475,7 @@ void LLLayoutStack::updateLayout()  		{  			cur_pos -= panel_visible_dim + panel_spacing; -			if (show_drag_handle && panel_spacing_round > mDragHandleThickness) +			if (mShowDragHandle && panel_spacing_round > mDragHandleThickness)  			{  				resize_bar_rect.mTop = panel_rect.mBottom - mDragHandleShift;  				resize_bar_rect.mBottom = resize_bar_rect.mTop - mDragHandleThickness; @@ -478,7 +486,7 @@ void LLLayoutStack::updateLayout()  				resize_bar_rect.mBottom = panel_rect.mBottom - panel_spacing_round - mResizeBarOverlap;  			} -			if (show_drag_handle) +			if (mShowDragHandle)  			{  				resize_bar_rect.mLeft += mDragHandleFirstIndent;  				resize_bar_rect.mRight -= mDragHandleSecondIndent; @@ -541,9 +549,69 @@ void LLLayoutStack::createResizeBar(LLLayoutPanel* panelp)  			resize_params.min_size(lp->getRelevantMinDim());  			resize_params.side((mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM);  			resize_params.snapping_enabled(false); -			resize_params.show_drag_handle(mShowDragHandle);  			LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params);  			lp->mResizeBar = resize_bar; + +			if (mShowDragHandle) +			{ +				LLPanel::Params resize_bar_bg_panel_p; +				resize_bar_bg_panel_p.name = "resize_handle_bg_panel"; +				resize_bar_bg_panel_p.rect = lp->mResizeBar->getLocalRect(); +				resize_bar_bg_panel_p.follows.flags = FOLLOWS_ALL; +				resize_bar_bg_panel_p.tab_stop = false; +				resize_bar_bg_panel_p.background_visible = true; +				resize_bar_bg_panel_p.bg_alpha_color = LLUIColorTable::instance().getColor("ResizebarBody"); +				resize_bar_bg_panel_p.has_border = true; +				resize_bar_bg_panel_p.border.border_thickness = 1; +				resize_bar_bg_panel_p.border.highlight_light_color = LLUIColorTable::instance().getColor("ResizebarBorderLight"); +				resize_bar_bg_panel_p.border.shadow_dark_color = LLUIColorTable::instance().getColor("ResizebarBorderDark"); + +				LLPanel* resize_bar_bg_panel = LLUICtrlFactory::create<LLPanel>(resize_bar_bg_panel_p); + +				LLIconCtrl::Params icon_p; +				icon_p.name = "resize_handle_image"; +				icon_p.rect = lp->mResizeBar->getLocalRect(); +				icon_p.follows.flags = FOLLOWS_ALL; +				icon_p.image = LLUI::getUIImage(mOrientation == HORIZONTAL ? "Vertical Drag Handle" : "Horizontal Drag Handle"); +				resize_bar_bg_panel->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_p)); + +				lp->mResizeBar->addChild(resize_bar_bg_panel); +			} + +			/*if (mShowDragHandle) +			{ +				LLViewBorder::Params border_params; +				border_params.border_thickness = 1; +				border_params.highlight_light_color = LLUIColorTable::instance().getColor("ResizebarBorderLight"); +				border_params.shadow_dark_color = LLUIColorTable::instance().getColor("ResizebarBorderDark"); + +				addBorder(border_params); +				setBorderVisible(TRUE); + +				LLImagePanel::Params image_panel; +				mDragHandleImage = LLUI::getUIImage(LLResizeBar::RIGHT == mSide ? "Vertical Drag Handle" : "Horizontal Drag Handle"); +				image_panel.bg_alpha_image = mDragHandleImage; +				image_panel.background_visible = true; +				image_panel.horizontal = (LLResizeBar::BOTTOM == mSide); +				mImagePanel = LLUICtrlFactory::create<LLImagePanel>(image_panel); +				setImagePanel(mImagePanel); +			}*/ + +			//if (mShowDragHandle) +			//{ +			//	setBackgroundVisible(TRUE); +			//	setTransparentColor(LLUIColorTable::instance().getColor("ResizebarBody")); +			//} + +			/*if (mShowDragHandle) +			{ +			S32 image_width = mDragHandleImage->getTextureWidth(); +			S32 image_height = mDragHandleImage->getTextureHeight(); +			const LLRect& panel_rect = getRect(); +			S32 image_left = (panel_rect.getWidth() - image_width) / 2 - 1; +			S32 image_bottom = (panel_rect.getHeight() - image_height) / 2; +			mImagePanel->setRect(LLRect(image_left, image_bottom + image_height, image_left + image_width, image_bottom)); +			}*/  			LLView::addChild(resize_bar, 0);  		}  	} diff --git a/indra/llui/llresizebar.cpp b/indra/llui/llresizebar.cpp index e67b22c977..115c4e23be 100755 --- a/indra/llui/llresizebar.cpp +++ b/indra/llui/llresizebar.cpp @@ -35,46 +35,18 @@  #include "llfocusmgr.h"  #include "llwindow.h" -class LLImagePanel : public LLPanel -{ -public: -	struct Params :	public LLInitParam::Block<Params, LLPanel::Params> -	{ -		Optional<bool> horizontal; -		Params() : horizontal("horizontal", false) {} -	}; -	LLImagePanel(const Params& p) : LLPanel(p), mHorizontal(p.horizontal) {} -	virtual ~LLImagePanel() {} - -	void draw() -	{ -		const LLRect& parent_rect = getParent()->getRect(); -		const LLRect& rect = getRect(); -		LLRect clip_rect( -rect.mLeft, parent_rect.getHeight() - rect.mBottom - 2 -						 , parent_rect.getWidth() - rect.mLeft - (mHorizontal ? 2 : 0), -rect.mBottom); -		LLLocalClipRect clip(clip_rect); -		LLPanel::draw(); -	} - -private: -	bool mHorizontal; -}; - -static LLDefaultChildRegistry::Register<LLImagePanel> t1("resize_bar_image_panel"); -  LLResizeBar::Params::Params()  :	max_size("max_size", S32_MAX),  	snapping_enabled("snapping_enabled", true),  	resizing_view("resizing_view"),  	side("side"), -	allow_double_click_snapping("allow_double_click_snapping", true), -	show_drag_handle("show_drag_handle", false) +	allow_double_click_snapping("allow_double_click_snapping", true)  {  	name = "resize_bar";  }  LLResizeBar::LLResizeBar(const LLResizeBar::Params& p) -:	LLPanel(p), +:	LLView(p),  	mDragLastScreenX( 0 ),  	mDragLastScreenY( 0 ),  	mLastMouseScreenX( 0 ), @@ -86,7 +58,6 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)  	mAllowDoubleClickSnapping(p.allow_double_click_snapping),  	mResizingView(p.resizing_view),  	mResizeListener(NULL), -	mShowDragHandle(p.show_drag_handle),  	mImagePanel(NULL)  {  	setFollowsNone(); @@ -116,36 +87,6 @@ LLResizeBar::LLResizeBar(const LLResizeBar::Params& p)  	default:  		break;  	} - -	if (mShowDragHandle) -	{ -		LLViewBorder::Params border_params; -		border_params.border_thickness = 1; -		border_params.highlight_light_color = LLUIColorTable::instance().getColor("ResizebarBorderLight"); -		border_params.shadow_dark_color = LLUIColorTable::instance().getColor("ResizebarBorderDark"); - -		addBorder(border_params); -		setBorderVisible(TRUE); - -		LLImagePanel::Params image_panel; -		mDragHandleImage = LLUI::getUIImage(LLResizeBar::RIGHT == mSide ? "Vertical Drag Handle" : "Horizontal Drag Handle"); -		image_panel.bg_alpha_image = mDragHandleImage; -		image_panel.background_visible = true; -		image_panel.horizontal = (LLResizeBar::BOTTOM == mSide); -		mImagePanel = LLUICtrlFactory::create<LLImagePanel>(image_panel); -		setImagePanel(mImagePanel); -	} -} - -BOOL LLResizeBar::postBuild() -{ -	if (mShowDragHandle) -	{ -		setBackgroundVisible(TRUE); -		setTransparentColor(LLUIColorTable::instance().getColor("ResizebarBody")); -	} - -	return LLPanel::postBuild();  }  BOOL LLResizeBar::handleMouseDown(S32 x, S32 y, MASK mask) @@ -433,18 +374,3 @@ LLPanel * LLResizeBar::getImagePanel() const  {  	return getChildCount() > 0 ? (LLPanel *)getChildList()->back() : NULL;  } - -void LLResizeBar::draw() -{ -	if (mShowDragHandle) -	{ -		S32 image_width = mDragHandleImage->getTextureWidth(); -		S32 image_height = mDragHandleImage->getTextureHeight(); -		const LLRect& panel_rect = getRect(); -		S32 image_left = (panel_rect.getWidth() - image_width) / 2 - 1; -		S32 image_bottom = (panel_rect.getHeight() - image_height) / 2; -		mImagePanel->setRect(LLRect(image_left, image_bottom + image_height, image_left + image_width, image_bottom)); -	} - -	LLPanel::draw(); -} diff --git a/indra/llui/llresizebar.h b/indra/llui/llresizebar.h index bcf8ea0b40..20a2406484 100755 --- a/indra/llui/llresizebar.h +++ b/indra/llui/llresizebar.h @@ -27,14 +27,14 @@  #ifndef LL_RESIZEBAR_H  #define LL_RESIZEBAR_H -#include "llpanel.h" +#include "llview.h" -class LLResizeBar : public LLPanel +class LLResizeBar : public LLView  {  public:  	enum Side { LEFT, TOP, RIGHT, BOTTOM }; -	struct Params : public LLInitParam::Block<Params, LLPanel::Params> +	struct Params : public LLInitParam::Block<Params, LLView::Params>  	{  		Mandatory<LLView*> resizing_view;  		Mandatory<Side>	side; @@ -43,7 +43,6 @@ public:  		Optional<S32>	max_size;  		Optional<bool>	snapping_enabled;  		Optional<bool>	allow_double_click_snapping; -		Optional<bool>	show_drag_handle;  		Params();  	}; @@ -52,10 +51,8 @@ protected:  	LLResizeBar(const LLResizeBar::Params& p);  	friend class LLUICtrlFactory; -	/*virtual*/ BOOL postBuild();  public: -	virtual void	draw();  	virtual BOOL	handleHover(S32 x, S32 y, MASK mask);  	virtual BOOL	handleMouseDown(S32 x, S32 y, MASK mask);  	virtual BOOL	handleMouseUp(S32 x, S32 y, MASK mask); @@ -66,7 +63,6 @@ public:  	void			setAllowDoubleClickSnapping(BOOL allow) { mAllowDoubleClickSnapping = allow; }  	bool			canResize() { return getEnabled() && mMaxSize > mMinSize; }  	void            setResizeListener(boost::function<void(void*)> listener) {mResizeListener = listener;} -	BOOL			isShowDragHandle() const { return mShowDragHandle; }  	void			setImagePanel(LLPanel * panelp);  	LLPanel *		getImagePanel() const; @@ -79,9 +75,8 @@ private:  	S32								mMinSize;  	S32								mMaxSize;  	const Side						mSide; -	BOOL							mSnappingEnabled; -	BOOL							mAllowDoubleClickSnapping; -	BOOL							mShowDragHandle; +	bool							mSnappingEnabled, +									mAllowDoubleClickSnapping;  	LLView*							mResizingView;  	boost::function<void(void*)>	mResizeListener;  	LLPointer<LLUIImage>			mDragHandleImage; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 09d74a7f5e..df9dd3e1b5 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12004,50 +12004,6 @@        <key>Value</key>        <integer>1</integer>      </map> -    <key>UIAvatariconctrlSymbolHPad</key> -    <map> -      <key>Comment</key> -      <string>UI Avatar Icon Control Symbol Horizontal Pad</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <real>2</real> -    </map>     -    <key>UIAvatariconctrlSymbolVPad</key> -    <map> -      <key>Comment</key> -      <string>UI Avatar Icon Control Symbol Vertical Pad</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <real>2</real> -    </map>     -    <key>UIAvatariconctrlSymbolSize</key> -    <map> -      <key>Comment</key> -      <string>UI Avatar Icon Control Symbol Size</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>S32</string> -      <key>Value</key> -      <real>5</real> -    </map>     -    <key>UIAvatariconctrlSymbolPosition</key> -    <map> -      <key>Comment</key> -      <string>UI Avatar Icon Control Symbol Position (TopLeft|TopRight|BottomLeft|BottomRight)</string> -      <key>Persist</key> -      <integer>1</integer> -      <key>Type</key> -      <string>String</string> -      <key>Value</key> -      <string>BottomRight</string> -    </map>      <key>UIButtonOrigHPad</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 7a49b77490..746b541f9d 100755 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -49,6 +49,18 @@  static LLDefaultChildRegistry::Register<LLAvatarIconCtrl> r("avatar_icon"); +namespace LLInitParam +{ +	void TypeValues<LLAvatarIconCtrlEnums::ESymbolPos>::declareValues() +	{ +		declare("BottomLeft",   LLAvatarIconCtrlEnums::BOTTOM_LEFT); +		declare("BottomRight",  LLAvatarIconCtrlEnums::BOTTOM_RIGHT); +		declare("TopLeft",		LLAvatarIconCtrlEnums::TOP_LEFT); +		declare("TopRight",		LLAvatarIconCtrlEnums::TOP_RIGHT); +	} +} + +  bool LLAvatarIconIDCache::LLAvatarIconIDCacheItem::expired()  {  	const F64 SEC_PER_DAY_PLUS_HOUR = (24.0 + 1.0) * 60.0 * 60.0; @@ -145,52 +157,63 @@ void LLAvatarIconIDCache::remove	(const LLUUID& avatar_id)  LLAvatarIconCtrl::Params::Params()  :	avatar_id("avatar_id"),  	draw_tooltip("draw_tooltip", true), -	default_icon_name("default_icon_name") +	default_icon_name("default_icon_name"), +	symbol_hpad("symbol_hpad"), +	symbol_vpad("symbol_vpad"), +	symbol_size("symbol_size", 1), +	symbol_pos("symbol_pos", LLAvatarIconCtrlEnums::BOTTOM_RIGHT)  { +	changeDefault(min_width, 32); +	changeDefault(min_height, 32);  }  LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) -	: LLIconCtrl(p), +:	LLIconCtrl(p),  	LLAvatarPropertiesObserver(),  	mAvatarId(),  	mFullName(),  	mDrawTooltip(p.draw_tooltip),  	mDefaultIconName(p.default_icon_name), -	mAvatarNameCacheConnection() +	mAvatarNameCacheConnection(), +	mSymbolHpad(p.symbol_hpad), +	mSymbolVpad(p.symbol_vpad), +	mSymbolSize(p.symbol_size), +	mSymbolPos(p.symbol_pos)  {  	mPriority = LLViewerFetchedTexture::BOOST_ICON;  	LLRect rect = p.rect; -	mDrawWidth  = llmax(32, rect.getWidth()) ; -	mDrawHeight = llmax(32, rect.getHeight()) ; - -	static LLUICachedControl<S32> llavatariconctrl_symbol_hpad("UIAvatariconctrlSymbolHPad", 2); -	static LLUICachedControl<S32> llavatariconctrl_symbol_vpad("UIAvatariconctrlSymbolVPad", 2); -	static LLUICachedControl<S32> llavatariconctrl_symbol_size("UIAvatariconctrlSymbolSize", 5); -	static LLUICachedControl<std::string> llavatariconctrl_symbol_pos("UIAvatariconctrlSymbolPosition", "BottomRight");  	// BottomRight is the default position -	S32 left = rect.getWidth() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_hpad; -	S32 bottom = llavatariconctrl_symbol_vpad; +	S32 left = rect.getWidth() - mSymbolSize - mSymbolHpad; +	S32 bottom = mSymbolVpad; -	if ("BottomLeft" == (std::string)llavatariconctrl_symbol_pos) +	switch(mSymbolPos) +	{ +	case LLAvatarIconCtrlEnums::BOTTOM_LEFT:  	{ -		left = llavatariconctrl_symbol_hpad; -		bottom = llavatariconctrl_symbol_vpad; +		left = mSymbolHpad; +		bottom = mSymbolVpad;  	} -	else if ("TopLeft" == (std::string)llavatariconctrl_symbol_pos) + +	case LLAvatarIconCtrlEnums::TOP_LEFT:  	{ -		left = llavatariconctrl_symbol_hpad; -		bottom = rect.getHeight() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_vpad; +		left = mSymbolHpad; +		bottom = rect.getHeight() - mSymbolSize - mSymbolVpad;  	} -	else if ("TopRight" == (std::string)llavatariconctrl_symbol_pos) + +	case LLAvatarIconCtrlEnums::TOP_RIGHT:  	{ -		left = rect.getWidth() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_hpad; -		bottom = rect.getHeight() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_vpad; +		left = rect.getWidth() - mSymbolSize - mSymbolHpad; +		bottom = rect.getHeight() - mSymbolSize - mSymbolVpad;  	} -	rect.setOriginAndSize(left, bottom, llavatariconctrl_symbol_size, llavatariconctrl_symbol_size); +	case LLAvatarIconCtrlEnums::BOTTOM_RIGHT: +		// fallthrough, is default +	default: +		rect.setOriginAndSize(left, bottom, mSymbolSize, mSymbolSize); +	}  	if (p.avatar_id.isProvided())  	{ diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 4929efb7d0..5b5720f4ac 100755 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -29,7 +29,7 @@  #include <boost/signals2.hpp> -#include "../llui/lliconctrl.h" +#include "lliconctrl.h"  #include "llavatarpropertiesprocessor.h"  #include "llviewermenu.h" @@ -41,14 +41,14 @@ public:  	struct LLAvatarIconIDCacheItem  	{  		LLUUID icon_id; -		LLDate cached_time;	 +		LLDate cached_time;  		bool expired();  	}; -	LLAvatarIconIDCache():mFilename("avatar_icons_cache.txt") -	{ -	} +	LLAvatarIconIDCache() +	:	mFilename("avatar_icons_cache.txt") +	{}  	void				load	();  	void				save	(); @@ -64,15 +64,41 @@ protected:  	std::map<LLUUID,LLAvatarIconIDCacheItem> mCache;//we cache only LLUID and time  }; +namespace LLAvatarIconCtrlEnums +{ +	enum ESymbolPos +	{ +		BOTTOM_LEFT, +		BOTTOM_RIGHT, +		TOP_LEFT, +		TOP_RIGHT +	}; +} + + +namespace LLInitParam +{ +	template<> +	struct TypeValues<LLAvatarIconCtrlEnums::ESymbolPos> : public TypeValuesHelper<LLAvatarIconCtrlEnums::ESymbolPos> +	{ +		static void declareValues(); +	}; +} +  class LLAvatarIconCtrl  : public LLIconCtrl, public LLAvatarPropertiesObserver  {  public:  	struct Params : public LLInitParam::Block<Params, LLIconCtrl::Params>  	{ -		Optional <LLUUID> avatar_id; -		Optional <bool> draw_tooltip; -		Optional <std::string> default_icon_name; +		Optional<LLUUID>		avatar_id; +		Optional<bool>			draw_tooltip; +		Optional<std::string>	default_icon_name; +		Optional<S32>			symbol_hpad, +								symbol_vpad, +								symbol_size; +		Optional<LLAvatarIconCtrlEnums::ESymbolPos>	symbol_pos; +  		Params();  	}; @@ -98,6 +124,10 @@ protected:  	std::string                 mFullName;  	bool                        mDrawTooltip;  	std::string                 mDefaultIconName; +	S32							mSymbolHpad, +								mSymbolVpad, +								mSymbolSize; +	LLAvatarIconCtrlEnums::ESymbolPos	mSymbolPos;  	bool updateFromCache(); diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index d20f89456b..7121822015 100755 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -161,7 +161,7 @@ BOOL LLSidepanelInventory::postBuild()  {  	// UI elements from inventory panel  	{ -		mInventoryPanel = getChild<LLPanel>("sidepanel__inventory_panel"); +		mInventoryPanel = getChild<LLPanel>("sidepanel_inventory_panel");  		mInfoBtn = mInventoryPanel->getChild<LLButton>("info_btn");  		mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this)); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 2f887d7185..dae76272ec 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -70,6 +70,7 @@ S32 LLViewerTextureList::sNumImages = 0;  LLViewerTextureList gTextureList;  static LLTrace::BlockTimerStatHandle FTM_PROCESS_IMAGES("Process Images"); +  ///////////////////////////////////////////////////////////////////////////////  LLViewerTextureList::LLViewerTextureList()  @@ -1587,28 +1588,31 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori  }  LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename, -											  BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority ) +											  BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority, +											  LLUIImage::EScaleStyle scale_style)  {  	if (boost_priority == LLGLTexture::BOOST_NONE)  	{  		boost_priority = LLGLTexture::BOOST_UI;  	}  	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, FTT_LOCAL_FILE, MIPMAP_NO, boost_priority); -	return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect); +	return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect, scale_style);  }  LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id, -											BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority) +											BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority, +											LLUIImage::EScaleStyle scale_style)  {  	if (boost_priority == LLGLTexture::BOOST_NONE)  	{  		boost_priority = LLGLTexture::BOOST_UI;  	}  	LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, MIPMAP_NO, boost_priority); -	return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect); +	return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect, scale_style);  } -LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect) +LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, +										LLUIImage::EScaleStyle scale_style)  {  	if (!imagep) return NULL; @@ -1621,6 +1625,8 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st  	imagep->setNoDelete();  	LLUIImagePtr new_imagep = new LLUIImage(name, imagep); +	new_imagep->setScaleStyle(scale_style); +  	mUIImages.insert(std::make_pair(name, new_imagep));  	mUITextureList.push_back(imagep); @@ -1639,7 +1645,7 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st  	return new_imagep;  } -LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect) +LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLUIImage::EScaleStyle scale_style)  {  	// look for existing image  	uuid_ui_image_map_t::iterator found_it = mUIImages.find(name); @@ -1649,7 +1655,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s  		LL_ERRS() << "UI Image " << name << " already loaded." << LL_ENDL;  	} -	return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect); +	return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect, LLGLTexture::BOOST_UI, scale_style);  }  //static  @@ -1709,14 +1715,28 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v  	}  } +namespace LLInitParam +{ +	template<> +	struct TypeValues<LLUIImage::EScaleStyle> : public TypeValuesHelper<LLUIImage::EScaleStyle> +	{ +		static void declareValues() +		{ +			declare("scale_inner",	LLUIImage::SCALE_INNER); +			declare("scale_outer",	LLUIImage::SCALE_OUTER); +		} +	}; +} +  struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>  { -	Mandatory<std::string>	name; -	Optional<std::string>	file_name; -	Optional<bool>			preload; -	Optional<LLRect>		scale; -	Optional<LLRect>		clip; -	Optional<bool>			use_mips; +	Mandatory<std::string>		name; +	Optional<std::string>		file_name; +	Optional<bool>				preload; +	Optional<LLRect>			scale; +	Optional<LLRect>			clip; +	Optional<bool>				use_mips; +	Optional<LLUIImage::EScaleStyle> scale_type;  	UIImageDeclaration()  	:	name("name"), @@ -1724,7 +1744,8 @@ struct UIImageDeclaration : public LLInitParam::Block<UIImageDeclaration>  		preload("preload", false),  		scale("scale"),  		clip("clip"), -		use_mips("use_mips", false) +		use_mips("use_mips", false), +		scale_type("scale_type", LLUIImage::SCALE_INNER)  	{}  }; @@ -1812,7 +1833,7 @@ bool LLUIImageList::initFromFile()  			{  				continue;  			} -			preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip); +			preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip, image.scale_type);  		}  		if (cur_pass == PASS_DECODE_NOW && !gSavedSettings.getBOOL("NoPreload")) diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 9dd3a9ee8b..2f84d0947a 100755 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -218,20 +218,22 @@ public:  	bool initFromFile(); -	LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect); +	LLPointer<LLUIImage> preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLUIImage::EScaleStyle stype);  	static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );  private:  	LLPointer<LLUIImage> loadUIImageByName(const std::string& name, const std::string& filename,  		                           BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,   								   const LLRect& clip_rect = LLRect::null, -		                           LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI); +		                           LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI, +								   LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER);  	LLPointer<LLUIImage> loadUIImageByID(const LLUUID& id,  								 BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null,   								 const LLRect& clip_rect = LLRect::null, -								 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI); +								 LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI, +								 LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER); -	LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null); +	LLPointer<LLUIImage> loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null, LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER);  	struct LLUIImageLoadData diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 54f60f4441..ff0a692741 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -29,7 +29,7 @@ with the same filename but different name  -->  <textures version="101"> -  <!-- Please add new files alphabetically to prevent merge conflicts. JC --> +	<!-- Please add new files alphabetically to prevent merge conflicts. JC -->    <texture name="Accordion_ArrowClosed_Off" file_name="containers/Accordion_ArrowClosed_Off.png" preload="false" />    <texture name="Accordion_ArrowClosed_Press" file_name="containers/Accordion_ArrowClosed_Press.png" preload="false" />    <texture name="Accordion_ArrowOpened_Off" file_name="containers/Accordion_ArrowOpened_Off.png" preload="false" /> @@ -231,8 +231,9 @@ with the same filename but different name    <texture name="Home_Off" file_name="navbar/Home_Off.png" preload="false" /> +	<texture name="Horizontal Drag Handle" file_name="widgets/horizontal_drag_handle.png" scale.left="8" scale.right="120" scale.bottom="1" scale.top="6" scale_type="scale_outer"/> -  <texture name="Icon_Close_Foreground" file_name="windows/Icon_Close_Foreground.png" preload="true" /> +	<texture name="Icon_Close_Foreground" file_name="windows/Icon_Close_Foreground.png" preload="true" />    <texture name="Icon_Close_Press" file_name="windows/Icon_Close_Press.png" preload="true" />    <texture name="Icon_Close_Toast" file_name="windows/Icon_Close_Toast.png" preload="true" /> @@ -646,8 +647,9 @@ with the same filename but different name    <texture name="Unread_Chiclet" file_name="bottomtray/Unread_Chiclet.png" preload="false" />    <texture name="UpArrow_Off" file_name="icons/UpArrow_Off.png" preload="false" /> +	<texture name="Vertical Drag Handle" file_name="widgets/vertical_drag_handle.png" scale.left="2" scale.right="7" scale.bottom="8" scale.top="120"  scale_type="scale_outer"/> -    <texture name="Volume_Background" file_name="windows/Volume_Background.png" preload="false" +	<texture name="Volume_Background" file_name="windows/Volume_Background.png" preload="false"             scale.left="6" scale.top="33" scale.right="63" scale.bottom="10" />    <texture name="VoicePTT_Lvl1" file_name="bottomtray/VoicePTT_Lvl1.png" preload="false" /> @@ -775,6 +777,4 @@ with the same filename but different name    <texture name="Camera_Drag_Dot" file_name="world/CameraDragDot.png"/>    <texture name="NavBar Separator" file_name="navbar/separator.png"/> -  <texture name="Horizontal Drag Handle" file_name="widgets/horizontal_drag_handle.png"/> -  <texture name="Vertical Drag Handle" file_name="widgets/vertical_drag_handle.png"/>  </textures> diff --git a/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png b/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.pngBinary files differ index 642eac4065..5f5a33be42 100644 --- a/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png +++ b/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png diff --git a/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png b/indra/newview/skins/default/textures/widgets/vertical_drag_handle.pngBinary files differ index b06b70cf36..2ce5208c21 100644 --- a/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png +++ b/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 1c882bb099..0518688f45 100755 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -1,6 +1,5 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>  <panel - default_tab_group="1"   follows="all"   height="423"   label="Things" @@ -57,7 +56,6 @@       left="7"       name="inventory filter tabs"       tab_height="30" -     tab_group="1"       tab_position="top"       tab_min_width="100"       top_pad="10" diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index 14bd349480..d3e24a19ef 100755 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -12,17 +12,19 @@  		 follows="all"  		 layout="topleft"  		 left="0" -		 name="sidepanel__inventory_panel" +		 name="sidepanel_inventory_panel"  		 top="0"  		 label=""  		 height="570"  		 visible="true" +		 default_tab_group="1"  		 width="330"> -         <layout_stack +      <layout_stack                follows="left|right|top|bottom"                layout="topleft"                left="0"                top="0" +							tab_group="1"                orientation="vertical"                name="inventory_layout_stack"                height="535" @@ -75,7 +77,7 @@                       <button                          control_name="InventoryInboxToggleState"                          label="Received items" -						font="SansSerifMedium" +												font="SansSerifMedium"                          name="inbox_btn"                          height="35"                          width="308" @@ -116,61 +118,56 @@                          background_opaque="true"                          tool_tip="Drag and drop items to your inventory to use them"                          > -                        <text -							name="inbox_inventory_placeholder" -							type="string" -							follows="all" -							layout="topleft" -							top="0" -							left="0" -							width="308" -							height="200" -							wrap="true" -							halign="center"> -							Purchases from the marketplace will be delivered here. -						</text> +                        <text name="inbox_inventory_placeholder" +															type="string" +															follows="all" +															layout="topleft" +															top="0" +															left="0" +															width="308" +															height="200" +															wrap="true" +															halign="center"> +Purchases from the marketplace will be delivered here. +												</text>                      </panel>                   </panel>               </layout_panel>           </layout_stack> -		<panel -		     follows="bottom|left|right" -			 height="30" -			 layout="topleft" -			 name="button_panel" -			 left="9" -             top_pad="7" -			 width="308"> -			<layout_stack -     	         follows="bottom|left|right" -		         height="23" -		         layout="topleft" -		         mouse_opaque="false" -		         name="button_panel_ls" -		         left="0" -		         orientation="horizontal" -		         top="0" -		         width="308">	 -			    <layout_panel -			         follows="bottom|left|right" -			         height="23" -                     layout="bottomleft" -                     left="0"			 -                     mouse_opaque="false" -                     name="info_btn_lp" -                     auto_resize="true" -                     width="101"> -                    <button -                         enabled="true" -                         follows="bottom|left|right" -                         height="23" -                         label="Profile" -                         layout="topleft" -                         left="1" -                         name="info_btn" -                         tool_tip="Show object profile" -                         top="0" -                         width="100" /> +			<panel follows="bottom|left|right" +					 height="30" +					 layout="topleft" +					 name="button_panel" +					 left="9" +					 top_pad="7" +					 width="308"> +				<layout_stack follows="bottom|left|right" +											height="23" +											layout="topleft" +											mouse_opaque="false" +											name="button_panel_ls" +											left="0" +											orientation="horizontal" +											top="0" +											width="308">	 +			    <layout_panel follows="bottom|left|right" +												height="23" +												layout="bottomleft" +												left="0"			 +												mouse_opaque="false" +												name="info_btn_lp" +												auto_resize="true" +												width="101"> +						<button enabled="true" +										follows="bottom|left|right" +										height="23" +										label="Profile" +										layout="topleft" +										left="1" +										name="info_btn" +										tool_tip="Show object profile" +										top="0" +										width="100" />  			    </layout_panel>  			    <layout_panel                       follows="bottom|left|right" diff --git a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml index 4d69dda7eb..7f8fac04d0 100755 --- a/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml +++ b/indra/newview/skins/default/xui/en/widgets/avatar_icon.xml @@ -1,7 +1,9 @@  <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<avatar_icon -    name="avatar_icon" -    default_icon_name="Generic_Person_Large" -    use_draw_context_alpha="false"> -</avatar_icon> +<avatar_icon name="avatar_icon" +						 default_icon_name="Generic_Person_Large" +						 use_draw_context_alpha="false" +						 symbol_hpad = "2" +						 symbol_vpad = "1" +						 symbol_size = "5"/> + | 
