Program Listing for File common.h¶
↰ Return to documentation for file (/home/docs/checkouts/readthedocs.org/user_builds/canonical-mir-documentation/checkouts/2.26/include/core/mir_toolkit/common.h)
/*
* Simple definitions common to client and server.
*
* Copyright © Canonical Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2 or 3 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MIR_COMMON_H_
#define MIR_COMMON_H_
//for clang
#ifndef __has_feature
#define __has_feature(x) 0 // Compatibility with non-clang
#endif
//for clang
#ifndef __has_extension
#define __has_extension __has_feature // Compatibility with pre-3.0
#endif
/* This is C code. Not C++. */
typedef enum MirWindowAttrib
{
/* Do not specify values...code relies on 0...N ordering. */
mir_window_attrib_type,
mir_window_attrib_state,
mir_window_attrib_focus = mir_window_attrib_state+2,
mir_window_attrib_dpi,
mir_window_attrib_visibility,
mir_window_attrib_preferred_orientation,
/* Must be last */
mir_window_attribs
} MirWindowAttrib;
typedef enum MirWindowType
{
mir_window_type_normal,
mir_window_type_utility,
mir_window_type_dialog,
mir_window_type_gloss,
mir_window_type_freestyle,
mir_window_type_menu,
mir_window_type_inputmethod,
mir_window_type_satellite,
mir_window_type_tip,
mir_window_type_decoration,
mir_window_types
} MirWindowType;
typedef enum MirWindowState
{
mir_window_state_unknown,
mir_window_state_restored,
mir_window_state_minimized,
mir_window_state_maximized,
mir_window_state_vertmaximized,
/* mir_window_state_semimaximized,
Omitted for now, since it's functionally a subset of vertmaximized and
differs only in the X coordinate. */
mir_window_state_fullscreen,
mir_window_state_horizmaximized,
mir_window_state_hidden,
mir_window_state_attached,
mir_window_states
} MirWindowState;
typedef enum MirWindowFocusState
{
mir_window_focus_state_unfocused = 0,
mir_window_focus_state_focused,
mir_window_focus_state_active
} MirWindowFocusState;
typedef enum MirWindowVisibility
{
mir_window_visibility_occluded = 0,
mir_window_visibility_exposed
} MirWindowVisibility;
typedef enum MirLifecycleState
{
mir_lifecycle_state_will_suspend,
mir_lifecycle_state_resumed,
mir_lifecycle_connection_lost
} MirLifecycleState;
typedef enum MirPowerMode
{
mir_power_mode_on, /* Display in use. */
mir_power_mode_standby, /* Blanked, low power. */
mir_power_mode_suspend, /* Blanked, lowest power. */
mir_power_mode_off /* Powered down. */
} MirPowerMode;
typedef enum MirOutputType
{
mir_output_type_unknown = 0, /* DRM_MODE_CONNECTOR_Unknown */
mir_output_type_vga = 1, /* DRM_MODE_CONNECTOR_VGA */
mir_output_type_dvii = 2, /* DRM_MODE_CONNECTOR_DVII */
mir_output_type_dvid = 3, /* DRM_MODE_CONNECTOR_DVID */
mir_output_type_dvia = 4, /* DRM_MODE_CONNECTOR_DVIA */
mir_output_type_composite = 5, /* DRM_MODE_CONNECTOR_Composite */
mir_output_type_svideo = 6, /* DRM_MODE_CONNECTOR_SVIDEO */
mir_output_type_lvds = 7, /* DRM_MODE_CONNECTOR_LVDS */
mir_output_type_component = 8, /* DRM_MODE_CONNECTOR_Component */
mir_output_type_ninepindin = 9, /* DRM_MODE_CONNECTOR_9PinDIN */
mir_output_type_displayport = 10, /* DRM_MODE_CONNECTOR_DisplayPort */
mir_output_type_hdmia = 11, /* DRM_MODE_CONNECTOR_HDMIA */
mir_output_type_hdmib = 12, /* DRM_MODE_CONNECTOR_HDMIB */
mir_output_type_tv = 13, /* DRM_MODE_CONNECTOR_TV */
mir_output_type_edp = 14, /* DRM_MODE_CONNECTOR_eDP */
mir_output_type_virtual = 15, /* DRM_MODE_CONNECTOR_VIRTUAL */
mir_output_type_dsi = 16, /* DRM_MODE_CONNECTOR_DSI */
mir_output_type_dpi = 17, /* DRM_MODE_CONNECTOR_DPI */
} MirOutputType;
typedef enum MirPromptSessionState
{
mir_prompt_session_state_stopped = 0,
mir_prompt_session_state_started,
mir_prompt_session_state_suspended
} MirPromptSessionState;
typedef enum MirPixelFormat
{
mir_pixel_format_invalid = 0,
mir_pixel_format_abgr_8888 = 1,
mir_pixel_format_xbgr_8888 = 2,
mir_pixel_format_argb_8888 = 3,
mir_pixel_format_xrgb_8888 = 4,
mir_pixel_format_bgr_888 = 5,
mir_pixel_format_rgb_888 = 6,
mir_pixel_format_rgb_565 = 7,
mir_pixel_format_rgba_5551 = 8,
mir_pixel_format_rgba_4444 = 9,
/*
* TODO: Big endian support would require additional formats in order to
* composite software surfaces using OpenGL (GL_RGBA/GL_BGRA_EXT):
* mir_pixel_format_rgb[ax]_8888
* mir_pixel_format_bgr[ax]_8888
*/
mir_pixel_formats /* Note: This is always max format + 1 */
} MirPixelFormat;
/* This could be improved... https://bugs.launchpad.net/mir/+bug/1236254 */
#define MIR_BYTES_PER_PIXEL(f) ((f) == mir_pixel_format_bgr_888 ? 3 : \
(f) == mir_pixel_format_rgb_888 ? 3 : \
(f) == mir_pixel_format_rgb_565 ? 2 : \
(f) == mir_pixel_format_rgba_5551 ? 2 : \
(f) == mir_pixel_format_rgba_4444 ? 2 : \
4)
typedef enum MirOrientation
{
mir_orientation_normal = 0,
mir_orientation_left = 90,
mir_orientation_inverted = 180,
mir_orientation_right = 270
} MirOrientation;
typedef enum MirMirrorMode
{
mir_mirror_mode_none,
mir_mirror_mode_vertical,
mir_mirror_mode_horizontal
} MirMirrorMode;
typedef enum MirOrientationMode
{
mir_orientation_mode_portrait = 1 << 0,
mir_orientation_mode_landscape = 1 << 1,
mir_orientation_mode_portrait_inverted = 1 << 2,
mir_orientation_mode_landscape_inverted = 1 << 3,
mir_orientation_mode_portrait_any = mir_orientation_mode_portrait |
mir_orientation_mode_portrait_inverted,
mir_orientation_mode_landscape_any = mir_orientation_mode_landscape |
mir_orientation_mode_landscape_inverted,
mir_orientation_mode_any = mir_orientation_mode_portrait_any |
mir_orientation_mode_landscape_any
} MirOrientationMode;
typedef enum MirEdgeAttachment
{
mir_edge_attachment_vertical = 1 << 0,
mir_edge_attachment_horizontal = 1 << 1,
mir_edge_attachment_any = mir_edge_attachment_vertical |
mir_edge_attachment_horizontal
} MirEdgeAttachment;
// Inspired by GdkGravity
typedef enum MirPlacementGravity
{
mir_placement_gravity_center = 0,
mir_placement_gravity_west = 1 << 0,
mir_placement_gravity_east = 1 << 1,
mir_placement_gravity_north = 1 << 2,
mir_placement_gravity_south = 1 << 3,
mir_placement_gravity_northwest = mir_placement_gravity_north | mir_placement_gravity_west,
mir_placement_gravity_northeast = mir_placement_gravity_north | mir_placement_gravity_east,
mir_placement_gravity_southwest = mir_placement_gravity_south | mir_placement_gravity_west,
mir_placement_gravity_southeast = mir_placement_gravity_south | mir_placement_gravity_east
} MirPlacementGravity;
// Inspired by GdkAnchorHints
typedef enum MirPlacementHints
{
mir_placement_hints_flip_x = 1 << 0,
mir_placement_hints_flip_y = 1 << 1,
mir_placement_hints_slide_x = 1 << 2,
mir_placement_hints_slide_y = 1 << 3,
mir_placement_hints_resize_x = 1 << 4,
mir_placement_hints_resize_y = 1 << 5,
mir_placement_hints_antipodes= 1 << 6,
mir_placement_hints_flip_any = mir_placement_hints_flip_x|mir_placement_hints_flip_y,
mir_placement_hints_slide_any = mir_placement_hints_slide_x|mir_placement_hints_slide_y,
mir_placement_hints_resize_any = mir_placement_hints_resize_x|mir_placement_hints_resize_y,
} MirPlacementHints;
typedef enum MirResizeEdge
{
mir_resize_edge_none = 0,
mir_resize_edge_west = 1 << 0,
mir_resize_edge_east = 1 << 1,
mir_resize_edge_north = 1 << 2,
mir_resize_edge_south = 1 << 3,
mir_resize_edge_northwest = mir_resize_edge_north | mir_resize_edge_west,
mir_resize_edge_northeast = mir_resize_edge_north | mir_resize_edge_east,
mir_resize_edge_southwest = mir_resize_edge_south | mir_resize_edge_west,
mir_resize_edge_southeast = mir_resize_edge_south | mir_resize_edge_east
} MirResizeEdge;
typedef enum MirFormFactor
{
mir_form_factor_unknown,
mir_form_factor_phone,
mir_form_factor_tablet,
mir_form_factor_monitor,
mir_form_factor_tv,
mir_form_factor_projector,
} MirFormFactor;
typedef enum MirSubpixelArrangement
{
mir_subpixel_arrangement_unknown,
mir_subpixel_arrangement_horizontal_rgb,
mir_subpixel_arrangement_horizontal_bgr,
mir_subpixel_arrangement_vertical_rgb,
mir_subpixel_arrangement_vertical_bgr,
mir_subpixel_arrangement_none
} MirSubpixelArrangement;
typedef enum MirShellChrome
{
mir_shell_chrome_normal,
mir_shell_chrome_low,
} MirShellChrome;
typedef enum MirPointerConfinementState
{
mir_pointer_unconfined,
mir_pointer_confined_oneshot,
mir_pointer_confined_persistent,
mir_pointer_locked_oneshot,
mir_pointer_locked_persistent,
} MirPointerConfinementState;
typedef enum MirOutputGammaSupported
{
mir_output_gamma_unsupported,
mir_output_gamma_supported
} MirOutputGammaSupported;
typedef enum MirDepthLayer
{
mir_depth_layer_background,
mir_depth_layer_below,
mir_depth_layer_application,
mir_depth_layer_always_on_top,
mir_depth_layer_above,
mir_depth_layer_overlay,
} MirDepthLayer;
typedef enum MirFocusMode
{
mir_focus_mode_focusable,
mir_focus_mode_disabled,
mir_focus_mode_grabbing,
} MirFocusMode;
typedef enum MirTiledEdge
{
mir_tiled_edge_none = 0,
mir_tiled_edge_north = 1 << 0,
mir_tiled_edge_east = 1 << 1,
mir_tiled_edge_south = 1 << 2,
mir_tiled_edge_west = 1 << 3
} MirTiledEdge;
typedef enum MirOutputFilter
{
mir_output_filter_none,
mir_output_filter_grayscale,
mir_output_filter_invert,
} MirOutputFilter;
#endif