/**************************************************************************/ /* 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_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