1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
4 # include "../config.h"
5 #endif // HAVE_CONFIG_H
7 #include "rendercontrol.hh"
8 #include "truerendercontrol.hh"
9 #include "rendertexture.hh"
11 #include "screeninfo.hh"
20 #endif // HAVE_STDLIB_H
23 #define _(str) gettext(str)
28 RenderControl *RenderControl::getRenderControl(int screen)
30 // get the visual on the screen and return the correct type of RenderControl
31 int vclass = display->screenInfo(screen)->visual()->c_class;
34 return new TrueRenderControl(screen);
37 // return new PseudoRenderControl(screen);
40 // return new GrayRenderControl(screen);
42 printf(_("RenderControl: Unsupported visual %d specified. Aborting.\n"),
48 RenderControl::RenderControl(int screen)
51 printf("Initializing RenderControl\n");
56 RenderControl::~RenderControl()
58 printf("Destroying RenderControl\n");
63 void RenderControl::drawString(Surface *sf, const Font &font, int x, int y,
64 const Color &color, const ustring &string) const
67 assert(sf->_screen == _screen);
68 XftDraw *d = sf->_xftdraw;
76 c.color.alpha = font._tint | font._tint << 8; // transparent shadow
77 c.pixel = BlackPixel(**display, _screen);
80 XftDrawStringUtf8(d, &c, font._xftfont, x + font._offset,
81 font._xftfont->ascent + y + font._offset,
82 (FcChar8*)string.c_str(), string.bytes());
84 XftDrawString8(d, &c, font._xftfont, x + font._offset,
85 font._xftfont->ascent + y + font._offset,
86 (FcChar8*)string.c_str(), string.bytes());
90 c.color.red = color.red() | color.red() << 8;
91 c.color.green = color.green() | color.green() << 8;
92 c.color.blue = color.blue() | color.blue() << 8;
93 c.pixel = color.pixel();
94 c.color.alpha = 0xff | 0xff << 8; // no transparency in Color yet
97 XftDrawStringUtf8(d, &c, font._xftfont, x, font._xftfont->ascent + y,
98 (FcChar8*)string.c_str(), string.bytes());
100 XftDrawString8(d, &c, font._xftfont, x, font._xftfont->ascent + y,
101 (FcChar8*)string.c_str(), string.bytes());