godot-module-template/servers/display/display_server_enums.h
2026-03-06 23:29:16 -08:00

417 lines
10 KiB
C++

/**************************************************************************/
/* 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,
};
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