]> icculus.org git repositories - dana/openbox.git/blob - render2/instance.c
create the glft library. it will be using freetype and fontconfig to render fonts...
[dana/openbox.git] / render2 / instance.c
1 #include "instance.h"
2 #include <glib.h>
3
4 /*
5 void truecolor_startup(void)
6 {
7   unsigned long red_mask, green_mask, blue_mask;
8   XImage *timage = NULL;
9
10   timage = XCreateImage(ob_display, render_visual, render_depth,
11                         ZPixmap, 0, NULL, 1, 1, 32, 0);
12   g_assert(timage != NULL);
13   /\* find the offsets for each color in the visual's masks *\/
14   render_red_mask = red_mask = timage->red_mask;
15   render_green_mask = green_mask = timage->green_mask;
16   render_blue_mask = blue_mask = timage->blue_mask;
17
18   render_red_offset = 0;
19   render_green_offset = 0;
20   render_blue_offset = 0;
21
22   while (! (red_mask & 1))   { render_red_offset++;   red_mask   >>= 1; }
23   while (! (green_mask & 1)) { render_green_offset++; green_mask >>= 1; }
24   while (! (blue_mask & 1))  { render_blue_offset++;  blue_mask  >>= 1; }
25
26   render_red_shift = render_green_shift = render_blue_shift = 8;
27   while (red_mask)   { red_mask   >>= 1; render_red_shift--;   }
28   while (green_mask) { green_mask >>= 1; render_green_shift--; }
29   while (blue_mask)  { blue_mask  >>= 1; render_blue_shift--;  }
30   XFree(timage);
31 }
32 */
33
34 struct RrInstance *RrInstanceNew(Display *display,
35                                  int screen,
36                                  XVisualInfo visinfo)
37 {
38     struct RrInstance *inst;
39
40     inst = g_new(struct RrInstance, 1);
41     inst->display = display;
42     inst->screen = screen;
43     inst->visinfo = visinfo;
44     inst->cmap = XCreateColormap(display, RootWindow(display, screen),
45                                  RrVisual(inst), AllocNone);
46     inst->glx_context = glXCreateContext(display, &visinfo, NULL, TRUE);
47
48     g_assert(inst->glx_context);
49
50     return inst;
51 }
52
53 void RrInstanceFree(struct RrInstance *inst)
54 {
55     if (inst) {
56         glXDestroyContext(inst->display, inst->glx_context);
57         XFreeColormap(inst->display, inst->cmap);
58         g_free(inst);
59     }
60 }