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