7 void RrPlanarSet(struct RrSurface *sur,
8 enum RrSurfaceColorType type,
9 struct RrColor *primary,
10 struct RrColor *secondary)
12 sur->data.planar.colortype = type;
13 sur->data.planar.primary = *primary;
14 sur->data.planar.secondary = *secondary;
17 static void copy_parent(struct RrSurface *sur)
22 switch (RrPlanarColorType(sur)) {
28 case RR_PLANAR_HORIZONTAL:
31 case RR_PLANAR_VERTICAL:
34 case RR_PLANAR_DIAGONAL:
37 case RR_PLANAR_CROSSDIAGONAL:
40 case RR_PLANAR_PYRAMID:
43 case RR_PLANAR_PIPECROSS:
46 case RR_PLANAR_RECTANGLE:
52 if (ncols >= 1 && RrColorHasAlpha(RrPlanarPrimaryColor(sur)))
54 if (ncols >= 1 && RrColorHasAlpha(RrPlanarSecondaryColor(sur)))
58 struct RrSurface *parent = RrSurfaceParent(sur);
62 RrDebug("copy parent here pls\n");
66 void RrPlanarPaint(struct RrSurface *sur, int x, int y, int w, int h)
68 struct RrColor *pri, *sec, avg;
73 pri = &RrPlanarPrimaryColor(sur);
74 sec = &RrPlanarSecondaryColor(sur);
78 w = RrSurfaceWidth(sur);
79 h = RrSurfaceHeight(sur);
81 switch (RrPlanarColorType(sur)) {
85 glBegin(GL_TRIANGLES);
96 case RR_PLANAR_HORIZONTAL:
97 glBegin(GL_TRIANGLES);
102 glVertex2i(x+w, y+h);
104 glVertex2i(x+w, y+h);
110 case RR_PLANAR_VERTICAL:
111 glBegin(GL_TRIANGLES);
116 glVertex2i(x+w, y+h);
118 glVertex2i(x+w, y+h);
124 case RR_PLANAR_DIAGONAL:
125 RrColorAvg(&avg, pri, sec);
126 glBegin(GL_TRIANGLES);
132 glVertex2i(x+w, y+h);
135 glVertex2i(x+w, y+h);
142 case RR_PLANAR_CROSSDIAGONAL:
143 RrColorAvg(&avg, pri, sec);
144 glBegin(GL_TRIANGLES);
150 glVertex2i(x+w, y+h);
153 glVertex2i(x+w, y+h);
160 case RR_PLANAR_PYRAMID:
161 RrColorAvg(&avg, pri, sec);
162 glBegin(GL_TRIANGLES);
166 glVertex2i(x+w/2, y+h/2);
168 glVertex2i(x, y+h/2);
170 glVertex2i(x, y+h/2);
172 glVertex2i(x+w/2, y+h/2);
178 glVertex2i(x+w/2, y+h/2);
180 glVertex2i(x+w/2, y+h);
182 glVertex2i(x+w/2, y+h);
184 glVertex2i(x+w/2, y+h/2);
186 glVertex2i(x+w, y+h);
188 glVertex2i(x+w, y+h);
190 glVertex2i(x+w/2, y+h/2);
192 glVertex2i(x+w, y+h/2);
194 glVertex2i(x+w, y+h/2);
196 glVertex2i(x+w/2, y+h/2);
202 glVertex2i(x+w/2, y+h/2);
204 glVertex2i(x+w/2, y);
206 glVertex2i(x+w/2, y);
208 glVertex2i(x+w/2, y+h/2);
213 case RR_PLANAR_PIPECROSS:
214 glBegin(GL_TRIANGLES);
218 glVertex2i(x+w/2, y+h/2);
219 glVertex2i(x, y+h/2);
221 glVertex2i(x, y+h/2);
222 glVertex2i(x+w/2, y+h/2);
228 glVertex2i(x+w/2, y+h/2);
229 glVertex2i(x+w/2, y+h);
231 glVertex2i(x+w/2, y+h);
232 glVertex2i(x+w/2, y+h/2);
234 glVertex2i(x+w, y+h);
236 glVertex2i(x+w, y+h);
238 glVertex2i(x+w/2, y+h/2);
239 glVertex2i(x+w, y+h/2);
241 glVertex2i(x+w, y+h/2);
242 glVertex2i(x+w/2, y+h/2);
248 glVertex2i(x+w/2, y+h/2);
249 glVertex2i(x+w/2, y);
251 glVertex2i(x+w/2, y);
252 glVertex2i(x+w/2, y+h/2);
257 case RR_PLANAR_RECTANGLE:
258 glBegin(GL_TRIANGLES);
262 glVertex2i(x+w/2, y+h/2);
268 glVertex2i(x+w/2, y+h/2);
270 glVertex2i(x+w, y+h);
272 glVertex2i(x+w, y+h);
274 glVertex2i(x+w/2, y+h/2);
280 glVertex2i(x+w/2, y+h/2);
289 void RrPlanarMinSize(struct RrSurface *sur, int *w, int *h)