[iortcw] 451/497: All: Some more placement and visual fixes

Simon McVittie smcv at debian.org
Fri Sep 8 10:37:50 UTC 2017


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.42d
in repository iortcw.

commit 21c4a1f1b07c467a4ae02988b5676fa73fb45117
Author: MAN-AT-ARMS <M4N4T4RMS at gmail.com>
Date:   Thu Dec 3 11:10:51 2015 -0500

    All: Some more placement and visual fixes
---
 MP/code/cgame/cg_draw.c       |  18 ++++-
 MP/code/cgame/cg_weapons.c    |   2 +-
 MP/code/ui/ui_main.c          |   2 +-
 MP/code/ui/ui_shared.c        |  47 ++++++-----
 SP/code/cgame/cg_draw.c       | 179 ++++++++++++++++++++++++++----------------
 SP/code/cgame/cg_drawtools.c  |   1 -
 SP/code/cgame/cg_info.c       |   2 +-
 SP/code/cgame/cg_newdraw.c    |  14 ----
 SP/code/cgame/cg_scoreboard.c |   2 +-
 SP/code/cgame/cg_weapons.c    |  10 +--
 SP/code/ui/ui_main.c          |  16 +++-
 SP/code/ui/ui_shared.c        |  54 ++++++++++---
 12 files changed, 218 insertions(+), 129 deletions(-)

diff --git a/MP/code/cgame/cg_draw.c b/MP/code/cgame/cg_draw.c
index 32c0ddd..f2d00f8 100644
--- a/MP/code/cgame/cg_draw.c
+++ b/MP/code/cgame/cg_draw.c
@@ -1669,6 +1669,10 @@ static void CG_DrawBinocReticle( void ) {
 				CG_DrawPic( 0, 0, 640, 480, cgs.media.binocShaderSimple );
 			}
 
+			if ( cg_fixedAspect.integer ) {
+				CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+			}
+
 			CG_FillRect( 146, 239, 348, 1, color );
 
 			CG_FillRect( 188, 234, 1, 13, color );   // ll
@@ -3445,7 +3449,12 @@ static void CG_ScreenFade( void ) {
 			return;
 		}
 
-		CG_FillRect( 0, 0, 640, 480, cg.fadeColor1 );
+		if ( cg_fixedAspect.integer ) {
+			CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+			CG_FillRect( 0, 0, 640, 480, cg.fadeColor1 );
+		} else {
+			CG_FillRect( 0, 0, 640, 480, cg.fadeColor1 );
+		}
 
 	} else {
 		t = ( float )msec * cg.fadeRate;
@@ -3456,7 +3465,12 @@ static void CG_ScreenFade( void ) {
 		}
 
 		if ( color[ 3 ] ) {
-			CG_FillRect( 0, 0, 640, 480, color );
+			if ( cg_fixedAspect.integer ) {
+				CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+				CG_FillRect( 0, 0, 640, 480, color );
+			} else {
+				CG_FillRect( 0, 0, 640, 480, color );
+			}
 		}
 	}
 }
diff --git a/MP/code/cgame/cg_weapons.c b/MP/code/cgame/cg_weapons.c
index 7908a63..4c0a80a 100644
--- a/MP/code/cgame/cg_weapons.c
+++ b/MP/code/cgame/cg_weapons.c
@@ -2926,7 +2926,7 @@ void CG_DrawWeaponSelect( void ) {
 	trap_R_SetColor( color );
 
 	if ( cg_fixedAspect.integer == 2 ) {
-		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
+		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_TOP);
 	}
 
 //----(SA)	neither of these overlap the weapon selection area anymore, so let them stay
