summaryrefslogtreecommitdiff
path: root/vcl/unx/inc/saldisp.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/inc/saldisp.hxx')
-rw-r--r--vcl/unx/inc/saldisp.hxx589
1 files changed, 589 insertions, 0 deletions
diff --git a/vcl/unx/inc/saldisp.hxx b/vcl/unx/inc/saldisp.hxx
new file mode 100644
index 000000000000..40cafa2f54fd
--- /dev/null
+++ b/vcl/unx/inc/saldisp.hxx
@@ -0,0 +1,589 @@
+/*************************************************************************
+ *
+ * $RCSfile: saldisp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:05:41 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SV_SALDISP_HXX
+#define _SV_SALDISP_HXX
+
+// -=-= exports =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+struct SalAppXResource;
+class SalDisplay;
+class SalICCCM;
+class SalColormap;
+class SalColormapRef;
+class SalTrueColorConverter;
+class SalVisual;
+class SalXLib;
+class SalImageList;
+class SalBitmapList;
+
+// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#ifndef _SALUNX_H
+#include <salunx.h>
+#endif
+#ifndef _SV_SALGTYPE_HXX
+#include <salgtype.hxx>
+#endif
+#ifndef _SV_PTRSTYLE_HXX
+#include <ptrstyle.hxx>
+#endif
+
+// -=-= forwards -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+class BitmapPalette;
+class SalImage;
+class SalBitmap;
+class SalFrameData;
+class ColorMask;
+class SalSystemData;
+
+#ifndef _XSHM_H_
+struct XShmSegmentInfo;
+#endif
+
+// -=-= typedefs -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+typedef struct _oslMutexImpl *oslThreadMutex;
+
+DECLARE_LIST( SalImageList, SalImage* )
+DECLARE_LIST( SalBitmapList,SalBitmap*)
+
+// -=-= #defines -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+#define PROPERTY_SUPPORT_WM_SetPos 0x00000001
+#define PROPERTY_SUPPORT_WM_Screen 0x00000002
+#define PROPERTY_SUPPORT_WM_Parent_Pixmap_None 0x00000004
+#define PROPERTY_SUPPORT_WM_ClientPos 0x00000008
+#define PROPERTY_SUPPORT_XSetClipMask 0x00000010 // for bitmap ops.
+#define PROPERTY_SUPPORT_3ButtonMouse 0x00000020
+
+#define PROPERTY_BUG_XA_FAMILY_NAME_nil 0x00001000
+#define PROPERTY_BUG_XCopyArea_GXxor 0x00002000 // from window
+#define PROPERTY_BUG_Stipple 0x00004000 // 0/1 inverted
+#define PROPERTY_BUG_Tile 0x00008000 // Recreate the
+ // dither brush each time
+#define PROPERTY_BUG_FillPolygon_Tile 0x00010000 // always Toggle Fillstyle
+#define PROPERTY_BUG_DrawLine 0x00020000 // a DrawLine is one point to short
+#define PROPERTY_BUG_CopyPlane_RevertBWPixel 0x00040000 // revert fg and bg for xcopyplane
+#define PROPERTY_BUG_CopyArea_OnlySmallSlices 0x00080000
+#define PROPERTY_BUG_Bitmap_Bit_Order 0x00100000
+
+#define PROPERTY_FEATURE_Maximize 0x01000000
+#define PROPERTY_FEATURE_SharedMemory 0x02000000
+
+#define PROPERTY_DEFAULT 0x00000FCB
+
+// ------------------------------------------------------------------------
+// server vendor
+
+typedef enum {
+ vendor_none = 0,
+ vendor_attachmate,
+ vendor_excursion,
+ vendor_hp,
+ vendor_hummingbird,
+ vendor_ibm,
+ vendor_sco,
+ vendor_sgi,
+ vendor_sun,
+ vendor_xfree,
+ vendor_xinside,
+ vendor_xprinter,
+ vendor_unknown
+} srv_vendor_t;
+
+extern "C" srv_vendor_t sal_GetServerVendor( Display *p_display );
+
+// -=-= SalWM =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+enum SalWM { olwm, // Open Look
+ mwm, // Motif
+ kwm, // KDE Desktop Environment
+ _4Dwm, // SGI
+ vuewm, // HP
+ dtwm, // CDE
+ winmgr, // Oracle NC
+ twm,
+ fvwm, // ...
+ pmwm, // SCO
+ otherwm };
+
+// -=-= SalICCCM =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+class SalICCCM
+{
+ unknown STDAPI( SalICCCM )
+
+public:
+ Atom aWM_Protocols_; // Window manager
+ Atom aWM_State_;
+ Atom aWM_DeleteWindow_;
+ Atom aWM_SaveYourself_;
+ Atom aWM_Command_;
+
+ Atom aQuitEvent_; // client message events
+ Atom aUserEvent_;
+
+ inline int IsQuitEvent( Atom a ) const
+ { return aQuitEvent_ == a; }
+ inline int IsUserEvent( Atom a ) const
+ { return aUserEvent_ == a; }
+ inline int IsWM_State( Atom a ) const
+ { return aWM_State_ == a; }
+ inline int IsWM_DeleteWindow( Atom a ) const
+ { return aWM_DeleteWindow_ == a; }
+ inline int IsWM_Protocols( Atom a ) const
+ { return aWM_Protocols_ == a; }
+ inline int IsWM_SaveYourself( Atom a ) const
+ { return aWM_SaveYourself_ == a; }
+ inline int IsWM_Command( Atom a ) const
+ { return aWM_Command_ == a; }
+
+ SalICCCM( SalDisplay *pDisplay );
+};
+
+// -=-= SalRGB -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+// MSB/Bigendian Sicht (SalColor == RGB, r=0xFF0000, g=0xFF00, b=0xFF)
+
+enum SalRGB { RGB, RBG,
+ GBR, GRB,
+ BGR, BRG,
+ RGBA, RBGA,
+ GBRA, GRBA,
+ BGRA, BRGA,
+ other };
+
+// -=-= SalVisual =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+class SalVisual : public XVisualInfo
+{
+ unknown STDAPI( SalVisual )
+
+ SalRGB eRGBMode_;
+ int nRedShift_;
+ int nGreenShift_;
+ int nBlueShift_;
+public:
+ ~SalVisual();
+ SalVisual( const XVisualInfo* pXVI );
+
+ inline VisualID GetVisualId() const { return visualid; }
+ inline Visual *GetVisual() const { return visual; }
+ inline int GetClass() const { return c_class; }
+ inline int GetDepth() const { return depth; }
+ inline SalRGB GetMode() const { return eRGBMode_; }
+
+ Pixel GetTCPixel( SalColor nColor ) const;
+ SalColor GetTCColor( Pixel nPixel ) const;
+ BOOL Convert( int &n0, int &n1, int &n2, int &n3 ); // 32bit
+ BOOL Convert( int &n0, int &n1, int &n2 ); // 24bit
+};
+
+// -=-= SalColormap/SalColormapRef=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+class SalColormap : public SvRefBase
+{
+ unknown STDAPI( SalColormap )
+
+ SalDisplay *pDisplay_;
+ Colormap hColormap_;
+ SalColor *pPalette_; // Pseudocolor
+ SalVisual *pVisual_;
+ USHORT *pLookupTable_; // Pseudocolor: 12bit reduction
+ Pixel nWhitePixel_;
+ Pixel nBlackPixel_;
+ Pixel nUsed_; // Pseudocolor
+
+ void GetPalette();
+ void GetLookupTable();
+public:
+ SalColormap( SalDisplay *pSalDisplay,
+ Colormap hColormap );
+ SalColormap( const BitmapPalette &rpPalette );
+ SalColormap( USHORT nDepth );
+ SalColormap();
+ virtual ~SalColormap();
+
+ inline Colormap GetXColormap() const { return hColormap_; }
+ inline SalDisplay *GetDisplay() const { return pDisplay_; }
+ inline Display *GetXDisplay() const;
+ inline SalVisual *GetVisual() const;
+ inline Visual *GetXVisual() const;
+ inline Pixel GetWhitePixel() const { return nWhitePixel_; }
+ inline Pixel GetBlackPixel() const { return nBlackPixel_; }
+ inline Pixel GetUsed() const { return nUsed_; }
+ inline int GetClass() const;
+
+ BOOL GetXPixels( XColor &rColor,
+ int r,
+ int g,
+ int b ) const;
+ inline BOOL GetXPixel( XColor &rColor,
+ int r,
+ int g,
+ int b ) const;
+ Pixel GetPixel( SalColor nColor ) const;
+ SalColor GetColor( Pixel nPixel ) const;
+ void SetPalette( const BitmapPalette &rPalette );
+};
+
+SV_DECL_IMPL_REF( SalColormap )
+
+// -=-= SalXLib =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+typedef int(*YieldFunc)(int fd, void* data);
+struct YieldEntry;
+
+class SalXLib
+{
+ unknown STDAPI( SalXLib )
+
+ XtAppContext pApplicationContext_;
+ timeval Timeout_;
+ ULONG nTimeoutMS_;
+ int nStateOfYield_;
+ BOOL bWasXError_;
+ BOOL bIgnoreXErrors_;
+ int nFDs_;
+ fd_set *pReadFDS_;
+ fd_set *pExceptionFDS_;
+ YieldEntry *pYieldEntries_;
+public:
+ SalXLib();
+ ~SalXLib();
+ void Init( int *pArgc, char *ppArgv[] );
+
+ void Yield( BOOL bWait );
+
+ void Insert( int fd, void* data,
+ YieldFunc pending,
+ YieldFunc queued,
+ YieldFunc handle );
+ void Remove( int fd );
+
+ void XError( Display *pDisp, XErrorEvent *pEvent );
+ inline BOOL WasXError() const { return bWasXError_; }
+ inline BOOL GetIgnoreXErrors() const { return bIgnoreXErrors_; }
+ inline void SetIgnoreXErrors( BOOL b )
+ { bIgnoreXErrors_ = b; bWasXError_ = FALSE; }
+
+ inline void StartTimer( ULONG nMS );
+ inline void StopTimer();
+
+ inline XtAppContext GetAppContext() const
+ { return pApplicationContext_; }
+};
+
+// -=-= SalXEvent =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+struct SalXEvent
+{
+ SalXEvent *pNext_; // Stack
+ XEvent event_;
+};
+
+// -=-= SalDisplay -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+class SalI18N_InputMethod;
+class SalI18N_KeyboardExtension;
+class XlfdStorage;
+class ExtendedFontStruct;
+class ExtendedXlfd;
+class AttributeProvider;
+class SalUnicodeConverter;
+class SalConverterCache;
+
+DECLARE_LIST( SalFontCache, ExtendedFontStruct* )
+
+class SalDisplay
+{
+ unknown STDAPI( SalDisplay )
+
+ SalXLib *pXLib_;
+ SalI18N_InputMethod *mpInputMethod;
+ SalI18N_KeyboardExtension *mpKbdExtension;
+
+ AttributeProvider *mpFactory;
+ XlfdStorage *mpFontList;
+ SalConverterCache *mpCvtCache;
+
+ SalSystemData *mpSalSystemData;
+ // the one to get create and destroy notify events
+
+ SalICCCM *pICCCM_; // Atoms
+ Display *pDisp_; // X Display
+ Screen *pScreen_; // XDefaultScreenOfDisplay
+ int nScreen_; // XDefaultScreen
+ SalVisual *pRootVisual_; // default visual of screen
+ XLIB_Window hRootWindow_;
+ Size aSize_; // Screen Size [pixel]
+ Pair aResolution_; // [dpi]
+ ULONG nMaxRequestSize_; // [byte]
+
+ srv_vendor_t meServerVendor;
+ SalWM eWindowManager_;
+ ULONG nProperties_; // PROPERTY_SUPPORT, BUG, FEATURE
+ BOOL bLocal_; // Server==Client? Init
+ // in SalDisplay::IsLocal()
+ BOOL mbLocalIsValid; // bLocal_ is valid ?
+ ULONG nImageDepths_; // Supported Image Depths
+ ULONG nSharedImages_; // Supports MIT-SHM Extension
+ // until x bytes
+
+ int nStateOfYield_;
+ int nStateOfSendEvent_;
+ oslThreadMutex hEventGuard_;
+ SalXEvent *pEventQueue_; // threaded user event queue
+ SalXEvent *pDispatchStack_; // Dispatch/Yield
+
+ // SalFrame
+ Widget hShell_; // Application Shell Widget
+ Widget hComposite_; // the composite child of the shell
+
+ XLIB_Cursor aPointerCache_[POINTER_COUNT];
+ SalFrameData *pCapture_;
+
+ // GDI
+ SalVisual *pVisual_; // Visual
+ XLIB_Window hRefWindow_;
+ GC pMonoGC_;
+ GC pCopyGC_;
+ GC pAndInvertedGC_;
+ GC pAndGC_;
+ GC pOrGC_;
+ GC pStippleGC_;
+ Pixmap hInvert50_;
+ SalColormapRef xColor_;
+
+ SalFontCache *pFontCache_;
+
+ int nBeepVolume_; // Sound
+
+ // Keyboard
+ BOOL bNumLockFromXS_; // Num Lock handled by X Server
+ int nNumLockIndex_; // modifier index in modmap
+ int nNumLockMask_; // keyevent state mask for
+ KeySym nShiftKeySym_; // first shift modifier
+ KeySym nCtrlKeySym_; // first control modifier
+ KeySym nMod1KeySym_; // first mod1 modifier
+ ByteString m_aKeyboardName;
+
+ SalBitmapList Bitmaps_; // to destroy bitmap resources;
+
+ SalImageList SharedImages_;
+
+ void DestroyFontCache();
+ long Dispatch( XEvent *pEvent );
+
+public:
+ static SalDisplay *GetSalDisplay( Display* display );
+ static BOOL BestVisual( Display *pDisp,
+ int nScreen,
+ XVisualInfo &rVI );
+
+ SalDisplay( Widget w );
+ SalDisplay( Display* pDisp,
+ Visual* pVisual = NULL,
+ Colormap aColMap = None );
+
+ ~SalDisplay();
+
+ void Init( Colormap hXColmap, const XVisualInfo* pXVI );
+
+ BOOL IsEvent();
+ void SendEvent( Atom aEvent,
+ void *pData,
+ XLIB_Window hReceiver = 0 ) const;
+ void SendEvent( Atom aEvent,
+ UINT32 *pData = 0,
+ XLIB_Window hReceiver = 0 ) const;
+ void Yield( BOOL bWait );
+ void PrintInfo() const;
+
+ void PrintEvent( const ByteString &rComment,
+ XEvent *pEvent ) const;
+
+ void AddFontPath( const ByteString &rPath ) const;
+ XlfdStorage* GetXlfdList();
+ ExtendedFontStruct*
+ GetFont( ExtendedXlfd *pFont, int nPixelSize );
+
+ void Beep() const;
+
+ void ModifierMapping();
+ String GetKeyNameFromKeySym( KeySym keysym ) const;
+ XubString GetKeyName( USHORT nKeyCode ) const;
+ USHORT GetKeyCode( KeySym keysym, char*pcPrintable ) const;
+ KeySym GetKeySym( XKeyEvent *pEvent,
+ unsigned char *pPrintable,
+ int *pLen,
+ Status *pStatus,
+ XIC = NULL ) const;
+
+ XLIB_Cursor GetPointer( int ePointerStyle );
+ int CaptureMouse( SalFrameData *pCapture );
+
+ BOOL IsLocal();
+ inline void Insert( SalBitmap *pBitmap );
+ inline void Remove( SalBitmap *pBitmap );
+
+ inline SalImage *Seek( SalImage *pImage );
+ inline void Insert( SalImage *pImage );
+ inline void Remove( SalImage *pImage );
+ void Remove( XEvent *pEvent );
+
+ inline XLIB_Window GetWindow() const
+ { return XtWindow( hComposite_ ); }
+ inline Widget GetWidget() const { return hComposite_; }
+ inline XLIB_Window GetShellWindow() const
+ { return XtWindow( hShell_ ); }
+ inline Widget GetShellWidget() const { return hShell_; }
+
+ inline XLIB_Window GetRootWindow() const
+ { return hRootWindow_; }
+ inline XLIB_Window GetDrawable() const { return hRefWindow_; }
+ inline Display *GetDisplay() const { return pDisp_; }
+ inline int GetScreenNumber() const { return nScreen_; }
+ inline srv_vendor_t GetServerVendor() const { return meServerVendor; }
+ inline void SetServerVendor() {
+ meServerVendor = sal_GetServerVendor(pDisp_); }
+ inline BOOL IsDisplay() const { return !!pXLib_; }
+ inline SalICCCM &GetICCCM() const { return *pICCCM_; }
+ inline GC GetMonoGC() const { return pMonoGC_; }
+ inline GC GetCopyGC() const { return pCopyGC_; }
+ inline GC GetAndInvertedGC() const { return pAndInvertedGC_; }
+ inline GC GetAndGC() const { return pAndGC_; }
+ inline GC GetOrGC() const { return pOrGC_; }
+ inline GC GetStippleGC() const { return pStippleGC_; }
+ inline GC GetGC( USHORT nDepth ) const;
+ inline Pixmap GetInvert50() const { return hInvert50_; }
+ inline SalColormap &GetColormap() const { return *xColor_; }
+ inline SalVisual *GetVisual() const { return pVisual_; }
+ inline SalVisual *GetRootVisual() const { return pRootVisual_; }
+ inline const Size &GetScreenSize() const { return aSize_; }
+ inline const Pair &GetResolution() const { return aResolution_; }
+ inline ULONG GetProperties() const { return nProperties_; }
+ inline ULONG GetMaxRequestSize() const { return nMaxRequestSize_; }
+ inline ULONG GetImageDepths() const { return nImageDepths_; }
+ inline ULONG SupportsShm() const { return nSharedImages_; }
+ inline void DisableShm() { nSharedImages_ /= 2; } // = 0
+
+ inline BOOL MouseCaptured( const SalFrameData *pFrameData ) const
+ { return pCapture_ == pFrameData; }
+ inline SalXLib* GetXLib() { return pXLib_; }
+
+ inline SalI18N_InputMethod* GetInputMethod() { return mpInputMethod; }
+ inline SalI18N_KeyboardExtension* GetKbdExtension() { return mpKbdExtension; }
+ inline void SetInputMethod( SalI18N_InputMethod *pInputMethod )
+ { mpInputMethod = pInputMethod; }
+ inline void SetKbdExtension(SalI18N_KeyboardExtension *pKbdExtension)
+ { mpKbdExtension = pKbdExtension; }
+ const char* GetKeyboardName( BOOL bRefresh = FALSE );
+ SalConverterCache* GetConverter() { return mpCvtCache; }
+};
+
+// -=-= inlines =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+inline void SalDisplay::Remove( SalBitmap *pBitmap )
+{ Bitmaps_.Remove( pBitmap ); }
+
+inline void SalDisplay::Insert( SalBitmap *pBitmap )
+{ Bitmaps_.Insert( pBitmap ); }
+
+inline SalImage *SalDisplay::Seek( SalImage *pImage )
+{ return SharedImages_.Seek( pImage ); }
+
+inline void SalDisplay::Remove( SalImage *pImage )
+{ SharedImages_.Remove( pImage ); }
+
+inline void SalDisplay::Insert( SalImage *pImage )
+{ SharedImages_.Insert( pImage ); }
+
+inline GC SalDisplay::GetGC( USHORT nDepth ) const
+{ return 1 == nDepth
+ ? pMonoGC_
+ : pVisual_->GetDepth() == nDepth
+ ? pCopyGC_
+ : NULL; }
+
+inline Display *SalColormap::GetXDisplay() const
+{ return pDisplay_->GetDisplay(); }
+
+inline SalVisual *SalColormap::GetVisual() const
+{ return pVisual_ ? pVisual_ : pDisplay_->GetVisual(); }
+
+inline Visual *SalColormap::GetXVisual() const
+{ return GetVisual()->GetVisual(); }
+
+inline int SalColormap::GetClass() const
+{ return pVisual_ ? pVisual_->GetClass() : PseudoColor; }
+
+/*----------------------------------------------------------
+ keep track of correct size of the initial window
+ */
+extern "C" {
+
+void MarkWindowAsBadPositioned ( unsigned int nWindow );
+void MarkWindowAsGoodPositioned ( unsigned int nWindow );
+Bool WindowNeedGoodPosition ( unsigned int nWindow );
+
+} /* extern "C" */
+
+// get foreign key names
+namespace vcl_sal {
+ String getKeysymReplacementName(
+ const char* pKeyboard,
+ KeySym nSymbol );
+}
+
+
+#endif // _SV_SALDISP_HXX
+