summaryrefslogtreecommitdiffstats
path: root/common/xrdp_rail.h
blob: 26605cd9ceffc06bed359ad4acc47a633a18ce6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/**
 * xrdp: A Remote Desktop Protocol server.
 *
 * Copyright (C) Jay Sorg 2012-2014
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#if !defined(_RAIL_H)
#define _RAIL_H

/*
  ORDER_TYPE_WINDOW
    WINDOW_ORDER_TYPE_WINDOW
      WINDOW_ORDER_ICON
      WINDOW_ORDER_CACHED_ICON
      WINDOW_ORDER_STATE_DELETED
      WINDOW_ORDER_STATE_NEW on
      WINDOW_ORDER_STATE_NEW off
    WINDOW_ORDER_TYPE_NOTIFY
      WINDOW_ORDER_STATE_DELETED
      WINDOW_ORDER_STATE_NEW on
      WINDOW_ORDER_STATE_NEW off
    WINDOW_ORDER_TYPE_DESKTOP
      WINDOW_ORDER_FIELD_DESKTOP_NONE on
      WINDOW_ORDER_FIELD_DESKTOP_NONE off
*/

/* Window Order Header Flags */
#define WINDOW_ORDER_TYPE_WINDOW                        0x01000000
#define WINDOW_ORDER_TYPE_NOTIFY                        0x02000000
#define WINDOW_ORDER_TYPE_DESKTOP                       0x04000000
#define WINDOW_ORDER_STATE_NEW                          0x10000000
#define WINDOW_ORDER_STATE_DELETED                      0x20000000
#define WINDOW_ORDER_FIELD_OWNER                        0x00000002
#define WINDOW_ORDER_FIELD_STYLE                        0x00000008
#define WINDOW_ORDER_FIELD_SHOW                         0x00000010
#define WINDOW_ORDER_FIELD_TITLE                        0x00000004
#define WINDOW_ORDER_FIELD_CLIENT_AREA_OFFSET           0x00004000
#define WINDOW_ORDER_FIELD_CLIENT_AREA_SIZE             0x00010000
#define WINDOW_ORDER_FIELD_RP_CONTENT                   0x00020000
#define WINDOW_ORDER_FIELD_ROOT_PARENT                  0x00040000
#define WINDOW_ORDER_FIELD_WND_OFFSET                   0x00000800
#define WINDOW_ORDER_FIELD_WND_CLIENT_DELTA             0x00008000
#define WINDOW_ORDER_FIELD_WND_SIZE                     0x00000400
#define WINDOW_ORDER_FIELD_WND_RECTS                    0x00000100
#define WINDOW_ORDER_FIELD_VIS_OFFSET                   0x00001000
#define WINDOW_ORDER_FIELD_VISIBILITY                   0x00000200
#define WINDOW_ORDER_FIELD_ICON_BIG                     0x00002000
#define WINDOW_ORDER_ICON                               0x40000000
#define WINDOW_ORDER_CACHED_ICON                        0x80000000
#define WINDOW_ORDER_FIELD_NOTIFY_VERSION               0x00000008
#define WINDOW_ORDER_FIELD_NOTIFY_TIP                   0x00000001
#define WINDOW_ORDER_FIELD_NOTIFY_INFO_TIP              0x00000002
#define WINDOW_ORDER_FIELD_NOTIFY_STATE                 0x00000004
#define WINDOW_ORDER_FIELD_DESKTOP_NONE                 0x00000001
#define WINDOW_ORDER_FIELD_DESKTOP_HOOKED               0x00000002
#define WINDOW_ORDER_FIELD_DESKTOP_ARC_COMPLETED        0x00000004
#define WINDOW_ORDER_FIELD_DESKTOP_ARC_BEGAN            0x00000008
#define WINDOW_ORDER_FIELD_DESKTOP_ZORDER               0x00000010
#define WINDOW_ORDER_FIELD_DESKTOP_ACTIVE_WND           0x00000020

struct rail_icon_info
{
  int bpp;
  int width;
  int height;
  int cmap_bytes;
  int mask_bytes;
  int data_bytes;
  char* mask;
  char* cmap;
  char* data;
};

struct rail_window_rect
{
  short left;
  short top;
  short right;
  short bottom;
};

struct rail_notify_icon_infotip
{
  int timeout;
  int flags;
  char* text;
  char* title;
};

struct rail_window_state_order
{
  int owner_window_id;
  int style;
  int extended_style;
  int show_state;
  char* title_info;
  int client_offset_x;
  int client_offset_y;
  int client_area_width;
  int client_area_height;
  int rp_content;
  int root_parent_handle;
  int window_offset_x;
  int window_offset_y;
  int window_client_delta_x;
  int window_client_delta_y;
  int window_width;
  int window_height;
  int num_window_rects;
  struct rail_window_rect* window_rects;
  int visible_offset_x;
  int visible_offset_y;
  int num_visibility_rects;
  struct rail_window_rect* visibility_rects;
};

struct rail_notify_state_order
{
  int version;
  char* tool_tip;
  struct rail_notify_icon_infotip infotip;
  int state;
  int icon_cache_entry;
  int icon_cache_id;
  struct rail_icon_info icon_info;
};

struct rail_monitored_desktop_order
{
  int active_window_id;
  int num_window_ids;
  int* window_ids;
};

#endif