diff --git a/MP/code/ui/ui_main.c b/MP/code/ui/ui_main.c
index 00c002c..819d1a3 100644
--- a/MP/code/ui/ui_main.c
+++ b/MP/code/ui/ui_main.c
@@ -1745,7 +1745,7 @@ static void UI_DrawMapCinematic( rectDef_t *rect, float scale, vec4_t color, qbo
 		if ( uiInfo.mapList[map].cinematic == -1 ) {
 			uiInfo.mapList[map].cinematic = trap_CIN_PlayCinematic( va( "%s.roq", uiInfo.mapList[map].mapLoadName ), 0, 0, 0, 0, ( CIN_loop | CIN_silent ) );
 		}
-		if ( uiInfo.mapList[map].cinematic >= 0 ) { 
+		if ( uiInfo.mapList[map].cinematic >= 0 ) {
 			trap_CIN_RunCinematic( uiInfo.mapList[map].cinematic );
 			// FIXME:MAN-AT-ARMS Scale this
 			trap_CIN_SetExtents( uiInfo.mapList[map].cinematic, rect->x, rect->y, rect->w, rect->h );
diff --git a/MP/code/ui/ui_shared.c b/MP/code/ui/ui_shared.c
index 8464b8d..252fd18 100644
--- a/MP/code/ui/ui_shared.c
+++ b/MP/code/ui/ui_shared.c
@@ -93,6 +93,7 @@ static qboolean Menu_OverActiveItem( menuDef_t *menu, float x, float y );
 static char memoryPool[MEM_POOL_SIZE];
 static int allocPoint, outOfMemory;
 
+vmCvar_t ui_fixedAspect;
 
 static screenPlacement_e ui_horizontalPlacement = PLACE_CENTER;
 static screenPlacement_e ui_verticalPlacement = PLACE_CENTER;
@@ -144,7 +145,6 @@ screenPlacement_e UI_GetScreenVerticalPlacement(void)
 	return ui_verticalPlacement;
 }
 
-vmCvar_t ui_fixedAspect;
 
 /*
 ================
@@ -792,10 +792,24 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle
 		fillRect.h -= w->borderSize + 1;
 	}
 
-	// Make pillarbox/letterbox for 4:3 UI
+	// Make menus letterboxed if aspect is < 4:3
+	if ( ui_fixedAspect.integer ) {
+		if ( DC->glconfig.vidWidth * 480.0 < DC->glconfig.vidHeight * 640.0 ) {
+			vec4_t col = {0, 0, 0, 1};
+			float lb = 0.5 * ( ( DC->glconfig.vidHeight - ( DC->yscale * 480.0 ) ) / DC->yscale );
+
+			UI_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
+			DC->fillRect( 0, 480 - lb, 640, lb + 1, col );
+			UI_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+			DC->fillRect( 0, 0, 640, lb + 1, col );
+			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+		}
+	}
+
+	// Make menus pillarboxed if using 4:3 UI
 	if ( ui_fixedAspect.integer == 1 || !Q_stricmpn( w->name, "wm_limbo", 8 ) ) {
-		vec4_t col = {0, 0, 0, 1};	
 		if ( DC->glconfig.vidWidth * 480.0 > DC->glconfig.vidHeight * 640.0 ) {
+			vec4_t col = {0, 0, 0, 1};
 			float pillar = 0.5 * ( ( DC->glconfig.vidWidth - ( DC->xscale * 640.0 ) ) / DC->xscale );
 
 			UI_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
@@ -803,33 +817,16 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle
 			UI_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
 			DC->fillRect( 640 - pillar, 0, pillar + 1, 480, col );
 			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
-		} else if ( DC->glconfig.vidWidth * 480.0 < DC->glconfig.vidHeight * 640.0 ) {
-			float lb = 0.5 * ( ( DC->glconfig.vidHeight - ( DC->yscale * 480.0 ) ) / DC->yscale );
-
-			UI_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-			DC->fillRect( 0, 480 - lb, 640, lb + 1, col );
-			UI_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
-			DC->fillRect( 0, 0, 640, lb + 1, col );
-			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 		}
 	}
 
 	if ( w->style == WINDOW_STYLE_FILLED ) {
 		// box, but possible a shader that needs filled
 		if ( w->background ) {
-			if ( ui_fixedAspect.integer == 2 ) {
-				UI_SetScreenPlacement(PLACE_CENTER, PLACE_STRETCH);
-				Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount );
-				DC->setColor( w->backColor );
-				DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
-				DC->setColor( NULL );
-				UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
-			} else {
-				Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount );
-				DC->setColor( w->backColor );
-				DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
-				DC->setColor( NULL );
-			}
+			Fade( &w->flags, &w->backColor[3], fadeClamp, &w->nextTime, fadeCycle, qtrue, fadeAmount );
+			DC->setColor( w->backColor );
+			DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
+			DC->setColor( NULL );
 		} else {
 			DC->fillRect( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->backColor );
 		}
@@ -852,7 +849,7 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle
 					DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
 					DC->setColor( NULL );
 				} else {
-					UI_SetScreenPlacement(PLACE_CENTER, PLACE_STRETCH);
+					UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 					DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
 					DC->setColor( NULL );
 				}
diff --git a/SP/code/cgame/cg_draw.c b/SP/code/cgame/cg_draw.c
index 46bcd83..54cef3e 100644
--- a/SP/code/cgame/cg_draw.c
+++ b/SP/code/cgame/cg_draw.c
@@ -476,7 +476,7 @@ static void CG_DrawStatusBarHead( float x ) {
 
 	VectorClear( angles );
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 	}
 
@@ -601,17 +601,9 @@ void CG_DrawTeamBackground( int x, int y, int w, int h, float alpha, int team )
 		return;
 	}
 
-	if ( cg_fixedAspect.integer ) {
-		trap_R_SetColor( hcolor );
-		CG_SetScreenPlacement(PLACE_STRETCH, CG_GetScreenVerticalPlacement());
- 		CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar );
-		CG_PopScreenPlacement();
- 		trap_R_SetColor( NULL );
-	} else {
-		trap_R_SetColor( hcolor );
-		CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar );
-		trap_R_SetColor( NULL );
-	}
+	trap_R_SetColor( hcolor );
+	CG_DrawPic( x, y, w, h, cgs.media.teamStatusBar );
+	trap_R_SetColor( NULL );
 }
 
 //////////////////////
@@ -739,8 +731,6 @@ static void CG_DrawStatusBar( void ) {
 
 		if ( cg_fixedAspect.integer == 2 ) {
 			CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-		} else {
-			CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 		}
 
 		value = ps->ammo[BG_FindAmmoForWeapon( cent->currentState.weapon )];
@@ -843,8 +833,6 @@ static void CG_DrawStatusBar( void ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-	} else {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 	}
 
 	//
@@ -1228,8 +1216,6 @@ static void CG_DrawUpperRight(stereoFrame_t stereoFrame) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_TOP);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP);
 	}
 
 	if ( cgs.gametype >= GT_TEAM ) {
@@ -1503,7 +1489,7 @@ static void CG_DrawLowerRight( void ) {
 
 	y = 480 - ICON_SIZE;
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
 	}
 
@@ -1537,7 +1523,7 @@ static void CG_DrawTeamInfo( void ) {
 		return; // disabled
 	}
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement( PLACE_LEFT, PLACE_BOTTOM );
 	}
 
@@ -1566,7 +1552,11 @@ static void CG_DrawTeamInfo( void ) {
 		}
 
 		trap_R_SetColor( hcolor );
-		CG_DrawPic( CHATLOC_X, CHATLOC_Y - h, 640, h, cgs.media.teamStatusBar );
+		if ( cg_fixedAspect.integer == 2 ) {
+			CG_DrawPic( CHATLOC_X, CHATLOC_Y - h, cgs.glconfig.vidWidth, h, cgs.media.teamStatusBar );
+		} else {
+			CG_DrawPic( CHATLOC_X, CHATLOC_Y - h, 640, h, cgs.media.teamStatusBar );
+		}
 		trap_R_SetColor( NULL );
 
 		hcolor[0] = hcolor[1] = hcolor[2] = 1.0;
@@ -1598,8 +1588,6 @@ static void CG_DrawPickupItem( void ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	value = cg.itemPickup;
@@ -1664,8 +1652,6 @@ void CG_DrawHoldableItem_old( void ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	value   = cg.predictedPlayerState.holdable[cg.holdableSelect];
@@ -1840,7 +1826,7 @@ static void CG_DrawDisconnect( void ) {
 		return;
 	}
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
 	}
 
@@ -1874,8 +1860,6 @@ static void CG_DrawLagometer( void ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 	}
 
 	//
@@ -2103,7 +2087,7 @@ static void CG_DrawWeapReticle( void ) {
 	vec4_t snoopercolor = {0.7, .8, 0.7, 0};    // greenish
 	float snooperBrightness;
 	float x = 80, y, w = 240, h = 240;
-	float width = 80.0;
+	float mask = 0, lb = 0;
 
 	CG_AdjustFrom640( &x, &y, &w, &h );
 
@@ -2118,14 +2102,29 @@ static void CG_DrawWeapReticle( void ) {
 	if ( weap == WP_SNIPERRIFLE ) {
 		// sides
 		if ( cg_fixedAspect.integer ) {
-			if ( cgs.glconfig.vidWidth * 480 > cgs.glconfig.vidHeight * 640 ) {
-				width = 0.5 * ( ( cgs.glconfig.vidWidth - ( min( cgs.screenXScale, cgs.screenYScale ) * 480 ) ) / min( cgs.screenXScale, cgs.screenYScale ) );
+			if ( cgs.glconfig.vidWidth * 480.0 > cgs.glconfig.vidHeight * 640.0 ) {
+				mask = 0.5 * ( ( cgs.glconfig.vidWidth - ( cgs.screenXScale * 480.0 ) ) / cgs.screenXScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, mask, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 640 - mask, 0, mask, 480, color );
 			}
 
-			CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-			CG_FillRect( 0, 0, width, 480, color );
-			CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-			CG_FillRect( 640-width, 0, width, 480, color );
+			// sides with letterbox
+			if ( cgs.glconfig.vidWidth * 480.0 < cgs.glconfig.vidHeight * 640.0 ) {
+				lb = 0.5 * ( ( cgs.glconfig.vidHeight - ( cgs.screenYScale * 480.0 ) ) / cgs.screenYScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, 80, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 560, 0, 80, 480, color );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
+				CG_FillRect( 0, 480 - lb, 640, lb, color );
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+				CG_FillRect( 0, 0, 640, lb, color );
+			}
 		} else {
 			CG_FillRect( 0, 0, 80, 480, color );
 			CG_FillRect( 560, 0, 80, 480, color );
@@ -2137,10 +2136,17 @@ static void CG_DrawWeapReticle( void ) {
 		}
 
 		if ( cgs.media.reticleShaderSimpleQ ) {
-			trap_R_DrawStretchPic( x, 0, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );    // tl
-			trap_R_DrawStretchPic( x + w, 0, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ );  // tr
-			trap_R_DrawStretchPic( x, h, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );    // bl
-			trap_R_DrawStretchPic( x + w, h, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ );  // br
+			if ( cg_fixedAspect.integer ) {
+				trap_R_DrawStretchPic( x, lb, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );         // tl
+				trap_R_DrawStretchPic( x + w, lb, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ );     // tr
+				trap_R_DrawStretchPic( x, h + lb, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );     // bl
+				trap_R_DrawStretchPic( x + w, h + lb, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ ); // br
+			} else {
+				trap_R_DrawStretchPic( x, 0, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );      // tl
+				trap_R_DrawStretchPic( x + w, 0, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ );  // tr
+				trap_R_DrawStretchPic( x, h, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );      // bl
+				trap_R_DrawStretchPic( x + w, h, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ );  // br
+			}
 		}
 
 		// hairs
@@ -2151,14 +2157,29 @@ static void CG_DrawWeapReticle( void ) {
 	} else if ( weap == WP_SNOOPERSCOPE ) {
 		// sides
 		if ( cg_fixedAspect.integer ) {
-			if ( cgs.glconfig.vidWidth * 480 > cgs.glconfig.vidHeight * 640 ) {
-				width = 0.5 * ( ( cgs.glconfig.vidWidth - ( min( cgs.screenXScale, cgs.screenYScale ) * 480 ) ) / min( cgs.screenXScale, cgs.screenYScale ) );
+			if ( cgs.glconfig.vidWidth * 480.0 > cgs.glconfig.vidHeight * 640.0 ) {
+				mask = 0.5 * ( ( cgs.glconfig.vidWidth - ( cgs.screenXScale * 480.0 ) ) / cgs.screenXScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, mask, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 640 - mask, 0, mask, 480, color );
 			}
 
-			CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-			CG_FillRect( 0, 0, width, 480, color );
-			CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-			CG_FillRect( 640-width, 0, width, 480, color );
+			// sides with letterbox
+			if ( cgs.glconfig.vidWidth * 480.0 < cgs.glconfig.vidHeight * 640.0 ) {
+				lb = 0.5 * ( ( cgs.glconfig.vidHeight - ( cgs.screenYScale * 480.0 ) ) / cgs.screenYScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, 80, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 560, 0, 80, 480, color );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
+				CG_FillRect( 0, 480 - lb, 640, lb, color );
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+				CG_FillRect( 0, 0, 640, lb, color );
+			}
 		} else {
 			CG_FillRect( 0, 0, 80, 480, color );
 			CG_FillRect( 560, 0, 80, 480, color );
@@ -2204,14 +2225,29 @@ static void CG_DrawWeapReticle( void ) {
 	} else if ( weap == WP_FG42SCOPE ) {
 		// sides
 		if ( cg_fixedAspect.integer ) {
-			if ( cgs.glconfig.vidWidth * 480 > cgs.glconfig.vidHeight * 640 ) {
-				width = 0.5 * ( ( cgs.glconfig.vidWidth - ( min( cgs.screenXScale, cgs.screenYScale ) * 480 ) ) / min( cgs.screenXScale, cgs.screenYScale ) );
+			if ( cgs.glconfig.vidWidth * 480.0 > cgs.glconfig.vidHeight * 640.0 ) {
+				mask = 0.5 * ( ( cgs.glconfig.vidWidth - ( cgs.screenXScale * 480.0 ) ) / cgs.screenXScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, mask, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 640 - mask, 0, mask, 480, color );
 			}
 
-			CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-			CG_FillRect( 0, 0, width, 480, color );
-			CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-			CG_FillRect( 640-width, 0, width, 480, color );
+			// sides with letterbox
+			if ( cgs.glconfig.vidWidth * 480.0 < cgs.glconfig.vidHeight * 640.0 ) {
+				lb = 0.5 * ( ( cgs.glconfig.vidHeight - ( cgs.screenYScale * 480.0 ) ) / cgs.screenYScale );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+				CG_FillRect( 0, 0, 80, 480, color );
+				CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+				CG_FillRect( 560, 0, 80, 480, color );
+
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
+				CG_FillRect( 0, 480 - lb, 640, lb, color );
+				CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+				CG_FillRect( 0, 0, 640, lb, color );
+			}
 		} else {
 			CG_FillRect( 0, 0, 80, 480, color );
 			CG_FillRect( 560, 0, 80, 480, color );
@@ -2223,10 +2259,17 @@ static void CG_DrawWeapReticle( void ) {
 		}
 
 		if ( cgs.media.reticleShaderSimpleQ ) {
-			trap_R_DrawStretchPic( x,   0, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );  // tl
-			trap_R_DrawStretchPic( x + w, 0, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ );  // tr
-			trap_R_DrawStretchPic( x,   h, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );  // bl
-			trap_R_DrawStretchPic( x + w, h, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ );  // br
+			if ( cg_fixedAspect.integer ) {
+				trap_R_DrawStretchPic( x, lb, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );         // tl
+				trap_R_DrawStretchPic( x + w, lb, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ );     // tr
+				trap_R_DrawStretchPic( x, h + lb, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );     // bl
+				trap_R_DrawStretchPic( x + w, h + lb, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ ); // br
+			} else {
+				trap_R_DrawStretchPic( x, 0, w, h, 0, 0, 1, 1, cgs.media.reticleShaderSimpleQ );     // tl
+				trap_R_DrawStretchPic( x + w, 0, w, h, 1, 0, 0, 1, cgs.media.reticleShaderSimpleQ ); // tr
+				trap_R_DrawStretchPic( x, h, w, h, 0, 1, 1, 0, cgs.media.reticleShaderSimpleQ );     // bl
+				trap_R_DrawStretchPic( x + w, h, w, h, 1, 1, 0, 0, cgs.media.reticleShaderSimpleQ ); // br
+			}
 		}
 
 		// hairs
@@ -2268,6 +2311,10 @@ static void CG_DrawBinocReticle( void ) {
 		trap_R_DrawStretchPic( w, h, w, h, 1, 1, 0, 0, cgs.media.binocShaderSimpleQ );  // br
 	}
 
+	if ( cg_fixedAspect.integer ) {
+		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+	}
+
 	CG_FillRect( 146, 239, 348, 1, color );
 
 	CG_FillRect( 188, 234, 1, 13, color );   // ll
@@ -2869,7 +2916,7 @@ CG_DrawSpectator
 =================
 */
 static void CG_DrawSpectator( void ) {
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 	}
 	CG_DrawBigString( 320 - 9 * 8, 440, "SPECTATOR", 1.0F );
@@ -2894,8 +2941,8 @@ static void CG_DrawVote( void ) {
 		return;
 	}
 
-	if ( cg_fixedAspect.integer ) {
-		CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+	if ( cg_fixedAspect.integer == 2 ) {
+		CG_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
 	}
 
 	// play a talk beep whenever it is modified
@@ -2983,8 +3030,8 @@ static qboolean CG_DrawFollow( void ) {
 		return qfalse;
 	}
 
-	if ( cg_fixedAspect.integer ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP);
+	if ( cg_fixedAspect.integer == 2 ) {
+		CG_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
 	}
 
 	color[0] = 1;
@@ -3044,7 +3091,7 @@ static void CG_DrawAmmoWarning( void ) {
 		return;
 	}
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP);
 	}
 
@@ -3080,7 +3127,7 @@ static void CG_DrawWarmup( void ) {
 		return;
 	}
 
-	if ( cg_fixedAspect.integer ) {
+	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_CENTER, PLACE_TOP);
 	}
 
