/**
* \file xclass.h
*
* \brief Drei Klassen für die zentralen XWindows Objekte.
*
* Verpackt die drei zentralen Elemente für ein XWindows Programm
* in drei Klassen.
*
* - \ref xdisplay für das display
* - \ref xscreen für alle screens
* - \ref xwindow für alle windows
*
* Dabei ist die Struktur so das zu ein display aus 1-n screens bestehen
* In denen dann wiederum jeweils 1-n windows existieren. Es existiert
* mindestens das rootwindow.
* Alle in dieser Datei definierten Klassen arbeiten sehr eng zusammen,
* daher ist jede friend der aller anderen.
*
* \author Georg Steffers
*
* \date 04.12.2003
*
* \version ..2001 (Georg Steffers): erste implementation
* \version 2001-2003 (Georg Steffers): diverse Modifikationen
* \version 05.12.2003 (Georg Steffers): beginn der Dokumentation via doxygen
*/
/*
* 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 __xclass_h__
#define __xclass_h__
#include
#include
#include
#include
#include
#include
class xscreen;
class xwindow;
/**
* \brief Das Display ist die Verbindung zum X-Server
*
* Verbindung zum X-Server, entwerder über TCP/IP oder
* Unix Domain Sockets. Je nach Server und Hardware auf der dieser
* läft kann dieser 1-n screens zur verfügung stellen.
* Es existiert zumindest der \ref default_screen.
*/
class xdisplay {
friend class xscreen; //!< Da ein xscreen sehr eng mit einem xdisplay
//! zusammenarbeitet
friend class xwindow; //!< Da ein xwindow sehr eng mit einem xdisplay
//! zusammenarbeitet
private:
// Exceptionklassen
class noconnect_exception {}; //!< no connection to display
class nofont_exception {}; //!< no font-file to load
Display* display; //!< \brief Der Descriptor für die eigentliche
//! Verbindung zum X-Server
char* display_name; //!< \brief Hardwarename des Displays
//!
//! Wenn display_name NULL ist, so wird für
//! den Hardwarenamen der Wert der in der
//! Environmentvariable \$DISPLAY steht genommen.
int screen_anz; //x_disp->display, window);
}
xwindow& operator=(const xwindow&);
xscreen* getxscr(void) { return screen; }
Window getwindow(void) { return window; }
void initWM(void);
void map(void) { XMapWindow(screen->x_disp->display, window); }
};
#endif // __xclass_h__