From f1dcb375559cd87cd26af16002b43dd7a8cf7d64 Mon Sep 17 00:00:00 2001 From: div0 Date: Wed, 16 Jan 2008 18:14:47 +0000 Subject: [PATCH] better support odd resolutions (like widescreen) git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3153 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/menu-div0test/item/dialog.c | 4 +-- data/qcsrc/menu-div0test/menu.qc | 36 ++++++++++++++++++-- data/qcsrc/menu-div0test/menu.qh | 2 ++ data/qcsrc/menu-div0test/nexuiz/mainwindow.c | 2 +- 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/data/qcsrc/menu-div0test/item/dialog.c b/data/qcsrc/menu-div0test/item/dialog.c index d55fd4776..4286d5047 100644 --- a/data/qcsrc/menu-div0test/item/dialog.c +++ b/data/qcsrc/menu-div0test/item/dialog.c @@ -132,7 +132,7 @@ void configureDialogDialog(entity me) if not(me.titleFontSize) me.titleHeight = 0; // no title bar - absWidth = me.intendedWidth * cvar("vid_conwidth"); + absWidth = me.intendedWidth * conwidth; absHeight = me.titleHeight + me.marginTop + me.rows * me.rowHeight + (me.rows - 1) * me.rowSpacing + me.marginBottom; me.itemOrigin = eX * (me.marginLeft / absWidth) + eY * ((me.titleHeight + me.marginTop) / absHeight); @@ -141,7 +141,7 @@ void configureDialogDialog(entity me) me.itemSpacing = me.itemSize + eX * (me.columnSpacing / absWidth) + eY * (me.rowSpacing / absHeight); - me.intendedHeight = absHeight / cvar("vid_conheight"); + me.intendedHeight = absHeight / conheight; me.currentRow = -1; me.currentColumn = -1; diff --git a/data/qcsrc/menu-div0test/menu.qc b/data/qcsrc/menu-div0test/menu.qc index 2f15f5f1e..9fc11b590 100644 --- a/data/qcsrc/menu-div0test/menu.qc +++ b/data/qcsrc/menu-div0test/menu.qc @@ -22,6 +22,32 @@ void() m_init = dprint_load(); } +void UpdateConWidthHeight() +{ + var float conwidth_s = conwidth; + var float conheight_s = conheight; + conwidth = cvar("vid_conwidth"); + conheight = cvar("vid_conheight"); + if(conwidth < 800) + { + conheight *= 800 / conwidth; + conwidth = 800; + } + if(conheight < 600) + { + conwidth *= 600 / conheight; + conheight = 600; + } + if(main) + { + if(conwidth_s != conwidth || conheight_s != conheight) + { + draw_reset(); + main.resizeNotify(main, '0 0 0', eX * conwidth + eY * conheight, '0 0 0', eX * conwidth + eY * conheight); + } + } +} + void() m_init_delayed = { float fh; @@ -56,9 +82,11 @@ void() m_init_delayed = draw_setMousePointer("cursor", SKINSIZE_CURSOR, SKINOFFSET_CURSOR); - main = spawnMainWindow(); main.configureMainWindow(main); + conwidth = conheight = -1; draw_reset(); - main.resizeNotify(main, draw_shift, draw_scale, draw_shift, draw_scale); + UpdateConWidthHeight(); + main = spawnMainWindow(); main.configureMainWindow(main); + main.resizeNotify(main, '0 0 0', eX * conwidth + eY * conheight, '0 0 0', eX * conwidth + eY * conheight); main.focused = 1; menuShiftState = 0; menuMousePos = '0.5 0.5 0'; @@ -134,6 +162,9 @@ void() m_draw = float t; float realFrametime; + if(main) + UpdateConWidthHeight(); + if(!menuNotTheFirstFrame) { menuNotTheFirstFrame = 1; @@ -150,6 +181,7 @@ void() m_draw = m_init_delayed(); return; } + t = gettime(); realFrametime = frametime = min(0.2, t - menuPrevTime); menuPrevTime = t; diff --git a/data/qcsrc/menu-div0test/menu.qh b/data/qcsrc/menu-div0test/menu.qh index ac0a7712a..c3b5aef0a 100644 --- a/data/qcsrc/menu-div0test/menu.qh +++ b/data/qcsrc/menu-div0test/menu.qh @@ -39,4 +39,6 @@ void m_goto(string name); entity keyGrabber; .void(entity me, float key, float ascii) keyGrabbed; +float conwidth, conheight; // "virtual" conwidth/height values for other stuff to assume for scaling + void SUB_Null(); diff --git a/data/qcsrc/menu-div0test/nexuiz/mainwindow.c b/data/qcsrc/menu-div0test/nexuiz/mainwindow.c index c790aa7e3..8e6945be7 100644 --- a/data/qcsrc/menu-div0test/nexuiz/mainwindow.c +++ b/data/qcsrc/menu-div0test/nexuiz/mainwindow.c @@ -61,7 +61,7 @@ void configureMainWindowMainWindow(entity me) i.configureDialog(i); n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z); n.setNexposee(n, i, '0.9 1.2 0', SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y); - n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / cvar("vid_conheight"))); + n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight)); me.addItem(me, n, '0 0 0', '1 1 0', SKINALPHAS_MAINMENU_z); me.moveItemAfter(me, n, NULL); -- 2.39.2