UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
ui_node_window.cpp File Reference
#include "../ui_main.h"
#include "../ui_parse.h"
#include "../ui_font.h"
#include "../ui_nodes.h"
#include "../ui_internal.h"
#include "../ui_render.h"
#include "../ui_sprite.h"
#include "../ui_lua.h"
#include "ui_node_window.h"
#include "ui_node_panel.h"
#include "ui_node_abstractnode.h"
#include "../../client.h"
#include "../../../common/scripts_lua.h"

Go to the source code of this file.

Macros

#define EXTRADATA_TYPE   windowExtraData_t
 
#define EXTRADATA(node)   UI_EXTRADATA(node, EXTRADATA_TYPE)
 
#define EXTRADATACONST(node)   UI_EXTRADATACONST(node, EXTRADATA_TYPE)
 
#define TOP_HEIGHT   30
 

Functions

void UI_Window_SetBackgroundByName (uiNode_t *node, const char *name)
 set background sprite More...
 
uiNode_tUI_WindowNodeGetIndexedChild (uiNode_t *const node, const char *childName)
 Get a node from child index. More...
 
bool UI_WindowNodeAddIndexedNode (uiNode_t *const node, uiNode_t *const child)
 Add a node to the child index. More...
 
bool UI_WindowNodeRemoveIndexedNode (uiNode_t *const node, uiNode_t *const child)
 Remove a node from the child index. More...
 
bool UI_WindowIsFullScreen (const uiNode_t *const node)
 Check if a window is fullscreen or not. More...
 
void UI_Window_SetCloseButton (uiNode_t *node, bool value)
 Create/remove close button on window. More...
 
void UI_Window_SetDragButton (uiNode_t *node, bool value)
 Create/remove drag button. More...
 
void UI_Window_FlagFullscreen (uiNode_t *node)
 If the node size equals the full screen size, flag the node as isFullscreen, so it is displayed properly. More...
 
vec_tUI_WindowNodeGetNoticePosition (uiNode_t *node)
 Get the noticePosition from a window node. More...
 
bool UI_WindowIsDropDown (uiNode_t const *const node)
 True if the window is a drop down. More...
 
bool UI_WindowIsModal (uiNode_t const *const node)
 True if the window is a modal. More...
 
void UI_WindowNodeRegisterKeyBinding (uiNode_t *node, uiKeyBinding_t *binding)
 Add a key binding to a window node. Window node store key bindings for his node child. More...
 
uiKeyBinding_tUI_WindowNodeGetKeyBinding (uiNode_t const *const node, unsigned int key)
 Search a a key binding from a window node. Window node store key bindings for his node child. More...
 
void UI_RegisterWindowNode (uiBehaviour_t *behaviour)
 

Variables

static const int CONTROLS_IMAGE_DIMENSIONS = 16
 
static const int CONTROLS_PADDING = 8
 
static const vec4_t modalBackground = {0, 0, 0, 0.6}
 
static const vec4_t anamorphicBorder = {0, 0, 0, 1}
 
static const char * WINDOW_FONT_BIG = "f_big"
 
static const char * WINDOW_CLOSE_BUTTON_NAME = "close_window_button"
 
static const char * WINDOW_DRAG_BUTTON_NAME = "move_window_button"
 
const uiKeyBinding_tbinding
 

Detailed Description

Todo:
move it as an inheritance of panel behaviour?

Definition in file ui_node_window.cpp.

Macro Definition Documentation

#define EXTRADATA_TYPE   windowExtraData_t

Definition at line 41 of file ui_node_window.cpp.

Referenced by UI_RegisterWindowNode().

#define EXTRADATACONST (   node)    UI_EXTRADATACONST(node, EXTRADATA_TYPE)
#define TOP_HEIGHT   30

Definition at line 45 of file ui_node_window.cpp.

Referenced by uiWindowNode::draw(), and UI_Window_SetDragButton().

Function Documentation

void UI_Window_FlagFullscreen ( uiNode_t node)

If the node size equals the full screen size, flag the node as isFullscreen, so it is displayed properly.

Definition at line 391 of file ui_node_window.cpp.

References uiNode_t::box, EXTRADATA, uiBox_t::size, VID_NORM_HEIGHT, and VID_NORM_WIDTH.

Referenced by uiWindowNode::onLoaded(), and uiWindowNode::onSizeChanged().

void UI_Window_SetBackgroundByName ( uiNode_t node,
const char *  name 
)

set background sprite

Definition at line 61 of file ui_node_window.cpp.

References UI_EXTRADATA, and UI_GetSpriteByName().

Referenced by uiWindowNode_t_set_background().

void UI_Window_SetCloseButton ( uiNode_t node,
bool  value 
)

Create/remove close button on window.

Note
Creates a onClick event handler, should be refactored.
Todo:
Once image_t is known on the client, use image->width resp. image->height here

Definition at line 308 of file ui_node_window.cpp.

References _, uiNode_t::behaviour, uiNode_t::box, CONTROLS_IMAGE_DIMENSIONS, CONTROLS_PADDING, uiNode_t::dynamic, EXTRADATA, uiNode_t::onClick, uiBox_t::pos, uiNode_t::root, uiBox_t::size, uiNode_t::tooltip, UI_AllocNode(), UI_AllocStaticCommandAction(), UI_AppendNode(), UI_FindNode(), UI_GetPropertyFromBehaviour(), UI_NodeSetProperty(), UI_RemoveNode(), and WINDOW_CLOSE_BUTTON_NAME.

