Code:
void drawAreaDefault(int areaHandle){
Area*a;
Window *win;
Color *c;
Rect area;
int x, y, w, h;
a = getAreaFace(areaHandle);
win = a->parentWindow;
getArea(a, &area);
x = area.x;
y = area.y;
w = area.w;
h = area.h;
c = a->backGroundColor;
glViewport(x, y, w, h);
glScissor(x, y, w, h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1, 1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
glEnable(GL_BLEND);
glColor4f(c->r, c->g, c->b, c->a);
glBegin(GL_QUADS);
glVertex2i(0, 0);
glVertex2i(0, h);
glVertex2i(w, h);
glVertex2i(w, 0);
glEnd();
glDisable(GL_BLEND);
}
void drawAreaEdgesDefault(int areaHandle){
Area*a;
Window *win;
Color *c;
Rect area;
int x, y, w, h, width;
a = getArea(areaHandle);
win = a->parentWindow;
c = a->parent->edgeColor;
width = a->edgeWidth;
getDrawArea(a, &area);
x = area.x - width;
y = area.y - width;
w = area.w + width + width;
h = area.h + width + width;
glViewport(x, y, w, h);
glScissor(x, y, w, h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
glOrtho(0, w, 0, h, -1, 1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
//draws the edges as 4 rectangles
glColor3f(c->r, c->g, c->b);
glBegin(GL_QUADS);
glVertex2i(0, 0);
glVertex2i(0, h);
glVertex2i(width, h);
glVertex2i(width, 0);
glVertex2i(w - width, 0);
glVertex2i(w - width, h);
glVertex2i(w, h);
glVertex2i(w, 0);
glVertex2i(0, 0);
glVertex2i(0, width);
glVertex2i(w, width);
glVertex2i(w, 0);
glVertex2i(0, h - width);
glVertex2i(0, h);
glVertex2i(w, h);
glVertex2i(w, h - width);
glEnd();
//to give the edges a more '3d look'
glLineWidth(1.0f);
glBegin(GL_LINES);
glColor3f(c->r + 0.1f, c->g + 0.1f, c->b + 0.1f);
glVertex2i(width - 1, width - 1);
glVertex2i(width - 1, h - width + 1);
glVertex2i(width - 1, width - 1);
glVertex2i(w - width + 1, width - 1);
glColor3f(c->r - 0.1f, c->g - 0.1f, c->b - 0.1f);
glVertex2i(w - width, width - 1);
glVertex2i(w - width, h - width + 1);
glVertex2i(width - 1, h - width);
glVertex2i(w - width + 1, h - width);
glEnd();
}