add packaging
[platform/upstream/randrproto.git] / randr.h
1 /*
2  * Copyright © 2000 Compaq Computer Corporation
3  * Copyright © 2002 Hewlett Packard Company
4  * Copyright © 2006 Intel Corporation
5  * Copyright © 2008 Red Hat, Inc.
6  *
7  * Permission to use, copy, modify, distribute, and sell this software and its
8  * documentation for any purpose is hereby granted without fee, provided that
9  * the above copyright notice appear in all copies and that both that copyright
10  * notice and this permission notice appear in supporting documentation, and
11  * that the name of the copyright holders not be used in advertising or
12  * publicity pertaining to distribution of the software without specific,
13  * written prior permission.  The copyright holders make no representations
14  * about the suitability of this software for any purpose.  It is provided "as
15  * is" without express or implied warranty.
16  *
17  * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
18  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
19  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
20  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
21  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
22  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
23  * OF THIS SOFTWARE.
24  *
25  * Author:  Jim Gettys, HP Labs, Hewlett-Packard, Inc.
26  *          Keith Packard, Intel Corporation
27  */
28
29 #ifndef _RANDR_H_
30 #define _RANDR_H_
31
32 typedef unsigned short  Rotation;
33 typedef unsigned short  SizeID;
34 typedef unsigned short  SubpixelOrder;
35 typedef unsigned short  Connection;
36 typedef unsigned short  XRandrRotation;
37 typedef unsigned short  XRandrSizeID;
38 typedef unsigned short  XRandrSubpixelOrder;
39 typedef unsigned long   XRandrModeFlags;
40
41 #define RANDR_NAME              "RANDR"
42 #define RANDR_MAJOR             1
43 #define RANDR_MINOR             4
44
45 #define RRNumberErrors          4
46 #define RRNumberEvents          2
47 #define RRNumberRequests        42
48
49 #define X_RRQueryVersion        0
50 /* we skip 1 to make old clients fail pretty immediately */
51 #define X_RROldGetScreenInfo    1
52 #define X_RR1_0SetScreenConfig  2
53 /* V1.0 apps share the same set screen config request id */
54 #define X_RRSetScreenConfig     2
55 #define X_RROldScreenChangeSelectInput  3
56 /* 3 used to be ScreenChangeSelectInput; deprecated */
57 #define X_RRSelectInput         4
58 #define X_RRGetScreenInfo       5
59
60 /* V1.2 additions */
61 #define X_RRGetScreenSizeRange      6
62 #define X_RRSetScreenSize           7
63 #define X_RRGetScreenResources      8
64 #define X_RRGetOutputInfo           9
65 #define X_RRListOutputProperties    10
66 #define X_RRQueryOutputProperty     11
67 #define X_RRConfigureOutputProperty 12
68 #define X_RRChangeOutputProperty    13
69 #define X_RRDeleteOutputProperty    14
70 #define X_RRGetOutputProperty       15
71 #define X_RRCreateMode              16
72 #define X_RRDestroyMode             17
73 #define X_RRAddOutputMode           18
74 #define X_RRDeleteOutputMode        19
75 #define X_RRGetCrtcInfo             20
76 #define X_RRSetCrtcConfig           21
77 #define X_RRGetCrtcGammaSize        22
78 #define X_RRGetCrtcGamma            23
79 #define X_RRSetCrtcGamma            24
80
81 /* V1.3 additions */
82 #define X_RRGetScreenResourcesCurrent   25
83 #define X_RRSetCrtcTransform        26
84 #define X_RRGetCrtcTransform        27
85 #define X_RRGetPanning              28
86 #define X_RRSetPanning              29
87 #define X_RRSetOutputPrimary        30
88 #define X_RRGetOutputPrimary        31
89
90 #define RRTransformUnit             (1L << 0)
91 #define RRTransformScaleUp          (1L << 1)
92 #define RRTransformScaleDown        (1L << 2)
93 #define RRTransformProjective       (1L << 3)
94
95 /* v1.4 */
96 #define X_RRGetProviders              32
97 #define X_RRGetProviderInfo           33
98 #define X_RRSetProviderOffloadSink    34
99 #define X_RRSetProviderOutputSource   35
100 #define X_RRListProviderProperties    36
101 #define X_RRQueryProviderProperty     37
102 #define X_RRConfigureProviderProperty 38
103 #define X_RRChangeProviderProperty    39
104 #define X_RRDeleteProviderProperty    40
105 #define X_RRGetProviderProperty       41
106
107 /* Event selection bits */
108 #define RRScreenChangeNotifyMask  (1L << 0)
109 /* V1.2 additions */
110 #define RRCrtcChangeNotifyMask      (1L << 1)
111 #define RROutputChangeNotifyMask    (1L << 2)
112 #define RROutputPropertyNotifyMask  (1L << 3)
113 /* V1.4 additions */
114 #define RRProviderChangeNotifyMask   (1L << 4)
115 #define RRProviderPropertyNotifyMask (1L << 5)
116 #define RRResourceChangeNotifyMask   (1L << 6)
117
118 /* Event codes */
119 #define RRScreenChangeNotify    0
120 /* V1.2 additions */
121 #define RRNotify                    1
122 /* RRNotify Subcodes */
123 #define  RRNotify_CrtcChange        0
124 #define  RRNotify_OutputChange      1
125 #define  RRNotify_OutputProperty    2
126 #define  RRNotify_ProviderChange    3
127 #define  RRNotify_ProviderProperty  4
128 #define  RRNotify_ResourceChange    5
129 /* used in the rotation field; rotation and reflection in 0.1 proto. */
130 #define RR_Rotate_0             1
131 #define RR_Rotate_90            2
132 #define RR_Rotate_180           4
133 #define RR_Rotate_270           8
134
135 /* new in 1.0 protocol, to allow reflection of screen */
136
137 #define RR_Reflect_X            16
138 #define RR_Reflect_Y            32
139
140 #define RRSetConfigSuccess              0
141 #define RRSetConfigInvalidConfigTime    1
142 #define RRSetConfigInvalidTime          2
143 #define RRSetConfigFailed               3
144
145 /* new in 1.2 protocol */
146
147 #define RR_HSyncPositive        0x00000001
148 #define RR_HSyncNegative        0x00000002
149 #define RR_VSyncPositive        0x00000004
150 #define RR_VSyncNegative        0x00000008
151 #define RR_Interlace            0x00000010
152 #define RR_DoubleScan           0x00000020
153 #define RR_CSync                0x00000040
154 #define RR_CSyncPositive        0x00000080
155 #define RR_CSyncNegative        0x00000100
156 #define RR_HSkewPresent         0x00000200
157 #define RR_BCast                0x00000400
158 #define RR_PixelMultiplex       0x00000800
159 #define RR_DoubleClock          0x00001000
160 #define RR_ClockDivideBy2       0x00002000
161
162 #define RR_Connected            0
163 #define RR_Disconnected         1
164 #define RR_UnknownConnection    2
165
166 #define BadRROutput             0
167 #define BadRRCrtc               1
168 #define BadRRMode               2
169 #define BadRRProvider           3
170
171 /* Conventional RandR output properties */
172
173 #define RR_PROPERTY_BACKLIGHT           "Backlight"
174 #define RR_PROPERTY_RANDR_EDID          "EDID"
175 #define RR_PROPERTY_SIGNAL_FORMAT       "SignalFormat"
176 #define RR_PROPERTY_SIGNAL_PROPERTIES   "SignalProperties"
177 #define RR_PROPERTY_CONNECTOR_TYPE      "ConnectorType"
178 #define RR_PROPERTY_CONNECTOR_NUMBER    "ConnectorNumber"
179 #define RR_PROPERTY_COMPATIBILITY_LIST  "CompatibilityList"
180 #define RR_PROPERTY_CLONE_LIST          "CloneList"
181 #define RR_PROPERTY_BORDER              "Border"
182 #define RR_PROPERTY_BORDER_DIMENSIONS   "BorderDimensions"
183
184 /* roles this device can carry out */
185 #define RR_Capability_None 0
186 #define RR_Capability_SourceOutput 1
187 #define RR_Capability_SinkOutput 2
188 #define RR_Capability_SourceOffload 4
189 #define RR_Capability_SinkOffload 8
190
191 #endif  /* _RANDR_H_ */