Referenced by uiWindowNode::onLoaded(), and uiWindowNode_t_set_closebutton().

bool UI_WindowIsDropDown ( uiNode_t const *const  node)

True if the window is a drop down.

Parameters
nodeA window node
Returns
True if the window is a drop down.

Definition at line 420 of file ui_node_window.cpp.

References EXTRADATACONST.

Referenced by UI_GetNodeAtPosition(), and UI_LeftClick().

bool UI_WindowIsFullScreen ( const uiNode_t *const  node)

Check if a window is fullscreen or not.

Definition at line 118 of file ui_node_window.cpp.

References EXTRADATACONST, and UI_NodeInstanceOf().

Referenced by uiWindowNode::doLayout(), uiWindowNode::draw(), UI_GetLastFullScreenWindow(), UI_GetNodeAtPosition(), and UI_MoveWindowOnTop().

bool UI_WindowIsModal ( uiNode_t const *const  node)

True if the window is a modal.

Parameters
nodeA window node
Returns
True if the window is a modal.

Definition at line 430 of file ui_node_window.cpp.

References EXTRADATACONST.

Referenced by UI_GetNodeAtPosition(), and UI_KeyPressed().

bool UI_WindowNodeAddIndexedNode ( uiNode_t *const  node,
uiNode_t *const  child 
)

Add a node to the child index.

Todo:
display a warning, we must not override a node name here

Definition at line 84 of file ui_node_window.cpp.

References Com_HashKey(), EXTRADATA, hash, node_index_s::hash_next, INDEXEDCHILD_HASH_SIZE, Mem_PoolAllocType, uiNode_t::name, node_index_s::next, node_index_s::node, Q_streq, and ui_sysPool.

Referenced by UI_InsertNode().

uiNode_t* UI_WindowNodeGetIndexedChild ( uiNode_t *const  node,
const char *  childName 
)

Get a node from child index.

Returns
A child node by his name, else nullptr

Definition at line 70 of file ui_node_window.cpp.

References Com_HashKey(), EXTRADATA, hash, INDEXEDCHILD_HASH_SIZE, and Q_streq.

Referenced by UI_ReadNodePath().

uiKeyBinding_t* UI_WindowNodeGetKeyBinding ( uiNode_t const *const  node,
unsigned int  key 
)

Search a a key binding from a window node. Window node store key bindings for his node child.

Parameters
nodeA window node
keyA key code, either K_ value or lowercase ascii

Definition at line 457 of file ui_node_window.cpp.

References binding, EXTRADATACONST, uiKeyBinding_s::key, uiKeyBinding_s::next, and UI_NodeInstanceOf().

Referenced by UI_KeyPressedInWindow().

vec_t* UI_WindowNodeGetNoticePosition ( uiNode_t node)

Get the noticePosition from a window node.

Parameters
nodeA window node
Returns
A position, else nullptr if no notice position

Definition at line 408 of file ui_node_window.cpp.

References EXTRADATA, and Vector2Empty.

Referenced by UI_DrawNotice().

void UI_WindowNodeRegisterKeyBinding ( uiNode_t node,
uiKeyBinding_t binding 
)

Add a key binding to a window node. Window node store key bindings for his node child.

Parameters
nodeA window node
bindingKey binding to link with the window (structure should not be already linked somewhere)
Todo:
Rework that function to remove possible wrong use of that function

Definition at line 442 of file ui_node_window.cpp.

References binding, EXTRADATA, uiKeyBinding_s::next, and UI_NodeInstanceOf().

Referenced by UI_SetKeyBindingEx().

bool UI_WindowNodeRemoveIndexedNode ( uiNode_t *const  node,
uiNode_t *const  child 
)

Remove a node from the child index.

Todo:
FIXME implement it

Definition at line 109 of file ui_node_window.cpp.

Referenced by UI_RemoveNode().

Variable Documentation

const vec4_t anamorphicBorder = {0, 0, 0, 1}
static

Definition at line 51 of file ui_node_window.cpp.

Referenced by uiWindowNode::draw().

const int CONTROLS_IMAGE_DIMENSIONS = 16
static

Definition at line 47 of file ui_node_window.cpp.

Referenced by UI_Window_SetCloseButton().

const int CONTROLS_PADDING = 8
static

Definition at line 48 of file ui_node_window.cpp.

Referenced by uiWindowNode::doLayout(), and UI_Window_SetCloseButton().

const vec4_t modalBackground = {0, 0, 0, 0.6}
static

Definition at line 50 of file ui_node_window.cpp.

Referenced by uiWindowNode::draw().

const char* WINDOW_CLOSE_BUTTON_NAME = "close_window_button"
static
const char* WINDOW_DRAG_BUTTON_NAME = "move_window_button"
static

Definition at line 56 of file ui_node_window.cpp.

Referenced by uiWindowNode::doLayout(), and UI_Window_SetDragButton().

const char* WINDOW_FONT_BIG = "f_big"
static

Definition at line 53 of file ui_node_window.cpp.

Referenced by uiWindowNode::onLoading().