From c30bff8c67847a9e348024ab20fd59c3b965e3d9 Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Mon, 17 Feb 2025 03:42:50 +0100 Subject: [PATCH 1/9] Support "scaleto43 0" in Desktop windowDefs to explicitly stretch them even if r_scaleMenusTo43 1 and they'd usually be scaled to 4:3. Useful when using anchors in fullscreen menus (like the PDA) This is analogous to "scaleto43 1" in windowDefs which allows scaling to 4:3 (with black/empty bars) even if by default it would *not* be scaled. --- neo/ui/UserInterface.cpp | 16 +++++++++++----- neo/ui/Window.cpp | 7 +++++-- neo/ui/Window.h | 6 +++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/neo/ui/UserInterface.cpp b/neo/ui/UserInterface.cpp index 7cbed1ed..01208acd 100644 --- a/neo/ui/UserInterface.cpp +++ b/neo/ui/UserInterface.cpp @@ -563,13 +563,19 @@ void idUserInterfaceLocal::StateChanged( int _time, bool redraw ) { // DG: little hack: allow game DLLs to do // ui->SetStateBool("scaleto43", true); // ui->StateChanged(gameLocal.time); - // so we can force cursors.gui (crosshair) to be scaled, for example - bool scaleTo43 = false; - if(state.GetBool("scaleto43", "0", scaleTo43)) { - if(scaleTo43) + // so we can force cursors.gui (crosshair) to be scaled, for example. + // Not sure if/where that's needed, but ui->SetStateBool("scaleto43", false); + // is now also supported to explicitly disable scaling from the code + int scaleTo43 = 0; + if(state.GetInt("scaleto43", "-1", scaleTo43)) { + if(scaleTo43 > 0) { desktop->SetFlag(WIN_SCALETO43); - else + desktop->ClearFlag(WIN_NO_SCALETO43); + // TODO + } else if(scaleTo43 == 0) { desktop->ClearFlag(WIN_SCALETO43); + desktop->SetFlag(WIN_NO_SCALETO43); + } // do nothing for -1, it means that it wasn't set at all } // DG end diff --git a/neo/ui/Window.cpp b/neo/ui/Window.cpp index bf900ae8..518a6abb 100644 --- a/neo/ui/Window.cpp +++ b/neo/ui/Window.cpp @@ -1238,7 +1238,7 @@ void idWindow::Redraw(float x, float y) { // only scale desktop windows (will automatically scale its sub-windows) // that EITHER have the scaleto43 flag set OR are fullscreen menus and r_scaleMenusTo43 is 1 if( (flags & WIN_SCALETO43) || - ((flags & WIN_MENUGUI) && r_scaleMenusTo43.GetBool()) ) + ( (flags & WIN_MENUGUI) && r_scaleMenusTo43.GetBool() && !(flags & WIN_NO_SCALETO43) ) ) { fixupFor43 = true; dc->SetMenuScaleFix(true); @@ -2028,8 +2028,11 @@ bool idWindow::ParseInternalVar(const char *_name, idParser *src) { // DG: added this window flag for Windows that should be scaled to 4:3 // (with "empty" bars left/right or above/below) if (idStr::Icmp(_name, "scaleto43") == 0) { - if ( src->ParseBool() ) { + int scaleTo43 = src->ParseInt(); + if(scaleTo43 > 0) { flags |= WIN_SCALETO43; + } else if(scaleTo43 == 0) { + flags |= WIN_NO_SCALETO43; } return true; } diff --git a/neo/ui/Window.h b/neo/ui/Window.h index 1cf29f85..a862213f 100644 --- a/neo/ui/Window.h +++ b/neo/ui/Window.h @@ -65,7 +65,11 @@ const int WIN_WANTENTER = 0x01000000; const int WIN_DESKTOP = 0x10000000; -const int WIN_SCALETO43 = 0x20000000; // DG: for the "scaleto43" window flag (=> scale window to 4:3 with "empty" bars left/right or above/below) +// DG: for the "scaleto43" window flag (=> scale window to 4:3 with "empty" bars left/right or above/below) +const int WIN_SCALETO43 = 0x20000000; +// DG: if a gui explicitly wants to be stretched despite r_scaleMenusTo43 1 it can set `scaleto43 0` +// (useful when using anchors in fullscreen menus) +const int WIN_NO_SCALETO43 = 0x40000000; const char CAPTION_HEIGHT[] = "16.0"; const char SCROLLER_SIZE[] = "16.0"; From 3ee8ef55ef043485f514b4b714d82f2a77311cf3 Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Mon, 17 Feb 2025 03:57:36 +0100 Subject: [PATCH 2/9] Fix scaling of renderDefs when anchored with cstAnchor for my scale to 4:3 hack idRenderWindow::Draw() already calls if(dc->IsMenuScaleFixActive()) { dc->AdjustCoords(&x, &y, &w, &h); } and AdjustCoords() already takes the cst offsets into account, so all that was left to do was making idDeviceContext::IsMenuScaleFixActive() aware of the cst stuff --- neo/ui/DeviceContext.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/neo/ui/DeviceContext.h b/neo/ui/DeviceContext.h index e57d0f78..2cd61c63 100644 --- a/neo/ui/DeviceContext.h +++ b/neo/ui/DeviceContext.h @@ -108,7 +108,8 @@ public: // DG: this is used for the "make sure menus are rendered as 4:3" hack void SetMenuScaleFix(bool enable); bool IsMenuScaleFixActive() const { - return fixOffsetForMenu.x != 0.0f || fixOffsetForMenu.y != 0.0f; + // also using this for cstAdjustCoords, it basically means "you need to call AdjustCoords() + return fixOffsetForMenu.x != 0.0f || fixOffsetForMenu.y != 0.0f || cstAdjustCoords; } enum { From 57a75f8b08fe71e5446c59ac3a1ef88cd44e47af Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Tue, 18 Feb 2025 05:06:39 +0100 Subject: [PATCH 3/9] Fix clicking in (CST) anchored windowDefs and stretched mouse cursor --- neo/ui/DeviceContext.cpp | 59 ++++++++++++++++++++++++---------------- neo/ui/DeviceContext.h | 3 ++ neo/ui/Window.cpp | 24 ++++++++++++++++ 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/neo/ui/DeviceContext.cpp b/neo/ui/DeviceContext.cpp index 7ab11320..75778032 100644 --- a/neo/ui/DeviceContext.cpp +++ b/neo/ui/DeviceContext.cpp @@ -747,17 +747,16 @@ void idDeviceContext::DrawCursor(float *x, float *y, float size) { // the following block used to be Adjust(Cursor)Coords() // (no point in keeping that function when it's only used here) - *x *= xScale; - *y *= yScale; - size *= xScale; - // TODO: not sure if scaling it by both is the right thing to do.. - // but OTOH, probably one of them is always 1, at least when not using an anchor - // (and why would a cursor use an anchor) - size *= yScale; - // the *actual* sizes used (but not set to *x and *y) need to apply the menu fixes - float sizeW = size * fixScaleForMenu.x; - float sizeH = size * fixScaleForMenu.y; + // if cstAdjustCoords is used, x and y shouldn't be scaled, otherwise the cursor moves to a window border + if ( !cstAdjustCoords ) { + *x *= xScale; + *y *= yScale; + } + + // the *actual* sizes and position used (but not set to *x and *y) need to apply the menu fixes + float sizeW = size * fixScaleForMenu.x * xScale; + float sizeH = size * fixScaleForMenu.y * yScale; float fixedX = *x * fixScaleForMenu.x + fixOffsetForMenu.x; float fixedY = *y * fixScaleForMenu.y + fixOffsetForMenu.y; @@ -1010,22 +1009,20 @@ static void CstAdjustParmsForAnchor(int anchor, float &_xScale, float &_yScale, } } - -void idDeviceContext::CstSetSize(int anchor, int anchorTo, float factor) { - vidWidth = VIRTUAL_WIDTH; - vidHeight = VIRTUAL_HEIGHT; - xScale = 1.0f; - yScale = 1.0f; - cst_xOffset = 0.0f; - cst_yOffset = 0.0f; - cstAdjustCoords = false; +// static +bool idDeviceContext::CstGetParams(int anchor, int anchorTo, float factor, idVec2& out_Scale, idVec2& out_Offset) +{ + float xScale = 1.0f; + float yScale = 1.0f; + out_Offset.Set(0, 0); if (!CstGetVidScale(xScale, yScale)) { - return; + out_Scale.Set(1, 1); + return false; } if (anchorTo == idDeviceContext::CST_ANCHOR_NONE) { - CstAdjustParmsForAnchor(anchor, xScale, yScale, cst_xOffset, cst_yOffset); + CstAdjustParmsForAnchor(anchor, xScale, yScale, out_Offset.x, out_Offset.y); } else { float from_xScale = xScale; float from_yScale = yScale; @@ -1044,10 +1041,24 @@ void idDeviceContext::CstSetSize(int anchor, int anchorTo, float factor) { xScale = from_xScale * (1.0f - factor) + to_xScale * factor; yScale = from_yScale * (1.0f - factor) + to_yScale * factor; - cst_xOffset = from_xOffset * (1.0f - factor) + to_xOffset * factor; - cst_yOffset = from_yOffset * (1.0f - factor) + to_yOffset * factor; + out_Offset.x = from_xOffset * (1.0f - factor) + to_xOffset * factor; + out_Offset.y = from_yOffset * (1.0f - factor) + to_yOffset * factor; } - cstAdjustCoords = true; + out_Scale.Set(xScale, yScale); + return true; +} + +void idDeviceContext::CstSetSize(int anchor, int anchorTo, float factor) { + vidWidth = VIRTUAL_WIDTH; + vidHeight = VIRTUAL_HEIGHT; + + idVec2 scale; + idVec2 offset; + cstAdjustCoords = CstGetParams(anchor, anchorTo, factor, scale, offset); + xScale = scale.x; + yScale = scale.y; + cst_xOffset = offset.x; + cst_yOffset = offset.y; } //#modified-fva; END diff --git a/neo/ui/DeviceContext.h b/neo/ui/DeviceContext.h index 2cd61c63..03733aac 100644 --- a/neo/ui/DeviceContext.h +++ b/neo/ui/DeviceContext.h @@ -112,6 +112,9 @@ public: return fixOffsetForMenu.x != 0.0f || fixOffsetForMenu.y != 0.0f || cstAdjustCoords; } + // DG: used in idWindow::Contains(), so it can adjust coordinates + static bool CstGetParams(int anchor, int anchorTo, float anchorFactor, idVec2& out_Scale, idVec2& out_Offset); + enum { CURSOR_ARROW, CURSOR_HAND, diff --git a/neo/ui/Window.cpp b/neo/ui/Window.cpp index 518a6abb..502592d3 100644 --- a/neo/ui/Window.cpp +++ b/neo/ui/Window.cpp @@ -694,6 +694,18 @@ bool idWindow::Contains(const idRectangle &sr, float x, float y) { idRectangle r = sr; r.x += actualX - drawRect.x; r.y += actualY - drawRect.y; + // DG: if cstAnchor is used, the coordinates must adjusted + if ( cstAnchor != idDeviceContext::CST_ANCHOR_NONE ) { + // adjust r like idDeviceContext does for drawing + idVec2 scale, offset; + if ( idDeviceContext::CstGetParams( cstAnchor, cstAnchorTo, cstAnchorFactor, scale, offset ) ) { + r.x = r.x * scale.x + offset.x; + r.y = r.y * scale.y + offset.y; + r.w *= scale.x; + r.h *= scale.y; + } + } + return r.Contains(x, y); } @@ -706,6 +718,18 @@ bool idWindow::Contains(float x, float y) { idRectangle r = drawRect; r.x = actualX; r.y = actualY; + // DG: if cstAnchor is used, the coordinates must adjusted + if ( cstAnchor != idDeviceContext::CST_ANCHOR_NONE ) { + // adjust r like idDeviceContext does for drawing + idVec2 scale, offset; + if ( idDeviceContext::CstGetParams( cstAnchor, cstAnchorTo, cstAnchorFactor, scale, offset ) ) { + r.x = r.x * scale.x + offset.x; + r.y = r.y * scale.y + offset.y; + r.w *= scale.x; + r.h *= scale.y; + } + } + return r.Contains(x, y); } From 4aef5c1dd475f8ce2a4f64f1310bd2265beb3136 Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Tue, 18 Feb 2025 06:18:43 +0100 Subject: [PATCH 4/9] Fix mousecursor handling for menus using "scaleto43 0" especially useful when using cstAnchor also providing an easy generic way to figure out if the window of an idUserInterface is scaled to 4:3 aspect ratio or not, depending on r_scaleMenusTo43 and the WIN_SCALETO43/WIN_NO_SCALETO43 window flags, that come from "scaleto43 1" (or 0) set in the GUIs Desktop windowDef --- neo/sys/sys_imgui.cpp | 3 ++- neo/ui/UserInterface.cpp | 27 ++++++++++++++++++++++++++- neo/ui/UserInterface.h | 4 ++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/neo/sys/sys_imgui.cpp b/neo/sys/sys_imgui.cpp index 353b380e..0a23ff1e 100644 --- a/neo/sys/sys_imgui.cpp +++ b/neo/sys/sys_imgui.cpp @@ -39,6 +39,7 @@ #include "renderer/qgl.h" #include "renderer/tr_local.h" // glconfig #include "ui/DeviceContext.h" +#include "ui/UserInterface.h" extern void Com_DrawDhewm3SettingsMenu(); // in framework/dhewm3SettingsMenu.cpp extern void Com_OpenCloseDhewm3SettingsMenu( bool open ); // ditto @@ -487,7 +488,7 @@ bool ShouldShowCursor() } // if scaling Doom3 menus to 4:3 is enabled and the cursor is currently // in a black bar (Doom3 cursor is not drawn there), show the ImGui cursor - if ( r_scaleMenusTo43.GetBool() ) { + if ( idUserInterface::IsUserInterfaceScaledTo43( sessLocal.GetActiveMenu() ) ) { ImVec2 mousePos = ImGui::GetMousePos(); float w = glConfig.winWidth; float h = glConfig.winHeight; diff --git a/neo/ui/UserInterface.cpp b/neo/ui/UserInterface.cpp index 01208acd..beda9a29 100644 --- a/neo/ui/UserInterface.cpp +++ b/neo/ui/UserInterface.cpp @@ -339,6 +339,31 @@ bool idUserInterfaceLocal::InitFromFile( const char *qpath, bool rebuild, bool c return true; } +// static +bool idUserInterface::IsUserInterfaceScaledTo43( const idUserInterface* ui_ ) +{ + const idUserInterfaceLocal* ui = (const idUserInterfaceLocal*)ui_; + if ( ui == NULL ) { + assert( 0 && "why do you call this without a ui?!" ); + return false; + } + idWindow* win = ui->GetDesktop(); + if ( win == NULL ) { + return false; + } + int winFlags = win->GetFlags(); + if ( (winFlags & WIN_MENUGUI) == 0 || !r_scaleMenusTo43.GetBool() ) { + // if the window is no fullscreen menu (but an ingame menu or noninteractive like the HUD) + // or scaling menus to 4:3 by default (r_scaleMenusTo43) is disabled, + // they only get scaled if they explicitly requested it with "scaleto43 1" + return (winFlags & WIN_SCALETO43) != 0; + } else { + // if it's a fullscreen menu and r_scaleMenusTo43 is enabled, + // they get scaled to 4:3 unless they explicitly disable it with "scaleto43 0" + return (winFlags & WIN_NO_SCALETO43) == 0; + } +} + const char *idUserInterfaceLocal::HandleEvent( const sysEvent_t *event, int _time, bool *updateVisuals ) { time = _time; @@ -366,7 +391,7 @@ const char *idUserInterfaceLocal::HandleEvent( const sysEvent_t *event, int _tim const float realW = w; const float realH = h; - if(r_scaleMenusTo43.GetBool()) { + if ( IsUserInterfaceScaledTo43(this) ) { // in case we're scaling menus to 4:3, we need to take that into account // when scaling the mouse events. // no, we can't just call uiManagerLocal.dc.GetFixScaleForMenu() or sth like that, diff --git a/neo/ui/UserInterface.h b/neo/ui/UserInterface.h index 2b5eb0a1..539b1cae 100644 --- a/neo/ui/UserInterface.h +++ b/neo/ui/UserInterface.h @@ -114,6 +114,10 @@ public: virtual void SetCursor( float x, float y ) = 0; virtual float CursorX() = 0; virtual float CursorY() = 0; + + // DG: making this static so it doesn't change the vtable (and thus ABI) + // returns true if the ui's window is *not* being scaled to 4:3 + static bool IsUserInterfaceScaledTo43( const idUserInterface* ui ); }; From 384fd0cca18e06588426b642e2070c5ed84bd8ff Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Thu, 20 Feb 2025 02:05:31 +0100 Subject: [PATCH 5/9] Allow GUI scripts to do debug printing to the console Example: onActivate { set "print" "this windowDefs rect:" "$rect"; } (added to the Desktop of a GUI) prints "GUI debug: this windowDefs rect: 0 0 640 480" to the ingame console --- neo/ui/GuiScript.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/neo/ui/GuiScript.cpp b/neo/ui/GuiScript.cpp index 488420fe..5c208c52 100644 --- a/neo/ui/GuiScript.cpp +++ b/neo/ui/GuiScript.cpp @@ -63,6 +63,18 @@ void Script_Set(idWindow *window, idList *src) { } return; } + + // DG: allow debugprinting to the console with `set "print" "this windowDefs rect:" "$rect"` + if (idStr::Icmp(*dest, "print") == 0) { + idStr msg; + int parmCount = src->Num(); + for (int i=1; ic_str(); + msg += " "; + } + common->Printf("GUI debug: %s\n", msg.c_str()); + return; + } } (*src)[0].var->Set((*src)[1].var->c_str()); (*src)[0].var->SetEval(false); From 60e670f12a2f532485a3a14e9a83d2b4dc2c453f Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Thu, 20 Feb 2025 02:32:02 +0100 Subject: [PATCH 6/9] Provide variables "gui::horPad" and "gui::vertPad" to GUI scripts they are set before onActivate and also whenever the (Doom3 SDL) window size changes, in that case additionally the "UpdateWindowSize" Named Event is called in the script, in case you wanna do anything special in that case: onNamedEvent UpdateWindowSize { set "print" "UpdateWindowSize - horPad:" "gui::horPad" "vertPad:" "gui::vertPad"; } horPad is the width of the padding border (empty space) between the left/right border of Doom3's SDL window and a centered (cstAnchor CST_ANCHOR_CENTER_CENTER) full-sized windowDef in virtual pixels (in the Doom3 GUI coordinate system, which usually is 640x480). vertPad is the same for the padding border between the top/bottom border and a centered full-sized windowDef One of those values will always be 0. So for example if you play Doom3 at 1600x1200 (a 4:3 resolution like 640x480) both horPad and vertPad are 0. If you play at 1680x1050 (16:10 resolution) and your windowDef Desktop is 640x480 (the default), horPad is 64 (and vertPad is 0), because there are 64 virtual pixels between the left window border and a centered 640x480 windowDef (and also between the centered windowDef and the right window border. gui::horPad and gui::vertPad are useful for filling those otherwise empty padding areas with windowDefs that you anchor to the corresponding points of the window (like CST_ANCHOR_LEFT and CST_ANCHOR_RIGHT when there's horizontal padding) that have just the right size. Example of a green rectangle filling parts of the left padding area, but not touching the center area (10 virtual pixels distance): windowDef leftPadFiller { cstAnchor CST_ANCHOR_LEFT rect 0, 200, "gui::horPad" - 10, 40 backColor 0, 1, 0, 1 } --- neo/ui/UserInterface.cpp | 56 +++++++++++++++++++++++++++++++++++++ neo/ui/UserInterfaceLocal.h | 11 ++++++++ 2 files changed, 67 insertions(+) diff --git a/neo/ui/UserInterface.cpp b/neo/ui/UserInterface.cpp index beda9a29..ad4ae59d 100644 --- a/neo/ui/UserInterface.cpp +++ b/neo/ui/UserInterface.cpp @@ -251,6 +251,8 @@ idUserInterfaceLocal::idUserInterfaceLocal() { //so the reg eval in gui parsing doesn't get bogus values time = 0; refs = 1; + timeStamp = 0; + lastGlWidth = lastGlHeight = 0; } idUserInterfaceLocal::~idUserInterfaceLocal() { @@ -527,6 +529,18 @@ void idUserInterfaceLocal::Redraw( int _time ) { return; } if ( !loading && desktop ) { + if ( desktop->GetFlags() & WIN_MENUGUI ) { + // if the (SDL) window size has changed, calculate and set the + // "gui::horPad" and "gui::vertPad" window variables accordingly + if ( MaybeSetPaddingWinVars() ) { + // tell the GUI script about it in case it wants to handle the size change in + // some way (though usually it's enough to use sth like + // `rect 0, 200, "gui::horPad", 100"` and `cstAnchor CST_ANCHOR_LEFT` + // for a windowDef that should fill part of the left side) + HandleNamedEvent( "UpdateWindowSize" ); + } + } + time = _time; uiManagerLocal.dc.PushClipRect( uiManagerLocal.screenRect ); desktop->Redraw( 0, 0 ); @@ -629,6 +643,12 @@ const char *idUserInterfaceLocal::Activate(bool activate, int _time) { Sys_SetInteractiveIngameGuiActive( activate, this ); } // DG end activateStr = ""; + + if ( desktop->GetFlags() & WIN_MENUGUI ) { + // DG: calculate and set the "gui::horPad" and "gui::vertPad" + // window variables so the GUI can use them + MaybeSetPaddingWinVars(true); + } desktop->Activate( activate, activateStr ); return activateStr; } @@ -819,3 +839,39 @@ void idUserInterfaceLocal::SetCursor( float x, float y ) { cursorX = x; cursorY = y; } + + +bool idUserInterfaceLocal::MaybeSetPaddingWinVars(bool force) { + if ( desktop == NULL ) { + return false; + } + int glWidth, glHeight; + renderSystem->GetGLSettings(glWidth, glHeight); + if (glWidth <= 0 || glHeight <= 0 || (!force && glWidth == lastGlWidth && glHeight == lastGlHeight) ) { + return false; + } + lastGlWidth = glWidth; + lastGlHeight = glHeight; + + float glAspectRatio = (float)glWidth / (float)glHeight; + const float vidAspectRatio = (float)VIRTUAL_WIDTH / (float)VIRTUAL_HEIGHT; + + const float desktopWidth = desktop->forceAspectWidth; + const float desktopHeight = desktop->forceAspectHeight; + + float horizPadding = 0; + float vertPadding = 0; + + if (glAspectRatio >= vidAspectRatio) { + float modWidth = desktopHeight * glAspectRatio; + horizPadding = 0.5f * (modWidth - desktopWidth); + } else { + float modHeight = desktopWidth / glAspectRatio; + vertPadding = 0.5f * (modHeight - desktopHeight); + } + + SetStateFloat( "horPad", horizPadding ); + SetStateFloat( "vertPad", vertPadding ); + + return true; +} diff --git a/neo/ui/UserInterfaceLocal.h b/neo/ui/UserInterfaceLocal.h index f9df12d0..5ba0e743 100644 --- a/neo/ui/UserInterfaceLocal.h +++ b/neo/ui/UserInterfaceLocal.h @@ -115,6 +115,17 @@ private: int time; int refs; + + // DG: used so we can notify GUI scripts about changes in side padding. + // Relevant if they use cstAnchor, so they can know how big padding on the left/right + // or above/below a centered windowDef with full 640x480 size is. + // Then they can adjust the sizes of windowDefs anchored to left/right or upper/lower borders + // to fill up the gap + // if force=true, the variables are set no matter if the size has changed or not + // returns true if the windowSize has changed and thus the variables were updated, otherwise false + bool MaybeSetPaddingWinVars(bool force=false); + int lastGlWidth; + int lastGlHeight; }; class idUserInterfaceManagerLocal : public idUserInterfaceManager { From 15285e268a0989fcdbd9da00a898cf8f204e36b0 Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Fri, 21 Feb 2025 00:44:17 +0100 Subject: [PATCH 7/9] Allow using both naturalmatscale and matscalex/y in GUIs So far one could only use either naturalmatscale or matscalex/matscaley. Just "naturalmatscale 1" lets a texture repeat in its native size, i.e. if you have a 64x32 texture and a 320x160 (in the 640x480 GUI coordinate system) windowDef, it will be repeated 5 times in each direction. If you resize the windowDef to 384x160, it will repeat the texture 6 times horizontally (and still 5 times vertically). matscalex/y allow scaling that texture. If both values are set to 2, (and naturalmatscale to 1) the 64x32 texture in a 384x160 windowDef will be repeated 12 times horizontally and 10 times vertically, at half the size per direction. Without naturalmatscale it would be repeated 2 times in each direction, no matter how big the windowDef is. --- neo/ui/SimpleWindow.cpp | 6 ++++-- neo/ui/Window.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/neo/ui/SimpleWindow.cpp b/neo/ui/SimpleWindow.cpp index b5099b2e..4e5f2d10 100644 --- a/neo/ui/SimpleWindow.cpp +++ b/neo/ui/SimpleWindow.cpp @@ -180,8 +180,10 @@ void idSimpleWindow::DrawBackground(const idRectangle &drawRect) { if (matColor.w() > 0) { float scalex, scaley; if ( flags & WIN_NATURALMAT ) { - scalex = drawRect.w / background->GetImageWidth(); - scaley = drawRect.h / background->GetImageHeight(); + // DG: now also multiplied with matScalex/y, don't see a reason not to support that + // (it allows scaling a tiled background image) + scalex = (drawRect.w / background->GetImageWidth()) * matScalex; + scaley = (drawRect.h / background->GetImageHeight()) * matScaley; } else { scalex = matScalex; scaley = matScaley; diff --git a/neo/ui/Window.cpp b/neo/ui/Window.cpp index 502592d3..657d12db 100644 --- a/neo/ui/Window.cpp +++ b/neo/ui/Window.cpp @@ -1160,8 +1160,10 @@ void idWindow::DrawBackground(const idRectangle &drawRect) { if ( background && matColor.w() ) { float scalex, scaley; if ( flags & WIN_NATURALMAT ) { - scalex = drawRect.w / background->GetImageWidth(); - scaley = drawRect.h / background->GetImageHeight(); + // DG: now also multiplied with matScalex/y, don't see a reason not to support that + // (it allows scaling a tiled background image) + scalex = (drawRect.w / background->GetImageWidth()) * matScalex; + scaley = (drawRect.h / background->GetImageHeight()) * matScaley; } else { scalex = matScalex; scaley = matScaley; From c41ac185ccca41fcd694ef75df0b0d106d0e2cc4 Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Sun, 23 Feb 2025 06:33:27 +0100 Subject: [PATCH 8/9] Rename variables and Named Event for GUI scripts, add more such vars "gui::horPad" is now called "gui::cstHorPad", "gui::vertPad" is now called "gui::cstVertPad", so it's clearer that they belong to the CST anchor system. I also added "gui::cstAspectRatio", the aspect ratio of screen or Doom3's window resolution (when using windowed mode). Furthermore "gui::cstWidth" and "gui::cstHeigh" with the screen (or Doom3 window) resolution in *virtual* pixels, based on that GUI 640x480 coordinate system. For widescreen resolutions, "gui::cstHeight" is always 480 and "gui::cstWidth" is scaled according to the aspect ratio (>640). For tall resolutions, "gui::cstWidth" is always 640 and "gui::cstHeight" is scaled according to the aspect ratio (> 480). --- neo/ui/UserInterface.cpp | 29 +++++++++++++++++------------ neo/ui/UserInterfaceLocal.h | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/neo/ui/UserInterface.cpp b/neo/ui/UserInterface.cpp index ad4ae59d..cc02dec7 100644 --- a/neo/ui/UserInterface.cpp +++ b/neo/ui/UserInterface.cpp @@ -531,13 +531,13 @@ void idUserInterfaceLocal::Redraw( int _time ) { if ( !loading && desktop ) { if ( desktop->GetFlags() & WIN_MENUGUI ) { // if the (SDL) window size has changed, calculate and set the - // "gui::horPad" and "gui::vertPad" window variables accordingly - if ( MaybeSetPaddingWinVars() ) { + // "gui::cst*" window register variables accordingly + if ( MaybeSetCstWinRegs() ) { // tell the GUI script about it in case it wants to handle the size change in // some way (though usually it's enough to use sth like - // `rect 0, 200, "gui::horPad", 100"` and `cstAnchor CST_ANCHOR_LEFT` + // `rect 0, 200, "gui::cstHorPad", 100"` and `cstAnchor CST_ANCHOR_LEFT` // for a windowDef that should fill part of the left side) - HandleNamedEvent( "UpdateWindowSize" ); + HandleNamedEvent( "CstScreenSizeChange" ); } } @@ -645,9 +645,9 @@ const char *idUserInterfaceLocal::Activate(bool activate, int _time) { activateStr = ""; if ( desktop->GetFlags() & WIN_MENUGUI ) { - // DG: calculate and set the "gui::horPad" and "gui::vertPad" - // window variables so the GUI can use them - MaybeSetPaddingWinVars(true); + // DG: calculate and set the "gui::cst*" window register variables + // so the GUI can use them + MaybeSetCstWinRegs(true); } desktop->Activate( activate, activateStr ); return activateStr; @@ -841,7 +841,7 @@ void idUserInterfaceLocal::SetCursor( float x, float y ) { } -bool idUserInterfaceLocal::MaybeSetPaddingWinVars(bool force) { +bool idUserInterfaceLocal::MaybeSetCstWinRegs(bool force) { if ( desktop == NULL ) { return false; } @@ -861,17 +861,22 @@ bool idUserInterfaceLocal::MaybeSetPaddingWinVars(bool force) { float horizPadding = 0; float vertPadding = 0; + float modWidth = desktopWidth; + float modHeight = desktopHeight; if (glAspectRatio >= vidAspectRatio) { - float modWidth = desktopHeight * glAspectRatio; + modWidth = desktopHeight * glAspectRatio; horizPadding = 0.5f * (modWidth - desktopWidth); } else { - float modHeight = desktopWidth / glAspectRatio; + modHeight = desktopWidth / glAspectRatio; vertPadding = 0.5f * (modHeight - desktopHeight); } - SetStateFloat( "horPad", horizPadding ); - SetStateFloat( "vertPad", vertPadding ); + SetStateFloat( "cstAspectRatio", glAspectRatio ); + SetStateFloat( "cstWidth", modWidth ); + SetStateFloat( "cstHeight", modHeight ); + SetStateFloat( "cstHorPad", horizPadding ); + SetStateFloat( "cstVertPad", vertPadding ); return true; } diff --git a/neo/ui/UserInterfaceLocal.h b/neo/ui/UserInterfaceLocal.h index 5ba0e743..3c4f7f49 100644 --- a/neo/ui/UserInterfaceLocal.h +++ b/neo/ui/UserInterfaceLocal.h @@ -123,7 +123,7 @@ private: // to fill up the gap // if force=true, the variables are set no matter if the size has changed or not // returns true if the windowSize has changed and thus the variables were updated, otherwise false - bool MaybeSetPaddingWinVars(bool force=false); + bool MaybeSetCstWinRegs(bool force=false); int lastGlWidth; int lastGlHeight; }; From 8a6cef6c7120329f3194e7f18504770020c11f8b Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Sun, 23 Feb 2025 21:39:56 +0100 Subject: [PATCH 9/9] Add documentation about dhewm3's enhancements of the Doom3 GUI system --- docs/GUIs.md | 791 ++++++++++++++++++++++ docs/img/d3gui-cst-bl-high.svg | 61 ++ docs/img/d3gui-cst-center-high.png | Bin 0 -> 19910 bytes docs/img/d3gui-cst-center-wide.png | Bin 0 -> 22558 bytes docs/img/d3gui-cst-cl-high.svg | 61 ++ docs/img/d3gui-cst-left-high.png | Bin 0 -> 14261 bytes docs/img/d3gui-cst-left-wide.png | Bin 0 -> 60813 bytes docs/img/d3gui-cst-tc-wide.svg | 63 ++ docs/img/d3gui-cst-tl-43.png | Bin 0 -> 9577 bytes docs/img/d3gui-cst-tl-high.png | Bin 0 -> 8720 bytes docs/img/d3gui-cst-tl-high.svg | 31 + docs/img/d3gui-cst-tl-wide.png | Bin 0 -> 14722 bytes docs/img/d3gui-cst-tl-wide.svg | 63 ++ docs/img/d3gui-cst-top-43.png | Bin 0 -> 45021 bytes docs/img/d3gui-cst-top-high.png | Bin 0 -> 44835 bytes docs/img/d3gui-cst-top-higher.png | Bin 0 -> 44767 bytes docs/img/d3gui-cst-top-wide.png | Bin 0 -> 11328 bytes docs/img/d3gui-cst-tr-wide.svg | 63 ++ docs/img/d3gui-example-16_9-letterbox.png | Bin 0 -> 21043 bytes docs/img/d3gui-example-16_9.png | Bin 0 -> 29071 bytes docs/img/d3gui-example-4_3.png | Bin 0 -> 19843 bytes 21 files changed, 1133 insertions(+) create mode 100644 docs/GUIs.md create mode 100644 docs/img/d3gui-cst-bl-high.svg create mode 100644 docs/img/d3gui-cst-center-high.png create mode 100644 docs/img/d3gui-cst-center-wide.png create mode 100644 docs/img/d3gui-cst-cl-high.svg create mode 100644 docs/img/d3gui-cst-left-high.png create mode 100644 docs/img/d3gui-cst-left-wide.png create mode 100644 docs/img/d3gui-cst-tc-wide.svg create mode 100644 docs/img/d3gui-cst-tl-43.png create mode 100644 docs/img/d3gui-cst-tl-high.png create mode 100644 docs/img/d3gui-cst-tl-high.svg create mode 100644 docs/img/d3gui-cst-tl-wide.png create mode 100644 docs/img/d3gui-cst-tl-wide.svg create mode 100644 docs/img/d3gui-cst-top-43.png create mode 100644 docs/img/d3gui-cst-top-high.png create mode 100644 docs/img/d3gui-cst-top-higher.png create mode 100644 docs/img/d3gui-cst-top-wide.png create mode 100644 docs/img/d3gui-cst-tr-wide.svg create mode 100644 docs/img/d3gui-example-16_9-letterbox.png create mode 100644 docs/img/d3gui-example-16_9.png create mode 100644 docs/img/d3gui-example-4_3.png diff --git a/docs/GUIs.md b/docs/GUIs.md new file mode 100644 index 00000000..b30b1615 --- /dev/null +++ b/docs/GUIs.md @@ -0,0 +1,791 @@ +# Doom3 GUIs and dhewm3's Extensions + +Doom3 supports creating GUIs in their own scripting language. +They're used for menus like the main menu or the PDA, for the HUD and also for the interactive +(and sometimes non-interactive) user interfaces you see in the game itself. + +iddevnet has an introduction to Doom3 GUIs: https://iddevnet.dhewm3.org/doom3/guis.html +The ModWiki has more information, see https://modwiki.dhewm3.org/GUI_scripting and the linked pages. +Apart from this, the .gui files shipped with Doom3 can be used as a reference. + +[The DarkMod](https://www.thedarkmod.com) has excellent documentation on GUI scripting in their wiki, +see https://wiki.thedarkmod.com/index.php?title=GUI_Scripting_Language and the articles linked there. +Some of the information found there is specific to The DarkMod (due to their own changes +and enhancements), but a lot of it applies to standard Doom3 and dhewm3 as well, and frankly I haven't +seen any better or more comprehensive documentation of this topic yet. + +dhewm3 includes a GUI editor (at least on Windows), but I think it doesn't even support all features +of the original Doom3 GUIs, and it definitely doesn't support dhewm3s extensions. It might however +still be useful to draft your GUI so you can later improve it by editing its script. + +Furthermore, you can find some tutorials at: +* https://www.moddb.com/games/doom-iii/tutorials/doom-3-gui-scripting-tutorials +* https://www.moddb.com/games/doom-iii/tutorials/creating-a-new-hud +* https://www.moddb.com/games/doom-iii/tutorials/making-a-loading-screen + +The primary purpose of **this article** is to document dhewm3's extensions/improvements to this system. +For this it will also describe some basics, but it is *not* a good introduction to learn GUI scripting, +for that check out the links above. + +## Doom3 GUIs + +The [iddevnet article](https://iddevnet.dhewm3.org/doom3/guis.html) says + +> After working with the Doom 3 GUIs a while you will both love and hate them. + +That is definitely true. On the one hand, Doom3's GUI system is quite powerful, but on the other +hand it is really verbose (the Doom3 main menu script has over 22 thousand lines of code!) and has +annoying limitations. + +The core limitation is that they use a fixed resolution of 640x480 internally, which kinda implies +assuming that players screens have a 4:3 aspect ratio. +*Side note: On the one hand, hardcoding a 4:3 resolution in 2004 isn't that surprising, as back then +most people had a 4:3 CRT display, or maybe a 5:4 LCD display (close enough to still look ok). +On the other hand, [John Carmack already used a 1920x1080 widescreen display in 1995](https://www.themarysue.com/1995-john-carmack-quake-monitor/) +so he could've known better...* + +First some **terminology**: +- **screen:** This will refer to your **actual screen** (and its resolution) if you play in fullscreen mode, + **or the Doom3 (operating-system-level) window** if you play in windowed mode. + So if you play in a 1680x1050 window, the *screen size* (as used in this article) is 1680x1050 + physical pixels, even if your actual screen (display) is 1920x1200 or whatever. I call this + screen (size) instead of window (size) to avoid confusion between Doom3's window and the windows + *within* Doom3 that are created with GUI scripts. +- **physical pixel:** One actual pixel on your display. If you play at FullHD resolution, Doom3 has + 1920x1080 physical pixels. GUI scripts are completely unaware of physical pixels. +- **virtual pixel:** (My word for) a virtual pixel within Doom3's 640x480 GUI coordinate system, + does (usually) not correspond to just one physical pixel. All coordinates and sizes of UI elements + in Doom3 GUIs are in virtual pixels. +- **ingame GUI:** a GUI in the game, rendered onto ingame geometry, like panels that open doors. +- **fullscreen GUI:** a GUI that's rendered "flatly" on the screen, not within the game world. + Examples: HUD, main menu, PDA, crosshair +- **menu:** *Interactive* fullscreen GUI like the main menu or the PDA: Unlike *non-interactive* + fullscreen GUIs (like HUD, crosshair) you get a mouse cursor when they're shown, so you can click things. + +640x480 does *not* mean that it's necessarily pixelly: You can use images with higher resolutions and +when the GUI is scaled up for your display, the images (and lines and fonts) are rendered at the +current resolution. And because the GUIs use floats to represent coordinates, you can position GUI +elements at arbitrary (within 640x480 ...) positions like `20.5, 54.321`. + +*By the way:* The coordinate `(0, 0)` represents the upper left corner of the Doom3 window (or screen +in fullscreen mode, or ingame display for ingame GUIs), and `(640, 480)` lower right corner. + +A `rect` represents a rectangle within the GUI, as `rect x_coordinate, y_coordinate, width, height`, +relative to the parent windowDef. +So `rect 50, 30.5, 64, 42` is a rectangle that starts at *x coordinate `50`* (fifty virtual pixels to the right, +from the parents upper left corner), *y coordinate `30.5`* (thirty and a half virtual pixels down) +that is *`64` virtual pixels wide* and has a height of *`42` virtual pixels*. + +Example: + +```c++ +// the outer windowDef is always called Desktop. +// all other windowDefs of this .gui file must be within the Desktop. +windowDef Desktop { + rect 0, 0, 640, 480 // this windowDef fills the whole screen + backcolor 0.5, 0.5, 0.5, 1 // grey background + background "gui/grid1" // a simple 2x2 grid texture, resolution 64x64 pixels + // repeat the texture based on its size and the Desktop size (640x480) + // => it's repeated 10 times to the right and 7.5 times (480/64) down + naturalmatscale 1 + + windowDef Outer { + // this windowDef starts at virtual pixel coordinate (20, 30) + // with a size of 300x300 virtual pixels + rect 20, 30, 300, 300 + backcolor 0, 0, 1, 0.5 // half-translucent blue background + + windowDef Inner { + // this windowDef starts at (global) virtual coordinates (25, 35) + // (because it's contained in and thus placed relative to Outer) + // width: 60 virtual pixels, height: 80 virtual pixels + rect 5, 5, 60, 80 + backcolor 1, 0, 0, 1 // solid red background + } + } +} +``` +This code results in the following GUI (open with `testGUI guis/example.gui`): +![Test GUI 1024x768](img/d3gui-example-4_3.png) + +### Ingame User Interfaces + +GUIs used ingame like *Super Turbo Turkey Puncher 3*, panels to open doors etc aren't too problematic, +because their size doesn't change, **unlike** user's displays (used to be 4:3, now 16:9 or another +widescreen format) or the Doom3 window size in general, which can be set to any resolution. + +Non-4:3 GUIs in the game are a bit of a PITA, but possible (and easy enough once you know how). +Imagine you want to put an interactive 1:2 (portrait mode) display in your level. + +1. Set `rect 0, 0, 240, 480` in your GUI's `windowDef Desktop` and only use that area. +2. In the level editor, create a brush with that aspect ratio (e.g. 64 units high and 32 units wide). +3. On *one* face of that brush, set `textures/common/entityGui`. +4. In the Surface Inspector, click "Fit" and check what values it shows for Horizontal and Vertical + Scale (e.g. 0.5 and 1). +5. Replace the *Horizontal Scale* value with the value of itself multiplied with `640/240` + (e.g. `0.5 * 640/240 = 1.333`; I'll explain the value below). +5. Convert the brush to `func_static`. +6. In the Entity Inspector, add key `gui` and value `guis/myingamethingy.gui` (or however you called it). +7. Done! + +So, why is the horizontal scale multiplied with `640/240` (2.6667)? + +The `entityGui` texture represents a full 640x480 GUI. So if a face is fully covered by that texture +(but only once, without repetitions, like you get when clicking "Fit" in the Surface Inspector), +the whole (virtual 640x480) GUI is shown on the face - and if that face doesn't have a 4:3 aspect ratio, +the GUI will be stretched. + +But you want a 1:2 GUI and thus your `windowDef Desktop` only uses 240 of the 640 virtual pixels as +width (`rect 0, 0, 240, 480`), because 480 * 1/2 = 240. +However, you want these 240/640 virtual pixels to cover the whole face, of course. +To achieve this, the `entityGui` texture must be stretched accordingly, and **the factor to stretch +240 virtual pixels to 640 virtual pixels is 640/240**. So that's the factor the *Horizontal Scale* +must be multiplied with. + +If you instead want a **2:3 GUI**, you'd use `rect 0, 0, 320, 480` (480 * 2/3 = 320) for your Desktop and, +again after fitting the `entityGUI` texture to the face, multiply its *Horizontal Scale* with 320/640. + +If on the other hand you want something **wider** than 4:3, you'd mess with the *vertical* sizes instead. +For example, if you want a **16:9 GUI** in the game, you'd use `rect 0, 0, 640, 360`, because you +want to use the full width (640) and instead decrease the height *(otherwise you'd have to reduce +both width and height, because you can't go higher than 640x480)*. +Height `360` because *640 * 9/16 = 360* (it's 9/16 instead of 16/9 because this time we're modifying +the vertical resolution). +In the *Surface Inspector*, you'd again first click *Fit*, but this time you multiply the +_**Vertical** Scale_ and you'd multiply it with *480/360* (the factor to stretch 360 vertical pixels +to 480 vertical pixels). + +Note that this should work with Vanilla Doom3 as well. + +### Fullscreen GUIs (Menus, HUD) + +Fullscreen GUIs like the main menu and the HUD cause more headaches. As mentioned before, Doom3 +assumes 4:3 resolutions, so when the screen *(or Doom3 window in windowed mode)* has a widescreen +resolution, the menus get stretched. + +The example GUI shown above looks like this on a wide screen: +![](img/d3gui-example-16_9.png) +Note how the background grid is not square and neither is the blue `windowDef`, even though it +has a size of 300x300 virtual pixels. + +You can't just create a widescreen GUI by using the trick described for ingame UIs, because you have +no way to tell Doom3 how to scale the GUI - menus always assume 640x480 and if your desktop is +smaller than that, the rest of the screen will remain black (and it is still stretched). +Besides, your 16:9 widescreen GUI would still only work with 16:9 screens (or windows), not with 4:3 +or 32:9, so what's the point... + +So with Classic Doom3 you're stuck with 4:3 menus that get stretched to whatever aspect ratio +your screen uses. +Luckily, dhewm3 has some improvements :) + +## dhewm3 Extensions for the Doom3 GUI system + +dhewm3 has several features to better support non-4:3 resolutions. + +### Scaling of mMenus to 4:3 with Letter-Boxing + +*dhewm3* scales fullscreen menus like the main menu and the PDA to 4:3 regardless of the resolution, +leaving **black bars on the left and the right**, or if you happen to use a portrait resolution like +9:16, it will have black bars on top and bottom ("Pillar-boxing" or "Letter-boxing"). +This feature is controlled with the `r_scaleMenusTo43` CVar: If set to `1` (the default), fullscreen +menus are scaled to 4:3, setting it to `0` restores the old behavior of stretching the menus over +the whole screen. + +This is what the example GUI from above looks like when letter-boxed (or actually pillar-boxed): +![](img/d3gui-example-16_9-letterbox.png) +*Note: The `testGUI` console command does not support letterboxing, I had to replace the main menu +with the test menu to take this screenshot.* + +For the HUD this unfortunately was not an option, because it also handles fullscreen effects like +tinting the screen red when you're hit, with empty bars on the left/right that would look bad - +so the HUD continued to be stretched *(except for the crosshair, it's a separate GUI that +can be unstretched)*. + +It's possible to explicitly enable scaling to 4:3 for non-interactive fullscreen GUIs (even if it's +not a Menu and thus is not scaled to 4:3 by default) by setting `scaleto43 1` in its `windowDef Desktop`. +This can also be set through code (so I didn't have to ship a modified crosshair GUI script), +like this: + +```c++ + idUserInterface* ui = ...; // wherever it comes from in your code + ui->SetStateBool("scaleto43", true); + ui->StateChanged(gameLocal.time); +``` + +*Note* that you can not generally inject variables into GUIs from C++ like that, dhewm3 has +special code to make the "scaleto43" case work. +Also note that most GUIs except for the main menu store things in savegames, for them this hack +must also be applied after loading a savegame. +See [commit 5070b8c7](https://github.com/dhewm/dhewm3-sdk/commit/5070b8c7ec6f3a8ba1cb4123de37732f9cd9437f) +for a full example. + +Since dhewm3 1.5.5 *(or, if it hasn't been released yet, the current code in Git)* this also works +the other way around: You can set `scaleto43 0` in a GUI's `windowDef Desktop` (or do it via code +as shown above) to explicitly *disable* this scaling and letter-boxing for a menu, even if that +feature is generally enabled (`r_scaleMenusTo43 1`), so that particlar menu *is* stretched over the +whole screen. + +### Aspect-Ratio-Independent GUIs Covering the whole Screen, with CstDoom3's Anchors + +Also since dhewm3 1.5.5 *(or, if it hasn't been released yet, the current code in Git)*, the +"HUD Aspect Correction" code from [CstDoom3 2.0](https://www.moddb.com/mods/cstdoom3) has been +merged and more features were added to that like supporting menus (in CstDoom3 you couldn't properly +click buttons in such a GUI, so it was only used for non-interactive fullscreen GUIs like the HUD). + +CstDoom3 introduced some new "Window Register" variables to windowDefs. +The most important one is **cstAnchor**. It allows "anchoring" windowDefs to specific points of the +screen, so they stay there, no matter what resolution or aspect ratio the screen has. + +There are two types of anchors: +1. Anchors that ensure that the windowDef is always rendered unstretched (like it would on 4:3 screens), + but at specific position of the screen (like top left corner or center) +2. Anchors whose windowDefs are only stretched in one direction and keep their configured size *(as it + would be on 4:3 screen, it's still based on the 640x480 virtual pixel system)* in the other direction. + This allows, for example, to create a windowDef that is centered vertically with a height 120 + virtual pixels, but is stretched over the whole screen horizontally. + +Both kinds of anchors will ensure that an anchored 640x480 `windowDef` always touches at least two +opposing borders of the screen - either the right and left one, or the top and bottom one. +Of course, they may (depending on the kind of anchor and screens aspect ratio) additionally touch +one or both of the other borders as well. + +The full list from `_cst_anchor.pd`, note that when it says "scale to 4:3" it means +*"if the windowDef was 640x480 virtual pixels, it'd always be scaled keep 4:3 aspect ratio".* + +```c +// don't anchor to anything, stretch over whole screen +// (the default, you'll probably don't set this explicitly) +#define CST_ANCHOR_NONE -1 + +// anchor to top left corner, scale to 4:3 +#define CST_ANCHOR_TOP_LEFT 0 +// anchor to top center, scale to 4:3 +#define CST_ANCHOR_TOP_CENTER 1 +// anchor to top right corner, scale to 4:3 +#define CST_ANCHOR_TOP_RIGHT 2 + +// anchor to the center of the left window border, scale to 4:3 +#define CST_ANCHOR_CENTER_LEFT 3 + +// anchor to the center of the screen, scale to 4:3 +// (if used with "rect 0, 0, 640, 480", that will always touch +// either the left/right or upper/lower window borders, +// depending on the aspect ratio of Doom3's current resolution) +#define CST_ANCHOR_CENTER_CENTER 4 + +// anchor to the center of the right window border, scale to 4:3 +#define CST_ANCHOR_CENTER_RIGHT 5 + +// anchor to bottom left corner, scale to 4:3 +#define CST_ANCHOR_BOTTOM_LEFT 6 +// anchor to bottom center, scale to 4:3 +#define CST_ANCHOR_BOTTOM_CENTER 7 +// anchor to bottom right corner, scale to 4:3 +#define CST_ANCHOR_BOTTOM_RIGHT 8 + +// anchor to the top of the screen, stretch over whole width +#define CST_ANCHOR_TOP 9 +// anchor to the vertical center of the screen, stretch over whole width +#define CST_ANCHOR_VCENTER 10 +// anchor to the bottom of the screen, stretch over whole width +#define CST_ANCHOR_BOTTOM 11 + +// anchor to the left border of the screen, stretch over whole height +#define CST_ANCHOR_LEFT 12 +// anchor to the horizontal center of the screen, stretch over whole height +#define CST_ANCHOR_HCENTER 13 +// anchor to the right border of the screen, stretch over whole height +#define CST_ANCHOR_RIGHT 14 +``` + +What does this mean exactly/how does it look like? + +#### Aspect-Ratio-Preserving Anchors + +Simple example: + +```c++ +// this include is needed for the CST_ANCHOR_* constants +#include "guis/_cst_anchor.pd" +windowDef Desktop { + rect 0, 0, 640, 480 + // this disables dhewm3's standard scaling of menus to 4:3 + // so dhewm3 doesn't do letter-boxing the Desktop gets stretched + // over whole screen instead and we can place anchored stuff there. + scaleto43 0 + + // add a grid background with natural scale + // to visualize what is and isn't distorted + background "gui/grid1" + naturalmatscale 1 + + windowDef AnchoredArea { + cstAnchor CST_ANCHOR_TOP_LEFT // where to anchor this area + rect 0, 0, 640, 480 // cover the whole virtual area + backcolor 0, 0, 1, 1 // blue background + // again a grid with natural scale + // (but finer, to easier tell it apart from Desktop grid) + background "gui/grid2" + naturalmatscale 1 + + windowDef URCorner { + // just a yellow square in the lower right corner + rect 580, 420, 50, 50 + backcolor 1, 1, 0, 1 // yellow + } + } +} +``` + +If the screen is tall, anchoring to top-left looks like this: +![](img/d3gui-cst-tl-high.png) + +If the screen is wide, anchoring to top-left looks like this: +![](img/d3gui-cst-tl-wide.png) + +If the screen has 4:3 aspect ratio, anchoring to top-left looks like this: +![](img/d3gui-cst-tl-43.png) + +Note how: +* In non 4:3 modes he `Desktop` is stretched (=> its grid isn't square). +* The `AnchorArea` retains its 4:3 aspect ratio and fills as much of the screen (or dhewm3 window) + as possible without stretching, staying at the *top* or *left* border of the screen, like the name + `CST_ANCHOR_TOP_LEFT` suggests. +* The mouse cursor is not stretched either. +* The `URCorner` child of `AnchoredArea` always is where it should be (moves and scales with its parent). +* When the screen has a 4:3 resolution, the `AnchoredArea` has the same size as the `Desktop` + and covers it completely. + - This is true for **all** anchor types: A 640x480 windowDef always covers the whole screen if the + screen has a 4:3 resolution. + +All aspect-ratio preserving anchors (as schematics): + +* `CST_ANCHOR_TOP_LEFT`: + ![](img/d3gui-cst-tl-high.svg) ![](img/d3gui-cst-tl-wide.svg) +* `CST_ANCHOR_TOP_CENTER`: + ![](img/d3gui-cst-tl-high.svg) ![](img/d3gui-cst-tc-wide.svg) +* `CST_ANCHOR_TOP_RIGHT`: + ![](img/d3gui-cst-tl-high.svg) ![](img/d3gui-cst-tr-wide.svg) +* `CST_ANCHOR_CENTER_LEFT`: + ![](img/d3gui-cst-cl-high.svg) ![](img/d3gui-cst-tl-wide.svg) +* `CST_ANCHOR_CENTER_CENTER`: + ![](img/d3gui-cst-cl-high.svg) ![](img/d3gui-cst-tc-wide.svg) +* `CST_ANCHOR_CENTER_RIGHT`: + ![](img/d3gui-cst-cl-high.svg) ![](img/d3gui-cst-tr-wide.svg) +* `CST_ANCHOR_BOTTOM_LEFT`: + ![](img/d3gui-cst-bl-high.svg) ![](img/d3gui-cst-tl-wide.svg) +* `CST_ANCHOR_BOTTOM_CENTER`: + ![](img/d3gui-cst-bl-high.svg) ![](img/d3gui-cst-tc-wide.svg) +* `CST_ANCHOR_BOTTOM_RIGHT`: + ![](img/d3gui-cst-bl-high.svg) ![](img/d3gui-cst-tr-wide.svg) + +#### Stretching Anchors + +These anchors do *not* preserve the aspect ratio of a windowDef, but stretch it over the whole screen, +either horizontally or vertically. +If it's stretched horizontally, then its height will be the same as it would for an unstretched counterpart +and if it's stretched vertically, its width will be the same as it would be for an unstretched counterpart. + +##### Horizontally Stretching Anchors + +Here's an example showing both a stretched `CST_ANCHOR_TOP` area and, for comparison, another area +over it that's anchored to the top left corner (in an aspect-ratio preserving way). + +```c++ +#include "guis/_cst_anchor.pd" +windowDef Desktop { + scaleto43 0 + + rect 0, 0, 640, 480 // cover the whole screen + backcolor 0.5, 0.5, 0.5, 1 // grey background + menugui 1 // this is a fullscreen menu + + background "gui/grid1" // grid background to show what is and isn't distorted + naturalmatscale 1 // natural scale so when the windowDef isn't stretched, the grid is square + + windowDef AnchoredArea { + cstAnchor CST_ANCHOR_TOP // this area is anchored to the top border of the screen + rect 0, 0, 640, 480 // cover the whole virtual area + backcolor 0, 0, 1, 1 // blue background + background "gui/grid2" // again a grid (but finer, to easier tell it apart from Desktop grid) + naturalmatscale 1 // again natural scale + + windowDef URCorner { + // yellow square in lower right corner of this are + // (well, it's square when this windowDef isn't stretched) + rect 580, 420, 50, 50 + backcolor 1, 1, 0, 1 // yellow + } + } + + windowDef AnchoredAreaNotStretched { + // half-translucent full-sized area anchored to top left corner, + // it's aspect ratio is preserved. will look green on the blue background + cstAnchor CST_ANCHOR_TOP_LEFT + rect 0, 0, 640, 480 + backcolor 1, 1, 0, 0.5 // it's half translucent yellow + // Note: this one doesn't have it's own grid, at this point you hopefully believe + // that this kind of anchor preserves the aspect ratio ;) + } +} +``` + +Here's what it looks like at different screen aspect ratios: + +![](img/d3gui-cst-top-wide.png) +![](img/d3gui-cst-top-high.png) ![](img/d3gui-cst-top-higher.png) +![](img/d3gui-cst-top-43.png) + +The half-translucent yellow (and thus green) area is the unstretched comparison area that uses +`CST_ANCHOR_TOP_LEFT`, the blue one with the grid (that looks green where covered by the former one) +is the area that uses the stretching `CST_ANCHOR_TOP`. +As before, the grey area with the bigger grid is the `windowDef Desktop` area that's stretched over +the whole screen. + +Note how: + +* For wide screen resolutions, `CST_ANCHOR_TOP` behaves just like using no anchor at all: + It gets stretched horizontally. That's why the grey background is not visible at all + on the wide screenshot (and the 4:3 screenshot). +* For tall screen resolutions, `CST_ANCHOR_TOP` behaves just like `CST_ANCHOR_TOP_LEFT` + (or top center or top right): It's a 4:3 area filling the top of the screen (that's why the top area + is green on those screenshots: The half-translucent yellow area completely covers the blue area). +* Like with all anchors, at 4:3 screen resolutions, a 640x480 `windowDef` using `CST_ANCHOR_TOP` + fills the whole screen. + +When using `CST_ANCHOR_VCENTER` for the blue area (`AnchoredArea`) and `CST_ANCHOR_CENTER_RIGHT` +for the yellow/green area (`AnchoredAreaNotStretched`), it looks like this: + +![](img/d3gui-cst-center-wide.png) +![](img/d3gui-cst-center-high.png) + +*(Note that the wide version looks a bit different because this time I anchored the unstretched +yellow/green `windowDef` to the right instead of to the left.)* + +* For wide screen resolutions, `CST_ANCHOR_VCENTER` just fills the whole screen, stretched horizontally + (just like `CST_ANCHOR_TOP` and `CST_ANCHOR_BOTTOM` or no anchor at all). +* For tall screen resolutions, `CST_ANCHOR_VCENTER` behaves just like `CST_ANCHOR_CENTER_RIGHT` + (or `CST_ANCHOR_CENTER_LEFT` or `CST_ANCHOR_CENTER_CENTER`): It's a 4:3 area that uses the full + width and the height that preserves the 4:3 aspect ratio for that width. +* This means that `CST_ANCHOR_VCENTER` always has the same height and vertical position as the + `CST_ANCHOR_CENTER_*` anchors *(if their `windowDef` has same the rect...)*, but may be wider. + - **Generally:** For the same screen resolution, all the aspect-ratio-preserving anchors and the + anchors that stretch horizontally have the same height if their windowDefs use the same rect. + +##### Vertically Stretching Anchors + +The remaining anchors (`CST_ANCHOR_LEFT`, `CST_ANCHOR_HCENTER`, `CST_ANCHOR_RIGHT`) stretch vertically. + +Example with `CST_ANCHOR_LEFT` for the blue area and `CST_ANCHOR_BOTTOM_LEFT` for the +aspect-ratio preserving yellow/green area with the finer grid - *Note* that the *solid yellow square* +is part/a child of the blue area, though! + +![](img/d3gui-cst-left-wide.png) +![](img/d3gui-cst-left-high.png) + +Observations: + +* For wide resolutions, `CST_ANCHOR_LEFT` behaves the same as `CST_ANCHOR_BOTTOM_LEFT` + (or `CST_ANCHOR_CENTER_LEFT` or `CST_ANCHOR_TOP_LEFT`): A 4:3 area that uses the full height and + the corresponding width that preserves the aspect ratio, aligned to the left border of the screen. +* For tall resolutions, it has the same *width* as `CST_ANCHOR_BOTTOM_LEFT`, but the *height* + stretches over the whole screen, looking the same as using no anchor at all. + +**Generally:** `CST_ANCHOR_LEFT`, `CST_ANCHOR_HCENTER`, `CST_ANCHOR_RIGHT` use the same width as +the aspect-ratio preserving anchors (that use the same `rect`), but their height is stretched to +use the full height of the screen. + +As you probably already guessed, for tall screens `CST_ANCHOR_LEFT`, `CST_ANCHOR_HCENTER` and +`CST_ANCHOR_RIGHT` behave the same, but for wide screen they're anchored to different horizontal +positions (left border, right border or center). + +#### Summary for Basic Usage of CstDoom3 Anchors + +What has been presented so far already lets you place GUI elements (`windowDefs` or other widgets) +on all parts of the screen, without them getting stretched (or only getting stretched in one direction). + +Keep in mind that you always operate in that 640x480 virtual pixel coordinate system, no matter +where your `windowDef` is anchored. +This means for example that, just like in "classic" Doom3 GUIs, if you want to place a 100x50 rectangle +centered at the right screen border, your `windowDef` needs to use `rect 540, 215, 100, 50`: + +* x position `540` because it should start 100 virtual pixels left of the right screen border, which + has x position 540 (640-100 = 540). +* y position `215` because the virtual height is 480 virtual pixels, so center is at 240 pixels + and to center that rectangle with height 50 there you have to go 25 pixels up: 480/2 - 50/2 = 215 + +It's just that, unlike in original Doom3, you can now anchor that to `CST_ANCHOR_CENTER_RIGHT`, so +your rectangle is always at the center of the right border *with the correct aspect ratio* +(i.e. unstretched), no matter what aspect ratio your screen uses. + +Some other basic things: + +* Don't forget to `#include "guis/_cst_anchor.pd"` at the beginning of your GUI script if you want + to use the anchors. + - This also means that you need to make sure you have that file in the first place ;) +* In dhewm3, remember to set `scaleto43 0` in your `windowDef Desktop` if you want to use anchors, + so you can use the whole screen (no letterboxing). +* You should only set `cstAnchor` in `windowDefs` that are direct children of `windowDef Desktop`. + - **But** not in the `Desktop` itself! +* All child defs of an anchored `windowDef` (another `windowDef` or `listDef` or `choiceDef` etc) + are automatically anchored to the same point and scaled in the same way etc, so you can write them + just like you would in a "classic" Doom3 GUI. +* The `cst_hudAdjustAspect` CVar enables/disables (all) anchoring. In CstDoom3 it's disabled (`0`) by + default, in dhewm3 it's enabled (`1`) by default. If anchoring is disabled, anchored windowDefs are + still rendered, but they'll be stretched and positioned just like they would if you hadn't set an anchor. +* In CstDoom3 you can only use anchors for non-interactive GUIs (like the HUD), dhewm3 also allows + using anchors in fullscreen menus like that main menu, the PDA or the restart window. +* You can easily test your GUIs by entering `testGUI guis/mygui.gui` in the console (adjust the path + and name of your GUI accordingly). Pressing `Esc` exits it. +* If you have edited your GUI, you don't have to restart Doom3, you can just enter `reloadGuis` in + the console and they will be reloaded so you can test your latest changes. + +### More CstDoom3 Anchor Features + +CstDoom3 introduced two more features that I haven't mentioned yet. + +#### `cstAnchorTo` and `cstAnchorFactor` for Transitions between Anchors + +Two new Window Register variables I haven't mentioned yet are **`cstAnchorTo`** and **`cstAnchorFactor`**. +To be honest, I haven't used them myself yet so I'll just post the description that *fva*, +the CstDoom3 author, sent us: + +> Besides `cstAnchor`, there are two other "Window Register" variables: `cstAnchorTo` and `cstAnchorFactor`. +> These should be used if you want to transition a window smoothly from one anchor to another. +> `cstAnchorTo` is the destination anchor and can be assigned any of the values that can be assigned +> to `cstAnchor`. +> `cstAnchorFactor` is a number from 0.0 to 1.0 that controls the interpolation between `cstAnchor` +> and `cstAnchorTo`. If `cstAnchorTo` is set to `CST_ANCHOR_NONE` (this is the default), then the +> interpolation scheme is disabled. In CstDoom3, these variables are used to handle the hud +> animations when picking up a pda or video disc, and when a new email is received (like when you +> click on Download on those monitors in Mars City 1). +> After the interpolation is complete (that is, after you varied `cstAnchorFactor` from 0 to 1), +> you should change `cstAnchor` to the destination value (that is, the value assigned to +> `cstAnchorTo`) and then set `cstAnchorTo` to `CST_ANCHOR_NONE`. + +#### `cstNoClipBackground` to Break Out of Parent `windowDef` + +The **second** feature is that you can set **`cstNoClipBackground 1`** as "Window Register" variable +of a `windowDef`. +It allows a `windowDef` to be bigger than its parent, without being cut off at the parent's borders. +This even allows you to use more than 640x480 virtual pixels after all! (Not for the `Desktop` though.) + +Virtual pixels still have the same size as before, but for example if your `windowDef` is anchored +to the left border, you could use X coordinates > 640 to render things that will only be visible +in widescreen modes. In fact, it's even possible to use negative X coordinates to enhance the `windowDef` +to the left (more useful when anchored to the right screen border or the center). + +**However** you should **_not_ use `cstNoClipBackground`** with windowDefs that +**interact with the mousecursor!** +The cursor coordinates will be wonky and it probably won't work very well. +I'd suggest using `cstNoClipBackground 1` only together with `noevents 1`. + +I think it's still very useful for backgrounds and similar non-interactive elements of the GUI. +In fact, what would be the point in using it for interactive ones - buttons etc tend to be a lot +smaller and are better suited to be anchored to specific locations. + +But then again - this could be a lot more useful if we knew the aspect ratio or screen size, right? +This leads us to the next chapter.. + +### dhewm3 Extensions for the Anchor System + +Two changes that don't need much explaining are that in dhewm3, unlike in CstDoom3, you can use +anchors in interactive GUIs (that have clickable buttons etc) and that anchored renderDefs have the +correct aspect-ratio. + +#### New GUI Variables for Anchoring + +Another change is that there are some new GUI variables that are set (and updated) from the engine +code based on the current screen resolution: + +* `gui::cstAspectRatio`: The screen aspect ratio (for 16:9 it's 16/9 = 1.7777). +* `gui::cstWidth`: The screen width in unstretched **virtual** pixels. + - For aspect ratios **wider** than 4:3, it's `480 * gui::cstAspectRatio`, otherwise just `640`. +* `gui::cstHeight`: The screen height in unstretched **virtual** pixels. + - For aspect ratios **narrower** than 4:3, it's `640 / gui::cstAspectRatio`, otherwise just `480`. +* `gui::cstHorPad`: The horizontal padding between the left or right screen border and a 640x480 + `windowDef` anchored to `CST_ANCHOR_CENTER_CENTER`. It's just `(gui::cstWidth - 640)/2`, + provided for convenience. + - For tall screen resolutions, it's `0`. +* `gui::cstVertPad`: The vertical padding between the top or bottom screen border and a 640x480 + `windowDef` anchored to `CST_ANCHOR_CENTER_CENTER`. It's just `(gui::cstHeight - 480)/2`, + provided for convenience. + - For widescreen resolutions, it's `0`. + +A nice thing about Doom3 GUIs is that you can use these variables in windowDefs, and those +will be updated automatically when the variable changes (well, at least for the `rect`, didn't test +it for anything else). +With this you can do neat things like this: + +```c++ +#include "guis/_cst_anchor.pd" +windowDef Desktop { + rect 0, 0, 640, 480 // cover the whole screen + scaleto43 0 // no letterboxing + backcolor 0, 0, 0, 1 // black, or whatever + menugui 1 + + windowDef BackGround { + cstAnchor CST_ANCHOR_TOP_LEFT + rect 0, 0, "gui::cstWidth", "gui::cstHeight" + cstNoClipBackground 1 // so this windowDef can actually be > 640x480.. + noevents 1 // .. which means it should take no events + + // set a texture that tiles (repeats endlessly and seamlessly in both directions) + background "gui/grid1" + + // this makes the texture repeat based on its size (in real pixels) + // and the windowDefs size (in virtual pixels), + // preserving the textures aspect ratio + naturalmatscale 1 + } + + // ... your other windowDefs with buttons and whatever else your GUI needs +} +``` + +This sets an unstretched(!) background texture over the whole screen, repeating as aften as +necessary to fit the screen. Wouldn't have been possible without the new variables and CstDoom3's +anchor system! + +Another usecase is to display things only in the "letter-box" bars, if you anchor the main part +of your menu to the center (especially useful when modifying existing comples GUIs, like the Doom3 +mainmenu, to be widescreen-friendly). For example, if your existing menu has a half-translucent +grey bar on the bottom of the centered area (kinda like the doom3 main menu...), and you want to +continue that to the borders of the screen, you could add something like: + +```c++ + windowDef LowerGreyBarLeft { + cstAnchor CST_ANCHOR_CENTER_LEFT + // assuming the position is 400 virtual pixels down + // and it should be 40 virtual pixels high + rect 0, 400, "gui::cstHorPad", 40 + + // in case the screen is so wide that the left bar + // is wider than 640 virtual pixels + cstNoClipBackground 1 + // no events with cstNoClipBackground; this is just for optics anyway + noevents 1 + backcolor 0.6, 0.6, 0.6, 0.2 // or whatever color + } + + windowDef LowerGreyBarRight { + cstAnchor CST_ANCHOR_CENTER_RIGHT + // again, 400 virtual pixels down, 40 virtual pixels wide + rect 640 - "gui::cstHorPad", 400, "gui::cstHorPad", 40 + + cstNoClipBackground 1 // stretch as wide as needed + noevents 1 + backcolor 0.6, 0.6, 0.6, 0.2 // or whatever color + } +``` + +If the screen has an aspect ratio of 4:3 or narrower (taller), `"gui::cstHorPad"` will be `0` +and those windowDefs will be invisible. + +Also note how you can't only use the variable in the rect, but even do calculations with it, +like `640 - "gui::cstHorPad"`! Pretty cool IMHO (and Doom3 already supported this, dhewm3 only +added new variables). + +#### New Named Event CstScreenSizeChange + +Related to the new variables, dhewm3 adds a new Named Event `CstScreenSizeChange` that gets +called whenever the variables are updated (i.e. the screen/Doom3 window has been resized or +resolution switched). +Note that it does not get called before (or when) the GUI is opened/activated, but only if the +screen size changes while the GUI is opened. +You can use it if you want to do specific things when the aspect ratio has changed, that can't be +handled by just the automatically updated `windowDef` `rect` using the variables. + +Example: + +```c++ + onNamedEvent CstScreenSizeChange { + set "print" "Called CstScreenSizeChange - Width:" "gui::cstWidth" "Height:" "gui::cstHeight"; + // and show or hide elements or whatever you want to do here + } +``` + +#### Debug Printing from Scripts into Doom3 Console + +Oh right, this **debug printing function** with `set "print"` has also been added to dhewm3, it will +print lines like +`GUI debug: Called CstScreenSizeChange - Width: 768.000000 Height: 480.000000` +to the Doom3 Console (and dhewm3log.txt). + +It can be used in event handlers (all those `onWhatever` things like `onActivate`, `onAction` etc) +and can have an arbitrary number of arguments of any kind (literals, variables,windowDef properties, ...) +or type (strings, floats, rects, colors, vec4, ...). +Example: + +```c++ +#include "guis/_cst_anchor.pd" +windowDef Desktop { + rect 0, 0, 640, 480 + scaleto43 0 + menugui 1 + backcolor 0.5, 0.5, 0.5, 1 + + windowDef SomethingAnchored { + // just a blue rect that's always 20 virtual pixels from the borders + cstAnchor CST_ANCHOR_TOP_LEFT + rect 20, 20, "gui::cstWidth" - 40, "gui::cstHeight" - 40 + cstNoClipBackground 1 + noevents 1 + backcolor 0, 0, 1, 1 + } + + windowDef Button { + cstAnchor CST_ANCHOR_CENTER_CENTER + rect 100, 50, 200, 50 + backcolor 1, 0, 0, 1 + text "Click me!" + + onAction { + set "print" "Just some string, now a number:" 42 "blue rect:" "$SomethingAnchored::rect" + "aspectratio:" "gui::cstAspectRatio" "my color:" "$backcolor"; + } + } +} +``` + +Which, when clicking the button, prints something like: +`GUI debug: Just some string, now a number: 42 blue rect: 20 20 728 440 aspectratio: 1.600000 my color: 0.5 0.5 0.5 1` + +#### Using `naturalmatscale` with `matscalex` and `matscaley` + +So far one could only use *either* `naturalmatscale` *or* `matscalex`/`matscaley`. + +`"naturalmatscale 1"` lets a texture repeat in its native size, so if you have a 64x32 texture +and a 320x160 windowDef, it will be repeated 5 times in each direction. +If you resize the windowDef to 384x160, it will repeat the texture 6 times horizontally +(and still 5 times vertically). + +In dhewm3 1.5.5 *(or current git..)*, `matscalex`/`matscaley` allow scaling that texture. +If both values are set to 2, (and `naturalmatscale` to `1`) the 64x32 texture in a 384x160 windowDef +will be repeated 12 times horizontally and 10 times vertically, at half the size per direction. +*Without* `naturalmatscale` it would be repeated 2 times in each direction, no matter how big +the windowDef is. + +### Hints for Making Existing GUIs Widescreen-Compatible + +* If you have a complex 4:3 GUI (like Doom3's main menu) it's quite possible that it would be + very hard to make it actually use the whole screenspace, especially interactive stuff like buttons. + **Just anchor them to the center** (`CST_ANCHOR_CENTER_CENTER`) and extend only the background to the + sides (or top/bottom). + It's easiest if you can just put everything (except for the background) in one new + `windowDef CenteredMainArea {...}` that's anchored to the center, but sometimes that's not really + feasible because for example event handlers interact with the background (or event handlers in the + Desktop interact with the stuff that are now in the new `windowDef CenteredMainArea`) and fixing + them all up to use the correct names (for example with `CenteredMainArea::` prepended) would + be too much work. In that case anchor the required top level ones individually. +* If the **mouse cursor looks stretched** *(I think it can happen if the last windowDef isn't anchored?)*, + it helps to put an otherwise empty windowDef at the end of the GUI (last element of + the Desktop) and anchor it to the center (or some other aspect-ratio-preserving point), like: + ```c++ + windowDef FakeDesktop { + rect 0, 0, 640, 480 // full size + cstAnchor CST_ANCHOR_CENTER_CENTER // anchored + // otherwise empty + } + ``` diff --git a/docs/img/d3gui-cst-bl-high.svg b/docs/img/d3gui-cst-bl-high.svg new file mode 100644 index 00000000..953b5ada --- /dev/null +++ b/docs/img/d3gui-cst-bl-high.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + diff --git a/docs/img/d3gui-cst-center-high.png b/docs/img/d3gui-cst-center-high.png new file mode 100644 index 0000000000000000000000000000000000000000..25a82b755fbf8800b3c3b02243e9c367031393fc GIT binary patch literal 19910 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

