xref: /aoo41x/main/vcl/inc/os2/saldata.hxx (revision fc9fd3f1)
10d63794cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
30d63794cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
40d63794cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
50d63794cSAndrew Rist  * distributed with this work for additional information
60d63794cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
70d63794cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
80d63794cSAndrew Rist  * "License"); you may not use this file except in compliance
90d63794cSAndrew Rist  * with the License.  You may obtain a copy of the License at
100d63794cSAndrew Rist  *
110d63794cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
120d63794cSAndrew Rist  *
130d63794cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
140d63794cSAndrew Rist  * software distributed under the License is distributed on an
150d63794cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
160d63794cSAndrew Rist  * KIND, either express or implied.  See the License for the
170d63794cSAndrew Rist  * specific language governing permissions and limitations
180d63794cSAndrew Rist  * under the License.
190d63794cSAndrew Rist  *
200d63794cSAndrew Rist  *************************************************************/
210d63794cSAndrew Rist 
220d63794cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SV_SALDATA_HXX
25cdf0e10cSrcweir #define _SV_SALDATA_HXX
26cdf0e10cSrcweir 
27*fc9fd3f1SPedro Giffuni #include <svdata.hxx>
28*fc9fd3f1SPedro Giffuni #include <salwtype.hxx>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir class Os2SalInstance;
31cdf0e10cSrcweir class Os2SalFrame;
32cdf0e10cSrcweir class Os2SalObject;
33cdf0e10cSrcweir 
34cdf0e10cSrcweir extern "C" int debug_printf(const char *f, ...);
35cdf0e10cSrcweir 
36cdf0e10cSrcweir // --------------
37cdf0e10cSrcweir // - SalIMEData -
38cdf0e10cSrcweir // --------------
39cdf0e10cSrcweir 
40cdf0e10cSrcweir // YD FIXME #define ENABLE_IME
41cdf0e10cSrcweir 
42cdf0e10cSrcweir #ifdef ENABLE_IME
43cdf0e10cSrcweir 
44cdf0e10cSrcweir struct SalIMEData;
45cdf0e10cSrcweir 
46cdf0e10cSrcweir #ifdef OS2IM_INCLUDED
47cdf0e10cSrcweir 
48cdf0e10cSrcweir typedef APIRET (APIENTRY ImAssociateInstanceFunc)( HWND hwnd, HIMI himi, PHIMI phimiPrev );
49cdf0e10cSrcweir typedef APIRET (APIENTRY ImGetInstanceFunc)( HWND hwnd, PHIMI phimi );
50cdf0e10cSrcweir typedef APIRET (APIENTRY ImReleaseInstanceFunc)( HWND hwnd, HIMI himi );
51cdf0e10cSrcweir typedef APIRET (APIENTRY ImSetConversionFontFunc)( HIMI himi, PFATTRS pFontAttrs );
52cdf0e10cSrcweir typedef APIRET (APIENTRY ImSetConversionFontSizeFunc)( HIMI himi, PSIZEF psizfxBox );
53cdf0e10cSrcweir typedef APIRET (APIENTRY ImGetConversionStringFunc)( HIMI himi, ULONG ulIndex, PVOID pBuf, PULONG pulBufLen );
54cdf0e10cSrcweir typedef APIRET (APIENTRY ImGetResultStringFunc)( HIMI himi, ULONG ulIndex, PVOID pBuf, PULONG pulBufLen );
55cdf0e10cSrcweir typedef APIRET (APIENTRY ImSetCandidateWindowPosFunc)( HIMI himi, PCANDIDATEPOS pCandidatePos );
56cdf0e10cSrcweir typedef APIRET (APIENTRY ImQueryIMEPropertyFunc)( HIMI himi, ULONG ulIndex, PULONG pulProp );
57cdf0e10cSrcweir typedef APIRET (APIENTRY ImRequestIMEFunc)( HIMI himi, ULONG ulAction, ULONG ulIndex, ULONG ulValue );
58cdf0e10cSrcweir typedef APIRET (APIENTRY ImSetIMModeFunc)( HIMI himi, ULONG ulInputMode, ULONG ulConversionMode );
59cdf0e10cSrcweir typedef APIRET (APIENTRY ImQueryIMModeFunc)( HIMI himi, PULONG pulInputMode, PULONG pulConversionMode );
60cdf0e10cSrcweir 
61cdf0e10cSrcweir struct SalIMEData
62cdf0e10cSrcweir {
63cdf0e10cSrcweir 	HMODULE 						mhModIME;
64cdf0e10cSrcweir 	ImAssociateInstanceFunc*		mpAssocIME;
65cdf0e10cSrcweir 	ImGetInstanceFunc*				mpGetIME;
66cdf0e10cSrcweir 	ImReleaseInstanceFunc*			mpReleaseIME;
67cdf0e10cSrcweir 	ImSetConversionFontFunc*		mpSetConversionFont;
68cdf0e10cSrcweir 	ImSetConversionFontSizeFunc*	mpSetConversionFontSize;
69cdf0e10cSrcweir 	ImGetConversionStringFunc*		mpGetConversionString;
70cdf0e10cSrcweir 	ImGetResultStringFunc*			mpGetResultString;
71cdf0e10cSrcweir 	ImSetCandidateWindowPosFunc*	mpSetCandidateWin;
72cdf0e10cSrcweir 	ImQueryIMEPropertyFunc* 		mpQueryIMEProperty;
73cdf0e10cSrcweir 	ImRequestIMEFunc*				mpRequestIME;
74cdf0e10cSrcweir 	ImSetIMModeFunc*				mpSetIMEMode;
75cdf0e10cSrcweir 	ImQueryIMModeFunc*				mpQueryIMEMode;
76cdf0e10cSrcweir };
77cdf0e10cSrcweir 
78cdf0e10cSrcweir #endif
79cdf0e10cSrcweir 
80cdf0e10cSrcweir #endif
81cdf0e10cSrcweir 
82cdf0e10cSrcweir // --------------------
83cdf0e10cSrcweir // - Icon cache       -
84cdf0e10cSrcweir // --------------------
85cdf0e10cSrcweir 
86cdf0e10cSrcweir struct SalIcon
87cdf0e10cSrcweir {
88cdf0e10cSrcweir     int     nId;
89cdf0e10cSrcweir     HPOINTER hIcon;
90cdf0e10cSrcweir     SalIcon *pNext;
91cdf0e10cSrcweir };
92cdf0e10cSrcweir 
93cdf0e10cSrcweir // -----------
94cdf0e10cSrcweir // - SalData -
95cdf0e10cSrcweir // -----------
96cdf0e10cSrcweir 
97cdf0e10cSrcweir struct SalData
98cdf0e10cSrcweir {
99cdf0e10cSrcweir 	HAB 					mhAB;					// anchor block handle
100cdf0e10cSrcweir 	HMQ 					mhMQ;					// handle of os2 message queue
101cdf0e10cSrcweir 	int 					mnArgc; 				// commandline param count
102cdf0e10cSrcweir 	char**					mpArgv; 				// commandline
103cdf0e10cSrcweir 	ULONG					mnNewTimerMS;			// Neue Zeit, mit dem der Timer gestartet werden soll
104cdf0e10cSrcweir 	ULONG                   		mnTimerMS;              	// Current Time (in MS) of the Timer
105cdf0e10cSrcweir 	ULONG                   		mnTimerOrgMS;          		// Current Original Time (in MS)
106cdf0e10cSrcweir 	ULONG					mnNextTimerTime;
107cdf0e10cSrcweir 	ULONG					mnLastEventTime;
108cdf0e10cSrcweir 	ULONG					mnTimerId;			// os2 timer id
109*fc9fd3f1SPedro Giffuni 	PM_BOOL      				mbInTimerProc;			// timer event is currently being dispatched
110cdf0e10cSrcweir 	//SALTIMERPROC				mpTimerProc;			// timer callback proc
111cdf0e10cSrcweir 	HWND					mhWantLeaveMsg; 		// window handle, that want a MOUSELEAVE message
112cdf0e10cSrcweir 	AutoTimer*				mpMouseLeaveTimer;		// Timer for MouseLeave Test
113cdf0e10cSrcweir 	Os2SalInstance*				mpFirstInstance;		// pointer of first instance
114cdf0e10cSrcweir 	Os2SalFrame*				mpFirstFrame;			// pointer of first frame
115cdf0e10cSrcweir 	Os2SalFrame*				mpCreateFrame;			// Create-Frame for WM_CREATE
116cdf0e10cSrcweir 	Os2SalObject*				mpFirstObject;			// pointer of first object window
117cdf0e10cSrcweir 	ULONG					mnAppThreadId;			// Id from Applikation-Thread
118cdf0e10cSrcweir 	ULONG					mnFontMetricCount;		// number of entries in the font list
119cdf0e10cSrcweir 	PFONTMETRICS				mpFontMetrics;			// cached font list
120*fc9fd3f1SPedro Giffuni 	PM_BOOL					mbObjClassInit; 		// Ist SALOBJECTCLASS initialised
121cdf0e10cSrcweir #ifdef ENABLE_IME
122cdf0e10cSrcweir 	SalIMEData* 				mpIMEData;				// SalIME-Data
123*fc9fd3f1SPedro Giffuni 	PM_BOOL					mbIMEInit;				// SalIME-Data-Init
124cdf0e10cSrcweir #endif
125cdf0e10cSrcweir 
126cdf0e10cSrcweir     SalIcon*                mpFirstIcon;            // icon cache, points to first icon, NULL if none
127cdf0e10cSrcweir 
128cdf0e10cSrcweir };
129cdf0e10cSrcweir 
SetSalData(SalData * pData)130cdf0e10cSrcweir inline void SetSalData( SalData* pData ) { ImplGetSVData()->mpSalData = (void*)pData; }
GetSalData()131cdf0e10cSrcweir inline SalData* GetSalData() { return (SalData*)ImplGetSVData()->mpSalData; }
GetAppSalData()132cdf0e10cSrcweir inline SalData* GetAppSalData() { return (SalData*)ImplGetAppSVData()->mpSalData; }
133cdf0e10cSrcweir 
134cdf0e10cSrcweir // --------------
135cdf0e10cSrcweir // - SalShlData -
136cdf0e10cSrcweir // --------------
137cdf0e10cSrcweir 
138cdf0e10cSrcweir #define OS2_VER_211 	211
139cdf0e10cSrcweir #define OS2_VER_WARP3	230
140cdf0e10cSrcweir #define OS2_VER_WARP4	240
141cdf0e10cSrcweir 
142cdf0e10cSrcweir struct SalShlData
143cdf0e10cSrcweir {
144cdf0e10cSrcweir     HMODULE	mhMod;		// Module handle of SAL-DLL
145cdf0e10cSrcweir     USHORT	mnVersion;	// 211 = OS2 2.11; 230 = OS2 3.0; 240 = OS2 4.0
146cdf0e10cSrcweir     PFNWP	mpFrameProc; 	// old frame proc
147cdf0e10cSrcweir };
148cdf0e10cSrcweir 
149cdf0e10cSrcweir extern SalShlData aSalShlData;
150cdf0e10cSrcweir 
151*fc9fd3f1SPedro Giffuni PM_BOOL SalImplHandleProcessMenu( HWND hWnd, ULONG nMsg, MPARAM nMP1, MPARAM nMP2 );
152cdf0e10cSrcweir 
153cdf0e10cSrcweir // --------------------------------------------
154cdf0e10cSrcweir // - SALSHL.CXX - for accessing DLL resources -
155cdf0e10cSrcweir // --------------------------------------------
156cdf0e10cSrcweir 
157cdf0e10cSrcweir HPOINTER ImplLoadSalCursor( int nId );
158cdf0e10cSrcweir HBITMAP ImplLoadSalBitmap( int nId );
159*fc9fd3f1SPedro Giffuni sal_Bool ImplLoadSalIcon( int nId, HPOINTER& rIcon);
160cdf0e10cSrcweir 
161cdf0e10cSrcweir // SALGDI.CXX
162cdf0e10cSrcweir void ImplInitSalGDI();
163cdf0e10cSrcweir void ImplFreeSalGDI();
164cdf0e10cSrcweir 
165cdf0e10cSrcweir // --------------
166cdf0e10cSrcweir // - Prototypes -
167cdf0e10cSrcweir // --------------
168cdf0e10cSrcweir 
169cdf0e10cSrcweir // \\OS2\SOURCE\APP\SALINST.CXX
170cdf0e10cSrcweir void ImplSalYieldMutexAcquireWithWait();
171cdf0e10cSrcweir ULONG ImplSalReleaseYieldMutex();
172cdf0e10cSrcweir void ImplSalAcquireYieldMutex( ULONG nCount );
173cdf0e10cSrcweir ULONG GetCurrentThreadId();
174*fc9fd3f1SPedro Giffuni sal_Bool ImplSalYieldMutexTryToAcquire();
175cdf0e10cSrcweir void ImplSalYieldMutexAcquire();
176cdf0e10cSrcweir void ImplSalYieldMutexRelease();
177cdf0e10cSrcweir 
178cdf0e10cSrcweir // \\OS2\SOURCE\WINDOW\SALFRAME.CXX
179cdf0e10cSrcweir MRESULT EXPENTRY SalFrameWndProc( HWND hWnd, ULONG nMsg, MPARAM nMP1, MPARAM nMP2 );
180cdf0e10cSrcweir MRESULT EXPENTRY SalFrameFrameProc( HWND hWnd, ULONG nMsg, MPARAM nMP1, MPARAM nMP2 );
181cdf0e10cSrcweir // \SV\WIN\SOURCE\APP\SALTIMER.CXX
182cdf0e10cSrcweir #define SALTIMERPROC_RECURSIVE 0xffffffff
183cdf0e10cSrcweir void SalTimerProc( HWND hWnd, UINT nMsg, UINT nId, ULONG nTime );
184cdf0e10cSrcweir 
185cdf0e10cSrcweir // \WIN\SOURCE\WINDOW\SALFRAME.CXX
186cdf0e10cSrcweir void SalTestMouseLeave();
187cdf0e10cSrcweir 
188cdf0e10cSrcweir // \\OS2\SOURCE\WINDOW\SALFRAME.CXX
189cdf0e10cSrcweir // return Frame for Message-Handling
190cdf0e10cSrcweir Os2SalFrame* GetSalDefaultFrame();
191cdf0e10cSrcweir 
192cdf0e10cSrcweir // \\OS2\SOURCE\WINDOW\SALFRAME.CXX
193cdf0e10cSrcweir // IME-Daten wieder freigeben
194cdf0e10cSrcweir #ifdef ENABLE_IME
195cdf0e10cSrcweir void ImplReleaseSALIMEData();
196cdf0e10cSrcweir #endif
197cdf0e10cSrcweir 
198cdf0e10cSrcweir // -----------
199cdf0e10cSrcweir // - Defines -
200cdf0e10cSrcweir // -----------
201cdf0e10cSrcweir 
202cdf0e10cSrcweir #define SAL_PROFILE_APPNAME 		((PSZ)"StarOffice")
203cdf0e10cSrcweir #define SAL_PROFILE_USEDJP			((PSZ)"UseDJP")
204cdf0e10cSrcweir #define SAL_PROFILE_PRINTDJP		((PSZ)"PrintDJP")
205cdf0e10cSrcweir #define SAL_PROFILE_PRINTRAW		((PSZ)"PrintRAW")
206cdf0e10cSrcweir 
207cdf0e10cSrcweir #define SAL_FRAME_WNDEXTRA			sizeof(ULONG)
208cdf0e10cSrcweir #define SAL_FRAME_THIS				0
209cdf0e10cSrcweir #define SAL_FRAME_CLASSNAME 		"SALFRAME"
210cdf0e10cSrcweir #define SAL_SUBFRAME_CLASSNAME 		"SALSUBFRAME"
211cdf0e10cSrcweir #define SAL_OBJECT_WNDEXTRA 		sizeof(ULONG)
212cdf0e10cSrcweir #define SAL_OBJECT_THIS 			0
213cdf0e10cSrcweir #define SAL_OBJECT_CLASSNAME		"SALOBJECT"
214cdf0e10cSrcweir #define SAL_OBJECT_CHILDCLASSNAME	"SALOBJECTCHILD"
215cdf0e10cSrcweir #define SAL_OBJECT_CLIPCLASSNAME	"SALOBJECTCLIP"
216cdf0e10cSrcweir #define SAL_COM_CLASSNAME			"SALCOMWND"
217cdf0e10cSrcweir 
218cdf0e10cSrcweir #define SAL_MOUSELEAVE_TIMEOUT		300
219cdf0e10cSrcweir 
220cdf0e10cSrcweir // MP1 == 0; MP2 == pData
221cdf0e10cSrcweir #define SAL_MSG_USEREVENT			(WM_USER+111)
222cdf0e10cSrcweir // MP1 == 0; MP2 == MousePosition relativ to upper left of screen
223cdf0e10cSrcweir #define SAL_MSG_MOUSELEAVE			(WM_USER+112)
224cdf0e10cSrcweir // MP1 == hDC; MP2 == 0
225cdf0e10cSrcweir #define SAL_MSG_PRINTABORTJOB		(WM_USER+113)
226cdf0e10cSrcweir // MP1 == 0; MP2 == 0
227cdf0e10cSrcweir #define SAL_MSG_STARTTIMER			(WM_USER+114)
228cdf0e10cSrcweir // MP1 == nFrameStyle; MP2 == pParent; lResult pFrame
229cdf0e10cSrcweir #define SAL_MSG_CREATEFRAME 		(WM_USER+115)
230cdf0e10cSrcweir // MP1 == 0; MP2 == pParent; lResult pObject
231cdf0e10cSrcweir #define SAL_MSG_CREATEOBJECT		(WM_USER+116)
232cdf0e10cSrcweir // MP1 == bWait; MP2 == pMutex
233cdf0e10cSrcweir #define SAL_MSG_THREADYIELD 		(WM_USER+117)
234cdf0e10cSrcweir // MP1 == 0; MP2 == 0
235cdf0e10cSrcweir #define SAL_MSG_RELEASEWAITYIELD	(WM_USER+118)
236cdf0e10cSrcweir // MP1 == 0; MP2 == pData
237cdf0e10cSrcweir #define SAL_MSG_SYSPROCESSMENU		(WM_USER+119)
238cdf0e10cSrcweir // POSTFOCUS-Message; MP1 == nMP1; MP2 == nMP2 (SHORT1( bFocus ), 0)
239cdf0e10cSrcweir #define SAL_MSG_POSTFOCUS			(WM_USER+120)
240cdf0e10cSrcweir // POSTSIZE-Message; MP1 == nMP1; MP2 == nMP2
241cdf0e10cSrcweir #define SAL_MSG_POSTSIZE			(WM_USER+121)
242cdf0e10cSrcweir 
243cdf0e10cSrcweir // wParam == wParam; lParam == lParam
244cdf0e10cSrcweir #define SAL_MSG_POSTMOVE            (WM_USER+136)
245cdf0e10cSrcweir // wParam == pRECT; lParam == 0
246cdf0e10cSrcweir #define SAL_MSG_POSTPAINT           (WM_USER+137)
247cdf0e10cSrcweir // wParam == nFlags; lParam == 0
248cdf0e10cSrcweir #define SAL_MSG_TOTOP               (WM_USER+142)
249cdf0e10cSrcweir // wParam == bVisible; lParam == 0
250cdf0e10cSrcweir #define SAL_MSG_SHOW                (WM_USER+143)
251cdf0e10cSrcweir 
252cdf0e10cSrcweir // SysChild-ToTop; nMP1 = 0; nMP2 = 0
253cdf0e10cSrcweir #define SALOBJ_MSG_TOTOP			(WM_USER+150)
254cdf0e10cSrcweir // POSTFOCUS-Message; MP1 == nMP1; MP2 == nMP2 (SHORT1( bFocus ), 0)
255cdf0e10cSrcweir #define SALOBJ_MSG_POSTFOCUS		(WM_USER+151)
256cdf0e10cSrcweir 
257cdf0e10cSrcweir // wParam == 0; lParam == 0
258cdf0e10cSrcweir #define SAL_MSG_DESTROYFRAME        (WM_USER+160)
259cdf0e10cSrcweir // wParam == 0; lParam == pObject;
260cdf0e10cSrcweir #define SAL_MSG_DESTROYOBJECT       (WM_USER+161)
261cdf0e10cSrcweir // wParam == 0; lParam == this; lResult == bRet
262cdf0e10cSrcweir #define SAL_MSG_CREATESOUND         (WM_USER+162)
263cdf0e10cSrcweir // wParam == 0; lParam == this
264cdf0e10cSrcweir #define SAL_MSG_DESTROYSOUND        (WM_USER+163)
265cdf0e10cSrcweir // wParam == hWnd; lParam == 0; lResult == hDC
266cdf0e10cSrcweir #define SAL_MSG_GETDC               (WM_USER+164)
267cdf0e10cSrcweir // wParam == hWnd; lParam == 0
268cdf0e10cSrcweir #define SAL_MSG_RELEASEDC           (WM_USER+165)
269cdf0e10cSrcweir // wParam == newParentHwnd; lParam == oldHwnd; lResult == newhWnd
270cdf0e10cSrcweir #define SAL_MSG_RECREATEHWND         (WM_USER+166)
271cdf0e10cSrcweir // wParam == newParentHwnd; lParam == oldHwnd; lResult == newhWnd
272cdf0e10cSrcweir #define SAL_MSG_RECREATECHILDHWND    (WM_USER+167)
273cdf0e10cSrcweir // wParam == 0; lParam == HWND;
274cdf0e10cSrcweir #define SAL_MSG_DESTROYHWND         (WM_USER+168)
275cdf0e10cSrcweir // POSTTIMER-Message; wparam = 0, lParam == time
276cdf0e10cSrcweir #define SAL_MSG_POSTTIMER           (WM_USER+169)
277cdf0e10cSrcweir 
278cdf0e10cSrcweir // -----------------
279cdf0e10cSrcweir // - Helpfunctions -
280cdf0e10cSrcweir // -----------------
281cdf0e10cSrcweir 
SetWindowPtr(HWND hWnd,SalFrame * pThis)282cdf0e10cSrcweir inline void SetWindowPtr( HWND hWnd, SalFrame* pThis )
283cdf0e10cSrcweir {
284cdf0e10cSrcweir 	WinSetWindowULong( hWnd, SAL_FRAME_THIS, (ULONG)pThis );
285cdf0e10cSrcweir }
286cdf0e10cSrcweir 
GetWindowPtr(HWND hWnd)287cdf0e10cSrcweir inline Os2SalFrame* GetWindowPtr( HWND hWnd )
288cdf0e10cSrcweir {
289cdf0e10cSrcweir 	return (Os2SalFrame*)WinQueryWindowULong( hWnd, SAL_FRAME_THIS );
290cdf0e10cSrcweir }
291cdf0e10cSrcweir 
SetSalObjWindowPtr(HWND hWnd,SalObject * pThis)292cdf0e10cSrcweir inline void SetSalObjWindowPtr( HWND hWnd, SalObject* pThis )
293cdf0e10cSrcweir {
294cdf0e10cSrcweir 	WinSetWindowULong( hWnd, SAL_OBJECT_THIS, (ULONG)pThis );
295cdf0e10cSrcweir }
296cdf0e10cSrcweir 
GetSalObjWindowPtr(HWND hWnd)297cdf0e10cSrcweir inline Os2SalObject* GetSalObjWindowPtr( HWND hWnd )
298cdf0e10cSrcweir {
299cdf0e10cSrcweir 	return (Os2SalObject*)WinQueryWindowULong( hWnd, SAL_OBJECT_THIS );
300cdf0e10cSrcweir }
301cdf0e10cSrcweir 
302cdf0e10cSrcweir #endif	// _SV_SALDATA_HXX
303