Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
62f824f7
Commit
62f824f7
authored
Mar 18, 2000
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Avoid calling the *Rect USER functions from inside GDI.
Moved a few USER functions to a more appropriate location.
parent
fe08568a
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
654 additions
and
584 deletions
+654
-584
bitblt.c
graphics/x11drv/bitblt.c
+36
-8
dosvm.c
loader/dos/dosvm.c
+4
-2
Makefile.in
misc/Makefile.in
+0
-1
main.c
misc/main.c
+13
-534
Makefile.in
objects/Makefile.in
+0
-1
clipping.c
objects/clipping.c
+12
-3
region.c
objects/region.c
+25
-11
text.c
objects/text.c
+7
-7
Makefile.in
windows/Makefile.in
+3
-0
cursoricon.c
windows/cursoricon.c
+0
-0
message.c
windows/message.c
+0
-17
spy.c
windows/spy.c
+0
-0
sysparams.c
windows/sysparams.c
+554
-0
No files found.
graphics/x11drv/bitblt.c
View file @
62f824f7
...
...
@@ -845,8 +845,14 @@ static void BITBLT_GetSrcAreaStretch( DC *dcSrc, DC *dcDst,
if
(
widthDst
<
0
)
xDst
+=
widthDst
;
if
(
heightSrc
<
0
)
ySrc
+=
heightSrc
;
if
(
heightDst
<
0
)
yDst
+=
heightDst
;
OffsetRect
(
&
rectSrc
,
-
xSrc
,
-
ySrc
);
OffsetRect
(
&
rectDst
,
-
xDst
,
-
yDst
);
rectSrc
.
left
-=
xSrc
;
rectSrc
.
right
-=
xSrc
;
rectSrc
.
top
-=
ySrc
;
rectSrc
.
bottom
-=
ySrc
;
rectDst
.
left
-=
xDst
;
rectDst
.
right
-=
xDst
;
rectDst
.
top
-=
yDst
;
rectDst
.
bottom
-=
yDst
;
/* FIXME: avoid BadMatch errors */
imageSrc
=
XGetImage
(
display
,
physDevSrc
->
drawable
,
...
...
@@ -1056,7 +1062,10 @@ static BOOL BITBLT_GetVisRectangles( DC *dcDst, INT xDst, INT yDst,
/* Get the destination visible rectangle */
SetRect
(
&
rect
,
xDst
,
yDst
,
xDst
+
widthDst
,
yDst
+
heightDst
);
rect
.
left
=
xDst
;
rect
.
top
=
yDst
;
rect
.
right
=
xDst
+
widthDst
;
rect
.
bottom
=
yDst
+
heightDst
;
if
(
widthDst
<
0
)
SWAP_INT32
(
&
rect
.
left
,
&
rect
.
right
);
if
(
heightDst
<
0
)
SWAP_INT32
(
&
rect
.
top
,
&
rect
.
bottom
);
GetRgnBox
(
dcDst
->
w
.
hGCClipRgn
,
&
clipRect
);
...
...
@@ -1065,7 +1074,10 @@ static BOOL BITBLT_GetVisRectangles( DC *dcDst, INT xDst, INT yDst,
/* Get the source visible rectangle */
if
(
!
dcSrc
)
return
TRUE
;
SetRect
(
&
rect
,
xSrc
,
ySrc
,
xSrc
+
widthSrc
,
ySrc
+
heightSrc
);
rect
.
left
=
xSrc
;
rect
.
top
=
ySrc
;
rect
.
right
=
xSrc
+
widthSrc
;
rect
.
bottom
=
ySrc
+
heightSrc
;
if
(
widthSrc
<
0
)
SWAP_INT32
(
&
rect
.
left
,
&
rect
.
right
);
if
(
heightSrc
<
0
)
SWAP_INT32
(
&
rect
.
top
,
&
rect
.
bottom
);
/* Apparently the clipping and visible regions are only for output,
...
...
@@ -1077,10 +1089,16 @@ static BOOL BITBLT_GetVisRectangles( DC *dcDst, INT xDst, INT yDst,
if
((
widthSrc
==
widthDst
)
&&
(
heightSrc
==
heightDst
))
/* no stretching */
{
OffsetRect
(
visRectSrc
,
xDst
-
xSrc
,
yDst
-
ySrc
);
visRectSrc
->
left
+=
xDst
-
xSrc
;
visRectSrc
->
right
+=
xDst
-
xSrc
;
visRectSrc
->
top
+=
yDst
-
ySrc
;
visRectSrc
->
bottom
+=
yDst
-
ySrc
;
if
(
!
IntersectRect
(
&
rect
,
visRectSrc
,
visRectDst
))
return
FALSE
;
*
visRectSrc
=
*
visRectDst
=
rect
;
OffsetRect
(
visRectSrc
,
xSrc
-
xDst
,
ySrc
-
yDst
);
visRectSrc
->
left
+=
xSrc
-
xDst
;
visRectSrc
->
right
+=
xSrc
-
xDst
;
visRectSrc
->
top
+=
ySrc
-
yDst
;
visRectSrc
->
bottom
+=
ySrc
-
yDst
;
}
else
/* stretching */
{
...
...
@@ -1091,7 +1109,12 @@ static BOOL BITBLT_GetVisRectangles( DC *dcDst, INT xDst, INT yDst,
rect
.
bottom
=
yDst
+
((
visRectSrc
->
bottom
-
ySrc
)
*
heightDst
)
/
heightSrc
;
if
(
rect
.
left
>
rect
.
right
)
SWAP_INT32
(
&
rect
.
left
,
&
rect
.
right
);
if
(
rect
.
top
>
rect
.
bottom
)
SWAP_INT32
(
&
rect
.
top
,
&
rect
.
bottom
);
InflateRect
(
&
rect
,
1
,
1
);
/* Avoid rounding errors */
/* Avoid rounding errors */
rect
.
left
--
;
rect
.
top
--
;
rect
.
right
++
;
rect
.
bottom
++
;
if
(
!
IntersectRect
(
visRectDst
,
&
rect
,
visRectDst
))
return
FALSE
;
/* Map destination rectangle back to source coordinates */
...
...
@@ -1102,7 +1125,12 @@ static BOOL BITBLT_GetVisRectangles( DC *dcDst, INT xDst, INT yDst,
rect
.
bottom
=
ySrc
+
((
visRectDst
->
bottom
-
yDst
)
*
heightSrc
)
/
heightDst
;
if
(
rect
.
left
>
rect
.
right
)
SWAP_INT32
(
&
rect
.
left
,
&
rect
.
right
);
if
(
rect
.
top
>
rect
.
bottom
)
SWAP_INT32
(
&
rect
.
top
,
&
rect
.
bottom
);
InflateRect
(
&
rect
,
1
,
1
);
/* Avoid rounding errors */
/* Avoid rounding errors */
rect
.
left
--
;
rect
.
top
--
;
rect
.
right
++
;
rect
.
bottom
++
;
if
(
!
IntersectRect
(
visRectSrc
,
&
rect
,
visRectSrc
))
return
FALSE
;
}
return
TRUE
;
...
...
loader/dos/dosvm.c
View file @
62f824f7
...
...
@@ -25,6 +25,8 @@
#include "wingdi.h"
#include "winuser.h"
#include "winnt.h"
#include "callback.h"
#include "msdos.h"
#include "file.h"
#include "miscemu.h"
...
...
@@ -357,11 +359,11 @@ void DOSVM_Wait( int read_pipe, HANDLE hObject )
do
{
/* check for messages (waste time before the response check below) */
while
(
PeekMessageA
(
&
msg
,
0
,
0
,
0
,
PM_REMOVE
|
PM_NOYIELD
))
{
while
(
Callout
.
PeekMessageA
(
&
msg
,
0
,
0
,
0
,
PM_REMOVE
|
PM_NOYIELD
))
{
/* got a message */
DOSVM_ProcessMessage
(
lpDosTask
,
&
msg
);
/* we don't need a TranslateMessage here */
DispatchMessageA
(
&
msg
);
Callout
.
DispatchMessageA
(
&
msg
);
got_msg
=
TRUE
;
}
if
(
read_pipe
==
-
1
)
{
...
...
misc/Makefile.in
View file @
62f824f7
...
...
@@ -21,7 +21,6 @@ C_SRCS = \
port.c
\
printdrv.c
\
registry.c
\
spy.c
\
system.c
\
toolhelp.c
\
tweak.c
\
...
...
misc/main.c
View file @
62f824f7
...
...
@@ -727,540 +727,6 @@ BOOL WINAPI Beep( DWORD dwFreq, DWORD dwDur )
/***********************************************************************
* GetTimerResolution (USER.14)
*/
LONG
WINAPI
GetTimerResolution16
(
void
)
{
return
(
1000
);
}
/***********************************************************************
* SystemParametersInfo32A (USER32.540)
*/
BOOL
WINAPI
SystemParametersInfoA
(
UINT
uAction
,
UINT
uParam
,
LPVOID
lpvParam
,
UINT
fuWinIni
)
{
int
timeout
;
switch
(
uAction
)
{
case
SPI_GETBEEP
:
*
(
BOOL
*
)
lpvParam
=
KEYBOARD_GetBeepActive
();
break
;
case
SPI_SETBEEP
:
KEYBOARD_SetBeepActive
(
uParam
);
break
;
case
SPI_GETBORDER
:
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXFRAME
);
break
;
case
SPI_GETDRAGFULLWINDOWS
:
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_SETDRAGFULLWINDOWS
:
break
;
case
SPI_GETFASTTASKSWITCH
:
if
(
GetProfileIntA
(
"windows"
,
"CoolSwitch"
,
1
)
==
1
)
*
(
BOOL
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETGRIDGRANULARITY
:
*
(
INT
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"GridGranularity"
,
1
);
break
;
case
SPI_GETICONTITLEWRAP
:
*
(
BOOL
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"IconTitleWrap"
,
TRUE
);
break
;
case
SPI_GETKEYBOARDDELAY
:
*
(
INT
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardDelay"
,
1
);
break
;
case
SPI_GETKEYBOARDSPEED
:
*
(
DWORD
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardSpeed"
,
30
);
break
;
case
SPI_GETMENUDROPALIGNMENT
:
*
(
BOOL
*
)
lpvParam
=
GetSystemMetrics
(
SM_MENUDROPALIGNMENT
);
/* XXX check this */
break
;
case
SPI_GETSCREENSAVEACTIVE
:
if
(
MONITOR_GetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
)
||
GetProfileIntA
(
"windows"
,
"ScreenSaveActive"
,
1
)
==
1
)
*
(
BOOL
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETSCREENSAVETIMEOUT
:
timeout
=
MONITOR_GetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
);
if
(
!
timeout
)
timeout
=
GetProfileIntA
(
"windows"
,
"ScreenSaveTimeout"
,
300
);
*
(
INT
*
)
lpvParam
=
timeout
*
1000
;
break
;
case
SPI_ICONHORIZONTALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CXICONSPACING, uParam )*/
;
else
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXICONSPACING
);
break
;
case
SPI_ICONVERTICALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CYICONSPACING, uParam )*/
;
else
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CYICONSPACING
);
break
;
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONTA
lpLogFont
=
(
LPLOGFONTA
)
lpvParam
;
/* from now on we always have an alias for MS Sans Serif */
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"IconTitleSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
break
;
}
case
SPI_GETICONMETRICS
:
{
LPICONMETRICSA
lpIcon
=
lpvParam
;
if
(
!
lpIcon
||
lpIcon
->
cbSize
!=
sizeof
(
*
lpIcon
))
return
FALSE
;
SystemParametersInfoA
(
SPI_ICONHORIZONTALSPACING
,
0
,
&
lpIcon
->
iHorzSpacing
,
FALSE
);
SystemParametersInfoA
(
SPI_ICONVERTICALSPACING
,
0
,
&
lpIcon
->
iVertSpacing
,
FALSE
);
SystemParametersInfoA
(
SPI_GETICONTITLEWRAP
,
0
,
&
lpIcon
->
iTitleWrap
,
FALSE
);
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
&
lpIcon
->
lfFont
,
FALSE
);
break
;
}
case
SPI_GETWORKAREA
:
SetRect
(
(
RECT
*
)
lpvParam
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
break
;
case
SPI_GETNONCLIENTMETRICS
:
#define lpnm ((LPNONCLIENTMETRICSA)lpvParam)
if
(
lpnm
->
cbSize
==
sizeof
(
NONCLIENTMETRICSA
)
)
{
LPLOGFONTA
lpLogFont
=
&
(
lpnm
->
lfMenuFont
);
/* clear the struct, so we have 'sane' members */
memset
(
(
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
/* FIXME: initialize geometry entries */
/* FIXME: As these values are presumably in device units,
* we should calculate the defaults based on the screen dpi
*/
/* caption */
lpnm
->
iCaptionWidth
=
((
TWEAK_WineLook
>
WIN31_LOOK
)
?
32
:
20
);
lpnm
->
iCaptionHeight
=
lpnm
->
iCaptionWidth
;
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
/* small caption */
lpnm
->
iSmCaptionWidth
=
((
TWEAK_WineLook
>
WIN31_LOOK
)
?
32
:
17
);
lpnm
->
iSmCaptionHeight
=
lpnm
->
iSmCaptionWidth
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
/* menus, FIXME: names of wine.conf entrys are bogus */
lpnm
->
iMenuWidth
=
GetProfileIntA
(
"Desktop"
,
"MenuWidth"
,
13
);
/* size of the menu buttons*/
lpnm
->
iMenuHeight
=
GetProfileIntA
(
"Desktop"
,
"MenuHeight"
,
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
13
:
27
);
GetProfileStringA
(
"Desktop"
,
"MenuFont"
,
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
"MS Sans Serif"
:
"System"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"MenuFontSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
FW_NORMAL
:
FW_BOLD
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
}
#undef lpnm
break
;
case
SPI_GETANIMATION
:
{
LPANIMATIONINFO
lpAnimInfo
=
(
LPANIMATIONINFO
)
lpvParam
;
/* Tell it "disabled" */
lpAnimInfo
->
cbSize
=
sizeof
(
ANIMATIONINFO
);
uParam
=
sizeof
(
ANIMATIONINFO
);
lpAnimInfo
->
iMinAnimate
=
0
;
/* Minimise and restore animation is disabled (nonzero == enabled) */
break
;
}
case
SPI_SETANIMATION
:
{
LPANIMATIONINFO
lpAnimInfo
=
(
LPANIMATIONINFO
)
lpvParam
;
/* Do nothing */
WARN_
(
system
)(
"SPI_SETANIMATION ignored.
\n
"
);
lpAnimInfo
->
cbSize
=
sizeof
(
ANIMATIONINFO
);
uParam
=
sizeof
(
ANIMATIONINFO
);
break
;
}
case
SPI_GETHIGHCONTRAST
:
{
LPHIGHCONTRASTA
lpHighContrastA
=
(
LPHIGHCONTRASTA
)
lpvParam
;
FIXME_
(
system
)(
"SPI_GETHIGHCONTRAST not fully implemented
\n
"
);
if
(
lpHighContrastA
->
cbSize
==
sizeof
(
HIGHCONTRASTA
)
)
{
/* Indicate that there is no high contrast available */
lpHighContrastA
->
dwFlags
=
0
;
lpHighContrastA
->
lpszDefaultScheme
=
NULL
;
}
else
{
return
FALSE
;
}
break
;
}
default:
return
SystemParametersInfo16
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
}
return
TRUE
;
}
/***********************************************************************
* SystemParametersInfo16 (USER.483)
*/
BOOL16
WINAPI
SystemParametersInfo16
(
UINT16
uAction
,
UINT16
uParam
,
LPVOID
lpvParam
,
UINT16
fuWinIni
)
{
int
timeout
;
char
buffer
[
256
];
switch
(
uAction
)
{
case
SPI_GETBEEP
:
*
(
BOOL
*
)
lpvParam
=
KEYBOARD_GetBeepActive
();
break
;
case
SPI_GETBORDER
:
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics16
(
SM_CXFRAME
);
break
;
case
SPI_GETFASTTASKSWITCH
:
if
(
GetProfileIntA
(
"windows"
,
"CoolSwitch"
,
1
)
==
1
)
*
(
BOOL16
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL16
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETGRIDGRANULARITY
:
*
(
INT16
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"GridGranularity"
,
1
);
break
;
case
SPI_GETICONTITLEWRAP
:
*
(
BOOL16
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"IconTitleWrap"
,
TRUE
);
break
;
case
SPI_GETKEYBOARDDELAY
:
*
(
INT16
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardDelay"
,
1
);
break
;
case
SPI_GETKEYBOARDSPEED
:
*
(
WORD
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardSpeed"
,
30
);
break
;
case
SPI_GETMENUDROPALIGNMENT
:
*
(
BOOL16
*
)
lpvParam
=
GetSystemMetrics16
(
SM_MENUDROPALIGNMENT
);
/* XXX check this */
break
;
case
SPI_GETSCREENSAVEACTIVE
:
if
(
MONITOR_GetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
)
||
GetProfileIntA
(
"windows"
,
"ScreenSaveActive"
,
1
)
==
1
)
*
(
BOOL16
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL16
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETSCREENSAVETIMEOUT
:
timeout
=
MONITOR_GetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
);
if
(
!
timeout
)
timeout
=
GetProfileIntA
(
"windows"
,
"ScreenSaveTimeout"
,
300
);
*
(
INT16
*
)
lpvParam
=
timeout
;
break
;
case
SPI_ICONHORIZONTALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CXICONSPACING, uParam )*/
;
else
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics16
(
SM_CXICONSPACING
);
break
;
case
SPI_ICONVERTICALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CYICONSPACING, uParam )*/
;
else
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics16
(
SM_CYICONSPACING
);
break
;
case
SPI_SETBEEP
:
KEYBOARD_SetBeepActive
(
uParam
);
break
;
case
SPI_SETSCREENSAVEACTIVE
:
MONITOR_SetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
,
uParam
);
break
;
case
SPI_SETSCREENSAVETIMEOUT
:
MONITOR_SetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
,
uParam
);
break
;
case
SPI_SETDESKWALLPAPER
:
return
(
SetDeskWallPaper
((
LPSTR
)
lpvParam
));
break
;
case
SPI_SETDESKPATTERN
:
if
((
INT16
)
uParam
==
-
1
)
{
GetProfileStringA
(
"Desktop"
,
"Pattern"
,
"170 85 170 85 170 85 170 85"
,
buffer
,
sizeof
(
buffer
)
);
return
(
DESKTOP_SetPattern
((
LPSTR
)
buffer
));
}
else
return
(
DESKTOP_SetPattern
((
LPSTR
)
lpvParam
));
break
;
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONT16
lpLogFont
=
(
LPLOGFONT16
)
lpvParam
;
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"IconTitleSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
break
;
}
case
SPI_GETNONCLIENTMETRICS
:
#define lpnm ((LPNONCLIENTMETRICS16)lpvParam)
if
(
lpnm
->
cbSize
==
sizeof
(
NONCLIENTMETRICS16
)
)
{
/* clear the struct, so we have 'sane' members */
memset
(
(
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
/* FIXME: initialize geometry entries */
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMenuFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
}
else
/* winfile 95 sets sbSize to 340 */
SystemParametersInfoA
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
#undef lpnm
break
;
case
SPI_LANGDRIVER
:
case
SPI_SETBORDER
:
case
SPI_SETDOUBLECLKHEIGHT
:
case
SPI_SETDOUBLECLICKTIME
:
case
SPI_SETDOUBLECLKWIDTH
:
case
SPI_SETFASTTASKSWITCH
:
case
SPI_SETKEYBOARDDELAY
:
case
SPI_SETKEYBOARDSPEED
:
WARN_
(
system
)(
"Option %d ignored.
\n
"
,
uAction
);
break
;
case
SPI_GETWORKAREA
:
SetRect16
(
(
RECT16
*
)
lpvParam
,
0
,
0
,
GetSystemMetrics16
(
SM_CXSCREEN
),
GetSystemMetrics16
(
SM_CYSCREEN
)
);
break
;
default:
FIXME_
(
system
)(
"Unknown option %d.
\n
"
,
uAction
);
SetLastError
(
ERROR_INVALID_SPI_VALUE
);
return
0
;
}
return
1
;
}
/***********************************************************************
* SystemParametersInfo32W (USER32.541)
*/
BOOL
WINAPI
SystemParametersInfoW
(
UINT
uAction
,
UINT
uParam
,
LPVOID
lpvParam
,
UINT
fuWinIni
)
{
char
buffer
[
256
];
switch
(
uAction
)
{
case
SPI_SETDESKWALLPAPER
:
if
(
lpvParam
)
{
lstrcpynWtoA
(
buffer
,(
LPWSTR
)
lpvParam
,
sizeof
(
buffer
));
return
SetDeskWallPaper
(
buffer
);
}
return
SetDeskWallPaper
(
NULL
);
case
SPI_SETDESKPATTERN
:
if
((
INT
)
uParam
==
-
1
)
{
GetProfileStringA
(
"Desktop"
,
"Pattern"
,
"170 85 170 85 170 85 170 85"
,
buffer
,
sizeof
(
buffer
)
);
return
(
DESKTOP_SetPattern
((
LPSTR
)
buffer
));
}
if
(
lpvParam
)
{
lstrcpynWtoA
(
buffer
,(
LPWSTR
)
lpvParam
,
sizeof
(
buffer
));
return
DESKTOP_SetPattern
(
buffer
);
}
return
DESKTOP_SetPattern
(
NULL
);
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONTW
lpLogFont
=
(
LPLOGFONTW
)
lpvParam
;
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
buffer
,
sizeof
(
buffer
)
);
lstrcpynAtoW
(
lpLogFont
->
lfFaceName
,
buffer
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
17
;
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
lpLogFont
->
lfStrikeOut
=
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
}
break
;
case
SPI_GETICONMETRICS
:
{
LPICONMETRICSW
lpIcon
=
lpvParam
;
if
(
!
lpIcon
||
lpIcon
->
cbSize
!=
sizeof
(
*
lpIcon
))
return
FALSE
;
SystemParametersInfoW
(
SPI_ICONHORIZONTALSPACING
,
0
,
&
lpIcon
->
iHorzSpacing
,
FALSE
);
SystemParametersInfoW
(
SPI_ICONVERTICALSPACING
,
0
,
&
lpIcon
->
iVertSpacing
,
FALSE
);
SystemParametersInfoW
(
SPI_GETICONTITLEWRAP
,
0
,
&
lpIcon
->
iTitleWrap
,
FALSE
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,
&
lpIcon
->
lfFont
,
FALSE
);
break
;
}
case
SPI_GETNONCLIENTMETRICS
:
{
/* FIXME: implement correctly */
LPNONCLIENTMETRICSW
lpnm
=
(
LPNONCLIENTMETRICSW
)
lpvParam
;
/* clear the struct, so we have 'sane' members */
memset
((
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfMenuFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
break
;
}
case
SPI_GETHIGHCONTRAST
:
{
LPHIGHCONTRASTW
lpHighContrastW
=
(
LPHIGHCONTRASTW
)
lpvParam
;
FIXME_
(
system
)(
"SPI_GETHIGHCONTRAST not fully implemented
\n
"
);
if
(
lpHighContrastW
->
cbSize
==
sizeof
(
HIGHCONTRASTW
)
)
{
/* Indicate that there is no high contrast available */
lpHighContrastW
->
dwFlags
=
0
;
lpHighContrastW
->
lpszDefaultScheme
=
NULL
;
}
else
{
return
FALSE
;
}
break
;
}
default:
return
SystemParametersInfoA
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
}
return
TRUE
;
}
/***********************************************************************
* FileCDR (KERNEL.130)
*/
FARPROC16
WINAPI
FileCDR16
(
FARPROC16
x
)
...
...
@@ -1268,3 +734,16 @@ FARPROC16 WINAPI FileCDR16(FARPROC16 x)
FIXME_
(
file
)(
"(0x%8x): stub
\n
"
,
(
int
)
x
);
return
(
FARPROC16
)
TRUE
;
}
/***********************************************************************
* GetTickCount (USER.13) (KERNEL32.299)
*
* Returns the number of milliseconds, modulo 2^32, since the start
* of the current session.
*/
DWORD
WINAPI
GetTickCount
(
void
)
{
struct
timeval
t
;
gettimeofday
(
&
t
,
NULL
);
return
((
t
.
tv_sec
*
1000
)
+
(
t
.
tv_usec
/
1000
))
-
MSG_WineStartTicks
;
}
objects/Makefile.in
View file @
62f824f7
...
...
@@ -10,7 +10,6 @@ C_SRCS = \
brush.c
\
clipping.c
\
color.c
\
cursoricon.c
\
dc.c
\
dcvalues.c
\
dib.c
\
...
...
objects/clipping.c
View file @
62f824f7
...
...
@@ -440,7 +440,10 @@ BOOL16 WINAPI RectVisible16( HDC16 hdc, const RECT16* rect )
/* copy rectangle to avoid overwriting by LPtoDP */
tmpRect
=
*
rect
;
LPtoDP16
(
hdc
,
(
LPPOINT16
)
&
tmpRect
,
2
);
OffsetRect16
(
&
tmpRect
,
dc
->
w
.
DCOrgX
,
dc
->
w
.
DCOrgY
);
tmpRect
.
left
+=
dc
->
w
.
DCOrgX
;
tmpRect
.
right
+=
dc
->
w
.
DCOrgX
;
tmpRect
.
top
+=
dc
->
w
.
DCOrgY
;
tmpRect
.
bottom
+=
dc
->
w
.
DCOrgY
;
return
RectInRegion16
(
dc
->
w
.
hGCClipRgn
,
&
tmpRect
);
}
...
...
@@ -465,7 +468,10 @@ INT16 WINAPI GetClipBox16( HDC16 hdc, LPRECT16 rect )
DC
*
dc
=
(
DC
*
)
GDI_GetObjPtr
(
hdc
,
DC_MAGIC
);
if
(
!
dc
)
return
ERROR
;
ret
=
GetRgnBox16
(
dc
->
w
.
hGCClipRgn
,
rect
);
OffsetRect16
(
rect
,
-
dc
->
w
.
DCOrgX
,
-
dc
->
w
.
DCOrgY
);
rect
->
left
-=
dc
->
w
.
DCOrgX
;
rect
->
right
-=
dc
->
w
.
DCOrgX
;
rect
->
top
-=
dc
->
w
.
DCOrgY
;
rect
->
bottom
-=
dc
->
w
.
DCOrgY
;
DPtoLP16
(
hdc
,
(
LPPOINT16
)
rect
,
2
);
TRACE
(
"%d,%d-%d,%d
\n
"
,
rect
->
left
,
rect
->
top
,
rect
->
right
,
rect
->
bottom
);
return
ret
;
...
...
@@ -481,7 +487,10 @@ INT WINAPI GetClipBox( HDC hdc, LPRECT rect )
DC
*
dc
=
(
DC
*
)
GDI_GetObjPtr
(
hdc
,
DC_MAGIC
);
if
(
!
dc
)
return
ERROR
;
ret
=
GetRgnBox
(
dc
->
w
.
hGCClipRgn
,
rect
);
OffsetRect
(
rect
,
-
dc
->
w
.
DCOrgX
,
-
dc
->
w
.
DCOrgY
);
rect
->
left
-=
dc
->
w
.
DCOrgX
;
rect
->
right
-=
dc
->
w
.
DCOrgX
;
rect
->
top
-=
dc
->
w
.
DCOrgY
;
rect
->
bottom
-=
dc
->
w
.
DCOrgY
;
DPtoLP
(
hdc
,
(
LPPOINT
)
rect
,
2
);
return
ret
;
}
...
...
objects/region.c
View file @
62f824f7
...
...
@@ -1037,17 +1037,26 @@ BOOL WINAPI EqualRgn( HRGN hrgn1, HRGN hrgn2 )
{
int
i
;
if
(
obj1
->
rgn
->
numRects
!=
obj2
->
rgn
->
numRects
)
goto
done
;
if
(
obj1
->
rgn
->
numRects
==
0
)
{
ret
=
TRUE
;
if
(
obj1
->
rgn
->
numRects
!=
obj2
->
rgn
->
numRects
)
ret
=
FALSE
;
else
if
(
obj1
->
rgn
->
numRects
==
0
)
ret
=
TRUE
;
else
if
(
!
EqualRect
(
&
obj1
->
rgn
->
extents
,
&
obj2
->
rgn
->
extents
)
)
ret
=
FALSE
;
else
for
(
i
=
0
;
i
<
obj1
->
rgn
->
numRects
;
i
++
)
{
if
(
!
EqualRect
(
obj1
->
rgn
->
rects
+
i
,
obj2
->
rgn
->
rects
+
i
))
{
ret
=
FALSE
;
break
;
goto
done
;
}
if
(
obj1
->
rgn
->
extents
.
left
!=
obj2
->
rgn
->
extents
.
left
)
goto
done
;
if
(
obj1
->
rgn
->
extents
.
right
!=
obj2
->
rgn
->
extents
.
right
)
goto
done
;
if
(
obj1
->
rgn
->
extents
.
top
!=
obj2
->
rgn
->
extents
.
top
)
goto
done
;
if
(
obj1
->
rgn
->
extents
.
bottom
!=
obj2
->
rgn
->
extents
.
bottom
)
goto
done
;
for
(
i
=
0
;
i
<
obj1
->
rgn
->
numRects
;
i
++
)
{
if
(
obj1
->
rgn
->
rects
[
i
].
left
!=
obj2
->
rgn
->
rects
[
i
].
left
)
goto
done
;
if
(
obj1
->
rgn
->
rects
[
i
].
right
!=
obj2
->
rgn
->
rects
[
i
].
right
)
goto
done
;
if
(
obj1
->
rgn
->
rects
[
i
].
top
!=
obj2
->
rgn
->
rects
[
i
].
top
)
goto
done
;
if
(
obj1
->
rgn
->
rects
[
i
].
bottom
!=
obj2
->
rgn
->
rects
[
i
].
bottom
)
goto
done
;
}
ret
=
TRUE
;
done:
GDI_HEAP_UNLOCK
(
hrgn2
);
}
GDI_HEAP_UNLOCK
(
hrgn1
);
...
...
@@ -1067,7 +1076,7 @@ static void REGION_UnionRectWithRegion(const RECT *rect, WINEREGION *rgn)
region
.
numRects
=
1
;
region
.
size
=
1
;
region
.
type
=
SIMPLEREGION
;
CopyRect
(
&
(
region
.
extents
),
rect
)
;
region
.
extents
=
*
rect
;
REGION_UnionRegion
(
rgn
,
rgn
,
&
region
);
return
;
}
...
...
@@ -2964,7 +2973,10 @@ static BOOL REGION_CropAndOffsetRegion(const POINT* off, const RECT *rect, WINER
xrect
[
i
].
top
=
rgnSrc
->
rects
[
i
].
top
+
off
->
y
;
xrect
[
i
].
bottom
=
rgnSrc
->
rects
[
i
].
bottom
+
off
->
y
;
}
OffsetRect
(
&
rgnDst
->
extents
,
off
->
x
,
off
->
y
);
rgnDst
->
extents
.
left
+=
off
->
x
;
rgnDst
->
extents
.
right
+=
off
->
x
;
rgnDst
->
extents
.
top
+=
off
->
y
;
rgnDst
->
extents
.
bottom
+=
off
->
y
;
}
else
memcpy
(
xrect
,
rgnSrc
->
rects
,
rgnDst
->
numRects
*
sizeof
(
RECT
));
...
...
@@ -2972,7 +2984,9 @@ static BOOL REGION_CropAndOffsetRegion(const POINT* off, const RECT *rect, WINER
}
else
return
FALSE
;
}
else
if
(
IsRectEmpty
(
rect
)
||
!
EXTENTCHECK
(
rect
,
&
rgnSrc
->
extents
)
)
else
if
((
rect
->
left
>=
rect
->
right
)
||
(
rect
->
top
>=
rect
->
bottom
)
||
!
EXTENTCHECK
(
rect
,
&
rgnSrc
->
extents
))
{
empty:
if
(
!
rgnDst
->
rects
)
...
...
objects/text.c
View file @
62f824f7
...
...
@@ -453,7 +453,6 @@ static BOOL TEXT_GrayString(HDC hdc, HBRUSH hb,
HDC
memdc
=
CreateCompatibleDC
(
hdc
);
int
slen
=
len
;
BOOL
retval
=
TRUE
;
RECT
r
;
COLORREF
fg
,
bg
;
if
(
!
hdc
)
return
FALSE
;
...
...
@@ -481,13 +480,11 @@ static BOOL TEXT_GrayString(HDC hdc, HBRUSH hb,
if
(
cy
==
0
)
cy
=
s
.
cy
;
}
r
.
left
=
r
.
top
=
0
;
r
.
right
=
cx
;
r
.
bottom
=
cy
;
hbm
=
CreateBitmap
(
cx
,
cy
,
1
,
1
,
NULL
);
hbmsave
=
(
HBITMAP
)
SelectObject
(
memdc
,
hbm
);
FillRect
(
memdc
,
&
r
,
(
HBRUSH
)
GetStockObject
(
BLACK_BRUSH
));
hbsave
=
SelectObject
(
memdc
,
GetStockObject
(
BLACK_BRUSH
)
);
PatBlt
(
memdc
,
0
,
0
,
cx
,
cy
,
PATCOPY
);
SelectObject
(
memdc
,
hbsave
);
SetTextColor
(
memdc
,
RGB
(
255
,
255
,
255
));
SetBkColor
(
memdc
,
RGB
(
0
,
0
,
0
));
hfsave
=
(
HFONT
)
SelectObject
(
memdc
,
GetCurrentObject
(
hdc
,
OBJ_FONT
));
...
...
@@ -630,7 +627,10 @@ LONG TEXT_TabbedTextOut( HDC hdc, INT x, INT y, LPCSTR lpstr,
if
(
fDisplayText
)
{
RECT
r
;
SetRect
(
&
r
,
x
,
y
,
tabPos
,
y
+
HIWORD
(
extent
)
);
r
.
left
=
x
;
r
.
top
=
y
;
r
.
right
=
tabPos
;
r
.
bottom
=
y
+
HIWORD
(
extent
);
ExtTextOutA
(
hdc
,
x
,
y
,
GetBkMode
(
hdc
)
==
OPAQUE
?
ETO_OPAQUE
:
0
,
&
r
,
lpstr
,
i
,
NULL
);
...
...
windows/Makefile.in
View file @
62f824f7
...
...
@@ -9,6 +9,7 @@ C_SRCS = \
caret.c
\
class.c
\
clipboard.c
\
cursoricon.c
\
dce.c
\
defdlg.c
\
defwnd.c
\
...
...
@@ -29,8 +30,10 @@ C_SRCS = \
queue.c
\
rect.c
\
scroll.c
\
spy.c
\
syscolor.c
\
sysmetrics.c
\
sysparams.c
\
timer.c
\
user.c
\
win.c
\
...
...
object
s/cursoricon.c
→
window
s/cursoricon.c
View file @
62f824f7
File moved
windows/message.c
View file @
62f824f7
...
...
@@ -2493,23 +2493,6 @@ WORD WINAPI RegisterWindowMessageW( LPCWSTR str )
/***********************************************************************
* GetTickCount (USER.13) (KERNEL32.299) System Time
* Returns the number of milliseconds, modulo 2^32, since the start
* of the current session.
*
* CONFORMANCE
*
* ECMA-234, Win32
*/
DWORD
WINAPI
GetTickCount
(
void
)
{
struct
timeval
t
;
gettimeofday
(
&
t
,
NULL
);
return
((
t
.
tv_sec
*
1000
)
+
(
t
.
tv_usec
/
1000
))
-
MSG_WineStartTicks
;
}
/***********************************************************************
* GetCurrentTime16 (USER.15)
*
* (effectively identical to GetTickCount)
...
...
misc
/spy.c
→
windows
/spy.c
View file @
62f824f7
File moved
windows/sysparams.c
0 → 100644
View file @
62f824f7
/*
* System parameters functions
*
* Copyright 1994 Alexandre Julliard
*/
#include "config.h"
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "wine/winuser16.h"
#include "winerror.h"
#include "keyboard.h"
#include "monitor.h"
#include "tweak.h"
#include "desktop.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL
(
system
);
/***********************************************************************
* GetTimerResolution (USER.14)
*/
LONG
WINAPI
GetTimerResolution16
(
void
)
{
return
(
1000
);
}
/***********************************************************************
* SystemParametersInfo32A (USER32.540)
*/
BOOL
WINAPI
SystemParametersInfoA
(
UINT
uAction
,
UINT
uParam
,
LPVOID
lpvParam
,
UINT
fuWinIni
)
{
int
timeout
;
switch
(
uAction
)
{
case
SPI_GETBEEP
:
*
(
BOOL
*
)
lpvParam
=
KEYBOARD_GetBeepActive
();
break
;
case
SPI_SETBEEP
:
KEYBOARD_SetBeepActive
(
uParam
);
break
;
case
SPI_GETBORDER
:
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXFRAME
);
break
;
case
SPI_GETDRAGFULLWINDOWS
:
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_SETDRAGFULLWINDOWS
:
break
;
case
SPI_GETFASTTASKSWITCH
:
if
(
GetProfileIntA
(
"windows"
,
"CoolSwitch"
,
1
)
==
1
)
*
(
BOOL
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETGRIDGRANULARITY
:
*
(
INT
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"GridGranularity"
,
1
);
break
;
case
SPI_GETICONTITLEWRAP
:
*
(
BOOL
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"IconTitleWrap"
,
TRUE
);
break
;
case
SPI_GETKEYBOARDDELAY
:
*
(
INT
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardDelay"
,
1
);
break
;
case
SPI_GETKEYBOARDSPEED
:
*
(
DWORD
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardSpeed"
,
30
);
break
;
case
SPI_GETMENUDROPALIGNMENT
:
*
(
BOOL
*
)
lpvParam
=
GetSystemMetrics
(
SM_MENUDROPALIGNMENT
);
/* XXX check this */
break
;
case
SPI_GETSCREENSAVEACTIVE
:
if
(
MONITOR_GetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
)
||
GetProfileIntA
(
"windows"
,
"ScreenSaveActive"
,
1
)
==
1
)
*
(
BOOL
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETSCREENSAVETIMEOUT
:
timeout
=
MONITOR_GetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
);
if
(
!
timeout
)
timeout
=
GetProfileIntA
(
"windows"
,
"ScreenSaveTimeout"
,
300
);
*
(
INT
*
)
lpvParam
=
timeout
*
1000
;
break
;
case
SPI_ICONHORIZONTALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CXICONSPACING, uParam )*/
;
else
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXICONSPACING
);
break
;
case
SPI_ICONVERTICALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CYICONSPACING, uParam )*/
;
else
*
(
INT
*
)
lpvParam
=
GetSystemMetrics
(
SM_CYICONSPACING
);
break
;
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONTA
lpLogFont
=
(
LPLOGFONTA
)
lpvParam
;
/* from now on we always have an alias for MS Sans Serif */
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"IconTitleSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
break
;
}
case
SPI_GETICONMETRICS
:
{
LPICONMETRICSA
lpIcon
=
lpvParam
;
if
(
!
lpIcon
||
lpIcon
->
cbSize
!=
sizeof
(
*
lpIcon
))
return
FALSE
;
SystemParametersInfoA
(
SPI_ICONHORIZONTALSPACING
,
0
,
&
lpIcon
->
iHorzSpacing
,
FALSE
);
SystemParametersInfoA
(
SPI_ICONVERTICALSPACING
,
0
,
&
lpIcon
->
iVertSpacing
,
FALSE
);
SystemParametersInfoA
(
SPI_GETICONTITLEWRAP
,
0
,
&
lpIcon
->
iTitleWrap
,
FALSE
);
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
&
lpIcon
->
lfFont
,
FALSE
);
break
;
}
case
SPI_GETWORKAREA
:
SetRect
(
(
RECT
*
)
lpvParam
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
break
;
case
SPI_GETNONCLIENTMETRICS
:
#define lpnm ((LPNONCLIENTMETRICSA)lpvParam)
if
(
lpnm
->
cbSize
==
sizeof
(
NONCLIENTMETRICSA
)
)
{
LPLOGFONTA
lpLogFont
=
&
(
lpnm
->
lfMenuFont
);
/* clear the struct, so we have 'sane' members */
memset
(
(
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
/* FIXME: initialize geometry entries */
/* FIXME: As these values are presumably in device units,
* we should calculate the defaults based on the screen dpi
*/
/* caption */
lpnm
->
iCaptionWidth
=
((
TWEAK_WineLook
>
WIN31_LOOK
)
?
32
:
20
);
lpnm
->
iCaptionHeight
=
lpnm
->
iCaptionWidth
;
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
/* small caption */
lpnm
->
iSmCaptionWidth
=
((
TWEAK_WineLook
>
WIN31_LOOK
)
?
32
:
17
);
lpnm
->
iSmCaptionHeight
=
lpnm
->
iSmCaptionWidth
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
/* menus, FIXME: names of wine.conf entrys are bogus */
lpnm
->
iMenuWidth
=
GetProfileIntA
(
"Desktop"
,
"MenuWidth"
,
13
);
/* size of the menu buttons*/
lpnm
->
iMenuHeight
=
GetProfileIntA
(
"Desktop"
,
"MenuHeight"
,
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
13
:
27
);
GetProfileStringA
(
"Desktop"
,
"MenuFont"
,
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
"MS Sans Serif"
:
"System"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"MenuFontSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
(
TWEAK_WineLook
>
WIN31_LOOK
)
?
FW_NORMAL
:
FW_BOLD
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfoA
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
}
#undef lpnm
break
;
case
SPI_GETANIMATION
:
{
LPANIMATIONINFO
lpAnimInfo
=
(
LPANIMATIONINFO
)
lpvParam
;
/* Tell it "disabled" */
lpAnimInfo
->
cbSize
=
sizeof
(
ANIMATIONINFO
);
uParam
=
sizeof
(
ANIMATIONINFO
);
lpAnimInfo
->
iMinAnimate
=
0
;
/* Minimise and restore animation is disabled (nonzero == enabled) */
break
;
}
case
SPI_SETANIMATION
:
{
LPANIMATIONINFO
lpAnimInfo
=
(
LPANIMATIONINFO
)
lpvParam
;
/* Do nothing */
WARN
(
"SPI_SETANIMATION ignored.
\n
"
);
lpAnimInfo
->
cbSize
=
sizeof
(
ANIMATIONINFO
);
uParam
=
sizeof
(
ANIMATIONINFO
);
break
;
}
case
SPI_GETHIGHCONTRAST
:
{
LPHIGHCONTRASTA
lpHighContrastA
=
(
LPHIGHCONTRASTA
)
lpvParam
;
FIXME
(
"SPI_GETHIGHCONTRAST not fully implemented
\n
"
);
if
(
lpHighContrastA
->
cbSize
==
sizeof
(
HIGHCONTRASTA
)
)
{
/* Indicate that there is no high contrast available */
lpHighContrastA
->
dwFlags
=
0
;
lpHighContrastA
->
lpszDefaultScheme
=
NULL
;
}
else
{
return
FALSE
;
}
break
;
}
default:
return
SystemParametersInfo16
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
}
return
TRUE
;
}
/***********************************************************************
* SystemParametersInfo16 (USER.483)
*/
BOOL16
WINAPI
SystemParametersInfo16
(
UINT16
uAction
,
UINT16
uParam
,
LPVOID
lpvParam
,
UINT16
fuWinIni
)
{
int
timeout
;
char
buffer
[
256
];
switch
(
uAction
)
{
case
SPI_GETBEEP
:
*
(
BOOL
*
)
lpvParam
=
KEYBOARD_GetBeepActive
();
break
;
case
SPI_GETBORDER
:
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXFRAME
);
break
;
case
SPI_GETFASTTASKSWITCH
:
if
(
GetProfileIntA
(
"windows"
,
"CoolSwitch"
,
1
)
==
1
)
*
(
BOOL16
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL16
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETGRIDGRANULARITY
:
*
(
INT16
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"GridGranularity"
,
1
);
break
;
case
SPI_GETICONTITLEWRAP
:
*
(
BOOL16
*
)
lpvParam
=
GetProfileIntA
(
"desktop"
,
"IconTitleWrap"
,
TRUE
);
break
;
case
SPI_GETKEYBOARDDELAY
:
*
(
INT16
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardDelay"
,
1
);
break
;
case
SPI_GETKEYBOARDSPEED
:
*
(
WORD
*
)
lpvParam
=
GetProfileIntA
(
"keyboard"
,
"KeyboardSpeed"
,
30
);
break
;
case
SPI_GETMENUDROPALIGNMENT
:
*
(
BOOL16
*
)
lpvParam
=
GetSystemMetrics
(
SM_MENUDROPALIGNMENT
);
/* XXX check this */
break
;
case
SPI_GETSCREENSAVEACTIVE
:
if
(
MONITOR_GetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
)
||
GetProfileIntA
(
"windows"
,
"ScreenSaveActive"
,
1
)
==
1
)
*
(
BOOL16
*
)
lpvParam
=
TRUE
;
else
*
(
BOOL16
*
)
lpvParam
=
FALSE
;
break
;
case
SPI_GETSCREENSAVETIMEOUT
:
timeout
=
MONITOR_GetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
);
if
(
!
timeout
)
timeout
=
GetProfileIntA
(
"windows"
,
"ScreenSaveTimeout"
,
300
);
*
(
INT16
*
)
lpvParam
=
timeout
;
break
;
case
SPI_ICONHORIZONTALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CXICONSPACING, uParam )*/
;
else
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics
(
SM_CXICONSPACING
);
break
;
case
SPI_ICONVERTICALSPACING
:
/* FIXME Get/SetProfileInt */
if
(
lpvParam
==
NULL
)
/*SetSystemMetrics( SM_CYICONSPACING, uParam )*/
;
else
*
(
INT16
*
)
lpvParam
=
GetSystemMetrics
(
SM_CYICONSPACING
);
break
;
case
SPI_SETBEEP
:
KEYBOARD_SetBeepActive
(
uParam
);
break
;
case
SPI_SETSCREENSAVEACTIVE
:
MONITOR_SetScreenSaveActive
(
&
MONITOR_PrimaryMonitor
,
uParam
);
break
;
case
SPI_SETSCREENSAVETIMEOUT
:
MONITOR_SetScreenSaveTimeout
(
&
MONITOR_PrimaryMonitor
,
uParam
);
break
;
case
SPI_SETDESKWALLPAPER
:
return
(
SetDeskWallPaper
((
LPSTR
)
lpvParam
));
break
;
case
SPI_SETDESKPATTERN
:
if
((
INT16
)
uParam
==
-
1
)
{
GetProfileStringA
(
"Desktop"
,
"Pattern"
,
"170 85 170 85 170 85 170 85"
,
buffer
,
sizeof
(
buffer
)
);
return
(
DESKTOP_SetPattern
((
LPSTR
)
buffer
));
}
else
return
(
DESKTOP_SetPattern
((
LPSTR
)
lpvParam
));
break
;
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONT16
lpLogFont
=
(
LPLOGFONT16
)
lpvParam
;
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
lpLogFont
->
lfFaceName
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
-
GetProfileIntA
(
"Desktop"
,
"IconTitleSize"
,
13
);
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
FALSE
;
lpLogFont
->
lfStrikeOut
=
FALSE
;
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
break
;
}
case
SPI_GETNONCLIENTMETRICS
:
#define lpnm ((LPNONCLIENTMETRICS16)lpvParam)
if
(
lpnm
->
cbSize
==
sizeof
(
NONCLIENTMETRICS16
)
)
{
/* clear the struct, so we have 'sane' members */
memset
(
(
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
/* FIXME: initialize geometry entries */
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMenuFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfo16
(
SPI_GETICONTITLELOGFONT
,
0
,
(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
}
else
/* winfile 95 sets sbSize to 340 */
SystemParametersInfoA
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
#undef lpnm
break
;
case
SPI_LANGDRIVER
:
case
SPI_SETBORDER
:
case
SPI_SETDOUBLECLKHEIGHT
:
case
SPI_SETDOUBLECLICKTIME
:
case
SPI_SETDOUBLECLKWIDTH
:
case
SPI_SETFASTTASKSWITCH
:
case
SPI_SETKEYBOARDDELAY
:
case
SPI_SETKEYBOARDSPEED
:
WARN
(
"Option %d ignored.
\n
"
,
uAction
);
break
;
case
SPI_GETWORKAREA
:
SetRect16
(
(
RECT16
*
)
lpvParam
,
0
,
0
,
GetSystemMetrics
(
SM_CXSCREEN
),
GetSystemMetrics
(
SM_CYSCREEN
)
);
break
;
default:
FIXME
(
"Unknown option %d.
\n
"
,
uAction
);
SetLastError
(
ERROR_INVALID_SPI_VALUE
);
return
0
;
}
return
1
;
}
/***********************************************************************
* SystemParametersInfo32W (USER32.541)
*/
BOOL
WINAPI
SystemParametersInfoW
(
UINT
uAction
,
UINT
uParam
,
LPVOID
lpvParam
,
UINT
fuWinIni
)
{
char
buffer
[
256
];
switch
(
uAction
)
{
case
SPI_SETDESKWALLPAPER
:
if
(
lpvParam
)
{
lstrcpynWtoA
(
buffer
,(
LPWSTR
)
lpvParam
,
sizeof
(
buffer
));
return
SetDeskWallPaper
(
buffer
);
}
return
SetDeskWallPaper
(
NULL
);
case
SPI_SETDESKPATTERN
:
if
((
INT
)
uParam
==
-
1
)
{
GetProfileStringA
(
"Desktop"
,
"Pattern"
,
"170 85 170 85 170 85 170 85"
,
buffer
,
sizeof
(
buffer
)
);
return
(
DESKTOP_SetPattern
((
LPSTR
)
buffer
));
}
if
(
lpvParam
)
{
lstrcpynWtoA
(
buffer
,(
LPWSTR
)
lpvParam
,
sizeof
(
buffer
));
return
DESKTOP_SetPattern
(
buffer
);
}
return
DESKTOP_SetPattern
(
NULL
);
case
SPI_GETICONTITLELOGFONT
:
{
LPLOGFONTW
lpLogFont
=
(
LPLOGFONTW
)
lpvParam
;
GetProfileStringA
(
"Desktop"
,
"IconTitleFaceName"
,
"MS Sans Serif"
,
buffer
,
sizeof
(
buffer
)
);
lstrcpynAtoW
(
lpLogFont
->
lfFaceName
,
buffer
,
LF_FACESIZE
);
lpLogFont
->
lfHeight
=
17
;
lpLogFont
->
lfWidth
=
0
;
lpLogFont
->
lfEscapement
=
lpLogFont
->
lfOrientation
=
0
;
lpLogFont
->
lfWeight
=
FW_NORMAL
;
lpLogFont
->
lfItalic
=
lpLogFont
->
lfStrikeOut
=
lpLogFont
->
lfUnderline
=
FALSE
;
lpLogFont
->
lfCharSet
=
ANSI_CHARSET
;
lpLogFont
->
lfOutPrecision
=
OUT_DEFAULT_PRECIS
;
lpLogFont
->
lfClipPrecision
=
CLIP_DEFAULT_PRECIS
;
lpLogFont
->
lfPitchAndFamily
=
DEFAULT_PITCH
|
FF_SWISS
;
}
break
;
case
SPI_GETICONMETRICS
:
{
LPICONMETRICSW
lpIcon
=
lpvParam
;
if
(
!
lpIcon
||
lpIcon
->
cbSize
!=
sizeof
(
*
lpIcon
))
return
FALSE
;
SystemParametersInfoW
(
SPI_ICONHORIZONTALSPACING
,
0
,
&
lpIcon
->
iHorzSpacing
,
FALSE
);
SystemParametersInfoW
(
SPI_ICONVERTICALSPACING
,
0
,
&
lpIcon
->
iVertSpacing
,
FALSE
);
SystemParametersInfoW
(
SPI_GETICONTITLEWRAP
,
0
,
&
lpIcon
->
iTitleWrap
,
FALSE
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,
&
lpIcon
->
lfFont
,
FALSE
);
break
;
}
case
SPI_GETNONCLIENTMETRICS
:
{
/* FIXME: implement correctly */
LPNONCLIENTMETRICSW
lpnm
=
(
LPNONCLIENTMETRICSW
)
lpvParam
;
/* clear the struct, so we have 'sane' members */
memset
((
char
*
)
lpvParam
+
sizeof
(
lpnm
->
cbSize
),
0
,
lpnm
->
cbSize
-
sizeof
(
lpnm
->
cbSize
)
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfCaptionFont
),
0
);
lpnm
->
lfCaptionFont
.
lfWeight
=
FW_BOLD
;
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfSmCaptionFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfMenuFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfStatusFont
),
0
);
SystemParametersInfoW
(
SPI_GETICONTITLELOGFONT
,
0
,(
LPVOID
)
&
(
lpnm
->
lfMessageFont
),
0
);
break
;
}
case
SPI_GETHIGHCONTRAST
:
{
LPHIGHCONTRASTW
lpHighContrastW
=
(
LPHIGHCONTRASTW
)
lpvParam
;
FIXME
(
"SPI_GETHIGHCONTRAST not fully implemented
\n
"
);
if
(
lpHighContrastW
->
cbSize
==
sizeof
(
HIGHCONTRASTW
)
)
{
/* Indicate that there is no high contrast available */
lpHighContrastW
->
dwFlags
=
0
;
lpHighContrastW
->
lpszDefaultScheme
=
NULL
;
}
else
{
return
FALSE
;
}
break
;
}
default:
return
SystemParametersInfoA
(
uAction
,
uParam
,
lpvParam
,
fuWinIni
);
}
return
TRUE
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment