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 79f79da55b03485fac01ca647b2a2b9b6ca73dc3
Author: MAN-AT-ARMS <m4n4t4...@gmail.com>
Date:   Sat Nov 28 14:58:03 2015 -0500

    SP: Add aspect corrected UI to cg_fixedAspect
---
 SP/code/cgame/cg_local.h   |  13 ----
 SP/code/qcommon/q_shared.h |  13 ++++
 SP/code/ui/ui_atoms.c      |  23 -------
 SP/code/ui/ui_local.h      |   2 +
 SP/code/ui/ui_main.c       |  41 ++++++++++---
 SP/code/ui/ui_shared.c     | 150 +++++++++++++++++++++++++++++++++++++++++----
 SP/code/ui/ui_shared.h     |   9 +++
 7 files changed, 197 insertions(+), 54 deletions(-)

diff --git a/SP/code/cgame/cg_local.h b/SP/code/cgame/cg_local.h
index eff3f82..86d32e6 100644
--- a/SP/code/cgame/cg_local.h
+++ b/SP/code/cgame/cg_local.h
@@ -1831,19 +1831,6 @@ void CG_Concussive( centity_t *cent );
 //
 // cg_drawtools.c
 //
-typedef enum {
-       PLACE_STRETCH,
-       PLACE_CENTER,
-
-       // horizontal only
-       PLACE_LEFT,
-       PLACE_RIGHT,
-
-       // vertical only
-       PLACE_TOP,
-       PLACE_BOTTOM
-} screenPlacement_e;
-
 void CG_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos);
 void CG_PopScreenPlacement(void);
 screenPlacement_e CG_GetScreenHorizontalPlacement(void);
diff --git a/SP/code/qcommon/q_shared.h b/SP/code/qcommon/q_shared.h
index b8941c6..6adc8aa 100644
--- a/SP/code/qcommon/q_shared.h
+++ b/SP/code/qcommon/q_shared.h
@@ -474,6 +474,19 @@ extern vec4_t g_color_table[8];
 #define DEG2RAD( a ) ( ( ( a ) * M_PI ) / 180.0F )
 #define RAD2DEG( a ) ( ( ( a ) * 180.0f ) / M_PI )
 
+typedef enum {
+       PLACE_STRETCH,
+       PLACE_CENTER,
+
+       // horizontal only
+       PLACE_LEFT,
+       PLACE_RIGHT,
+
+       // vertical only
+       PLACE_TOP,
+       PLACE_BOTTOM
+} screenPlacement_e;
+
 struct cplane_s;
 
 extern vec3_t vec3_origin;
diff --git a/SP/code/ui/ui_atoms.c b/SP/code/ui/ui_atoms.c
index 368fa56..fda6182 100644
--- a/SP/code/ui/ui_atoms.c
+++ b/SP/code/ui/ui_atoms.c
@@ -425,29 +425,6 @@ UI_Shutdown
 void UI_Shutdown( void ) {
 }
 
-/*
-================
-UI_AdjustFrom640
-
-Adjusted for resolution and screen aspect ratio
-================
-*/
-void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) {
-       // expect valid pointers
-#if 0
-       *x = *x * uiInfo.uiDC.scale + uiInfo.uiDC.bias;
-       *y *= uiInfo.uiDC.scale;
-       *w *= uiInfo.uiDC.scale;
-       *h *= uiInfo.uiDC.scale;
-#endif
-
-       *x *= uiInfo.uiDC.xscale;
-       *y *= uiInfo.uiDC.yscale;
-       *w *= uiInfo.uiDC.xscale;
-       *h *= uiInfo.uiDC.yscale;
-
-}
-
 void UI_DrawNamedPic( float x, float y, float width, float height, const char 
*picname ) {
        qhandle_t hShader;
 
diff --git a/SP/code/ui/ui_local.h b/SP/code/ui/ui_local.h
index 205a6d4..c132346 100644
--- a/SP/code/ui/ui_local.h
+++ b/SP/code/ui/ui_local.h
@@ -75,6 +75,8 @@ extern vmCvar_t ui_autoactivate;
 extern vmCvar_t ui_emptyswitch;
 // END JOSEPH
 
+extern vmCvar_t ui_fixedAspect;
+
 extern vmCvar_t ui_server1;
 extern vmCvar_t ui_server2;
 extern vmCvar_t ui_server3;
diff --git a/SP/code/ui/ui_main.c b/SP/code/ui/ui_main.c
index 0083a2f..252385f 100644
--- a/SP/code/ui/ui_main.c
+++ b/SP/code/ui/ui_main.c
@@ -6587,14 +6587,36 @@ void _UI_Init( qboolean inGameLoad ) {
        trap_GetGlconfig( &uiInfo.uiDC.glconfig );
 
        // for 640x480 virtualized screen
-       uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * ( 1.0 / 480.0 );
-       uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * ( 1.0 / 640.0 );
-       if ( uiInfo.uiDC.glconfig.vidWidth * 480 > 
uiInfo.uiDC.glconfig.vidHeight * 640 ) {
-               // wide screen
-               uiInfo.uiDC.bias = 0.5 * ( uiInfo.uiDC.glconfig.vidWidth - ( 
uiInfo.uiDC.glconfig.vidHeight * ( 640.0 / 480.0 ) ) );
+       if ( ui_fixedAspect.integer ) {
+               uiInfo.uiDC.xscaleStretch = uiInfo.uiDC.glconfig.vidWidth * 
(1.0/640.0);
+               uiInfo.uiDC.yscaleStretch = uiInfo.uiDC.glconfig.vidHeight * 
(1.0/480.0);
+               if ( uiInfo.uiDC.glconfig.vidWidth * 480 > 
uiInfo.uiDC.glconfig.vidHeight * 640 ) {
+                       uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * 
(1.0/640.0);
+                       uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * 
(1.0/480.0);
+                       // wide screen
+                       uiInfo.uiDC.xBias = 0.5 * ( 
uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * 
(640.0/480.0) ) );
+                       uiInfo.uiDC.xscale = uiInfo.uiDC.yscale;
+                       // no narrow screen
+                       uiInfo.uiDC.yBias = 0;
+               } else {
+                       uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * 
(1.0/640.0);
+                       uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * 
(1.0/480.0);
+                       // narrow screen
+                       uiInfo.uiDC.yBias = 0.5 * ( 
uiInfo.uiDC.glconfig.vidHeight - ( uiInfo.uiDC.glconfig.vidWidth * 
(480.0/640.0) ) );
+                       uiInfo.uiDC.yscale = uiInfo.uiDC.xscale;
+                       // no wide screen
+                       uiInfo.uiDC.xBias = 0;
+               }
        } else {
-               // no wide screen
-               uiInfo.uiDC.bias = 0;
+               uiInfo.uiDC.yscale = uiInfo.uiDC.glconfig.vidHeight * ( 1.0 / 
480.0 );
+               uiInfo.uiDC.xscale = uiInfo.uiDC.glconfig.vidWidth * ( 1.0 / 
640.0 );
+               if ( uiInfo.uiDC.glconfig.vidWidth * 480 > 
uiInfo.uiDC.glconfig.vidHeight * 640 ) {
+                       // wide screen
+                       uiInfo.uiDC.bias = 0.5 * ( 
uiInfo.uiDC.glconfig.vidWidth - ( uiInfo.uiDC.glconfig.vidHeight * ( 640.0 / 
480.0 ) ) );
+               } else {
+                       // no wide screen
+                       uiInfo.uiDC.bias = 0;
+               }
        }
 
 
@@ -7247,6 +7269,8 @@ vmCvar_t ui_autoactivate;
 vmCvar_t ui_emptyswitch;        //----(SA)     added
 // END JOSEPH
 
+vmCvar_t ui_fixedAspect;
+
 vmCvar_t ui_server1;
 vmCvar_t ui_server2;
 vmCvar_t ui_server3;
@@ -7356,6 +7380,9 @@ cvarTable_t cvarTable[] = {
        { &ui_autoactivate, "cg_autoactivate", "1", CVAR_ARCHIVE },
        { &ui_useSuggestedWeapons, "cg_useSuggestedWeapons", "1", CVAR_ARCHIVE 
}, //----(SA)    added
        { &ui_emptyswitch, "cg_emptyswitch", "0", CVAR_ARCHIVE }, //----(SA)    
added
+
+       { &ui_fixedAspect, "cg_fixedAspect", "0", CVAR_ARCHIVE | CVAR_LATCH },
+
        { &ui_server1, "server1", "", CVAR_ARCHIVE },
        { &ui_server2, "server2", "", CVAR_ARCHIVE },
        { &ui_server3, "server3", "", CVAR_ARCHIVE },
diff --git a/SP/code/ui/ui_shared.c b/SP/code/ui/ui_shared.c
index 81c4a98..ee7466e 100644
--- a/SP/code/ui/ui_shared.c
+++ b/SP/code/ui/ui_shared.c
@@ -90,7 +90,6 @@ static qboolean Menu_OverActiveItem( menuDef_t *menu, float 
x, float y );
 static char memoryPool[MEM_POOL_SIZE];
 static int allocPoint, outOfMemory;
 
-
 // these are expected to be translated by the strings.txt file
 translateString_t translateStrings[] = {
        {"end_time"},                // "Time"
@@ -147,6 +146,114 @@ translateString_t translateStrings[] = {
        {"or"}                       //
 };
 
+
+static screenPlacement_e ui_horizontalPlacement = PLACE_CENTER;
+static screenPlacement_e ui_verticalPlacement = PLACE_CENTER;
+static screenPlacement_e ui_lastHorizontalPlacement = PLACE_CENTER;
+static screenPlacement_e ui_lastVerticalPlacement = PLACE_CENTER;
+
+/*
+================
+UI_SetScreenPlacement
+================
+*/
+void UI_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos)
+{
+       ui_lastHorizontalPlacement = ui_horizontalPlacement;
+       ui_lastVerticalPlacement = ui_verticalPlacement;
+
+       ui_horizontalPlacement = hpos;
+       ui_verticalPlacement = vpos;
+}
+
+/*
+================
+UI_PopScreenPlacement
+================
+*/
+void UI_PopScreenPlacement(void)
+{
+       ui_horizontalPlacement = ui_lastHorizontalPlacement;
+       ui_verticalPlacement = ui_lastVerticalPlacement;
+}
+
+/*
+================
+UI_GetScreenHorizontalPlacement
+================
+*/
+screenPlacement_e UI_GetScreenHorizontalPlacement(void)
+{
+       return ui_horizontalPlacement;
+}
+
+/*
+================
+UI_GetScreenVerticalPlacement
+================
+*/
+screenPlacement_e UI_GetScreenVerticalPlacement(void)
+{
+       return ui_verticalPlacement;
+}
+
+vmCvar_t ui_fixedAspect;
+
+/*
+================
+UI_AdjustFrom640
+
+Adjusted for resolution and screen aspect ratio
+================
+*/
+void UI_AdjustFrom640( float *x, float *y, float *w, float *h ) {
+       // expect valid pointers
+#if 0
+       *x = *x * DC->scale + DC->bias;
+       *y *= DC->scale;
+       *w *= DC->scale;
+       *h *= DC->scale;
+#endif
+
+       if ( ui_fixedAspect.integer ) {
+               if (ui_horizontalPlacement == PLACE_STRETCH) {
+                       // scale for screen sizes (not aspect correct in wide 
screen)
+                       *w *= DC->xscaleStretch;
+                       *x *= DC->xscaleStretch;
+               } else {
+                       // scale for screen sizes
+                       *w *= DC->xscale;
+                       *x *= DC->xscale;
+       
+                       if (ui_horizontalPlacement == PLACE_CENTER) {
+                               *x += DC->xBias;
+                       } else if (ui_horizontalPlacement == PLACE_RIGHT) {
+                               *x += DC->xBias*2;
+                       }
+               }
+
+               if (ui_verticalPlacement == PLACE_STRETCH) {
+                       *h *= DC->yscaleStretch;
+                       *y *= DC->yscaleStretch;
+               } else {
+                       *h *= DC->yscale;
+                       *y *= DC->yscale;
+       
+                       if (ui_verticalPlacement == PLACE_CENTER) {
+                               *y += DC->yBias;
+                       } else if (ui_verticalPlacement == PLACE_BOTTOM) {
+                               *y += DC->yBias*2;
+                       }
+               }
+       } else {
+               *x *= DC->xscale;
+               *y *= DC->yscale;
+               *w *= DC->xscale;
+               *h *= DC->yscale;
+       }
+}
+
+
 //----(SA)     added
 /*
 ==============
@@ -712,8 +819,6 @@ void Fade( int *flags, float *f, float clamp, int 
*nextTime, int offsetTime, qbo
        }
 }
 
-
-
 void Window_Paint( Window *w, float fadeAmount, float fadeClamp, float 
fadeCycle ) {
        //float bordersize = 0;
        vec4_t color = {0};
@@ -741,6 +846,17 @@ void Window_Paint( Window *w, float fadeAmount, float 
fadeClamp, float fadeCycle
                fillRect.h -= w->borderSize + 1;
        }
 
+       // Make pillarbox for 4:3 UI
+       if ( ui_fixedAspect.integer == 1 ) {
+               if ( DC->glconfig.vidWidth * 480 > DC->glconfig.vidHeight * 640 
) {
+                       vec4_t col = {0, 0, 0, 1};
+                       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 );
+                       UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+               }
+       }
+
        if ( w->style == WINDOW_STYLE_FILLED ) {
                // box, but possible a shader that needs filled
                if ( w->background ) {
@@ -758,8 +874,15 @@ void Window_Paint( Window *w, float fadeAmount, float 
fadeClamp, float fadeCycle
                if ( w->flags & WINDOW_FORECOLORSET ) {
                        DC->setColor( w->foreColor );
                }
-               DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, 
fillRect.h, w->background );
-               DC->setColor( NULL );
+               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 {
+                       UI_SetScreenPlacement(PLACE_CENTER, PLACE_CENTER);
+                       DC->drawHandlePic( fillRect.x, fillRect.y, fillRect.w, 
fillRect.h, w->background );
+                       DC->setColor( NULL );
+               }
        } else if ( w->style == WINDOW_STYLE_TEAMCOLOR ) {
                if ( DC->getTeamColor ) {
                        DC->getTeamColor( &color );
@@ -3855,14 +3978,19 @@ qboolean Item_Bind_HandleKey( itemDef_t *item, int key, 
qboolean down ) {
        return qtrue;
 }
 
-
-
 void AdjustFrom640( float *x, float *y, float *w, float *h ) {
        //*x = *x * DC->scale + DC->bias;
-       *x *= DC->xscale;
-       *y *= DC->yscale;
-       *w *= DC->xscale;
-       *h *= DC->yscale;
+       if ( ui_fixedAspect.integer ) {
+               *w *= DC->xscale;
+               *x = *x * DC->xscale + DC->xBias;
+               *h *= DC->yscale;
+               *y = *y * DC->yscale + DC->yBias;
+       } else {
+               *x *= DC->xscale;
+               *y *= DC->yscale;
+               *w *= DC->xscale;
+               *h *= DC->yscale;
+       }
 }
 
 void Item_Model_Paint( itemDef_t *item ) {
diff --git a/SP/code/ui/ui_shared.h b/SP/code/ui/ui_shared.h
index 1d2cf84..36d5b51 100644
--- a/SP/code/ui/ui_shared.h
+++ b/SP/code/ui/ui_shared.h
@@ -406,6 +406,10 @@ typedef struct {
 
        float yscale;
        float xscale;
+       float yscaleStretch;
+       float xscaleStretch;
+       float yBias;
+       float xBias;
        float bias;
        int realTime;
        int frameTime;
@@ -501,4 +505,9 @@ int         trap_PC_FreeSource( int handle );
 int         trap_PC_ReadToken( int handle, pc_token_t *pc_token );
 int         trap_PC_SourceFileAndLine( int handle, char *filename, int *line );
 
+void UI_SetScreenPlacement(screenPlacement_e hpos, screenPlacement_e vpos);
+void UI_PopScreenPlacement(void);
+screenPlacement_e UI_GetScreenHorizontalPlacement(void);
+screenPlacement_e UI_GetScreenVerticalPlacement(void);
+
 #endif

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

_______________________________________________
Pkg-games-commits mailing list
Pkg-games-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to