Merge remote branch 'upstream/gallium-0.2' into nouveau-gallium-0.2
[mesa.git] / src / libXvMC / subpicture.c
1 #include <assert.h>
2 #include <X11/Xlib.h>
3 #include <X11/extensions/Xvlib.h>
4 #include <X11/extensions/XvMC.h>
5
6 Status XvMCCreateSubpicture
7 (
8 Display *display,
9 XvMCContext *context,
10 XvMCSubpicture *subpicture,
11 unsigned short width,
12 unsigned short height,
13 int xvimage_id
14 )
15 {
16 assert(display);
17
18 if (!context)
19 return XvMCBadContext;
20
21 assert(subpicture);
22
23 if (width > 2048 || height > 2048)
24 return BadValue;
25
26 if (xvimage_id != 123)
27 return BadMatch;
28
29 subpicture->subpicture_id = XAllocID(display);
30 subpicture->context_id = context->context_id;
31 subpicture->xvimage_id = xvimage_id;
32 subpicture->width = width;
33 subpicture->height = height;
34 subpicture->num_palette_entries = 0;
35 subpicture->entry_bytes = 0;
36 subpicture->component_order[0] = 0;
37 subpicture->component_order[1] = 0;
38 subpicture->component_order[2] = 0;
39 subpicture->component_order[3] = 0;
40 /* TODO: subpicture->privData = ;*/
41
42 return Success;
43 }
44
45 Status XvMCClearSubpicture
46 (
47 Display *display,
48 XvMCSubpicture *subpicture,
49 short x,
50 short y,
51 unsigned short width,
52 unsigned short height,
53 unsigned int color
54 )
55 {
56 assert(display);
57
58 if (!subpicture)
59 return XvMCBadSubpicture;
60
61 /* TODO: Assert clear rect is within bounds? Or clip? */
62
63 return Success;
64 }
65
66 Status XvMCCompositeSubpicture
67 (
68 Display *display,
69 XvMCSubpicture *subpicture,
70 XvImage *image,
71 short srcx,
72 short srcy,
73 unsigned short width,
74 unsigned short height,
75 short dstx,
76 short dsty
77 )
78 {
79 assert(display);
80
81 if (!subpicture)
82 return XvMCBadSubpicture;
83
84 assert(image);
85
86 if (subpicture->xvimage_id != image->id)
87 return BadMatch;
88
89 /* TODO: Assert rects are within bounds? Or clip? */
90
91 return Success;
92 }
93
94 Status XvMCDestroySubpicture(Display *display, XvMCSubpicture *subpicture)
95 {
96 assert(display);
97
98 if (!subpicture)
99 return XvMCBadSubpicture;
100
101 return BadImplementation;
102 }
103
104 Status XvMCSetSubpicturePalette(Display *display, XvMCSubpicture *subpicture, unsigned char *palette)
105 {
106 assert(display);
107
108 if (!subpicture)
109 return XvMCBadSubpicture;
110
111 assert(palette);
112
113 /* We don't support paletted subpictures */
114 return BadMatch;
115 }
116
117 Status XvMCBlendSubpicture
118 (
119 Display *display,
120 XvMCSurface *target_surface,
121 XvMCSubpicture *subpicture,
122 short subx,
123 short suby,
124 unsigned short subw,
125 unsigned short subh,
126 short surfx,
127 short surfy,
128 unsigned short surfw,
129 unsigned short surfh
130 )
131 {
132 assert(display);
133
134 if (!target_surface)
135 return XvMCBadSurface;
136
137 if (!subpicture)
138 return XvMCBadSubpicture;
139
140 if (target_surface->context_id != subpicture->context_id)
141 return BadMatch;
142
143 /* TODO: Assert rects are within bounds? Or clip? */
144 return Success;
145 }
146
147 Status XvMCBlendSubpicture2
148 (
149 Display *display,
150 XvMCSurface *source_surface,
151 XvMCSurface *target_surface,
152 XvMCSubpicture *subpicture,
153 short subx,
154 short suby,
155 unsigned short subw,
156 unsigned short subh,
157 short surfx,
158 short surfy,
159 unsigned short surfw,
160 unsigned short surfh
161 )
162 {
163 assert(display);
164
165 if (!source_surface || !target_surface)
166 return XvMCBadSurface;
167
168 if (!subpicture)
169 return XvMCBadSubpicture;
170
171 if (source_surface->context_id != subpicture->context_id)
172 return BadMatch;
173
174 if (source_surface->context_id != subpicture->context_id)
175 return BadMatch;
176
177 /* TODO: Assert rects are within bounds? Or clip? */
178 return Success;
179 }
180
181 Status XvMCSyncSubpicture(Display *display, XvMCSubpicture *subpicture)
182 {
183 assert(display);
184
185 if (!subpicture)
186 return XvMCBadSubpicture;
187
188 return Success;
189 }
190
191 Status XvMCFlushSubpicture(Display *display, XvMCSubpicture *subpicture)
192 {
193 assert(display);
194
195 if (!subpicture)
196 return XvMCBadSubpicture;
197
198 return Success;
199 }
200
201 Status XvMCGetSubpictureStatus(Display *display, XvMCSubpicture *subpicture, int *status)
202 {
203 assert(display);
204
205 if (!subpicture)
206 return XvMCBadSubpicture;
207
208 assert(status);
209
210 /* TODO */
211 *status = 0;
212
213 return Success;
214 }
215