* x11_font.cpp: fixed font placement
[vlc.git] / modules / gui / skins / x11 / x11_window.h
1 /*****************************************************************************
2  * x11_window.h: X11 implementation of the Window class
3  *****************************************************************************
4  * Copyright (C) 2003 VideoLAN
5  * $Id: x11_window.h,v 1.5 2003/06/08 00:32:07 asmax Exp $
6  *
7  * Authors: Cyril Deguet     <asmax@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111,
22  * USA.
23  *****************************************************************************/
24
25
26 #ifndef VLC_SKIN_X11_WIN
27 #define VLC_SKIN_X11_WIN
28
29 //--- X11 -------------------------------------------------------------------
30 #include <X11/Xlib.h>
31
32 #include "x11_timer.h"
33
34 //---------------------------------------------------------------------------
35 class Graphics;
36 class Event;
37
38
39 typedef struct
40 {
41     intf_thread_t *p_intf;
42     X11Timer *timer;
43     string text;
44     Display *display;
45     Window window;
46     GC gc;
47     Font font;
48     int curX;
49     int curY;
50 } tooltip_t;
51
52
53 //---------------------------------------------------------------------------
54 class X11Window : public SkinWindow
55 {
56     private:
57         // General parameters
58         Window Wnd;
59         Display *display;
60         GC Gc;
61         int CursorX;
62         int CursorY;
63         int WindowX;
64         int WindowY;
65         string Name;
66
67         // Drag&Drop
68         X11DropObject *DropObject;
69
70         // Tooltip texts
71         tooltip_t ToolTip;
72
73         // Double-click handling
74         int ClickedX;
75         int ClickedY;
76         int ClickedTime;
77         int DblClickDelay;
78
79         // Left button down
80         bool LButtonDown;
81         // Right button down
82         bool RButtonDown;
83
84     public:
85         // Cosntructors
86         X11Window( intf_thread_t *_p_intf, Window wnd, int x, int y,
87             bool visible, int transition, int normalalpha, int movealpha,
88             bool dragdrop, string name );
89
90         // Destructors
91         virtual ~X11Window();
92
93         // Event processing
94         virtual bool ProcessOSEvent( Event *evt );
95
96         // Window graphic aspect
97         virtual void OSShow( bool show );
98         virtual void RefreshFromImage( int x, int y, int w, int h );
99         virtual void SetTransparency( int Value = -1 );
100         virtual void WindowManualMove();
101         virtual void WindowManualMoveInit();
102
103         // Window methods
104         virtual void Move( int left, int top );
105         virtual void Size( int width, int height );
106
107         // Specific X11 methods
108         Window GetHandle() { return Wnd; };
109
110         // Tooltip texts
111         virtual void ChangeToolTipText( string text );
112
113         // Getters
114         string GetName() { return Name; }
115 };
116 //---------------------------------------------------------------------------
117
118 #endif