all repos — fluxbox @ d4931615fe08bc376b6873a2c002336eb62768ba

custom fork of the fluxbox windowmanager

a X GC wrapper
fluxgen fluxgen
commit

d4931615fe08bc376b6873a2c002336eb62768ba

parent

1df3ad4f71cba8cb198f5319834423ef2045ec64

2 files changed, 136 insertions(+), 0 deletions(-)

jump to
A src/FbTk/GContext.cc

@@ -0,0 +1,76 @@

+// GContext.cc for FbTk - fluxbox toolkit +// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: GContext.cc,v 1.1 2003/08/27 13:45:11 fluxgen Exp $ + +#include "GContext.hh" + +#include "App.hh" +#include "FbDrawable.hh" +#include "FbPixmap.hh" +#include "Color.hh" +#include "Font.hh" + +namespace FbTk { + +GContext::GContext(const FbTk::FbDrawable &drawable): + m_gc(XCreateGC(FbTk::App::instance()->display(), + drawable.drawable(), + 0, 0)) { +} + +GContext::GContext(Drawable drawable): + m_gc(XCreateGC(FbTk::App::instance()->display(), + drawable, + 0, 0)) { +} + +GContext::~GContext() { + if (m_gc) + XFreeGC(FbTk::App::instance()->display(), m_gc); +} + +void GContext::setForeground(const FbTk::Color &color) { + XSetForeground(FbTk::App::instance()->display(), m_gc, + color.pixel()); +} + +void GContext::setBackground(const FbTk::Color &color) { + XSetBackground(FbTk::App::instance()->display(), m_gc, + color.pixel()); +} + +/// not implemented! +void GContext::setFont(const FbTk::Font &font) { + //!! TODO +} + +void GContext::setClipMask(const FbTk::FbPixmap &mask) { + XSetClipMask(FbTk::App::instance()->display(), m_gc, + mask.drawable()); +} + +void GContext::setClipOrigin(int x, int y) { + XSetClipOrigin(FbTk::App::instance()->display(), m_gc, + x, y); +} + +} // end namespace FbTk
A src/FbTk/GContext.hh

@@ -0,0 +1,60 @@

+// GContext.hh for FbTk - fluxbox toolkit +// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: GContext.hh,v 1.1 2003/08/27 13:45:11 fluxgen Exp $ + +#ifndef FBTK_GCONTEXT_HH +#define FBTK_GCONTEXT_HH + +#include <X11/Xlib.h> + +namespace FbTk { + +class FbDrawable; +class FbPixmap; +class Font; +class Color; + +/// wrapper for X GC +class GContext { +public: + /// for FbTk drawable + explicit GContext(const FbTk::FbDrawable &drawable); + /// for X drawable + explicit GContext(Drawable drawable); + + virtual ~GContext(); + + void setForeground(const FbTk::Color &color); + void setBackground(const FbTk::Color &color); + void setFont(const FbTk::Font &font); + void setClipMask(const FbTk::FbPixmap &pm); + void setClipOrigin(int x, int y); + + GC gc() const { return m_gc; } + +private: + GC m_gc; +}; + +} // end namespace FbTk + +#endif // FBTK_GCONTEXT_HH