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