FO58@04#ag2XCTlY4x>MvG=N1F^kyl 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 E3o_{dA^-pY literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-center-wide.png b/docs/img/d3gui-cst-center-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..df5bce7762b56ae0c14c4a79ed55e18fff885501 GIT binary patch literal 22558 zcmeIa2~-p5+AU1C-Ay~vEh;KPx*b43p&e0%#2EnvnUyIhDgr`8rbtNAj)h@+a?*SFQwzPj=Kci@}UH#I^vwV%|ij~sMH4)7XK zNS9tTTW+Zpl3+ZRa4YD#;LD!Mq=);OztjJD&*tR`%Mpk5l9Q{hWkw#_RsJ^l&Q1gT z!`BD4?mCqj^Zn>;T1Sq563wit^3(Rs&Oh99IJCp{7ZR&3e#hS5;tr%uDoXo~TXC6Y zFZOyo5V9w!n76o!-hn`qqDk{F($BVAZ~Yh_zyB+6Rxh`-^yd=nrsQSyu(ctL%lBK? ziXt&q3{ysq^WL^X)h?bJ!z!wbWPTyfkz28VIx+LOIP0Jnk7r{kFVDn$`Vnu5{3Qfx@OCgdw0M{# z>k4mNZc{&_=f8XIOzetD-g&v1v{J0h6u6Uw|ek9<)HuoUu030B2nKgB58d#Zt*nBiC=0%nsutN9B?4`^#+j z1H`bMcvq{C(g!t z(ClM)h_>6pO`mA0ZcZ%ml=XOMNir)cq#0Ha7r9R4SUxpculiu$$)!V+?_kO@g}9Wm zdy-#Ar5!rL}^70VjVsD(n`vdWo9x zSHpj}8A~ml48kKL@;{PfVPQ&)`H$uN{s}52dRQ~6hYyA2UcY9sSY^?z^=c!NH(nH}k zO2KO16eB}NH@7sq$Iv2QefvAm=_=(1jV}sWU|`QJ=n*=nb9{V!qro?8&p&7hg;nW$ zy9u@RyZawr$>?q|O+idARp!$H=-hcA3viJR{SK{|KAlHJXee6lAL@raLZw z)A@oT(zvFSS@!gjqtq?xl2B4XETF=znK{d`Qf#1W2sJZ&^n)b49bWlK|CL;hQu|Cg zz63qfdRzGr{=|oLj!}l-ccu;1oMNIPBE$10yA1G_7z@NQh;kB^w%JlFDq%AwidP#A z5=>6tHx(x&>38cqaNE-9Pjvd(`eTE>cQ>nql>H^_5S75Ch31BuF}7REqcZsQ{Hr>M zz|N0Oe%($wB;ZhTwfs;`&rY-re#$NuR>ZC!WD@vVs`40pWo<=Qxpbr?Me zKu-}w8v22IMmkv{IO(&$&Lz1A+Vo79d0eLmf;rC25IZn-Z_MIX`Wi-wmlKO?JZpwD z5)E9!6T2{D%<|FqyB`tPoAe^c;95$Gp|dGa8J8D{ogbG#1mJbPVGz%_5*w%D-Al<@WMd$L-SyE2o_ z>aLpgyeB?tEa4Oxl{l*&p~|WP-r%ioAjUB77e^jUy(G+94{erzrYcS-WjN(&0=#^y zfNEb}RZv$ayRqZzmrZ&_69VJ`Z78Y^nhbqPP<}azSLWGnPB~s%v?Gn=4wpBY1a$B! zXy(*__D$H5)h3S}?H0Qv)OawZgAGw1z9c%*jiNsJ!DzkMa7Xwo14e`2yJl0ChPA>n z!?P8=H%um~;&6HXjW+U+S?A;(f@m)$Y1|)uf#)REAS-`;(GH{eE|-kAxw%+d5xTw* zW*s+Cu*cvHm9G6P>NxhYg5=uJRoqbp>1LH02F7|zuLbw`lK&?J-;o6Yy zCmE{cOWoAXZ#BkaDVX1tPS;9EL#OkcN)(QhWQo1>V;#dLIlfb4jm7V8sia(N4Y%_V z_Hb?w_zSw54zsj67$)%E#cT8qaLESC+T2$DOkTcB{!ViAEZu4#QWd3=>kq56y{lgU( zjv6}H(Q#oMQQ; za{2NfgpV9iA(mgz3lK!MZ_69_dB`ue}`Y`;UaD6TrIcCR5N1cSt^ujq) z@r15V$z7P>UDkRlZMJ4{b&^C_9wSd#CNpfWXCFhe6d4s4PR6+hB03+PA#~oXVNXRW zX@&eiy?~yZ@OLeTv03D31qeT=biD{tF(h7bkKdX}OH3lx8lg^XGDEz3v%?>cj>y$z z5NK)1J-6)b9J)&)CKBPy9A*t`ubf&k_{>kk;;EIc;9VMp@eG!Jg{b&wqA@-)oU<}K zasq}KHH*v8<&3z>S*cdtv(805h2Lk?xwv21-9G%yZ!@O1Nzq%l)Yr7e zp_y1gCZ%I!zhIAg>&Vq{i;zQpIGwuR<@ONdfh6oyc6}vGKFdC=bc>|i)f`{ZQt%)z znRfU5m%(@x=HNhTn?dfar%cD}wzwQh=CzYm@kQ@{J7T9<0?Be?@@etCU1RBK@b0n8 zuJNY56KU!iM*Z)Jktxm_6P@XIHKRUuyNR0V2=>YG^j&_NIkN=yMoX0V@(@A2{*-%u zrKY~|+D#xeoA4`!^N%rHk~^I;+{PnGld)GJd~aE^5tN!TFqFcC}OVXm_P;oJRfcX)sG~2$|^W zyUVxxGhcU41;!cPFykH{#j;`Gc|A!o-QJ9JVKL4Wo3E^&Dyi_Ba`tK%jTCV-=@lQy zMcw3t$2sE}?D47q!?320zELCj>xo7sy#n+XT`&9}oaqdih*p~8m~CZy)Ot&lCDRCj ze^6ZO*mB|t+aq)%(pVz7O40BSwM{(MAbr%~JXq*2VHCooMY8ZqGm>S9;Y)r03w|Kz~MmrP&%y&g8vt>E^TWp3D-*BKNP#ct9He-fFP=Qdq?ddtEonGNkQQG9+9v)&@8z)@mSgz(r!FTw!Gn);g;r9 z&S}36QGbYQ%MnMfl3C}-XnBdV)UIe$kp}CAU_}$HMKhsj`K964>}~D&66>r_GfH$c z-`?J`1g3n&qD@$(*eX3?w%fa5Ly`Dqt%fY}{ynaShO-h9oi~~{!P^vtK2o%D`I!b< zrqh!bCsK6ule=oJMaz#`;-9%Z3AvZw?3^B&cF8>Z(;q8)4BU!$cojvDG|NwyQTICtSsZOog{zdKWQg2_@w^(npiziA@;zx1kZ8%4EhP+a`4JGOl zX}N^1EI;qwT@>>vSCpNpA9XAN=ULoHNyvY(I~$K6(6SnJ%;+hd9|zY3SqMg-pM z@Z2GumDkqQnXEn0eprLUv(kM}$62ggzf@LHyt!l5*KbaEpz3O`TJPz?IZFErcfarq zXG`KfoXE;4HV!`@H;L5?rImK(cBfC!G_mqMXeq?o#Z4f19lm%EIr9bqa+$jBW$0Z`!xYD=tB(Dv z&0JEuiYs@G+a(ud$@XwQ?XkJXon(*%&<7{PGrb#DI=(nmQ(%~UDv>tgZ_rz;sc(PW zZ>7y++4gLS0B^g&sUkb<+TQFKC8A|IK&Uy(~_y$%$p5`z5khP?^of z^i%FFK4pR#mvQmH#8geT{lpv2itf#3;p~SSEyb;8@LYaZ@!=rpyY6*5Xx8>1%fYNp zo3YE0c95DUo(1reTSI*1GYN&*^sLdWn6N2z*dMa8adpTtd0mb7&5_@)20=-cwmF!LcP)o>$0X6x>j|%htj}Q%b&F>)@=wTY%tTz=lsu5otvFxWe6P4G z2__@Cl81`CV!YjY<4rlm36UZ?0>@NXPY+=o0tZwv??LhLz3TA>HE} z6O~LGPBuXitElI1mk(dbFtaIs$3_&KdLdsNWd2Ssp#Y5oJ#flC#ZjB&H$rqRa&6@&m@ zaf4Tx;mRmKiAhDSQPB}IC3BVS=A;1BN1=D9GOM;}RorFOyOpMI2g>nm?6 zZpv(~+3n_t$lfx=O_elh&y0cXJ6i zKV0r@R&L9jEf5Waaa|i9aa(cT?sF=Mc$a z%gG6BkLe?Yd!2I;w=V;vn^+r7o2|Lxn>c^TAM`1DZ_31&lQL&U85on03@`dIZz+36 zq|_fRpB-d`V)&Rr={@IY{7NDh3!cny(TI_}-9 zcu4VYL)M$anJ(Q?JJQ}$gO#^v@$qa8%Sr^ZxHaF9u`l9s4m<-Y|I!vE!AB;`-{?=v z_a2y4Y96hr@;=43MHr>E8TOwtX$U#aAod2n5p_FK&W0;wljFwZV@FMU3=#v~dP^W~ zy`1$#SQK7HF3Vj}FwxZ8&FCq9>}ZqRZ5YmTvAMVzk8#nF!Cj5d6ir#JPdR~i=q-`t z6>QJ?v>3S6C4UYiN|029j?ZZOeJOO$%y#i**JE0k2z=2uV<|{%-C#@%$9{u7`Iw#iLAfhVldO^ zYr_uXyW#IXPPY97*Yw9Xd^{#^bm_GzX?T)v>fMt<_wG*YXq$4sKr~xl?0hv0PviVJ z!`p0-cB&;8dhMg7$|Mu5B#9NUA^uyRLyJdm8}*(=$8Ulg%zVli{sDvj@^U`bh63f6$UBcFryrV?j zpOJc-yh7urJ|%q=KG~R8+z|{rcgxwss6jmNa=599FSigSTav~DIHF#4-IDwVL&!}Q z(6g@_4ULitv8SN;)E8$Ao-NYd3rm0dl9hhX*>PjTWC8>8=KDPRGp!hk)x9fNO01Sv z-Hv)$F$3)0(QQK>6FyjJN($Yw=P+A8_FBs~0fcs& z&fJo2h)MJT)4?k>G|u@UvPo)tZ6FGTl)cy)SFqCqb|&+}uv6_b7 z_3&#o8ITF)jfC|j1xX1TN?EH{2P3{T;UHDY)ucm0X%y%4S#vP&kbQEssDGoi#6(UU zSigSv&a}>NQ+n9#Wl6P1<8qqfcsc$b5BayOlpRLD`r4o4i0bUC@8`oZ!b?Zmcqc>n zp8icsP)@)(aj)5F;qA1k2#%1zy^YZ$MznkvaSkb&*X9cCGq(i|uGNK@ zyFS`&Jy337G1Rr05fW2=AShf)V-4my6S4AFY=xbB%tx)>NHd**^)3D(@Ny zKm>$`gH5$&k+?lKZ>Aw)X+`}5{o2|_(_7clX zwx=92G{EE1l8^V0QwH9Bz}z9A_gY}uwilyq;~FqDf6ffMk>%!XuzIx%Ck7Vnlm^dq z4B~BFy_!f>Y9twzgjutfn%t@)vsOe_kXFIb6|w`*NnPHd@v;MDq;hXmk?du~Fsr#n z!zEDe8Hu-DQfPwjg$o8e;On)u88J^p#4EE%N!FzXrgrcZNI*{-NgELcF$2Fdg0I4- zqtY((+TYye_ZLb~ZQE%ch#Cz$Bh2)3nfcklr~+*d!jg0B^xZ9%bt2oF^x#kym~#kI z7dR0|o_ZiBhPJK(PtlC*a|~nfG<*R1W}ViV#z5Pg-o9AXUt-NK$}5E04|- zGD30mjKUmwCMw4g#m$ipp@@t+UQXob3I7S#I{BNsv<`fPV-yojOVCjuL(3$D1pdso z8EU}QJrylmdX|c5XoIN7 z130gGJHAo-$>5t`HM%aQo)~{~SJNifQQA{QB1R7F&o^a8JL%})vyOiHO6@1Y(vDSY zR-e%>hGp8+gvPj9;KfxM3JaUTUThZ9%(9#pBb||I+Uv0b2`6gBdCt*7AN-1=%DYEq zsgVXaSR#lRFw(67I$hM9ffygn2=2j32YRRU;}l1TM2L$Y`#90jpXhk^D@!<5YGOe` z3X~X})fsFE&g69VqImc?YrDrCvC46Au{kEu2c;S0Qpi3#S#@=vPNiHS;fX^AC?g~M=aZXo zeUqBGXiq2BiVWp6<)g5g$4cJ?=^1-p`P&awXitZaqc6?Ibita-NYAgL$sfU*6YGe^ z1bb7kth%@(p6X7Jm*U96c!>W{{WY7-D<4^0dtsM(x$|Qqfuk*nYskxoZp~WxZ17y@M!9Ba6pTT_fS=-m%wzFo9^+z-|}l9gE8Q#-Ix%r1ZyUUS>g?g z&o`K>+^x_0Ks{HsCwil4KlY`~q_-t0SM+ib91!77*jRC0ZFjc|!EcNDvI?}P^X_tS zh;_?5)gR_?Af&fz-!AksF6+Zm;i-O#Z*z6SD?bQKl+1)ek?#-?*h~&S>^tR#3@Q}! z#hQ$c{_rakssQ;gXV)})ELt2ASipn^2Z`tudyBLBBUOXL!%*3@kRp!=!4Au3PM&pF zQ%h50Fc@Z`qxT-P+|p%;o()jTC%W>Sr2SM(F@V4mHUaCcVL5e_*qQf^x#nxN=yyK@ zwAkJ#E;iP&jB<`yp+igDWYvXv>SeEsbTnmzl{MqY-r2`o@*8xjR;c}&^MjhPzun_~ zS*fXOEG2`J0SH9zNE-ZUbMrABb8&G%K=ZSwPdyQ&GdU#X#9B4AdpSSIke3F0A*#iy zOoMri{VWs3KjRhJz9%3surtpoH=K=+9FKv`X4%;8GBh&kF&Es5)9a)BePO?XHiHF& zrBiHEqwSOQ(9SL{o4SWEu62{QP3ZCtx}G`PyMqmueDpw6k{kaZM`zKJ#PMy}9L(ogX&t zeCX~G$D>F6}F_(?9`jNl}e`aN)^t@0BeyRcE^A1-_LX99s&r9bAKK1>-Z8?A@;z};*cx9*P2|P zxzMzzj1rsMsX*$nq|b-@3(4rc^i7*iOH5XobYZi^4iv4C8QEmCgOt2hA^|%a;wxD# zIUp_`4TMxEt0`I{#qHt7nVChqs9Lz4q?dM(vDqU!@GSA|(GuYD4!=_9_Da|DC!NM- zZk8_Zo|WV(x3ZS@L?pB0c9IlR*d4>EV=D`@o(U*sWo!?6g8)&XF-kGpb$YA!rRZyt z@j!@&dJz%HW1Xkzd{=qoR{-{~TK4n2Zm6AXUlM2kW$j~w;*gM16f9L0z%1s7U71Dz zB?tmo+4F|*A1pxNs_u(_we!tzB@Pg)>B5`b5ITiOG#=`?h&71qgc=)#x&@*^=t)bf z)7Zw8{?-XCes(2h5IwO8#LySC_V_(8Fv7)!-(NIymkup1jtHbik-(`8xPvSh4-1wd zyS9S(#EJtO3qn^upc*HDW0XWbab8uoFBToGbi|=85SjR{?e3emdtcT+xm3%>Hnk5j zzI4rT+q8j<=F#>D<#lv@bWMXn2i~aY^jXA`(9z>YZg(hw0Xd=xo??*<*=>lT`B76{ zODawAXUcN+1iof1KfXR@&!4>j%V{qz%pE17sNq?zecGc(uR-9e5B5UVmpVLxG5N6P zIMd6|DX?oV%0qmSAo7_8Ey0=Y*}o{PZ4F8R?vA!LF^JBcfh?0%*YpqV{;m-^RMCb} z-aHGbD({pMM8| z>&i<6q^fcNZuazKD2hOZ4w0D%h=9(n!b$$d0_5Tl+c+k4sEh(O4F%~p?DDhmsFLzn zcyoD#a4zrf67Ntw!Bd(bw}T&$!d1TlAnbVD0Hq81R4n|w0ak&_L!aRJ20)x-eay@O z3VK+zWk&^0eNC>ow9Zl17i_<)plv3Q`2YU1S%H%$CA&xFH67K*@2y%lAL|Zkr?^gfg4gB>7*}i?J7-=tO zUkqRG_igI*$66$Xpic`g_b{Ouyu=?1Wm>UX%=AtzYR2Rojke@5Fql}5ZkcDJ*T=PzWDyhBHoasYCwI`7r$=XDwEx$ zdX%UFS9G(-v0faqle1!x$HoHy@MetAzODdBF8XoH)P~CCDsocY*8s6S@*5qR`OC+% zDJlKx6|73!u62=pLuTKr2#qJV*=OB3fa5J&f}?v5iUE9Sj#`MoGV-b>e@I$NO+f_| zU;xM?^;87EB1rFrEAM&uhxxIMEVRJgg-Rrp!L!Kuv4D+q`^0m*b! zk+3NU(%Zd%af_c8#UIk!Ywlne>$RZ?O2Xz*pqZvryYV&KAFMH{OnQ2IDRGM}S3~se z(j1~K@1*bK#X99ns5fbFXcfC7#kKIc>FxcYIVnbstUY^ZQqdf=15zwGWq!5=ZuE?f z!ZWl-dp-*9eCOZ4b8ci^k9SvRuIf72*Ku92c6z#ozEP}BtD*286=+7xPu;4=^lW0!N3Kw^3`*khdWmkYCxy3nwJ-$ zEikiyu4wA70IU8FP~xl?xZD#Vfe1ib@|+k{5_O)dK=ys8!g+Y`OmsS*)-+K4AOfZU zK%O^Ar=TPQ*2;V9Xks2lR!wXIknd+z;UWct|23@eHYKmos^GH+i`|Tt$KMHRnI; zp56c^E5-4|^NBZNgDS+lUdYTEb2uz*AkUMH7=Tt)7WO#>_?2pcd04)Lc4$N9_Eg2Q zxfKFs4KIiLDEwG(P4m-Mvic}LTWij3E0tsBX#-EbTDBG}`z#XB%T$NI zx#S;j;DO)J8#X-S+xlS62w!qbhdJf2%$90sA#(2og3vDhFGDJK2}3rxHCNw z0+|Qz=1ghFvNf?<>)}HU(g8}(!9W9V*}n9!nCshr{3%$r56|C!IiLd93GFx^wSs;} zB~LuLL%1y)0VM4oetzEC%Dp)Np6K*@=9dvV-{9y_W8(~J}*t#z>59RfxGd9r+`A&|wo3_^qp(j1$g5nB*>B2sOh`KRj-Y zb(|L6y7TpI+Ji0P80n2~X*8nvY3a2x2G$2+0uM&ShO%vpT>CO!Ki*GkP5CH%wBBDH zH3#jA*37B?GGccD@1$SPHvjfVpMhv8znrcbS>hFFGS2BFK7INb2$d2KEnURra0MJd!9p~1nGrttvpk-Qg7rB5Ga`*yLk zCYi?yVcqG0>cTLWc&xjcF+I>sU>L|$dH!j2g{iYx*p&wqnjZvWF;<1s*zlQ7DJl}D zCHQv^4zbH{5`lzHk%?z`tOgV>2iv^NUlu_|57LG~G~f#9l)6Z|wcu?!t)~bhL$dA2 zUiH2)u%W?w^N+3k)_mGs$iV{uh1v5!wXmQpjURO7Phg=gndsRmUzFBnw+%ILlj$=&(S z8ru@UWPOwf)O_wWPf&%J`9XAn`Wz1XhT!vLpb?-|g~wl>ErhapSo#1WqcOK9h-Z+w z6%~B@n7XoRdyu-pg7g7-Ke7p2)BLpb5H9O}&f>XkeHhq$%n>VM=Xk~jT?$myCi?5a z+y8h2e|iI5vBFuh*Fwx1}as(DCUf7FcYi ziH%Z=r63`FT#20#7U@$Ir@TwNY%xSK4cv%R(feRnpV66Nhi0ul<YF8Ox}P^lny^ zi-lYCF`))y%hr>q5AE#j0tK4Ssvh8 zKw0@CK%M>x2CtZ5Q*%PW6x<>mEr{O@lxFXt3&!6mu6CB+Ef!t zTy4ZXdA4JN|48d+GyfvM#ePa^BH4!T#qRdM;=;tDO% z6vxrYNyX)Ri2h_k@Xm7aw7z}n-r!|8@aZXF1W)z+ehuzFM^#Z4-|X_B z3`-TSH#MbaGy}ZXMf3}>zi?TpYfy5}RwoCXK9 z4P{7`{U<2HY3NSTDe5bxd8{5+nJuN&UnRk;7p$cZ1$LDbdrWh)=T zT`hh=6(Y@eIKQ368b+DzQo3K6<<1-7fV>})YXv~Uqa8BIFsc?&85aUj{7V7N-#qh# zl$GaPE_RUNP|*$o_*Up+0_>N`Xdw{s+^Opw_Fcl&0q{!-X(!o4mn#SYy4_`tQ1qY3q`76$P}(JAFzHC#GU4}$P$vcH2j@= zY%kPKk8#$=_8S0lyIjpdfMDlYKnaeBA|%xK<;3`K1U4zKUHE z`3GY@^BV!Pdr}jOm@lhT^H}r66qT+o3Wv#hrojwW@mEnLdsOnj)=dBB8SXGRhBQjw z=4feLb{|DzBI=_|j`mwKo*bnOH$~9OuVj^>Y@U zl7{8w8K}7YM9*ys(Cw;v2=E9RzeCL?>Dy|X-l2d`oq!QICG9#;b-9$SqAaBj1C{NW zDqf$F0R#uYyH_1o0$Z!n;0+k#3o_(jHBj~x90Vx);WsLgfAT673i5oiK`?K53fdw( zU)C?_r>JWHg}z9AR^>a&=iUApE=w*0{GEgb$z0%V&LQkLJV0Uq2cUeK$Ff9$XuxMg z(9A=hmWKnca;T;gp(W`1h%+^vSHTBh|HOuWSD|nrXM^;+kjv*3y&NEXP#pGXHx0Epo~RlO{0f&L3h7ItU^gy3H!NHy6$MD#pj8$&@w{?A1LI6WHh zZq>3V&KFE3E@kM>=iUTgRfw72CI+1^Dod_X0s;eASf2rDSKN71mJbW7#{AB`RI|PAj<<>%Sw;j0;pT8sq1Icz2Gd)(| ztE0EgKk?@>e@aSlaN(S@mw%NSJV*G$D?kxqQl;g4fTI;S3uag-nS$8ig-^O49T5VK zfo{+wKIv<6;Id?CQC!xwNp4Q?`;Gp>bLRf;)u-HFyiuHjKR@7J+cmU%FQQV#$p3vo z6hOPcwLb}psw|JHXyCkkw58~brY_>r{nYJcs*(Rt2?d|RCtkCFZl9f*^99b{v;>6; zV!U>v%JTDfLe}TCtoz-gvTqVlmchQQLG+7M6|Zk^7eC#xRxDIiFjY1mvB?{j_5y7Y zJP4FMi=qLPeaJ9aP139JgMd7*ssi3=g=U&{%egWx>!vzD`1M6VyjOH9Xgh))(PhzM zp+XKI&xC?x9$A8)qCWgNh{*>IfIEPErX|=U2{z~8_d5;Lb_2mb$f=5pNZSqiL%(-s&1<+Q~pu!$f1OA9!1*|1$2L4}*NF z{*?0efRzqBnJu7B9_1*{4FVLu%?}$$&`(kz4ObVTyA&*4co%R0HP~#8w-#`V*6FX! z(Z5e>hDYBX(0W8xObO!DWhl>yz-p>}7F(lvuk$36pa3qwX}UwEN$a$JK^q%{u*z1v z0K_~kwHE1-At!FNlT{bK^(qpnYyxjS^m+80q5tHy&Q-}==5MtzHJx|!Tx$HP<_Lf7 zK#}Fd3^p8K!fL{L6^=>AuL~@^iNv4Bn=1D)L;XTauU9 zQ!*#hT?)9?1WOP1hJm55i|r433K!!{cOP#{?N@R6feP`HOsH2tz!DXguMPhw1iD=j zt?~tip1;ynerlmL$Ez&Ap}D??Ps`qI_u$TeI}&_3xiYAXt>X2g7g3#Sm&uU5#xl9e z=A)e}A=vgqbxnhTvKO*c%6?x6ShY?XEYkpa{z9w=N@eTg$1!5GSorEDMmGKOD`pn~+f5CP`kj|B*q++AP*x~Bom`M{~Kvs^&Bxg8IP z;kyf}UXJ-w=*s{pP>lz9xZ*$PxBXAa2~b4*a3CE1^<-PD`bFGo`&_y3M6>8@Q`s4; z>~f{mvFCjFR_|xZL%i$+lh#QId*%r!zVQKyFS?ioQIf2&7Adhk&;TXqK^O-PV9eyC z`o&BW-3!sz@z8fOcg;wLcuU)XTQ6z4DYq;Z?HOd}zME9{)y|(0*eihxP{`X#)w&QZ z2hrrs_V-&(A9i5k!Y@**Dp5>k0OT!Le}1a|-SiiJcQ3SZg}beAfYOp z81<}E0U9J!z0T0Sy{d+Q;d2tqwjX~6rM1_$Vq9D=Lb^a3K*#yPv#5!mkRS(#lxp9+ z@Eb_bY01^XGwS_-n9p@zwJRJ~0mt5Tw75sAvI$HgA*bg}e20%KYGiYn{{k^Xd*02< zA1w2jBm7>xo=lNS%U4tYM{7M6#G7Xh!GelrmE?D0Z{AGs+5ip<7aYmk8WFNeHmxA) z%8)}A=6N3F$KC7u>>jN#PEOrc3hUC^c0bj)!Zf};V~&x}TtzuOHg|I`eLb{l^lhSR z@iJU**YSzoxuEdxo1XxC=eeUC>7Px7ZGsvyRp>m;#qJOsRE2gD9&Aoy@_q17NbsDd1JB4bnxC7|oEWB~apDoEyx zKz;eHi^u6zK=7xo0g(5@flUo`yC}bosj$j@snxfO>=C-rQy#;QAe>9a&KI7}!F{;K>0gP_2g` zL8MUe@BfV7_CF;j{wn4FUsB5dFPHD#ZDOvescE&V{$GH#%+FBJSt{y!G{Sd#A+N_znijjjI=+g~VK`nMXvire!}|NM(QC5V9k|3F*x0@ntW z^$*@s_O}wnk39itX*L$<}n}tnoC?4P)lMf$Bb5c&9)G_{LDhjXk%}7M~SNd$G_26LQ9z z%Yvj~L`EK)Yh}TC#HKaZ_#}^kGRm4D()3YIF06vi48={2WrO#q1r0PX;;iE|I9q=3 z790JOt@znixB0Hc`Ri$)n+vi^wvRiRRn#5~clg+okP@~!mKl+ew6;j*=4#gRM*x$6 z#By1*crYp0HiG| + + + + + + + + + + + + diff --git a/docs/img/d3gui-cst-left-high.png b/docs/img/d3gui-cst-left-high.png new file mode 100644 index 0000000000000000000000000000000000000000..f316fe3c5da28c5339163e59731060ca0c53ef82 GIT binary patch literal 14261 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 vK#6s8Cw>Cm{O!(2Jdm!Y;RWRRt9Sng-0y9> literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-left-wide.png b/docs/img/d3gui-cst-left-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1172e11a6b67b5e636c2fe1b59457f43800f47 GIT binary patch literal 60813 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�(BD&1>zx;2vBW?d72zsT~|Lef@_an$j2Im5>W)Gc6LH>(}cx+cgRig zFAm&w@4mR&295uc=luGM7bVREwcP)T5BwK*q9O$SV7h9T~=|7C-qP8BahEAF{@)g8u9gGxF-OfW$UL1()^} zb(+h^8Tuw3^-*lQ?(l+v7-Xz1sh#2)f;skjH^g$Tun WK68E*KDhyW*jhQBE&~?R literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-tc-wide.svg b/docs/img/d3gui-cst-tc-wide.svg new file mode 100644 index 00000000..49b594e2 --- /dev/null +++ b/docs/img/d3gui-cst-tc-wide.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + diff --git a/docs/img/d3gui-cst-tl-43.png b/docs/img/d3gui-cst-tl-43.png new file mode 100644 index 0000000000000000000000000000000000000000..ea69a9bdf6ba1c5b09d06c704fdb6ecf5673d4e6 GIT binary patch literal 9577 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 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-tl-high.png b/docs/img/d3gui-cst-tl-high.png new file mode 100644 index 0000000000000000000000000000000000000000..d4379d9de303109133dc721c39302eb90de0c10e GIT binary patch literal 8720 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 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-tl-high.svg b/docs/img/d3gui-cst-tl-high.svg new file mode 100644 index 00000000..619f2119 --- /dev/null +++ b/docs/img/d3gui-cst-tl-high.svg @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/docs/img/d3gui-cst-tl-wide.png b/docs/img/d3gui-cst-tl-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..6f279980d01c04bd51bab2ce29f7006e8a3ee004 GIT binary patch literal 14722 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 o%=?IUs{oPW&pcXdba=KRA3i`zb} + + + + + + + + + + + + diff --git a/docs/img/d3gui-cst-top-43.png b/docs/img/d3gui-cst-top-43.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d2f9e1ffae2bcef63b9cd7f135907e087ab38b GIT binary patch literal 45021 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 YftTzkgG6?H+5q0*mi86|vkN!=2W5qLumAu6 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-top-high.png b/docs/img/d3gui-cst-top-high.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c484300e04d51f0b5c99b66feda5869b3f29a2 GIT binary patch literal 44835 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 L=SJRji|79f=(-KL literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-top-higher.png b/docs/img/d3gui-cst-top-higher.png new file mode 100644 index 0000000000000000000000000000000000000000..84754c5aa0875eb64d1cb3df7c4ed26f119dc62d GIT binary patch literal 44767 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

