xref: /aoo4110/main/vcl/inc/unx/saldisp.hxx (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _SV_SALDISP_HXX
25 #define _SV_SALDISP_HXX
26 
27 // -=-= exports =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
28 class	SalDisplay;
29 class	SalColormap;
30 class	SalVisual;
31 class	SalXLib;
32 
33 // -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
34 #include <unx/salunx.h>
35 #include <vcl/salgtype.hxx>
36 #ifndef _SV_PTRSTYLE_HXX
37 #include <vcl/ptrstyle.hxx>
38 #endif
39 #include <sal/types.h>
40 #ifndef _OSL_MUTEX_H
41 #include <osl/mutex.h>
42 #endif
43 #include <vector>
44 #include <list>
45 #include <hash_map>
46 #include <tools/gen.hxx>
47 #include <salwtype.hxx>
48 
49 #include <vclpluginapi.h>
50 
51 // -=-= forwards -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
52 class	BitmapPalette;
53 class	SalFrame;
54 class	ColorMask;
55 
56 namespace vcl_sal { class WMAdaptor; }
57 class DtIntegrator;
58 
59 // -=-= #defines -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
60 #define PROPERTY_SUPPORT_WM_SetPos				0x00000001
61 #define PROPERTY_SUPPORT_WM_Screen				0x00000002
62 #define PROPERTY_SUPPORT_WM_Parent_Pixmap_None	0x00000004
63 #define PROPERTY_SUPPORT_WM_ClientPos			0x00000008
64 #define	PROPERTY_SUPPORT_XSetClipMask			0x00000010	// for bitmap ops.
65 #define	PROPERTY_SUPPORT_3ButtonMouse			0x00000020
66 
67 #define PROPERTY_BUG_XA_FAMILY_NAME_nil			0x00001000
68 #define PROPERTY_BUG_XCopyArea_GXxor			0x00002000	// from window
69 #define PROPERTY_BUG_Stipple					0x00004000	// 0/1 inverted
70 #define PROPERTY_BUG_Tile                       0x00008000  // Recreate the
71                                             // dither brush each time
72 #define PROPERTY_BUG_FillPolygon_Tile           0x00010000  // always Toggle Fillstyle
73 #define PROPERTY_BUG_DrawLine			        0x00020000  // a DrawLine is one point to short
74 #define PROPERTY_BUG_CopyPlane_RevertBWPixel	0x00040000  // revert fg and bg for xcopyplane
75 #define PROPERTY_BUG_CopyArea_OnlySmallSlices	0x00080000
76 #define PROPERTY_BUG_Bitmap_Bit_Order			0x00100000
77 
78 #define	PROPERTY_FEATURE_Maximize				0x01000000
79 #define PROPERTY_FEATURE_SharedMemory           0x02000000
80 #define PROPERTY_FEATURE_TrustedSolaris         0x04000000
81 
82 #define	PROPERTY_DEFAULT						0x00000FCB
83 
84 // ------------------------------------------------------------------------
85 // server vendor
86 
87 typedef enum  {
88 	vendor_none = 0,
89 	vendor_attachmate,
90 	vendor_excursion,
91 	vendor_hp,
92 	vendor_hummingbird,
93 	vendor_ibm,
94 	vendor_sco,
95 	vendor_sgi,
96 	vendor_sun,
97 	vendor_xfree,
98 	vendor_xinside,
99 	vendor_xprinter,
100 	vendor_unknown
101 } srv_vendor_t;
102 
103 extern "C" srv_vendor_t sal_GetServerVendor( Display *p_display );
104 
105 // -=-= SalWM =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
106 enum SalWM { olwm,		// Open Look
107 			 mwm, 		// Motif
108 			 kwm,		// KDE Desktop Environment
109 			 FourDwm,	// SGI
110 			 vuewm,		// HP
111 			 dtwm,		// CDE
112 			 winmgr,	// Oracle NC
113 			 twm,
114 			 fvwm,		// ...
115 			 pmwm,		// SCO
116              otherwm };
117 
118 // -=-= SalRGB -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
119 // MSB/Bigendian Sicht (SalColor == RGB, r=0xFF0000, g=0xFF00, b=0xFF)
120 
121 enum SalRGB { RGB,  RBG,
122 			  GBR,  GRB,
123 			  BGR,  BRG,
124 			  RGBA,	RBGA,
125 			  GBRA, GRBA,
126 			  BGRA, BRGA,
127               otherSalRGB };
128 
129 // -=-= SalVisual =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
130 class SalVisual : public XVisualInfo
131 {
132     SalRGB			eRGBMode_;
133     int				nRedShift_;
134     int				nGreenShift_;
135     int				nBlueShift_;
136     int				nRedBits_;
137     int				nGreenBits_;
138     int				nBlueBits_;
139 public:
140                             SalVisual();
141 							~SalVisual();
142 							SalVisual( const XVisualInfo* pXVI );
143 
GetVisualId() const144 	inline	VisualID		GetVisualId() const { return visualid; }
GetVisual() const145 	inline	Visual		   *GetVisual() const { return visual; }
GetClass() const146 	inline	int				GetClass() const { return c_class; }
GetDepth() const147 	inline	int				GetDepth() const { return depth; }
GetMode() const148 	inline  SalRGB			GetMode() const { return eRGBMode_; }
149 
150 			Pixel			GetTCPixel( SalColor nColor ) const;
151 			SalColor		GetTCColor( Pixel nPixel ) const;
152             sal_Bool			Convert( int &n0, int &n1, int &n2, int &n3 ); // 32bit
153          	sal_Bool			Convert( int &n0, int &n1, int &n2 ); // 24bit
154 };
155 
156 // -=-= SalColormap =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
157 class SalColormap
158 {
159     const SalDisplay*       m_pDisplay;
160     Colormap                m_hColormap;
161     std::vector<SalColor>   m_aPalette;			// Pseudocolor
162     SalVisual               m_aVisual;
163     std::vector<sal_uInt16>     m_aLookupTable;		// Pseudocolor: 12bit reduction
164     Pixel                   m_nWhitePixel;
165     Pixel                   m_nBlackPixel;
166     Pixel                   m_nUsed;			// Pseudocolor
167     int                     m_nScreen;
168 
169     void			GetPalette();
170     void			GetLookupTable();
171 public:
172     SalColormap( const SalDisplay*  pSalDisplay,
173                  Colormap           hColormap,
174                  int                nScreen );
175     SalColormap( const BitmapPalette &rpPalette );
176     SalColormap( sal_uInt16             nDepth );
177     SalColormap();
178 	~SalColormap();
179 
GetXColormap() const180 	inline	Colormap		    GetXColormap() const { return m_hColormap; }
GetDisplay() const181 	inline	const SalDisplay*   GetDisplay() const { return m_pDisplay; }
182 	inline	Display*            GetXDisplay() const;
GetVisual() const183 	inline	const SalVisual&    GetVisual() const { return m_aVisual; }
GetXVisual() const184 	inline	Visual*             GetXVisual() const { return m_aVisual.GetVisual(); }
GetWhitePixel() const185 	inline	Pixel			    GetWhitePixel() const { return m_nWhitePixel; }
GetBlackPixel() const186 	inline	Pixel			    GetBlackPixel() const { return m_nBlackPixel; }
GetUsed() const187 	inline	Pixel			    GetUsed() const { return m_nUsed; }
GetClass() const188 	inline	int				    GetClass() const { return m_aVisual.GetClass(); }
GetScreenNumber() const189     inline  int                 GetScreenNumber() const { return m_nScreen; }
190 
191     sal_Bool			GetXPixels( XColor  &rColor,
192                                 int      r,
193                                 int      g,
194                                 int      b ) const;
195 	inline	sal_Bool			GetXPixel( XColor  &rColor,
196 									   int      r,
197 									   int      g,
198 									   int      b ) const;
199     Pixel			GetPixel( SalColor nColor ) const;
200     SalColor		GetColor( Pixel nPixel ) const;
201     void			SetPalette( const BitmapPalette &rPalette );
202 };
203 
204 // -=-= SalXLib =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
205 typedef int(*YieldFunc)(int fd, void* data);
206 
207 class VCLPLUG_GEN_PUBLIC SalXLib
208 {
209 protected:
210     timeval			m_aTimeout;
211     sal_uLong           m_nTimeoutMS;
212 	int             m_pTimeoutFDS[2];
213 
214     bool			m_bHaveSystemChildFrames;
215 
216     int				nFDs_;
217     fd_set	        aReadFDS_;
218     fd_set	        aExceptionFDS_;
219 
220 
221     struct XErrorStackEntry
222     {
223         bool            m_bIgnore;
224         bool            m_bWas;
225         unsigned int    m_nLastErrorRequest;
226         XErrorHandler   m_aHandler;
227     };
228     std::vector< XErrorStackEntry > m_aXErrorHandlerStack;
229     XIOErrorHandler m_aOrigXIOErrorHandler;
230 public:
231     SalXLib();
232     virtual			~SalXLib();
233     virtual void		Init();
234 
235     virtual void		Yield( bool bWait, bool bHandleAllCurrentEvents );
236     virtual void        Wakeup();
237     virtual void		PostUserEvent();
238 
239     virtual void    Insert( int fd, void* data,
240                             YieldFunc	pending,
241                             YieldFunc	queued,
242                             YieldFunc	handle );
243     virtual void    Remove( int fd );
244 
245     void			XError( Display *pDisp, XErrorEvent *pEvent );
HasXErrorOccured() const246     bool            HasXErrorOccured() const { return m_aXErrorHandlerStack.back().m_bWas; }
GetLastXErrorRequestCode() const247     unsigned int    GetLastXErrorRequestCode() const { return m_aXErrorHandlerStack.back().m_nLastErrorRequest; }
ResetXErrorOccured()248     void            ResetXErrorOccured() { m_aXErrorHandlerStack.back().m_bWas = false; }
249     void PushXErrorLevel( bool bIgnore );
250     void PopXErrorLevel();
251 
252 	virtual void			StartTimer( sal_uLong nMS );
253 	virtual void			StopTimer();
254 
255     bool            CheckTimeout( bool bExecuteTimers = true );
256 
setHaveSystemChildFrame()257     void			setHaveSystemChildFrame()
258     { m_bHaveSystemChildFrames = true; }
getHaveSystemChildFrame() const259     bool            getHaveSystemChildFrame() const
260     { return m_bHaveSystemChildFrames; }
261 };
262 
263 // -=-= SalDisplay -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
264 
265 class SalI18N_InputMethod;
266 class SalI18N_KeyboardExtension;
267 class AttributeProvider;
268 class SalUnicodeConverter;
269 class SalConverterCache;
270 
271 extern "C" {
272     struct SnDisplay;
273     struct SnLauncheeContext;
274     typedef Bool(*X_if_predicate)(Display*,XEvent*,XPointer);
275 }
276 
277 class VCLPLUG_GEN_PUBLIC SalDisplay
278 {
279 public:
280     struct RenderEntry
281     {
282         Pixmap      m_aPixmap;
283         Picture     m_aPicture;
284 
RenderEntrySalDisplay::RenderEntry285         RenderEntry() : m_aPixmap( 0 ), m_aPicture( 0 ) {}
286     };
287 
288     typedef std::hash_map<int,RenderEntry> RenderEntryMap;
289 
290     struct ScreenData
291     {
292         bool                m_bInit;
293 
294         XLIB_Window         m_aRoot;
295         XLIB_Window         m_aRefWindow;
296         Size                m_aSize;
297         SalVisual           m_aVisual;
298         SalColormap         m_aColormap;
299         GC				    m_aMonoGC;
300         GC				    m_aCopyGC;
301         GC				    m_aAndInvertedGC;
302         GC				    m_aAndGC;
303         GC				    m_aOrGC;
304         GC			        m_aStippleGC;
305         Pixmap			    m_hInvert50;
306         mutable RenderEntryMap m_aRenderData;
307 
ScreenDataSalDisplay::ScreenData308         ScreenData() :
309         m_bInit( false ),
310         m_aRoot( None ),
311         m_aRefWindow( None ),
312         m_aMonoGC( None ),
313         m_aCopyGC( None ),
314         m_aAndInvertedGC( None ),
315         m_aAndGC( None ),
316         m_aOrGC( None ),
317         m_aStippleGC( None ),
318         m_hInvert50( None ),
319         m_aRenderData( 1 )
320         {}
321     };
322 // -=-= UserEvent =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
323     struct SalUserEvent
324     {
325         SalFrame*		m_pFrame;
326         void*			m_pData;
327         sal_uInt16			m_nEvent;
328 
SalUserEventSalDisplay::SalUserEvent329         SalUserEvent( SalFrame* pFrame, void* pData, sal_uInt16 nEvent = SALEVENT_USEREVENT )
330                 : m_pFrame( pFrame ),
331                   m_pData( pData ),
332                   m_nEvent( nEvent )
333         {}
334     };
335 
336 protected:
337     SalXLib		   *pXLib_;
338     SalI18N_InputMethod			*mpInputMethod;
339     SalI18N_KeyboardExtension	*mpKbdExtension;
340 
341     AttributeProvider 			*mpFactory;
342 
343     Display		   *pDisp_;				// X Display
344     int				m_nDefaultScreen;			// XDefaultScreen
345     std::vector< ScreenData >    m_aScreens;
346     ScreenData      m_aInvalidScreenData;
347     Pair			aResolution_;		// [dpi]
348     bool			mbExactResolution;
349     sal_uLong			nMaxRequestSize_;	// [byte]
350 
351     srv_vendor_t	meServerVendor;
352     SalWM			eWindowManager_;
353     sal_uLong			nProperties_;		// PROPERTY_SUPPORT, BUG, FEATURE
354     sal_Bool			bLocal_;			// Server==Client? Init
355     // in SalDisplay::IsLocal()
356     sal_Bool			mbLocalIsValid;		// bLocal_ is valid ?
357     // until x bytes
358 
359     oslMutex        hEventGuard_;
360     std::list< SalUserEvent > m_aUserEvents;
361 
362     XLIB_Cursor		aPointerCache_[POINTER_COUNT];
363     SalFrame*		m_pCapture;
364 
365     // Keyboard
366     sal_Bool			bNumLockFromXS_;	// Num Lock handled by X Server
367     int				nNumLockIndex_;		// modifier index in modmap
368     int				nNumLockMask_;		// keyevent state mask for
369     KeySym			nShiftKeySym_;		// first shift modifier
370     KeySym			nCtrlKeySym_;		// first control modifier
371     KeySym			nMod1KeySym_;		// first mod1 modifier
372     ByteString		m_aKeyboardName;
373 
374     vcl_sal::WMAdaptor*	m_pWMAdaptor;
375     DtIntegrator*       m_pDtIntegrator;
376 
377     bool			m_bXinerama;
378     std::vector< Rectangle > m_aXineramaScreens;
379     std::list<SalFrame*> m_aFrames;
380     std::list<SalObject*> m_aSalObjects;
381 
382     bool            m_bUseRandRWrapper; // don't use randr on gtk, use gdk signals there
383 
384     mutable XLIB_Time  m_nLastUserEventTime; // mutable because changed on first access
385 
386     virtual long	Dispatch( XEvent *pEvent ) = 0;
387     void			InitXinerama();
388     void            InitRandR( XLIB_Window aRoot ) const;
389     void            DeInitRandR();
390     int             processRandREvent( XEvent* );
391 
392     void			doDestruct();
393     int             addXineramaScreenUnique( long i_nX, long i_nY, long i_nWidth, long i_nHeight );
394 public:
395 	static	SalDisplay	   *GetSalDisplay( Display* display );
396 	static	sal_Bool			BestVisual( Display     *pDisp,
397 										int          nScreen,
398 										XVisualInfo &rVI );
399 
400 							SalDisplay( Display* pDisp );
401 
402     virtual ~SalDisplay();
403 
404 
405     virtual void			registerFrame( SalFrame* pFrame );
406     virtual void			deregisterFrame( SalFrame* pFrame );
setHaveSystemChildFrame() const407     void					setHaveSystemChildFrame() const
408     { pXLib_->setHaveSystemChildFrame(); }
getHaveSystemChildFrame() const409     bool                    getHaveSystemChildFrame() const
410     { return pXLib_->getHaveSystemChildFrame(); }
411 
412     void			Init();
413 
414     void			SendInternalEvent( SalFrame* pFrame, void* pData, sal_uInt16 nEvent = SALEVENT_USEREVENT );
415     void            CancelInternalEvent( SalFrame* pFrame, void* pData, sal_uInt16 nEvent );
416     bool			DispatchInternalEvent();
417     void			PrintInfo() const;
418 
419     void			PrintEvent( const ByteString &rComment,
420                                 XEvent       *pEvent ) const;
421 
422     void			Beep() const;
423 
424     void			ModifierMapping();
425     String			GetKeyNameFromKeySym( KeySym keysym ) const;
426     XubString		GetKeyName( sal_uInt16 nKeyCode ) const;
427     sal_uInt16			GetKeyCode( KeySym keysym, char*pcPrintable ) const;
428     KeySym			GetKeySym( XKeyEvent      *pEvent,
429                                unsigned char  *pPrintable,
430                                int			  *pLen,
431                                KeySym         *pUnmodifiedKeySym,
432                                Status         *pStatus,
433                                XIC = NULL ) const;
434 
435     XLIB_Cursor		GetPointer( int ePointerStyle );
436     virtual int	CaptureMouse( SalFrame *pCapture );
437 
438     sal_Bool			IsLocal();
439 
440     void			Remove( XEvent   *pEvent );
441 
442     virtual void          initScreen( int nScreen ) const;
getDataForScreen(int nScreen) const443     const ScreenData&     getDataForScreen( int nScreen ) const
444     {
445         if( nScreen < 0 || nScreen >= static_cast<int>(m_aScreens.size()) )
446             return m_aInvalidScreenData;
447         if( ! m_aScreens[nScreen].m_bInit )
448             initScreen( nScreen );
449         return m_aScreens[nScreen];
450     }
451 
GetDrawable(int nScreen) const452 	XLIB_Window		GetDrawable( int nScreen ) const { return getDataForScreen( nScreen ).m_aRefWindow; }
GetDisplay() const453 	Display		   *GetDisplay() const { return pDisp_; }
GetDefaultScreenNumber() const454 	int				GetDefaultScreenNumber() const { return m_nDefaultScreen; }
GetDefaultMonitorNumber() const455 	virtual int		GetDefaultMonitorNumber() const { return 0; }
GetScreenSize(int nScreen) const456     const Size&     GetScreenSize( int nScreen ) const { return getDataForScreen( nScreen ).m_aSize; }
GetServerVendor() const457 	srv_vendor_t	GetServerVendor() const { return meServerVendor; }
SetServerVendor()458 	void			SetServerVendor() { meServerVendor = sal_GetServerVendor(pDisp_); }
IsDisplay() const459 	sal_Bool			IsDisplay() const { return !!pXLib_; }
GetMonoGC(int nScreen) const460 	GC				GetMonoGC( int nScreen ) const { return getDataForScreen(nScreen).m_aMonoGC; }
GetCopyGC(int nScreen) const461 	GC				GetCopyGC( int nScreen ) const { return getDataForScreen(nScreen).m_aCopyGC; }
GetAndInvertedGC(int nScreen) const462 	GC				GetAndInvertedGC( int nScreen ) const { return getDataForScreen(nScreen).m_aAndInvertedGC; }
GetAndGC(int nScreen) const463 	GC				GetAndGC( int nScreen ) const { return getDataForScreen(nScreen).m_aAndGC; }
GetOrGC(int nScreen) const464 	GC				GetOrGC( int nScreen ) const { return getDataForScreen(nScreen).m_aOrGC; }
GetStippleGC(int nScreen) const465 	GC				GetStippleGC( int nScreen ) const { return getDataForScreen(nScreen).m_aStippleGC; }
466 	GC				GetGC( sal_uInt16 nDepth, int nScreen ) const;
GetInvert50(int nScreen) const467 	Pixmap			GetInvert50( int nScreen ) const { return getDataForScreen(nScreen).m_hInvert50; }
GetColormap(int nScreen) const468 	const SalColormap&    GetColormap( int nScreen ) const { return getDataForScreen(nScreen).m_aColormap; }
GetVisual(int nScreen) const469 	const SalVisual&      GetVisual( int nScreen ) const { return getDataForScreen(nScreen).m_aVisual; }
GetRenderEntries(int nScreen) const470 	RenderEntryMap&       GetRenderEntries( int nScreen ) const { return getDataForScreen(nScreen).m_aRenderData; }
GetResolution() const471 	const Pair	   &GetResolution() const { return aResolution_; }
GetExactResolution() const472     bool			GetExactResolution() const { return mbExactResolution; }
GetProperties() const473 	sal_uLong			GetProperties() const { return nProperties_; }
GetMaxRequestSize() const474 	sal_uLong			GetMaxRequestSize() const { return nMaxRequestSize_; }
475     XLIB_Time       GetLastUserEventTime( bool bAlwaysReget = false ) const;
476 
477     bool            XIfEventWithTimeout( XEvent*, XPointer, X_if_predicate, long i_nTimeout = 1000 ) const;
478 
MouseCaptured(const SalFrame * pFrameData) const479 	sal_Bool			MouseCaptured( const SalFrame *pFrameData ) const
480     { return m_pCapture == pFrameData; }
GetCaptureFrame() const481     SalFrame*	GetCaptureFrame() const
482     { return m_pCapture; }
GetXLib() const483 	SalXLib*         GetXLib() const { return pXLib_; }
484 
GetInputMethod() const485 	SalI18N_InputMethod*			GetInputMethod()  const { return mpInputMethod;  }
GetKbdExtension() const486 	SalI18N_KeyboardExtension* 	GetKbdExtension() const { return mpKbdExtension; }
SetInputMethod(SalI18N_InputMethod * pInputMethod)487 	void 			SetInputMethod( SalI18N_InputMethod *pInputMethod )
488     { mpInputMethod = pInputMethod; }
SetKbdExtension(SalI18N_KeyboardExtension * pKbdExtension)489 	void			SetKbdExtension(SalI18N_KeyboardExtension *pKbdExtension)
490     { mpKbdExtension = pKbdExtension; }
491 	const char*	GetKeyboardName( sal_Bool bRefresh = sal_False );
getWMAdaptor() const492     ::vcl_sal::WMAdaptor* getWMAdaptor() const { return m_pWMAdaptor; }
getDtIntegrator() const493     DtIntegrator* getDtIntegrator() const { return m_pDtIntegrator; }
IsXinerama() const494     bool			IsXinerama() const { return m_bXinerama; }
GetXineramaScreens() const495     const std::vector< Rectangle >& GetXineramaScreens() const { return m_aXineramaScreens; }
GetRootWindow(int nScreen) const496     XLIB_Window     GetRootWindow( int nScreen ) const
497     { return getDataForScreen( nScreen ).m_aRoot; }
GetScreenData()498     const std::vector< ScreenData >& GetScreenData()
499     { return m_aScreens; }
GetScreenCount() const500     int GetScreenCount() const { return static_cast<int>(m_aScreens.size()); }
501 
getFrames() const502     const std::list< SalFrame* >& getFrames() const
503     { return m_aFrames; }
504 
IsNumLockFromXS() const505     sal_Bool            IsNumLockFromXS() const { return bNumLockFromXS_; }
506 
getSalObjects()507     std::list< SalObject* >& getSalObjects() { return m_aSalObjects; }
508 };
509 
510 // -=-= inlines =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
511 
GetGC(sal_uInt16 nDepth,int nScreen) const512 inline GC SalDisplay::GetGC( sal_uInt16 nDepth, int nScreen ) const
513 { return 1 == nDepth
514 	     ? GetMonoGC( nScreen )
515 	     : getDataForScreen(nScreen).m_aVisual.GetDepth() == nDepth
516 	       ? GetCopyGC( nScreen )
517 	       : None; }
518 
GetXDisplay() const519 inline	Display	*SalColormap::GetXDisplay() const
520 { return m_pDisplay->GetDisplay(); }
521 
522 class VCLPLUG_GEN_PUBLIC SalX11Display : public SalDisplay
523 {
524 public:
525 		     SalX11Display( Display* pDisp );
526     virtual ~SalX11Display();
527 
528     virtual long		Dispatch( XEvent *pEvent );
529     virtual void		Yield();
530 
531     sal_Bool	 IsEvent();
532 };
533 
534 /*----------------------------------------------------------
535  keep track of correct size of the initial window
536  */
537 // get foreign key names
538 namespace vcl_sal {
539 	String getKeysymReplacementName(
540 		const char* pKeyboard,
541 		KeySym nSymbol );
542 }
543 
544 
545 #endif // _SV_SALDISP_HXX
546