Mir
common.h
Go to the documentation of this file.
1/*
2 * Simple definitions common to client and server.
3 *
4 * Copyright © 2013-2016 Canonical Ltd.
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License version 2 or 3 as
8 * published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Author: Daniel van Vugt <daniel.van.vugt@canonical.com>
19 */
20
21#ifndef MIR_COMMON_H_
22#define MIR_COMMON_H_
23
25
26//for clang
27#ifndef __has_feature
28 #define __has_feature(x) 0 // Compatibility with non-clang
29#endif
30
31//for clang
32#ifndef __has_extension
33 #define __has_extension __has_feature // Compatibility with pre-3.0
34#endif
35
36#if __GNUC__ >= 6 || \
37 (__has_extension(attribute_deprecated_with_message) && \
38 __has_extension(enumerator_attributes))
39 #define MIR_DEPRECATED_ENUM(ENUM, INSTEAD) \
40 ENUM MIR_FOR_REMOVAL_IN_VERSION_1("Use " #INSTEAD " instead")
41#else
42 #define MIR_DEPRECATED_ENUM(ENUM, INSTEAD) \
43 ENUM
44#endif
49/* This is C code. Not C++. */
50
55typedef enum MirSurfaceAttrib
56{
57 /* Do not specify values...code relies on 0...N ordering. */
68 /* Must be last */
70} MirSurfaceAttrib MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowAttrib");
71
76typedef enum MirWindowAttrib
77{
78 /* Do not specify values...code relies on 0...N ordering. */
89 /* Must be last */
92
93typedef enum MirSurfaceType
94{
107} MirSurfaceType MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowType");
108
109typedef enum MirWindowType
110{
123
124typedef enum MirSurfaceState
125{
131 /* mir_surface_state_semimaximized,
132 Omitted for now, since it's functionally a subset of vertmaximized and
133 differs only in the X coordinate. */
139} MirSurfaceState MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowState");
140
141typedef enum MirWindowState
142{
148 /* mir_window_state_semimaximized,
149 Omitted for now, since it's functionally a subset of vertmaximized and
150 differs only in the X coordinate. */
157
159{
162} MirSurfaceFocusState MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowFocusState");
163
165{
169
171{
174} MirSurfaceVisibility MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowFocusState");
175
177{
181
183{
188
189typedef enum MirPowerMode
190{
191 mir_power_mode_on, /* Display in use. */
192 mir_power_mode_standby, /* Blanked, low power. */
193 mir_power_mode_suspend, /* Blanked, lowest power. */
194 mir_power_mode_off /* Powered down. */
196
197typedef enum MirOutputType
198{
199 mir_output_type_unknown = 0, /* DRM_MODE_CONNECTOR_Unknown */
200 mir_output_type_vga = 1, /* DRM_MODE_CONNECTOR_VGA */
201 mir_output_type_dvii = 2, /* DRM_MODE_CONNECTOR_DVII */
202 mir_output_type_dvid = 3, /* DRM_MODE_CONNECTOR_DVID */
203 mir_output_type_dvia = 4, /* DRM_MODE_CONNECTOR_DVIA */
204 mir_output_type_composite = 5, /* DRM_MODE_CONNECTOR_Composite */
205 mir_output_type_svideo = 6, /* DRM_MODE_CONNECTOR_SVIDEO */
206 mir_output_type_lvds = 7, /* DRM_MODE_CONNECTOR_LVDS */
207 mir_output_type_component = 8, /* DRM_MODE_CONNECTOR_Component */
208 mir_output_type_ninepindin = 9, /* DRM_MODE_CONNECTOR_9PinDIN */
209 mir_output_type_displayport = 10, /* DRM_MODE_CONNECTOR_DisplayPort */
210 mir_output_type_hdmia = 11, /* DRM_MODE_CONNECTOR_HDMIA */
211 mir_output_type_hdmib = 12, /* DRM_MODE_CONNECTOR_HDMIB */
212 mir_output_type_tv = 13, /* DRM_MODE_CONNECTOR_TV */
213 mir_output_type_edp = 14, /* DRM_MODE_CONNECTOR_eDP */
214 mir_output_type_virtual = 15, /* DRM_MODE_CONNECTOR_VIRTUAL */
215 mir_output_type_dsi = 16, /* DRM_MODE_CONNECTOR_DSI */
216 mir_output_type_dpi = 17, /* DRM_MODE_CONNECTOR_DPI */
218
220{
225
244typedef enum MirPixelFormat
245{
256 /*
257 * TODO: Big endian support would require additional formats in order to
258 * composite software surfaces using OpenGL (GL_RGBA/GL_BGRA_EXT):
259 * mir_pixel_format_rgb[ax]_8888
260 * mir_pixel_format_bgr[ax]_8888
261 */
262 mir_pixel_formats /* Note: This is always max format + 1 */
264
265/* This could be improved... https://bugs.launchpad.net/mir/+bug/1236254 */
266#define MIR_BYTES_PER_PIXEL(f) ((f) == mir_pixel_format_bgr_888 ? 3 : \
267 (f) == mir_pixel_format_rgb_888 ? 3 : \
268 (f) == mir_pixel_format_rgb_565 ? 2 : \
269 (f) == mir_pixel_format_rgba_5551 ? 2 : \
270 (f) == mir_pixel_format_rgba_4444 ? 2 : \
271 4)
272
274typedef enum MirOrientation
275{
281
283typedef enum MirMirrorMode
284{
289
291{
303
305{
311
312// Inspired by GdkGravity
318{
321
324
327
330
333
336
339
342
346
347// Inspired by GdkAnchorHints
373{
376
379
382
385
388
391
394
397
400
404
405
412typedef enum MirResizeEdge
413{
424
428typedef enum MirFormFactor
429{
437
438
445{
453
457typedef enum MirShellChrome
458{
462
467#pragma GCC diagnostic push
468#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
470{
472 MIR_DEPRECATED_ENUM(mir_pointer_confined_to_surface, "mir_pointer_confined_to_window"),
473 mir_pointer_confined_to_window = mir_pointer_confined_to_surface,
475#pragma GCC diagnostic pop
476
481{
485
493typedef enum MirDepthLayer
494{
502
503
506#endif
mir_surface_state_fullscreen
Definition: common.h:8
mir_surface_type_tip
AKA "tooltip"
Definition: common.h:10
mir_surface_visibility_exposed
Definition: common.h:2
mir_surface_type_inputmethod
AKA "OSK" or handwriting etc.
Definition: common.h:8
mir_surface_type_menu
Definition: common.h:7
#define MIR_DEPRECATED_ENUM(ENUM, INSTEAD)
Definition: common.h:42
mir_surface_attribs
Definition: common.h:13
mir_surface_type_popover
Definition: common.h:6
mir_surface_state_unknown
Definition: common.h:0
mir_surface_type_freestyle
Definition: common.h:5
mir_surface_type_normal
AKA "regular"
Definition: common.h:0
mir_surface_attrib_visibility
Definition: common.h:9
mir_surface_states
Definition: common.h:13
mir_surface_attrib_state
Definition: common.h:2
mir_surface_attrib_focus
Definition: common.h:7
mir_surface_attrib_dpi
Definition: common.h:8
mir_surface_state_hidden
Definition: common.h:10
mir_surface_state_horizmaximized
Definition: common.h:9
mir_surface_focused
Definition: common.h:2
mir_surface_type_dialog
Definition: common.h:2
mir_surface_attrib_preferred_orientation
Definition: common.h:10
mir_surface_state_minimized
Definition: common.h:2
mir_surface_type_gloss
Definition: common.h:4
mir_surface_visibility_occluded
Definition: common.h:0
mir_surface_type_utility
AKA "floating"
Definition: common.h:1
mir_surface_state_vertmaximized
Definition: common.h:4
mir_surface_unfocused
Definition: common.h:0
mir_surface_type_satellite
AKA "toolbox"/"toolbar"
Definition: common.h:9
mir_surface_state_attached
Used for panels, notifications and other windows attached to output edges.
Definition: common.h:11
mir_surface_state_maximized
Definition: common.h:3
mir_surface_types
Definition: common.h:12
mir_surface_state_restored
Definition: common.h:1
mir_surface_type_overlay
Definition: common.h:3
mir_surface_attrib_swapinterval
Definition: common.h:6
mir_surface_attrib_type
Definition: common.h:1
MirFormFactor
Form factor associated with a physical output.
Definition: common.h:429
MirOrientation
Direction relative to the "natural" orientation of the display.
Definition: common.h:275
MirSurfaceVisibility
Definition: common.h:171
enum MirSurfaceAttrib MIR_FOR_REMOVAL_IN_VERSION_1("use MirWindowAttrib")
Attributes of a surface that the client and server/shell may wish to get or set over the wire.
MirResizeEdge
Hints for resizing a window.
Definition: common.h:413
MirPowerMode
Definition: common.h:190
MirPointerConfinementState
Pointer Confinement.
Definition: common.h:470
MirLifecycleState
Definition: common.h:183
MirWindowType
Definition: common.h:110
MirShellChrome
Shell chrome.
Definition: common.h:458
MirWindowFocusState
Definition: common.h:165
MirWindowState
Definition: common.h:142
MirSurfaceState
Definition: common.h:125
MirPlacementGravity
Reference point for aligning a surface relative to a rectangle.
Definition: common.h:318
MirSurfaceType
Definition: common.h:94
MirEdgeAttachment
Definition: common.h:305
MirPixelFormat
32-bit pixel formats (8888): The order of components in the enum matches the order of the components ...
Definition: common.h:245
MirPlacementHints
Positioning hints for aligning a window relative to a rectangle.
Definition: common.h:373
MirMirrorMode
Mirroring axis relative to the "natural" orientation of the display.
Definition: common.h:284
MirOutputType
Definition: common.h:198
MirDepthLayer
Depth layer controls Z ordering of surfaces.
Definition: common.h:494
MirSurfaceFocusState
Definition: common.h:159
MirWindowVisibility
Definition: common.h:177
MirWindowAttrib
Attributes of a window that the client and server/shell may wish to get or set over the wire.
Definition: common.h:77
MirSurfaceAttrib
Attributes of a surface that the client and server/shell may wish to get or set over the wire.
Definition: common.h:56
MirPromptSessionState
Definition: common.h:220
MirSubpixelArrangement
Physical arrangement of subpixels on the physical output.
Definition: common.h:445
MirOrientationMode
Definition: common.h:291
MirOutputGammaSupported
Supports gamma correction.
Definition: common.h:481
@ mir_form_factor_unknown
Definition: common.h:430
@ mir_form_factor_projector
Definition: common.h:435
@ mir_form_factor_tablet
Definition: common.h:432
@ mir_form_factor_phone
Definition: common.h:431
@ mir_form_factor_tv
Definition: common.h:434
@ mir_form_factor_monitor
Definition: common.h:433
@ mir_orientation_right
Definition: common.h:279
@ mir_orientation_normal
Definition: common.h:276
@ mir_orientation_left
Definition: common.h:277
@ mir_orientation_inverted
Definition: common.h:278
@ mir_resize_edge_northeast
Definition: common.h:420
@ mir_resize_edge_southwest
Definition: common.h:421
@ mir_resize_edge_south
Definition: common.h:418
@ mir_resize_edge_southeast
Definition: common.h:422
@ mir_resize_edge_north
Definition: common.h:417
@ mir_resize_edge_east
Definition: common.h:416
@ mir_resize_edge_west
Definition: common.h:415
@ mir_resize_edge_none
Definition: common.h:414
@ mir_resize_edge_northwest
Definition: common.h:419
@ mir_power_mode_standby
Definition: common.h:192
@ mir_power_mode_suspend
Definition: common.h:193
@ mir_power_mode_off
Definition: common.h:194
@ mir_power_mode_on
Definition: common.h:191
@ mir_pointer_unconfined
Definition: common.h:471
@ mir_pointer_confined_to_window
Definition: common.h:473
@ mir_lifecycle_connection_lost
Definition: common.h:186
@ mir_lifecycle_state_will_suspend
Definition: common.h:184
@ mir_lifecycle_state_resumed
Definition: common.h:185
@ mir_window_type_menu
Definition: common.h:116
@ mir_window_type_satellite
AKA "toolbox"/"toolbar"
Definition: common.h:118
@ mir_window_type_decoration
Definition: common.h:120
@ mir_window_type_gloss
Definition: common.h:114
@ mir_window_type_utility
AKA "floating"
Definition: common.h:112
@ mir_window_type_dialog
Definition: common.h:113
@ mir_window_types
Definition: common.h:121
@ mir_window_type_tip
AKA "tooltip"
Definition: common.h:119
@ mir_window_type_normal
AKA "regular"
Definition: common.h:111
@ mir_window_type_inputmethod
AKA "OSK" or handwriting etc.
Definition: common.h:117
@ mir_window_type_freestyle
Definition: common.h:115
@ mir_shell_chrome_low
Definition: common.h:460
@ mir_shell_chrome_normal
Definition: common.h:459
@ mir_window_focus_state_unfocused
Definition: common.h:166
@ mir_window_focus_state_focused
Definition: common.h:167
@ mir_window_state_attached
Used for panels, notifications and other windows attached to output edges.
Definition: common.h:154
@ mir_window_state_minimized
Definition: common.h:145
@ mir_window_state_horizmaximized
Definition: common.h:152
@ mir_window_states
Definition: common.h:155
@ mir_window_state_restored
Definition: common.h:144
@ mir_window_state_fullscreen
Definition: common.h:151
@ mir_window_state_maximized
Definition: common.h:146
@ mir_window_state_unknown
Definition: common.h:143
@ mir_window_state_hidden
Definition: common.h:153
@ mir_window_state_vertmaximized
Definition: common.h:147
@ mir_placement_gravity_east
the reference point is at the middle of the right edge.
Definition: common.h:326
@ mir_placement_gravity_northwest
the reference point is at the top left corner.
Definition: common.h:335
@ mir_placement_gravity_center
the reference point is at the center.
Definition: common.h:320
@ mir_placement_gravity_west
the reference point is at the middle of the left edge.
Definition: common.h:323
@ mir_placement_gravity_northeast
the reference point is at the top right corner.
Definition: common.h:338
@ mir_placement_gravity_southeast
the reference point is at the lower right corner.
Definition: common.h:344
@ mir_placement_gravity_south
the reference point is at the middle of the lower edge.
Definition: common.h:332
@ mir_placement_gravity_north
the reference point is in the middle of the top edge.
Definition: common.h:329
@ mir_placement_gravity_southwest
the reference point is at the lower left corner.
Definition: common.h:341
@ mir_edge_attachment_horizontal
Definition: common.h:307
@ mir_edge_attachment_vertical
Definition: common.h:306
@ mir_edge_attachment_any
Definition: common.h:308
@ mir_pixel_format_xbgr_8888
Definition: common.h:248
@ mir_pixel_format_invalid
Definition: common.h:246
@ mir_pixel_format_rgb_888
Definition: common.h:252
@ mir_pixel_format_rgb_565
Definition: common.h:253
@ mir_pixel_formats
Definition: common.h:262
@ mir_pixel_format_rgba_5551
Definition: common.h:254
@ mir_pixel_format_abgr_8888
Definition: common.h:247
@ mir_pixel_format_xrgb_8888
Definition: common.h:250
@ mir_pixel_format_argb_8888
Definition: common.h:249
@ mir_pixel_format_bgr_888
Definition: common.h:251
@ mir_pixel_format_rgba_4444
Definition: common.h:255
@ mir_placement_hints_slide_any
allow sliding window on both axes
Definition: common.h:399
@ mir_placement_hints_flip_x
allow flipping anchors horizontally
Definition: common.h:375
@ mir_placement_hints_flip_any
allow flipping anchors on both axes
Definition: common.h:396
@ mir_placement_hints_resize_x
allow resizing window horizontally
Definition: common.h:387
@ mir_placement_hints_antipodes
allow flipping aux_anchor to opposite corner
Definition: common.h:393
@ mir_placement_hints_resize_any
allow resizing window on both axes
Definition: common.h:402
@ mir_placement_hints_slide_x
allow sliding window horizontally
Definition: common.h:381
@ mir_placement_hints_resize_y
allow resizing window vertically
Definition: common.h:390
@ mir_placement_hints_flip_y
allow flipping anchors vertically
Definition: common.h:378
@ mir_placement_hints_slide_y
allow sliding window vertically
Definition: common.h:384
@ mir_mirror_mode_vertical
Definition: common.h:286
@ mir_mirror_mode_none
Definition: common.h:285
@ mir_mirror_mode_horizontal
Definition: common.h:287
@ mir_output_type_svideo
Definition: common.h:205
@ mir_output_type_dpi
Definition: common.h:216
@ mir_output_type_composite
Definition: common.h:204
@ mir_output_type_hdmia
Definition: common.h:210
@ mir_output_type_vga
Definition: common.h:200
@ mir_output_type_displayport
Definition: common.h:209
@ mir_output_type_component
Definition: common.h:207
@ mir_output_type_hdmib
Definition: common.h:211
@ mir_output_type_edp
Definition: common.h:213
@ mir_output_type_ninepindin
Definition: common.h:208
@ mir_output_type_dsi
Definition: common.h:215
@ mir_output_type_tv
Definition: common.h:212
@ mir_output_type_dvii
Definition: common.h:201
@ mir_output_type_virtual
Definition: common.h:214
@ mir_output_type_dvid
Definition: common.h:202
@ mir_output_type_unknown
Definition: common.h:199
@ mir_output_type_lvds
Definition: common.h:206
@ mir_output_type_dvia
Definition: common.h:203
@ mir_depth_layer_below
For panels or other controls/decorations below normal windows.
Definition: common.h:496
@ mir_depth_layer_above
For panels or notifications that want to be above normal windows.
Definition: common.h:499
@ mir_depth_layer_overlay
For overlays such as lock screens (heighest layer)
Definition: common.h:500
@ mir_depth_layer_background
For desktop backgrounds and alike (lowest layer)
Definition: common.h:495
@ mir_depth_layer_always_on_top
For always-on-top application windows.
Definition: common.h:498
@ mir_depth_layer_application
For normal application windows.
Definition: common.h:497
@ mir_window_visibility_exposed
Definition: common.h:179
@ mir_window_visibility_occluded
Definition: common.h:178
@ mir_window_attrib_visibility
Definition: common.h:87
@ mir_window_attrib_swapinterval
Definition: common.h:81
@ mir_window_attrib_preferred_orientation
Definition: common.h:88
@ mir_window_attrib_type
Definition: common.h:79
@ mir_window_attribs
Definition: common.h:90
@ mir_window_attrib_state
Definition: common.h:80
@ mir_window_attrib_focus
Definition: common.h:85
@ mir_window_attrib_dpi
Definition: common.h:86
@ mir_prompt_session_state_suspended
Definition: common.h:223
@ mir_prompt_session_state_stopped
Definition: common.h:221
@ mir_prompt_session_state_started
Definition: common.h:222
@ mir_subpixel_arrangement_horizontal_rgb
Subpixels are arranged horizontally, R, G, B from left to right.
Definition: common.h:447
@ mir_subpixel_arrangement_horizontal_bgr
Subpixels are arranged horizontally, B, G, R from left to right.
Definition: common.h:448
@ mir_subpixel_arrangement_unknown
Arrangement of subpixels cannot be determined.
Definition: common.h:446
@ mir_subpixel_arrangement_vertical_rgb
Subpixels are arranged vertically, R, G, B from top to bottom.
Definition: common.h:449
@ mir_subpixel_arrangement_vertical_bgr
Subpixels are arranged vertically, B, G, R from top to bottom.
Definition: common.h:450
@ mir_subpixel_arrangement_none
Device does not have regular subpixels.
Definition: common.h:451
@ mir_orientation_mode_landscape_any
Definition: common.h:298
@ mir_orientation_mode_portrait
Definition: common.h:292
@ mir_orientation_mode_any
Definition: common.h:300
@ mir_orientation_mode_landscape
Definition: common.h:293
@ mir_orientation_mode_portrait_any
Definition: common.h:296
@ mir_orientation_mode_portrait_inverted
Definition: common.h:294
@ mir_orientation_mode_landscape_inverted
Definition: common.h:295
@ mir_output_gamma_unsupported
Definition: common.h:482
@ mir_output_gamma_supported
Definition: common.h:483

Copyright © 2012-2022 Canonical Ltd.
Generated on Wed Dec 28 21:01:08 UTC 2022
This documentation is licensed under the GPL version 2 or 3.