$S&#+K!8thuh&QCs5Pp98@S)_ z!*K!}T<*xrb~fW;`p|m9VK}*iU_%_ml82Zs8(;*hEvhxpNOy2bggwUIkYQ^a`?R*E zPsyq}e!s4e1Fk*{a~PicaN|AzNW;*X{~EGeg<}AgNPZQ$kGU<*0xY#HahRmZ3N5*P z-n}t=ax+VIZPCv`Gv;EX=6%+4Xblvluwxyn9${}i)7?rzAJ_S2EtU?*9-qnRT_O%% zkTPD*XO53d!VV=)d%WFf$?d`lU75_+29?c(#-lgc8}vl|tm)VGi;JrwTli?|bt~WZ zbZ8WhB9W6kJPVW1RWDezh2+*VldYDvf$7k4(v!->Agp0VcWb?KOnR3($Up79Tbyj~ zu^(2zLVN6CK2n~zwYH^!`%d)K&tX1t-Z)q|z@RTvk_s$CWd<|KwGIxQrd$#6bhgRU z69Y~17zova5aQqp?P3!zXPW_Fpj7Q;#dN`-o3o9XTA)ac;sno_3()v)T_5E4H(8Q-B2H}q2t8j8>@jq$gxNiUHr4oY;cGz1F0j2+DETs#%5z59f z?jc`K$De+r(dt4A=$C~LMuiQg4RZl)#Ppjg&rsZVZQSf>jlH6Is@fK)J`nV;Mg*m@ z#jZ25Z?vUG;>K5MwuZ2Cl2~X3xORPv>jsR^WcE)Z4bxR?EEaXVub@iP@Ka-u`%b-)g6z zP;Ic+=u(zejNH)ZZ>PhR{o*#RndpXJyt2MRf)nybe`3y^#gY4S%sE*~x;a%vbg5Zd zW(5j-k)0I$DM7Or6am+V2uLUTHP1gy)`yPO(~wpXHlS3GO-D1d*(=QUI~|bqtJ@4G zoV3r*_2^`n@ov1v5UNbNu}{;!YW1cu!auu7JD>i7jhMluEEc-srdKK5I=vZ z!1ya$dUBVXr~Tj8Sbeex`{TWv$CLqCRw|J?Zuv7)z~?qi8}a$*?Q>-Hia!!{={ zgG608XuX(#+0Va8zT?2y*njnrV*nxkRnJ-xXPb?xosUbxv|F{j^lLK%YZG~IZ+$I$ zU?*B+(+>cWp{Ar(JBLuXO5{;uTi@{e^h+u7FsPeRl|ear`JHa#W;nr(EkGU?PIIu3 z6}SIt7zw|69{@HHG*$BkSWT$5jZk}C14)@|dT$J|SiY{JTlh5*0q6;trrffFF&#?S zwn5{|MAzjSv(JAon2-MM2)9REQ=Um@*0)Ta-k3}&>ZFi~XecjNeQOo0-ln=X^(Q8w z?UlUFCuShl@0$l-!K|d?Um4PUD@k z&ktl@dB%Y27AM`@+Q-B&01mtF`)3H~tv`fEm{s|6S$56aT;-r;^=W(e*;$t- zNOp}q1^<=hW@VK_TA5paGifBe;(Pe-1qjHp!#3`umZe0k*$jf~&@Hd*;_LBPR!du= z9b>3TueNP-&JU+sx|#5s9eyzFap=|1$h6jG3NHuATM8PRhuX|6Kydm|O@N3St_Tr= zxvD@LI3>?g>-<$~s)YKILQ($bZGE&5V+^34vswMFKRtPVw$u#W^IS$I@)+$Bhm%`= zx1Up+lV&maN0%4ZuhC-uD^)yFKXgfBWY*|1(`K5*4W4w?XG|UjXPnqZ_haYU(tk>B zRIS;3-%mjd;t}H><^oK>Szj~rO0Td0imD_>tQOCvccOWb+m$b2BraOd{!Thhlu9e- zsVju}V3%bX8s6T}X%?tbxg*p2G&&d`o#F5yyR*3z5a~#v3scRQJK59;w<5fZ4@g*T)zx#A1;h@x!$kUx&1d;G2iCFj18f|^Fg3D`f6EMX9^Z=G8>A3P%jGdkraqQQo8j@mE;*c6`l&Hf~ zYVPDcR+KX0$!$q<>1bB00Y$s0#{ijxqdv6Dyrz(L?saY;wn}t5c{Xs7+ljg`a7Ymeh41o zOjZ@`Kb;)w$pW(edy;#9Bn+A?4uY38&%X5@+po=lm16~j>#@z=R~zRWk|JBgZnz|@ zMg6ZA07%PK^m?ixH(~UX4th@#XB~2VkHR0jmVWSEvEF=Km$XG*gnuR|OP`}8LjKBJ zgQYV!_4W2;AO~{(!LLoOmy1i^YUn2Y+)Z#rpY!BmCm1P20`R`l7&s@3vZ-;wp~8d}lP?BLRSxpVim-1U3?E6P+D+=Dz zEwra&XY!P^`mNiFUwm1&r zm;MK7l=_ST-B1Um(w}con#<0(zxWJeV~R%N5!!7lbhs%2u+_*S1Ytk4F-#Bx@lo=+ zIU@Pc5dbCwFE)u%w|iE`tOQ=`PzV(Jx@Zj%iQh;1A(&~$4{uZ@)#-WyrL=efFq7W! zr-45Xkb*<2rp`<%SEm$It43^PjJ8fT!jIIg*t*gv;5?qjg2eJ8XfFI?`n%i zhUi3CMh#P+(aPK^d8uH(cqF!{ozX6S3+tL2_jy_~quuC{74@NuWh6&SYlV{g&noZE$M z&^DJ^u{PMDb7>SLIud={(n4ubSmQMULWp>7C~VKS1YpB|9L~L3+-xzfnh>`V1A*y7 z0aw}jjpm>)LV2@lJL1_Zy>m3|p&Xo9;o5hNCxLrPm8&OC53NH(n*F5BAJ>9J4=h_3 zyHFPEyd;JSvWWp?x*nT@>4&jy0TtRb^TL5?ErYp2w|R;0>vf9=Cz0-K5+vRl+h94z z%Tgr5LvZAK`LmK`3g- zAFQ)(`3if<>NZnV=y$Uj6Vfhl4P0g-xa)ec>cM6z2wU2?W;bEcf|OEu&Qc-&OY&Ld zSM?+k1cPF4af1Pa3gGk_=tkA4P%MDs9KXc8cwL^REL-DY+TLxy+^&?4_o0s<@WkyE zz$Be<{y;eUG29wQQ%#4<76%8)M0}+vWC9veHXR!RVp%8 z)w__=ErEji+R*1ucE4#+9bskfe~)UR-x&*R7&8DIyfsn&)JUu_UBqUBbK#;8nvzV` z&5O;LAu4Ro?cL&)no=&zdoU+vX6#5X%FLMQo7XAae#o!oh_b8tXgs2Hms!+nG|WSeucpgaaAER4M%Bg)rNEn(@IpauxhJmReP+-us`f5 z#0dRBDtB`l!$_1u%LfPZIe$26b%!cH_UBGl%}FQM_+WvDdR+;ct0!azE@1OK2~OH% z-0uKsHx!u3KWjZAZGwAjnws8s@JEVLy$C?e;anFrj0yebM|nc&c<%+!n`80%BaXCa zUzwjUZ7y_Z0@T)1uHdtF+jsg8v!cVx3@j%9VqsocA(hF9eb+dD zvD>{cLrR5b08vVPUS_6G{7CWJ^ZAQKnX;1Owe>a%_pfzkmN|B@YKtA*`DiZNByo1p z$UN)ecQre8EF@{w5x#%#Fy&-2A_?<^#Jh|Gu3nu9yoP?=qK^IW@-}YQ8@ES|<0UOTXEJa0J;tgj zxVu;u?HYjN6IaGnkmAeV+$(@}$p@VZVoXM-nk=9bnTiQx$p&h_?;hW#!e`*o*Pl&% z{Y~Me{0=ZH76$AXv?%^fnlekmf1k0MHij@N3{P>#s$q*>sSRi#P{=Ztc(s>1PlE&G zJ@mTf&DMijKq3Q*h(1T~Q7WH2dwS4R1You~8N^Os=*z(9-1XGp>vPunYPS7T0|Sng z_m8tV;qzQ`&L2sV?{PGjIh%?8%Rs?nvPG%$A4cX=?t7Rmn@SJ&}hha#9D2-v?aXk zgDn`_VdK)5w~(Ihj$n>=eqm7WJnbHccX#O5n6R_C+|5g1EceL} zSXN=-H9$d#BV>Lcz2%<`XNKd_C2@Zob4F$wytInSg?JwcrzvXZh)C#}1R&ky4WWsz z)hu%sJ9yMBcPk_dp^pCLgQ60GrE>YmPFn`h^6$9exM*=RFZnyXqF)LTui}OS7b9nn z_qeoEhr6Q7ex&y9l1K|8Q^E@3)8UF1q%8fDeRi(@J_FXA z6+H4WX}k(D_FvE>gB4%wbrWYB2o5XBo$pz|zJKz%R}}_p79_!y1#I!ZqRTe?Iw5yR z)nlhp*jbK8$Hv2hCowx-&bmm+=$bz4!($e4!7nOjtbwWG@)Eza-B=_Px562f6Y}`4 zo{QYr+4;B>s;TEpYKRkQiXRCRWS%ClX6p0sv*R4omBAUyS z*3^Gs<(sZJsAj0Qz~kHS&i;)~E`5GPUvIzZk1lR-VkbUd+xy;6FCiy6VoiT5Nyn@g zr}UEcaJ5=l5^x1#^%h9LMIUb9ZSpv~`{%cXN56b;KF%I|hkq^S-r!DJ2v`z*-JL+l zlISbX=Ks(aQS45&9bU6}p6j2xWi}boP?-T+f_?bUMJO0Fx)fU9tu-rdH)60>6Nskv zsx>>yx8IRamJVd?Lt@7q!QxJz=z!pd#;MNAzQU9rJlMQyj}jqlh^&zfyw7*20vKL0 ze2#YPrTsV?2o+;56Hc3WIJ8GmB)|cxV>N&4Z8#uP;67RxzmZYO<+5O7OzVu_K+yrG z6_^&wPn6@;Y99ZUv3Zz}E5O)iyzLww`z!DKB^P`P8@(TAB+x(TM zs5Z+=a{yTf{gu;6;mwhib`G6$?FjPF>QDN_|I5Xy->N=7_4<=*_?s#Y#wC*5+O`u7 z*l$o12CQATn1RW%c&W)@<$4A7n_{KH`w1xvOVR>5nxq68rJ_#k+#$c*dxwA({gQ7# zTn)9a-3lpkmHQY?;uNjSb_0WA!JAKnhH4_iT%RZeO_hSGzz9DQkjb#kgyJ;>u9hd3QNipK~T*i4u97LjbHMAGLsok8BNdQI$3asWPE@(!2 zvett{&1AzzDQrU^L@TnqIfW}J+63xoMc_C88E{5kR-n=`oTC)Rm1w~^);h0UjeYqzm8lF z>&bQ&KtS?u$5&6!TO>Vf18$hy?SlNJLaB1zZ%+eA&deF5x_+=;rJDi)WXbGWkS$1f zt{Y|t zbI|HeTLJKsi zN%_!fmU!fMXtU~CY+0NM1BZ?fBV(l-8}wwgO*PnP$WBSQD=AV)vQYPFUAj2?ph9sw z$wV&p@PG9k;RrJ4wTT5VNH&M_ib~a!z$(RIX2%HI{$E3SYel42eP?-kyf`9_VxLmK zvw7p1HSL!UgaEEt>d$vvrPj5)#2tljfwXGmq&dhc-V5^tiDOuoK zsgZEU=SB?kM!v!Z(yZ@u5g}QWdm=^)WQLs-uV|?DttaiUeI%!AI;M*5K~^{*Fu-a# zM4P4xh+PWAa;{VPokGX8uX)R%3Ns$reg!eVmV+DSTa)zoFpuV&AKCtPuOD$|d{ zGi&V^B4p-UW;%14iUfdUx_|rZ(DSXt!rzNEUiir*ej zWd5&VceL$;d;Q%>pqS_S!KC=>y4&@qd^eu1c@~2kH)lqE6#6b;^Hdzgr?zivceIUg zC|R{V8j$|7|0+0B&XM=Ch$jy1=*IW()lRa83me)NHuhT1w8{v)?Z$QrC1peuntov) zNNWaJUS2w_*1q^@$KSdIAp83@xF#ll!CIilK8fQ#r<2oKp>HC5@U>iSLcsH+P9Ca6 zFIq&%z^CqZy&bD(AB*!BZd}9HeYntSQ`IM3N$8#~3y5i(uRu?<2@y$#RH#drsuE)O zmO|W*jE{ONRe?uLh;Ouci~So3ruunqpSw}d7IVuz{4 z?I}zY30q|sY?osz6|;#$C$oN+I{Y4})xQBgCbdB4*$U^b-yV9G_5|&={k2hEreA*U zy~A;3YO^HA3D~k@w%4t?Cgtp(i&yZv6PgPwgM3-ilonlUaL z041!7%Vo`f?{C_vC#j}wN55C7J`90)gB3&crjE;BPtPwc}k$_*u}xxpOB=z1RQ1AegkqnBWa9RAq&6r z+5H1qT(QDDERo63{PO1xrN@Bb z0hTJ2FDkw?2jvPlz(Qy1fB^q}61yDiDbz8G=f6f?2sWsYo0Br&>Xu(zVCHWNEl>Ae z1<%!q3P2I#5%J6vHtb-jn2&f`=xaGv;mNgH?^|YXbHV^Yq0XUry7U8_T1VTIHi?ro zf0V$ZJ!SG^wL047g+zEcx9n`3Ri{h$-G{Kvn{D33^8=OIJAk>ynUj#4jVp(OQ0gI8 zZ*mUts?%?o6UG5I3)ZMOp5z%=$xOo@F=Zh zz2ddpga7bpr{+I=LizpjeQMr#o5WLgB#KgklPF40eert)NVP-15W6EuBB>IG|366q zZE9~WKe0d&9f4IDQjZp#ukgM3GA8N4C5(!a5gyOA@NqR#wWu+I3&i;xJFMr?b=!+bJ2X3|M{~RqGdS2UC*fS2Zv%-39saE%E{)@w_B!eu85=h&9 zjSxHLRs7m>wtVIa&@!iapW9LHfv|ziaEw}sM;)tj$~FU&EMIJFXNqearF>!;6tw}F z{KqIr-!bSJRzc|KZ4V+Rf^NzX&CTw2CE*S2Om`FS&SHUkp2wL(D)`R0{JO$0u`Bc~ z)WodzLcvUeQLbkYX;aN>Qp- zYiM7iV^lizQ-RX|*^?w-OWZfh9}lm$+JA`u>;5x(;96HJ;KQTW8QPMbS0!0fG?vW2 zl#EVoGqHa1;2S(^sEkAifcdZ+hv=In3BvsQ`T5H2Sy(W`Fx; zsQCKx^}gmqN{B_+Gg0RI1|)$J%MYK!rKM*?oU$iB4m6`%)>H7ZnY>#f*%h5+ns3l* zXktqiz(QO|<;$;CC#ey$vgH%WN|OTvj+&fzS$GkCg{5VgRE^R#QkFvSlu@1iw&sYP zn`KRukX+uPcgV1BoZqQ&OqyoSi&Y!A{ypvs0iMeZz6I*E`yQh`>8tz~IBe>eg?DSH z_~%!Zl+>>Od;nr2U%LLM&wn-f&A{jz$-p0^{Igf;!>mXoVx1JtXT6&uA~D|G;P}Su z-e_P)f>2uTP#UHDID#bH`52yz3klWX*#AY*!$uckvTF-JWUoS`t={yuQY4E`QL;u| zU58h=f_h!~LfykeW$8dzvHJjC4V@f?4VTI!;>U#KVRh^rJjAu#A**;iR=_jPi$;$4 zq8gVU_reLxL|q~|U7Da03}Ksxce~uS{);RpUGPF%o#X(KdSXakR!F?*kZ+j4lX@QO z+|JjH}0P$D~?PFu^B68+^v`9674-0Hl7~C>7#y&X8Kn`|I2f_KTw6co?*apWqH(Sl=1zWjtsFZ>$ z-#^zNMab0~W7oga^Zm;~Bu$1nQ z=mSZX{EHYs+;=7Q_B|A9Fa<7?4k!}c+!uQC|^9^4n1U6pwcc3b!ix#iGqZAW_D!h00eX&$~a z6CoL*q_94QU8IO+kNiAaob*BK^)>w;PeAL>$H5s@&z5VT&EeTIY*PYKv3Njg4T_<^j^lwwA~S)_c#ubNL``aYOJyYqgXp zpm+PfZUR!92Rb&4O#-Is&1J2Y6;~uV9LBcqZ%{=g`(M~%BO6&pm0Dz#uqZCXJI7_2 zc~{hf+hyFrIFRjrG(qH-;*cHMHo)Y&aQx`Mq$M?e{gn_A!s4aOLfH2HWM6AG@(M#t z%-mh|yj3$V8i;|U3PhA_J1a?rXeMd5Qs87<=yWuUQ(Z%r8c-L*NCmLxtnFHtBUt6O zNz#adIo;lkoGG4tULvv-FDZ4~qc#TcRjQ(t*P6^$(Jtvkxw_1t9H-XR%69#(JZWk4 z?5||%j!*Q4ER$>(Ird6wK$GDb>xssi_7b5sE6y0{aW&9+)EAuQ_w94YGp~9B10M#P zZ20-#!)cKSi~gPkF`BCH+lB4x#R)B`k@kZxu$eM!k~23wAO5m!a-EHqQeK~}H424aNn4uR(@IgLS`~u0^A7wpmZqL={VAW?>8S|l$rB+(Cfsnd zKL#Y$Nm0>LESZ@G{Ywh!X5b~C&(oi_wPUZ4Dgo&*c`p{w05JK<6I)@2F|V+V7{_D@ zc?n!Q6A-)p0kB6QGrm=y#BzAU&HnvEh5hT!xBtk-kOH-KY=^H_TmCd?-~Og^jG`48 z8yQF)pRf!Q0N0tT=#nH4o2)~jV}51in<5gdka7(>`*N_2lT)d-KwJqpRXb+GXuodd zbHi&n0g~0zZ?)a)N{>I#cA^Kyf^<6Cuz}?-cjg!%q{v$o!^40kody6p)06Gj{p)YD zz3ZGAMPh3t5D_`L=1oI7%?VTjwx;L*m({iMgbQDHc*^R<6-(f+0#P+uo7`RONWJ37 zT2BOsVjZmd|9od>WhXPCcTnxPL$3)IqO9iINlcD+u8kAGfhP%))$!&cHE|}X&z-)C zsbX5aLhaq#`w2FfWS-~)F;I<_56U5K&;ua3X%?KbN>;!ifoE$7Bdbmr~HXwbZVG`qgF zbf~r4S1glRB$KVnnxlSNK9f7^C4_TRa69+64n&+LrW&q@nkwyGbTCL>1D) z&Wd>V_1MtRd1ij#&(sSp@*4r$-ncUg7`7*>H@ZeSF5a$Qx4@RvArfQ1qmaKf=hW>l ze+on?1m-brwcIZ6iixBp;M5Mso*zc)8<~0n_#L_U@Jlp zN3TIH=Z9#1o)qUyxj(q5m54@ObbMaeD(3NamZjAXeYk zk82PK;~0SJ z=7a1K>stp#(qi|I09vJ!(#D1V>jlV^q;Y0pI)#Uj@is-TnF*Ov=*0q9wT{jIfM~{E zTD3{)w?)KxeW^~00q`Z(D!vl_I~YkXgcBOiK@3QK@R3nvsO!TvKm2Siy?}MOaSG*H zTcejs<&8y87>5Ep)|c7hcXt^KS?@ZUFYnY;*sW2GQ^qiN@;J%4Ot0E-EySsHQk3ea zzm^M(3X_*SRd;8(?Bwo5&fQyR2<&GgwuX0XT`#+phCy~k3*S$ZWt~*NUt&h1Jgtzh zPxvdo`U^4V6WT+uMKa5Cpkg)qvRhHUtpxLeV#GG{? zXN*^!AfkQyQ2lNmhBo4$t()+1nO{8>6N&dUd!@q;R^`&qk^8r2CNL)b%k{l<4wV>4 zIYb*?6ab7Zca=l_uj)|`^DN~8q&Y|yOyRaSgyk{&%iqZu2WF_kFW*ULr?Md=NheB` zCKvi1rP^|Uj9<%5>U3KcIR5fA5ge!641Bf2nPHtv`qtZnbjCMH;P-`=M+!YHf-}n* zQEF%go#!2)xWRtPdvx)qZ=ZFLUDms*lZ0mB|1A8E|4gZW|4ZQ+R)?5Kf1mS(Ep;=x z0PAv}CS>>hgotOgZOwfuq1z231o6~<)}c^0Kn(;gz;TmvHH(Xw!1$fXjFzS>Gwr!Q zNo&$;C>$@|x|K>0|En)07yews(<1BtvGL~NP`6#^jLMjutw8%aW*q2*9;;^%Z*sI`T)ZM+LxEpW$3r4C60Z(=~-2w2|=*1!tKb%ME z&bH?{U#4^lc8IYk!=o+H>93%R17u#)TQvKGr2&TuGbIy}HIa70H03CJw9Lf;qk5aw zbtAdCUaBr@(`{q;8toh2`m?l+=HZ=_T3fMm8c}~9i(H}QBk(cMmp=3~8(goFcr#Tz z!J!xyK#%groVl9EV93DpdBgI35WVozlx?9;(<8)P@A83p~ozf_MDJSQ<`IrqeS4e^?Or}Qsh<5J-Gue2yaqb zU1wRM-HBE=s%fj7pFxryncCusjXHG1=M7ps2b$z=-i9194J<_wJh)M)1+}}R;5Ruy z&;;kIbRlYl$449>qKl>PyGz6AL%~^0QwWZ5lpmm=7kSH~&avX1`Sa=X$iBI4*!$$NI8|RT=Z)$#QzDobLVgj2}AX4=ieWb!FOV;b(KeCd|fJ`4*V| z$JckMh=)h#iiN;=zPYnnzzCqUpdtdChXXRr_W~t5^}Mnij$-yDJzD1idRZ^kT%E>V zC0JG|)heIt#6__(GjO=v!tJ?ys|$a{IdX7^<5|MHi09O&xIcrsl!x~A^LwVnVUxxNn+ zu#UXB=7B0y49=WRKw0~fYNV0p>H*XMRX|Mdhg03niF$*ZqfYFGP^=p%6O2S z7qVRMrS;rTO8A9ndY}(}M2l^GCm9-JzW#GaV+DMekuY%v2IN^7ms;QqvGwen@@MK% zW>d?&=?i!5YgF1(8TD7_2Uj%(N0z7$f~D(JOfn`VyXi41X@7EvGPX8tN9!NCrmLUB z&w6yP9vHtmQ_TN7f(U2amqWO;h&;8#`I$X)@>YVk#8`hn4tG+V7cdy*D9HFmuC$Jv z;>TRjn&7+vl?`!&XgUbjDj@C92>@jcu@XmXk6 zpGO5%?$GzBXO=7>OJP|*Z!NeAvZSkRWHY8;6}Ma9rZZv-A`?%o%}pnwx2s99Iw!1B zGG-^_qZVl;J(Hab@f?q%IzDS;BMqz8Nz+Pa%cEL(+ZHlW;9mS#Vv|(V6VE>q*Ru({ zc~8cpCzdSu4sTFZD_ydb;vD;ym%i#2Ram04>lwtzT^>}I72kSlx-0S6+G?4w?;|T@ zV2R;1*FjsbRZYNG5%?`j-9HR$K$C2RobrOGE=crBkqlP)5FY}xu!N;x2cH<^C(%h5 z&_pven8$Oj65^$u=Vy=V>`JRa!7wNrz4Jc(dZg20k@HMb*z;ydA=9nku z!WHwRVZWWYVivdwGnZl5oCi#$qN#^!#vxmK)dusB;k?3=lWyW)+FV}Pz(^tDDCs-s z428IyF;&f@?{|~ZjC{KYwUWt=h>Zxfdt{*ZY9D^=jIg&b90t%}!~L&jSm+JRvAL zPq*o{`I9qR<%|HM551@*xW37UKuJ&0p)53~im>LKy!B^%9D4@nvBt4qJY_>-onp}G zQtnnFJc#gxlxIet-nu&9RRZKnahjuG%;vF+q3nSWsnc!3TXFwb@KeCCzy(Or%Rlwz zzs&BtX}Pov8F(vxifI%KpQqX1l+Ls~sRqW|a~1`!fe?L7h{w>X!I<3_&)fXXlrpD= z#1tmmb*$4SnEQMHWS-Ar5NXZ;jf}Z1e{&;@ph9FGn1SjlPS)GuVw(Fp*ZMfcLjW-& z0h8aLfi*-wBsXT2GK=sKH$l_~UwHaT^a}R@O2hrMAW!?>fDcG`ot@~A?cwz}mpOiq z_^4w2lx$&+4dmPSe5!>mveEinz(A>#s0WUc>?g+qPw=H5bmzq13vbW3Mw1NNEi^hr zY0Ou6ZdrOoSlSlzzdn|-W=xLUci|*hPcKPiQ#5OAIVGKkc|KI1c660{R{q!pm+AaA zoQbKYz*+_-JKVHwl#Fw@*GyGRk&(MWs@5YQH~b7xsrOdBo(bGG+~ zK92wtc`|O^`9XXem7(nqF^}xoTEOdBNjNY%J(YoZYm#q`R>~nXOx>%9=dn;0$p!A% zIN)snK@6`2>I*O&mBAl;p^=-S6|qjvp@#RCRt4~qbGcl&_A9ruCBlEr6Suxif8$9FtVqWw>#oH zXfEV^%;#Z%YwIZSfC$aATgpm%rxNDV%J04>B}EPyS>C78M$;)nwN;7}#C7_G8?>UZ za_HTmf&xf>J`WvCTL-YEtp7cYDv&lk%Uf|;_SAiu5%zvD^Z(KYb7L)Q?yp~8L_sto zo9Fn6R9haGN@XuD-8wI37oQyHa?P+{?17rsug(WEsT?(Qwn*Yb%$4EGlGQOqNm{tv zz>4!O8{;i;Y&WTL0_bbRX6sdN(T-B(U}fgwm`ujYQ2C_&N1QND{YmjwcN^4UowLiF zYwBB${kzkwSDmUh9B(lFz!?hX>5^CJoeaGq+lg2I(Ojor=Mw$1c#CDC1^kx^&`xlk z!Ua_Fct>$F0Qa=z!~fJ9&*ep{uS6H~>sc7tR@Qmalqsp+!ro<-{{A^a=h zA?lT^*lVVja?r>XN?zDA){jC+cdH1t-!S${kHT+}!7{~1PUF`<*GInEJO5RKZIKHxO#vVPH>EV;NfyDb0Kk(%hdVU=&$xo8+A zSA5A$@b|~toR=jvo4OX?-R~go9xuTGK=V2fVP*uOhf~F@Q{Zkb)1L+DC#}@O6b$ri zC5L(&FxwW7Fe>RBk?-I85X}~2z+j~>`~!dL<6A?^rpg;W@+Mdfg6beZ+Tv1bL?(95 zl_|UPG%UJtFlA{P-zdy(04|GAT(f`l| zcPhf&<=bv@mWfPqZ^>k7PKq;}+jv_~S^5D?U4ZzhazzAOeTp%-&D!GP^G`Itd3*Dl z93u~F6)t>*mXrfcMai@8A2|=3F?H&L-5BU+&p0X=SkUk?05~OroJ=%`8_mS$sRqPy z)YJ)>2Rbu)JT)JEFO8DEb`;+qtxms~tJd3^CD8rr)v!0Ci< z4uYubK{;?hcG;^NPp{gCL5W-)TOyz1vaEtID)ir z-;wW4S_bb*4M135znPRu%~<{5bvrCQ55=|G(^E|t6)we3Y~6edjf#=|5i&t3U+@^9 zQO0VV+;}J!A6xUW#x%D|fgpT(#k&DL8#Q#sZz`ZHdMIS^tA#4*-CBG<0wTv@!l(4UZPUw3WN@_|c_kW1h47yg|lTXM|t zI9^&6GDlSZ;5J=DTUt4b)<7S2256x;QU2GDyt2JXH{q;>+aBoP^%-qro(1gIQE3w+5GsQG%aX^5pT6Xnz;kZ;O>x} zG;Umw>V$vgZ61eqwoIs2lpT^Cf}U>tLFxS>4?aT78Eawk&IM&Vx&O%y{jA;46vF#O zdH5nnEUIFnwAK2(Ml;B0tLS6~X$^SpnkW7##57X!MjJ_5Hue@64(IV0%Tr#I8Dc<73Z)rPI#k&iqIv}T61&)v4uRWxE~ zj)@yFSH}#S5zeh$13~JsZ;a{DA>1yiNBkwE!y`hmppE0Q5yG8o zo{fun+eokQc6#CCd^jI`BWyk8ipRN{e}j|U9=avzf61p=2h?}X*Jdm%AQ-H`&0hoL z)W{-`TQ;^uD3w#V?ulY>E%lkWC?&W8X~d$e1u1RDtdPExvMHRh|GdTaN3mu6a4Qr-RP^G9J~&aR z6PcY@{OMzA5*;b ziao?5j`W%1VrwapZ~Oa!=9lKu&-??#3euS?#Y-s`xn@W@s3^6=Z0&5_ytE>jLq9`& z&9#!JG2}|Bg6VSbC+F9oHHv8QlCT4trSAaX@Lhb)ockSgNXkDBa!T2DaX(`(%I1x8 zw$IpFA!Q)9@ygi-vqDS$xd zLd-Wnf_X{R_G;0=Ebe0swJlPZb^zQ15T==hw}67UR^(uj7;b;iUtS?C!qY}Y&eS-~ zC3jlyC~P23dqk*HzbQB2{jdkGFwfvR256~%7`CJ3JBS-(J6LSJ4l242zKK@r@IXKA z0AAC-aT}@z@zdfT^wy2eO`LVkJ$pe7sQp-5<07UocI@e3uk*AvK2K)dp}=|^?Fh`0j-%d(3M(UL%&s&(6+hYg$Ds;+{Kl!5at$?YNHg=@|*m$X# z-zPLgNAV`|sg>nw3&WKb1x1^-noko!0j5K(nt0k0;~x*r?Egk$u51>}!)M!g1g~EN zVNsH$ht>dC+i80+c-gx1^9n(OXWQLFmC=x^r!xYhoUl}VT;5F$6%$J{U8Nm{pE_Fd zT-;fcKHxrTWCuWL)68<#-T6Zu7%LcSf8L{fo&%wO!a!k*L}3RoNF){@)aI1`aJ~b{ zp}slb+z(=rCgq9j?9_3|E=9vpfMDWc6^}6z#hAZf`>`(UiZw%}bz7k@T2^hB7-H=z z0G+^K(DV;8zN1t)v}&YMnP3eUBe)(jjS~KJxbx6W8ji`pzz&7}21IUOl&Jjz zK%GX0hNkLEz-O#Hc_9-BQhnw2;P4gzU39xk;7nUeYq{;;9@t3DY2&BV&f%;n`0R!m z%OFd9u}^~JS_iYKiBjqz1@#+1cXCJXOI%?bjUOETI?-SFus&w#0#mZ#bEI&QXy`<8 z$SK*G0bJ3rF0a7G%&P-b5FP)5f?rsbx-vmNUf33uPC_fb_h2r_SF1uNnNV=!hmKPC zbuE8RNJg_gfR6uj?o)VTqd?HK@FkKs%fFDGv-jz2sMl}i`)L%|fi8vr+nmzI8%cH& zZ1Tny4U3tn8ovq04a4P*9VwQH!jreVCYZ~2#3Mh~pUJQ`R}N4jydsGwgU&55>#jvn zUb}>vn5(VJT8D|J5?QXasS)@#Xd2Ey4)OkNz%M3_UP$5VHdp`9MV@k{H>5f)#qwSq zWuCZ2^xCDL#dQC2ZcRGt#q7~?Xt5X}Z&?%Q0Nv)>2wQbyhtw}}8p_N{!EG1J9`u6^ zhq6v3{gJ4_6*q9#(G;o3Nl6KIpJE7R?sRo$tQBHec%Gy^_Es!+-#F;b9oo3%uWkt< z^qUi)92Y?O+oet4#`};YG@N#ec90|q5V=gl@XyfCYM3*mMF_=oGt0c(*m)%PgxuB5 zAqO>eCqByEj=rG48SC)u2^oY{?IIp7zhw3pTFfz2dX$UX;~X0;v4xct%373UC$*cWD{1X0ut6irTAMrmoXDIU zS#vEwtHDX!YDCuq+egeO!DO3=aX_?MrIel8*mgnHzjw@c_eXiFHQ=MPle|{a z30kb^By(?6KN-l2UBj$bzqZ%*j|U)4!=aYbuNF5;a^#QJ8sh8U2>K@E!3Ql8hhpr; z(_e8NuDOV|4N1Er^yLpU*HUCeVe&to2uUDBMBf`ZIcKn5?N-nK&^KG_QyX2I(N=zY zdGG!DYc|N!#O))i!OkWHckb_nqHG0cjnyd-4%{xti`w;hO;mGIUOPt^kU8nC*`7~h zOBbj!zn^Tk7XsW}!T0I9J<_GsKfOR!<;cw#;0b=&M1fVKEQCfgpBSuuA3MF`EpXc7 zKyI7cg<%+>8bU1g1@nd<=gKINsGY;3vi|lT(Q~0VKa0553tY$c~`A^?jtj1dY z0pl|ooUF_CXU$haPKg*0!}_c%3Fdd){jA25Zcv5VX_jEMtD{D1P6Al3nVHd!+e2VJ zgj+Qp645kw`@f+WP?||s_5x`XCSpN68=Q2G=yHb-v8lyr4i@htP7gQPa>+V|Q`o|R zh4w6bLzo@{v=fM%V!@$?b3L)E(a8m`>B0@riM?t&h101Nrw~NtzYqi%KGU*0PfBp><=7KH&U7s*4tMdM@{C>AnV&NZ(5I1C0V1kOo%P=+y|d|v&J`y8|iX9 zoi2}gZ@mbNZTqF>oD@7Qo-X=wf`1c7bxk*;;+gy1KBk8;EM$R9oQS`%=Ap-~Holmq zajg-q;=+#PgqhWtjlMT=sw=k4ed|IRgakpauil�e`RxTg&0DQY4AFwD4sVedrlJ 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 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-top-wide.png b/docs/img/d3gui-cst-top-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f5c134d397344874cf5e86975f74fae4d39f5d GIT binary patch literal 11328 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 U{Gzrx_b)s~`sUZluR1^cKO}z#DgXcg literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-cst-tr-wide.svg b/docs/img/d3gui-cst-tr-wide.svg new file mode 100644 index 00000000..2f2da348 --- /dev/null +++ b/docs/img/d3gui-cst-tr-wide.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + diff --git a/docs/img/d3gui-example-16_9-letterbox.png b/docs/img/d3gui-example-16_9-letterbox.png new file mode 100644 index 0000000000000000000000000000000000000000..1b395be15a2ff93497c29c3af3c304397810e084 GIT binary patch literal 21043 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�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 P&uDFBYgzQw*Wdjw4Y2r3 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-example-16_9.png b/docs/img/d3gui-example-16_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b41acef0da3b3fbde72f8cf3f34de7972cc16198 GIT binary patch literal 29071 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 literal 0 HcmV?d00001 diff --git a/docs/img/d3gui-example-4_3.png b/docs/img/d3gui-example-4_3.png new file mode 100644 index 0000000000000000000000000000000000000000..98c252a34f13790c364de5817fb9313b48c20caa GIT binary patch literal 19843 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 as