/** * \file canvas_x11.h * * \brief Ein X11-Canvas * * Die X11-Implementaton eines Canvas, hier ist ein XImage der Speicherbereich * in den geschrieben wird. * * \author Georg Steffers [gs] * * \date 04.12.2003 * * \version ..2002 [gs]: erste funktionierende Implementation * \version 04.12.2003 [gs]: beginn der Dokumentation via doxygen * \version 19.12.2003 [gs]: draw_text hinzugefügt, es schreibt über * XDrawImageString einen Text in meine * Window. (Brauche ich für DEBUG-Ausgaben) */ /* * Copyright (C)2003 Georg Steffers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __canvas_x11_h__ #define __canvas_x11_h__ #include "xclass.h" #include "../canvas.h" #include "../event_source.h" class disp_x11; class canvas_x11 : public canvas { friend class disp_x11; protected: xdisplay* disp; xscreen* scr; xwindow* win; XImage* ximg; virtual void create_buffer(void); public: virtual void draw_text(int x, int y, char* text, int length) { XDrawImageString(disp->getdisplay(), win->getwindow(), scr->getgc(), x, y, text, length); } canvas_x11(unsigned, unsigned); virtual ~canvas_x11(); virtual rasterizer* create_rasterizer(void) { return new sw_rasterizer(x_size, y_size, sinfo); } Display* get_display(void) { return disp->getdisplay(); } Window get_window(void) { return win->getwindow(); } virtual void open_screen(void) {} virtual void blit_screen(void); }; class canvas_x11_factory : public canvas_factory { public: canvas* create(unsigned xs, unsigned ys) const { return new canvas_x11(xs, ys); } }; #endif // __canvas_x11_h__