00001 /***************************************************************************** 00002 * x11_factory.hpp 00003 ***************************************************************************** 00004 * Copyright (C) 2003 the VideoLAN team 00005 * $Id: x11_factory.hpp 12207 2005-08-15 15:54:32Z asmax $ 00006 * 00007 * Authors: Cyril Deguet <[email protected]> 00008 * Olivier Teulière <[email protected]> 00009 * 00010 * This program is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2 of the License, or 00013 * (at your option) any later version. 00014 * 00015 * This program is distributed in the hope that it will be useful, 00016 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 * GNU General Public License for more details. 00019 * 00020 * You should have received a copy of the GNU General Public License 00021 * along with this program; if not, write to the Free Software 00022 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. 00023 *****************************************************************************/ 00024 00025 #ifndef X11_FACTORY_HPP 00026 #define X11_FACTORY_HPP 00027 00028 #include <X11/Xlib.h> 00029 00030 #include "../src/os_factory.hpp" 00031 #include <map> 00032 00033 class X11Display; 00034 class X11DragDrop; 00035 class X11TimerLoop; 00036 00037 00039 class X11Factory: public OSFactory 00040 { 00041 public: 00043 map<Window, GenericWindow*> m_windowMap; 00045 map<Window, X11DragDrop*> m_dndMap; 00046 00047 X11Factory( intf_thread_t *pIntf ); 00048 virtual ~X11Factory(); 00049 00051 virtual bool init(); 00052 00054 virtual OSGraphics *createOSGraphics( int width, int height ); 00055 00057 virtual OSLoop *getOSLoop(); 00058 00060 virtual void destroyOSLoop(); 00061 00063 virtual OSTimer *createOSTimer( CmdGeneric &rCmd ); 00064 00066 virtual void minimize(); 00067 00069 virtual OSWindow *createOSWindow( GenericWindow &rWindow, 00070 bool dragDrop, bool playOnDrop, 00071 OSWindow *pParent ); 00072 00074 virtual OSTooltip *createOSTooltip(); 00075 00077 virtual const string &getDirSeparator() const { return m_dirSep; } 00078 00080 virtual const list<string> &getResourcePath() const 00081 { return m_resourcePath; } 00082 00084 virtual int getScreenWidth() const; 00085 virtual int getScreenHeight() const; 00086 00088 virtual Rect getWorkArea() const; 00089 00091 virtual void getMousePos( int &rXPos, int &rYPos ) const; 00092 00094 virtual void changeCursor( CursorType_t type ) const { /*TODO*/ } 00095 00097 virtual void rmDir( const string &rPath ); 00098 00100 X11TimerLoop *getTimerLoop() const { return m_pTimerLoop; } 00101 00102 private: 00104 X11Display *m_pDisplay; 00106 X11TimerLoop *m_pTimerLoop; 00108 const string m_dirSep; 00110 list<string> m_resourcePath; 00111 }; 00112 00113 #endif