@@ -3349,7 +3396,8 @@ static void CG_DrawFlashFire( void ) {
 		col[3] = alpha;
 		trap_R_SetColor( col );
 		if ( cg_fixedAspect.integer ) {
-			trap_R_DrawStretchPic( -10, -10, 650, 490, 0, 0, 1, 1, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] );
+			CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+			CG_DrawPic( -10, -10, 650, 490, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] );
 		} else {
 			CG_DrawPic( -10, -10, 650, 490, cgs.media.viewFlashFire[( cg.time / 50 ) % 16] );
 		}
@@ -3391,7 +3439,8 @@ static void CG_DrawFlashLightning( void ) {
 		shader = cgs.media.viewTeslaDamageEffectShader;
 	}
 	if ( cg_fixedAspect.integer ) {
-		trap_R_DrawStretchPic( -10, -10, 650, 490, 0, 0, 1, 1, shader );
+		CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+		CG_DrawPic( -10, -10, 650, 490, shader );
 	} else {
 		CG_DrawPic( -10, -10, 650, 490, shader );
 	}
@@ -3724,8 +3773,6 @@ static void CG_Draw2D(stereoFrame_t stereoFrame) {
 			if ( cg_drawStatus.integer ) {
 				if ( cg_fixedAspect.integer == 2 ) {
 					CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-				} else if ( cg_fixedAspect.integer == 1 ) {
-					CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
 				}
 
 				if ( !cg_oldWolfUI.integer ) {
diff --git a/SP/code/cgame/cg_drawtools.c b/SP/code/cgame/cg_drawtools.c
index c1cbd13..55d65ed 100644
--- a/SP/code/cgame/cg_drawtools.c
+++ b/SP/code/cgame/cg_drawtools.c
@@ -93,7 +93,6 @@ void CG_AdjustFrom640( float *x, float *y, float *w, float *h ) {
 		*x += 0.5 * ( cgs.glconfig.vidWidth - ( cgs.glconfig.vidHeight * 640 / 480 ) );
 	}
 #endif
-
 	if ( cg_fixedAspect.integer ) {
 		if (cg_horizontalPlacement == PLACE_STRETCH) {
 			// scale for screen sizes (not aspect correct in wide screen)
diff --git a/SP/code/cgame/cg_info.c b/SP/code/cgame/cg_info.c
index ee0d8d1..2f0cb62 100644
--- a/SP/code/cgame/cg_info.c
+++ b/SP/code/cgame/cg_info.c
@@ -410,7 +410,7 @@ void CG_DrawInformation( void ) {
 	}
 
 	if ( !levelshot ) {
-		trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" );
+		levelshot = trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" );
 	}
 
 	trap_R_SetColor( NULL );
diff --git a/SP/code/cgame/cg_newdraw.c b/SP/code/cgame/cg_newdraw.c
index 3bbe4e5..2cd27f8 100644
--- a/SP/code/cgame/cg_newdraw.c
+++ b/SP/code/cgame/cg_newdraw.c
@@ -202,8 +202,6 @@ static void CG_DrawPlayerArmorValue( rectDef_t *rect, int font, float scale, vec
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	if ( shader ) {
@@ -277,8 +275,6 @@ static void CG_DrawPlayerWeaponIcon( rectDef_t *rect, qboolean drawHighlighted,
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	// DHM - Nerve :: special case for WP_CLASS_SPECIAL
@@ -604,8 +600,6 @@ static void CG_DrawPlayerAmmoValue( rectDef_t *rect, int font, float scale, vec4
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	switch ( weap ) {      // some weapons don't draw ammo count text
@@ -904,8 +898,6 @@ static void CG_DrawHoldableItem( rectDef_t *rect, int font, float scale, qboolea
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	value   = cg.predictedPlayerState.holdable[cg.holdableSelect];
@@ -1081,8 +1073,6 @@ static void CG_DrawPlayerHealth( rectDef_t *rect, int font, float scale, vec4_t
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	if ( shader ) {
@@ -2179,8 +2169,6 @@ void CG_DrawWeapHeat( rectDef_t *rect, int align ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	if ( align != HUD_HORIZONTAL ) {
@@ -2211,8 +2199,6 @@ static void CG_DrawFatigue( rectDef_t *rect, vec4_t color, int align ) {
 
 	if ( cg_fixedAspect.integer == 2 ) {
 		CG_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	}
 
 	if ( align != HUD_HORIZONTAL ) {
diff --git a/SP/code/cgame/cg_scoreboard.c b/SP/code/cgame/cg_scoreboard.c
index 382067c..4dfa837 100644
--- a/SP/code/cgame/cg_scoreboard.c
+++ b/SP/code/cgame/cg_scoreboard.c
@@ -636,7 +636,7 @@ void CG_DrawTourneyScoreboard( void ) {
 	 	color[3] = 1;
 		CG_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
  		CG_FillRect( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, color );
-		CG_PopScreenPlacement();
+		CG_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 	} else {
 		color[0] = color[1] = color[2] = 0;
 		color[3] = 1;
diff --git a/SP/code/cgame/cg_weapons.c b/SP/code/cgame/cg_weapons.c
index 29fff31..69e9421 100644
--- a/SP/code/cgame/cg_weapons.c
+++ b/SP/code/cgame/cg_weapons.c
@@ -3112,12 +3112,6 @@ void CG_DrawWeaponSelect( void ) {
 	int bits[MAX_WEAPONS / ( sizeof( int ) * 8 )];
 	float       *color;
 
-	if ( cg_fixedAspect.integer == 2 ) {
-		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_BOTTOM);
-	} else if ( cg_fixedAspect.integer == 1 ) {
-		CG_SetScreenPlacement(PLACE_CENTER, PLACE_BOTTOM);
-	}
-
 	// don't display if dead
 	if ( cg.predictedPlayerState.stats[STAT_HEALTH] <= 0 ) {
 		return;
@@ -3133,6 +3127,10 @@ void CG_DrawWeaponSelect( void ) {
 	}
 	trap_R_SetColor( color );
 
+	if ( cg_fixedAspect.integer == 2 ) {
+		CG_SetScreenPlacement(PLACE_RIGHT, PLACE_TOP);
+	}
+
 
 //----(SA)	neither of these overlap the weapon selection area anymore, so let them stay
 	// showing weapon select clears pickup item display, but not the blend blob
diff --git a/SP/code/ui/ui_main.c b/SP/code/ui/ui_main.c
index 11f8b0f..89f84b5 100644
--- a/SP/code/ui/ui_main.c
+++ b/SP/code/ui/ui_main.c
@@ -1484,7 +1484,21 @@ static void UI_DrawMapLevelshot( rectDef_t *rect ) {
 	}
 
 	if ( !levelshot ) {
-		levelshot = trap_R_RegisterShaderNoMip( "menu/art/unknownmap" );
+		levelshot = trap_R_RegisterShaderNoMip( "levelshots/unknownmap.jpg" );
+	}
+
+	// HACK Pillarboxing...Copied from ui_shared.c 
+	if ( ui_fixedAspect.integer ) {
+		if ( DC->glconfig.vidWidth * 480.0 > DC->glconfig.vidHeight * 640.0 ) {
+			vec4_t col = {0, 0, 0, 1};
+			float pillar = 0.5 * ( ( DC->glconfig.vidWidth - ( DC->xscale * 640.0 ) ) / DC->xscale );
+
+			UI_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
+			DC->fillRect( 0, 0, pillar + 1, 480, col );
+			UI_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+			DC->fillRect( 640 - pillar, 0, pillar + 1, 480, col );
+			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+		}
 	}
 
 	UI_DrawHandlePic( rect->x, rect->y, rect->w, rect->h, levelshot );
diff --git a/SP/code/ui/ui_shared.c b/SP/code/ui/ui_shared.c
index 55fb9ec..9a89ab7 100644
--- a/SP/code/ui/ui_shared.c
+++ b/SP/code/ui/ui_shared.c
@@ -146,6 +146,7 @@ translateString_t translateStrings[] = {
 	{"or"}                       //
 };
 
+vmCvar_t ui_fixedAspect;
 
 static screenPlacement_e ui_horizontalPlacement = PLACE_CENTER;
 static screenPlacement_e ui_verticalPlacement = PLACE_CENTER;
@@ -197,7 +198,6 @@ screenPlacement_e UI_GetScreenVerticalPlacement(void)
 	return ui_verticalPlacement;
 }
 
-vmCvar_t ui_fixedAspect;
 
 /*
 ================
@@ -845,13 +845,30 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle
 		fillRect.h -= w->borderSize + 1;
 	}
 
-	// Make pillarbox for 4:3 UI
+	// Make menus letterboxed if aspect is < 4:3
+	if ( ui_fixedAspect.integer ) {
+		if ( DC->glconfig.vidWidth * 480.0 < DC->glconfig.vidHeight * 640.0 ) {
+			vec4_t col = {0, 0, 0, 1};
+			float lb = 0.5 * ( ( DC->glconfig.vidHeight - ( DC->yscale * 480.0 ) ) / DC->yscale );
+
+			UI_SetScreenPlacement(PLACE_LEFT, PLACE_BOTTOM);
+			DC->fillRect( 0, 480 - lb, 640, lb + 1, col );
+			UI_SetScreenPlacement(PLACE_LEFT, PLACE_TOP);
+			DC->fillRect( 0, 0, 640, lb + 1, col );
+			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+		}
+	}
+
+	// Make menus pillarboxed if using 4:3 UI
 	if ( ui_fixedAspect.integer == 1 ) {
-		if ( DC->glconfig.vidWidth * 480 > DC->glconfig.vidHeight * 640 ) {
+		if ( DC->glconfig.vidWidth * 480.0 > DC->glconfig.vidHeight * 640.0 ) {
 			vec4_t col = {0, 0, 0, 1};
+			float pillar = 0.5 * ( ( DC->glconfig.vidWidth - ( DC->xscale * 640.0 ) ) / DC->xscale );
+
 			UI_SetScreenPlacement(PLACE_LEFT, PLACE_CENTER);
-			DC->drawRect( 0, 0, DC->xBias, 480, DC->xBias + 1, col );
-			DC->drawRect( 640 + DC->xBias, 0, DC->xBias, 480, DC->xBias + 1, col );
+			DC->fillRect( 0, 0, pillar + 1, 480, col );
+			UI_SetScreenPlacement(PLACE_RIGHT, PLACE_CENTER);
+			DC->fillRect( 640 - pillar, 0, pillar + 1, 480, col );
 			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
 		}
 	}
@@ -873,12 +890,29 @@ void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float fadeCycle
 		if ( w->flags & WINDOW_FORECOLORSET ) {
 			DC->setColor( w->foreColor );
 		}
-		if ( ui_fixedAspect.integer == 2 && ( Q_stricmpn( w->name, "FLA", 3 ) ) && ( Q_stricmpn( w->name, "WOLF", 4 ) ) ) { // HACK to widen menu items
-			UI_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
-			DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
-			DC->setColor( NULL );
-		} else {
+		if ( ui_fixedAspect.integer == 2 ) {
+			if ( DC->glconfig.vidWidth * 480 > DC->glconfig.vidHeight * 640 ) {
+				// HACK ... widen menu without stretching items and models
+				if ( !Q_stricmpn( w->name, "BLACKGRAD", 9 ) ) {
+					UI_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+					DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
+					DC->setColor( NULL );
+				} else if ( !Q_stricmpn( w->name, "gold_line", 9 ) ) {
+					UI_SetScreenPlacement(PLACE_STRETCH, PLACE_STRETCH);
+					DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
+					DC->setColor( NULL );
+				} else {
+					UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+					DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
+					DC->setColor( NULL );
+				}
+			} else {
+				UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+				DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
+				DC->setColor( NULL );
+			}
 			UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+		} else {
 			DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, fillRect.h, w->background );
 			DC->setColor( NULL );
 		}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/iortcw.git



More information about the Pkg-games-commits mailing list