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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_vcl.hxx"
26
27 #include "tools/svwin.h"
28 #include "rtl/tencinfo.h"
29 #include "vcl/svapp.hxx"
30
31 #include "win/saldata.hxx"
32
33 // =======================================================================
34
ImplSalGetSystemEncoding()35 rtl_TextEncoding ImplSalGetSystemEncoding()
36 {
37 static UINT nOldAnsiCodePage = 0;
38 static rtl_TextEncoding eEncoding = RTL_TEXTENCODING_MS_1252;
39
40 UINT nAnsiCodePage = GetACP();
41 if ( nAnsiCodePage != nOldAnsiCodePage )
42 {
43 rtl_TextEncoding nEnc
44 = rtl_getTextEncodingFromWindowsCodePage(nAnsiCodePage);
45 if (nEnc != RTL_TEXTENCODING_DONTKNOW)
46 eEncoding = nEnc;
47 }
48
49 return eEncoding;
50 }
51
52 // -----------------------------------------------------------------------
53
ImplSalGetWinAnsiString(const UniString & rStr,sal_Bool bFileName)54 ByteString ImplSalGetWinAnsiString( const UniString& rStr, sal_Bool bFileName )
55 {
56 rtl_TextEncoding eEncoding = ImplSalGetSystemEncoding();
57 if ( bFileName )
58 {
59 return ByteString( rStr, eEncoding,
60 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_UNDERLINE |
61 RTL_UNICODETOTEXT_FLAGS_INVALID_UNDERLINE |
62 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE |
63 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACESTR |
64 RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 );
65 }
66 else
67 {
68 return ByteString( rStr, eEncoding,
69 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT |
70 RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT |
71 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE |
72 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACESTR |
73 RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0 );
74 }
75 }
76
77 // -----------------------------------------------------------------------
78
ImplSalGetUniString(const sal_Char * pStr,xub_StrLen nLen)79 UniString ImplSalGetUniString( const sal_Char* pStr, xub_StrLen nLen )
80 {
81 return UniString( pStr, nLen, ImplSalGetSystemEncoding(),
82 RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_DEFAULT |
83 RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT |
84 RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT );
85 }
86
87 // =======================================================================
88
ImplSalWICompareAscii(const wchar_t * pStr1,const char * pStr2)89 int ImplSalWICompareAscii( const wchar_t* pStr1, const char* pStr2 )
90 {
91 int nRet;
92 wchar_t c1;
93 char c2;
94 do
95 {
96 // translate if character is between 'A' and 'Z'
97 c1 = *pStr1;
98 c2 = *pStr2;
99 if ( (c1 >= 65) && (c1 <= 90) )
100 c1 += 32;
101 if ( (c2 >= 65) && (c2 <= 90) )
102 c2 += 32;
103 nRet = ((sal_Int32)c1)-((sal_Int32)((unsigned char)c2));
104 if ( nRet != 0 )
105 break;
106
107 pStr1++;
108 pStr2++;
109 }
110 while ( c2 );
111
112 return nRet;
113 }
114
115 // =======================================================================
116
ImplSetWindowLong(HWND hWnd,int nIndex,DWORD dwNewLong)117 LONG ImplSetWindowLong( HWND hWnd, int nIndex, DWORD dwNewLong )
118 {
119 return SetWindowLongW( hWnd, nIndex, dwNewLong );
120 }
121
122 // -----------------------------------------------------------------------
123
ImplGetWindowLong(HWND hWnd,int nIndex)124 LONG ImplGetWindowLong( HWND hWnd, int nIndex )
125 {
126 return GetWindowLongW( hWnd, nIndex );
127 }
128
129 // -----------------------------------------------------------------------
130
ImplPostMessage(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)131 BOOL ImplPostMessage( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam )
132 {
133 return PostMessageW( hWnd, nMsg, wParam, lParam );
134 }
135
136 // -----------------------------------------------------------------------
137
ImplSendMessage(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)138 BOOL ImplSendMessage( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam )
139 {
140 BOOL bRet = SendMessageW( hWnd, nMsg, wParam, lParam );
141 return bRet;
142 }
143
144 // -----------------------------------------------------------------------
145
ImplGetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax)146 BOOL ImplGetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax )
147 {
148 return GetMessageW( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax );
149 }
150
151 // -----------------------------------------------------------------------
152
ImplPeekMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg)153 BOOL ImplPeekMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg )
154 {
155 return PeekMessageW( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg );
156 }
157
158 // -----------------------------------------------------------------------
159
ImplDispatchMessage(CONST MSG * lpMsg)160 LONG ImplDispatchMessage( CONST MSG *lpMsg )
161 {
162 return DispatchMessageW( lpMsg );
163 }
164
165