OverviewFilesCommitsIssuesDocsReleasesPeers

nvidia-rtx-godot / servers / display / display_server_enums.h

420 lines · c ref:
/**************************************************************************/
/*  display_server_enums.h                                                */
/**************************************************************************/
/*                         This file is part of:                          */
/*                             GODOT ENGINE                               */
/*                        https://godotengine.org                         */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */
/*                                                                        */
/* Permission is hereby granted, free of charge, to any person obtaining  */
/* a copy of this software and associated documentation files (the        */
/* "Software"), to deal in the Software without restriction, including    */
/* without limitation the rights to use, copy, modify, merge, publish,    */
/* distribute, sublicense, and/or sell copies of the Software, and to     */
/* permit persons to whom the Software is furnished to do so, subject to  */
/* the following conditions:                                              */
/*                                                                        */
/* The above copyright notice and this permission notice shall be         */
/* included in all copies or substantial portions of the Software.        */
/*                                                                        */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,        */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY   */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,   */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE      */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                 */
/**************************************************************************/

#pragma once

namespace DisplayServerEnums {

/* MAIN */

enum Context {
	CONTEXT_EDITOR,
	CONTEXT_PROJECTMAN,
	CONTEXT_ENGINE,
};

enum Feature {
#ifndef DISABLE_DEPRECATED
	FEATURE_GLOBAL_MENU,
#endif
	FEATURE_SUBWINDOWS,
	FEATURE_TOUCHSCREEN,
	FEATURE_MOUSE,
	FEATURE_MOUSE_WARP,
	FEATURE_CLIPBOARD,
	FEATURE_VIRTUAL_KEYBOARD,
	FEATURE_CURSOR_SHAPE,
	FEATURE_CUSTOM_CURSOR_SHAPE,
	FEATURE_NATIVE_DIALOG,
	FEATURE_IME,
	FEATURE_WINDOW_TRANSPARENCY,
	FEATURE_HIDPI,
	FEATURE_ICON,
	FEATURE_NATIVE_ICON,
	FEATURE_ORIENTATION,
	FEATURE_SWAP_BUFFERS,
	FEATURE_KEEP_SCREEN_ON,
	FEATURE_CLIPBOARD_PRIMARY,
	FEATURE_TEXT_TO_SPEECH,
	FEATURE_EXTEND_TO_TITLE,
	FEATURE_SCREEN_CAPTURE,
	FEATURE_STATUS_INDICATOR,
	FEATURE_NATIVE_HELP,
	FEATURE_NATIVE_DIALOG_INPUT,
	FEATURE_NATIVE_DIALOG_FILE,
	FEATURE_NATIVE_DIALOG_FILE_EXTRA,
	FEATURE_WINDOW_DRAG,
	FEATURE_SCREEN_EXCLUDE_FROM_CAPTURE,
	FEATURE_WINDOW_EMBEDDING,
	FEATURE_NATIVE_DIALOG_FILE_MIME,
	FEATURE_EMOJI_AND_SYMBOL_PICKER,
	FEATURE_NATIVE_COLOR_PICKER,
	FEATURE_SELF_FITTING_WINDOWS,
	FEATURE_ACCESSIBILITY_SCREEN_READER,
	FEATURE_HDR_OUTPUT,
	FEATURE_PIP_MODE,
};

/* RENDERING DEVICE */

enum RenderingDeviceCreationStatus {
	UNKNOWN,
	SUCCESS,
	FAILURE,
};

/* TTS */

enum TTSUtteranceEvent {
	TTS_UTTERANCE_STARTED,
	TTS_UTTERANCE_ENDED,
	TTS_UTTERANCE_CANCELED,
	TTS_UTTERANCE_BOUNDARY,
	TTS_UTTERANCE_MAX,
};

/* MOUSE */

// Keep synced with InputClassEnums::MouseMode enum.
enum MouseMode {
	MOUSE_MODE_VISIBLE, // Input::MouseMode::MOUSE_MODE_VISIBLE
	MOUSE_MODE_HIDDEN, // Input::MouseMode::MOUSE_MODE_HIDDEN
	MOUSE_MODE_CAPTURED, // Input::MouseMode::MOUSE_MODE_CAPTURED
	MOUSE_MODE_CONFINED, // Input::MouseMode::MOUSE_MODE_CONFINED
	MOUSE_MODE_CONFINED_HIDDEN, // Input::MouseMode::MOUSE_MODE_CONFINED_HIDDEN
	MOUSE_MODE_MAX, // Input::MouseMode::MOUSE_MODE_MAX
};

// Keep synced with InputClassEnums and Control enums.
#undef CursorShape
enum CursorShape {
	CURSOR_ARROW,
	CURSOR_IBEAM,
	CURSOR_POINTING_HAND,
	CURSOR_CROSS,
	CURSOR_WAIT,
	CURSOR_BUSY,
	CURSOR_DRAG,
	CURSOR_CAN_DROP,
	CURSOR_FORBIDDEN,
	CURSOR_VSIZE,
	CURSOR_HSIZE,
	CURSOR_BDIAGSIZE,
	CURSOR_FDIAGSIZE,
	CURSOR_MOVE,
	CURSOR_VSPLIT,
	CURSOR_HSPLIT,
	CURSOR_HELP,
	CURSOR_MAX
};

/* KEYBOARD */

// Keep synced with LineEdit::VirtualKeyboardType enum.
enum VirtualKeyboardType {
	KEYBOARD_TYPE_DEFAULT,
	KEYBOARD_TYPE_MULTILINE,
	KEYBOARD_TYPE_NUMBER,
	KEYBOARD_TYPE_NUMBER_DECIMAL,
	KEYBOARD_TYPE_PHONE,
	KEYBOARD_TYPE_EMAIL_ADDRESS,
	KEYBOARD_TYPE_PASSWORD,
	KEYBOARD_TYPE_URL
};

/* SCREEN */

// Keep synced with EditorSettings::InitialScreen enum.
enum {
	INVALID_SCREEN = -1,
	SCREEN_WITH_MOUSE_FOCUS = -4,
	SCREEN_WITH_KEYBOARD_FOCUS = -3,
	SCREEN_PRIMARY = -2,
	SCREEN_OF_MAIN_WINDOW = -1, // Note: for the main window, determine screen from position.
};

// Keep the ScreenOrientation enum values in sync with the `display/window/handheld/orientation`
// project setting hint.
enum ScreenOrientation {
	SCREEN_LANDSCAPE,
	SCREEN_PORTRAIT,
	SCREEN_REVERSE_LANDSCAPE,
	SCREEN_REVERSE_PORTRAIT,
	SCREEN_SENSOR_LANDSCAPE,
	SCREEN_SENSOR_PORTRAIT,
	SCREEN_SENSOR,
};

/* WINDOW */

typedef int WindowID;

enum {
	MAIN_WINDOW_ID = 0,
	INVALID_WINDOW_ID = -1,
	INVALID_INDICATOR_ID = -1
};

enum HandleType {
	DISPLAY_HANDLE,
	WINDOW_HANDLE,
	WINDOW_VIEW,
	OPENGL_CONTEXT,
	EGL_DISPLAY,
	EGL_CONFIG,
	GLX_VISUALID,
	GLX_FBCONFIG,
};

enum WindowMode {
	WINDOW_MODE_WINDOWED,
	WINDOW_MODE_MINIMIZED,
	WINDOW_MODE_MAXIMIZED,
	WINDOW_MODE_FULLSCREEN,
	WINDOW_MODE_EXCLUSIVE_FULLSCREEN,
};

enum WindowFlags {
	WINDOW_FLAG_RESIZE_DISABLED,
	WINDOW_FLAG_BORDERLESS,
	WINDOW_FLAG_ALWAYS_ON_TOP,
	WINDOW_FLAG_TRANSPARENT,
	WINDOW_FLAG_NO_FOCUS,
	WINDOW_FLAG_POPUP,
	WINDOW_FLAG_EXTEND_TO_TITLE,
	WINDOW_FLAG_MOUSE_PASSTHROUGH,
	WINDOW_FLAG_SHARP_CORNERS,
	WINDOW_FLAG_EXCLUDE_FROM_CAPTURE,
	WINDOW_FLAG_POPUP_WM_HINT,
	WINDOW_FLAG_MINIMIZE_DISABLED,
	WINDOW_FLAG_MAXIMIZE_DISABLED,
	WINDOW_FLAG_MAX,
};

// Separate enum otherwise we get warnings in switches not handling all values.
enum WindowFlagsBit {
	WINDOW_FLAG_RESIZE_DISABLED_BIT = (1 << WINDOW_FLAG_RESIZE_DISABLED),
	WINDOW_FLAG_BORDERLESS_BIT = (1 << WINDOW_FLAG_BORDERLESS),
	WINDOW_FLAG_ALWAYS_ON_TOP_BIT = (1 << WINDOW_FLAG_ALWAYS_ON_TOP),
	WINDOW_FLAG_TRANSPARENT_BIT = (1 << WINDOW_FLAG_TRANSPARENT),
	WINDOW_FLAG_NO_FOCUS_BIT = (1 << WINDOW_FLAG_NO_FOCUS),
	WINDOW_FLAG_POPUP_BIT = (1 << WINDOW_FLAG_POPUP),
	WINDOW_FLAG_EXTEND_TO_TITLE_BIT = (1 << WINDOW_FLAG_EXTEND_TO_TITLE),
	WINDOW_FLAG_MOUSE_PASSTHROUGH_BIT = (1 << WINDOW_FLAG_MOUSE_PASSTHROUGH),
	WINDOW_FLAG_SHARP_CORNERS_BIT = (1 << WINDOW_FLAG_SHARP_CORNERS),
	WINDOW_FLAG_EXCLUDE_FROM_CAPTURE_BIT = (1 << WINDOW_FLAG_EXCLUDE_FROM_CAPTURE),
	WINDOW_FLAG_POPUP_WM_HINT_BIT = (1 << WINDOW_FLAG_POPUP_WM_HINT),
	WINDOW_FLAG_MINIMIZE_DISABLED_BIT = (1 << WINDOW_FLAG_MINIMIZE_DISABLED),
	WINDOW_FLAG_MAXIMIZE_DISABLED_BIT = (1 << WINDOW_FLAG_MAXIMIZE_DISABLED),
};

enum WindowEvent {
	WINDOW_EVENT_MOUSE_ENTER,
	WINDOW_EVENT_MOUSE_EXIT,
	WINDOW_EVENT_FOCUS_IN,
	WINDOW_EVENT_FOCUS_OUT,
	WINDOW_EVENT_CLOSE_REQUEST,
	WINDOW_EVENT_GO_BACK_REQUEST,
	WINDOW_EVENT_DPI_CHANGE,
	WINDOW_EVENT_TITLEBAR_CHANGE,
	WINDOW_EVENT_FORCE_CLOSE,
	WINDOW_EVENT_PCL_PING,
	WINDOW_EVENT_OUTPUT_MAX_LINEAR_VALUE_CHANGED,
};

enum WindowResizeEdge {
	WINDOW_EDGE_TOP_LEFT,
	WINDOW_EDGE_TOP,
	WINDOW_EDGE_TOP_RIGHT,
	WINDOW_EDGE_LEFT,
	WINDOW_EDGE_RIGHT,
	WINDOW_EDGE_BOTTOM_LEFT,
	WINDOW_EDGE_BOTTOM,
	WINDOW_EDGE_BOTTOM_RIGHT,
	WINDOW_EDGE_MAX,
};

// Keep the VSyncMode enum values in sync with the `display/window/vsync/vsync_mode`
// project setting hint.
enum VSyncMode {
	VSYNC_DISABLED,
	VSYNC_ENABLED,
	VSYNC_ADAPTIVE,
	VSYNC_MAILBOX
};

enum ProgressState {
	PROGRESS_STATE_NOPROGRESS,
	PROGRESS_STATE_INDETERMINATE,
	PROGRESS_STATE_NORMAL,
	PROGRESS_STATE_ERROR,
	PROGRESS_STATE_PAUSED,
};

/* DIALOGS */

enum FileDialogMode {
	FILE_DIALOG_MODE_OPEN_FILE,
	FILE_DIALOG_MODE_OPEN_FILES,
	FILE_DIALOG_MODE_OPEN_DIR,
	FILE_DIALOG_MODE_OPEN_ANY,
	FILE_DIALOG_MODE_SAVE_FILE,
	FILE_DIALOG_MODE_SAVE_MAX
};

/* STATUS INDICATOR */

typedef int IndicatorID;

#ifndef DISABLE_DEPRECATED

/* ACCESSIBILITY */

enum AccessibilityRole {
	ROLE_UNKNOWN,
	ROLE_DEFAULT_BUTTON,
	ROLE_AUDIO,
	ROLE_VIDEO,
	ROLE_STATIC_TEXT,
	ROLE_CONTAINER,
	ROLE_PANEL,
	ROLE_BUTTON,
	ROLE_LINK,
	ROLE_CHECK_BOX,
	ROLE_RADIO_BUTTON,
	ROLE_CHECK_BUTTON,
	ROLE_SCROLL_BAR,
	ROLE_SCROLL_VIEW,
	ROLE_SPLITTER,
	ROLE_SLIDER,
	ROLE_SPIN_BUTTON,
	ROLE_PROGRESS_INDICATOR,
	ROLE_TEXT_FIELD,
	ROLE_MULTILINE_TEXT_FIELD,
	ROLE_COLOR_PICKER,
	ROLE_TABLE,
	ROLE_CELL,
	ROLE_ROW,
	ROLE_ROW_GROUP,
	ROLE_ROW_HEADER,
	ROLE_COLUMN_HEADER,
	ROLE_TREE,
	ROLE_TREE_ITEM,
	ROLE_LIST,
	ROLE_LIST_ITEM,
	ROLE_LIST_BOX,
	ROLE_LIST_BOX_OPTION,
	ROLE_TAB_BAR,
	ROLE_TAB,
	ROLE_TAB_PANEL,
	ROLE_MENU_BAR,
	ROLE_MENU,
	ROLE_MENU_ITEM,
	ROLE_MENU_ITEM_CHECK_BOX,
	ROLE_MENU_ITEM_RADIO,
	ROLE_IMAGE,
	ROLE_WINDOW,
	ROLE_TITLE_BAR,
	ROLE_DIALOG,
	ROLE_TOOLTIP,
	ROLE_REGION,
	ROLE_TEXT_RUN,
};

enum AccessibilityPopupType {
	POPUP_MENU,
	POPUP_LIST,
	POPUP_TREE,
	POPUP_DIALOG,
};

enum AccessibilityFlags {
	FLAG_HIDDEN,
	FLAG_MULTISELECTABLE,
	FLAG_REQUIRED,
	FLAG_VISITED,
	FLAG_BUSY,
	FLAG_MODAL,
	FLAG_TOUCH_PASSTHROUGH,
	FLAG_READONLY,
	FLAG_DISABLED,
	FLAG_CLIPS_CHILDREN,
};

enum AccessibilityAction {
	ACTION_CLICK,
	ACTION_FOCUS,
	ACTION_BLUR,
	ACTION_COLLAPSE,
	ACTION_EXPAND,
	ACTION_DECREMENT,
	ACTION_INCREMENT,
	ACTION_HIDE_TOOLTIP,
	ACTION_SHOW_TOOLTIP,
	ACTION_SET_TEXT_SELECTION,
	ACTION_REPLACE_SELECTED_TEXT,
	ACTION_SCROLL_BACKWARD,
	ACTION_SCROLL_DOWN,
	ACTION_SCROLL_FORWARD,
	ACTION_SCROLL_LEFT,
	ACTION_SCROLL_RIGHT,
	ACTION_SCROLL_UP,
	ACTION_SCROLL_INTO_VIEW,
	ACTION_SCROLL_TO_POINT,
	ACTION_SET_SCROLL_OFFSET,
	ACTION_SET_VALUE,
	ACTION_SHOW_CONTEXT_MENU,
	ACTION_CUSTOM,
};

enum AccessibilityLiveMode {
	LIVE_OFF,
	LIVE_POLITE,
	LIVE_ASSERTIVE,
};

enum AccessibilityScrollUnit {
	SCROLL_UNIT_ITEM,
	SCROLL_UNIT_PAGE,
};

enum AccessibilityScrollHint {
	SCROLL_HINT_TOP_LEFT,
	SCROLL_HINT_BOTTOM_RIGHT,
	SCROLL_HINT_TOP_EDGE,
	SCROLL_HINT_BOTTOM_EDGE,
	SCROLL_HINT_LEFT_EDGE,
	SCROLL_HINT_RIGHT_EDGE,
};

#endif // DISABLE_DEPRECATED

} // namespace DisplayServerEnums