1 /*
2 * PROJECT: ReactOS Magnify
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Magnification of parts of the screen.
5 * COPYRIGHT: Copyright 2007-2019 Marc Piulachs <marc.piulachs@codexchange.net>
6 * Copyright 2015-2019 David Quintana <gigaherz@gmail.com>
7 */
8
9 #include "magnifier.h"
10
11 #include <tchar.h>
12 #include <winreg.h>
13
14 UINT uiZoom = 3;
15
16 BOOL bShowWarning = TRUE;
17
18 BOOL bFollowMouse = TRUE;
19 BOOL bFollowFocus = TRUE;
20 BOOL bFollowCaret = TRUE;
21
22 BOOL bInvertColors = FALSE;
23 BOOL bStartMinimized = FALSE;
24 BOOL bShowMagnifier = TRUE;
25
26 struct _AppBarConfig_t AppBarConfig =
27 {
28 sizeof(struct _AppBarConfig_t),
29 -2 /* ABE_TOP */,
30 0, 1, /* unknown */
31 { 101,101,101,101 }, /* edge sizes */
32 { 20, 20, 600, 200 }, /* floating window rect */
33 };
34
LoadSettings(void)35 void LoadSettings(void)
36 {
37 HKEY hkey;
38 LONG value;
39 ULONG len;
40 struct _AppBarConfig_t config_temp;
41
42 if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, KEY_READ, &hkey) != ERROR_SUCCESS)
43 return;
44
45 len = sizeof(AppBarConfig);
46 if (RegQueryValueEx(hkey, _T("AppBar"), 0, 0, (BYTE *)&config_temp, &len) == ERROR_SUCCESS)
47 {
48 if(config_temp.cbSize == sizeof(AppBarConfig))
49 {
50 AppBarConfig = config_temp;
51 }
52 }
53
54 len = sizeof(value);
55 if (RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
56 {
57 if (value >= 0 && value <= 9)
58 uiZoom = value;
59 }
60
61 len = sizeof(value);
62 if (RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
63 bShowWarning = !!value;
64
65 len = sizeof(value);
66 if (RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
67 bInvertColors = !!value;
68
69 len = sizeof(value);
70 if (RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
71 bStartMinimized = !!value;
72
73 len = sizeof(value);
74 if (RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
75 bFollowMouse = !!value;
76
77 len = sizeof(value);
78 if (RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
79 bFollowFocus = !!value;
80
81 len = sizeof(value);
82 if (RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
83 bFollowFocus = !!value;
84
85 len = sizeof(value);
86 if (RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
87 bFollowCaret = !!value;
88
89 RegCloseKey(hkey);
90 }
91
SaveSettings(void)92 void SaveSettings(void)
93 {
94 HKEY hkey;
95 LONG value;
96
97 if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, _T(""), 0, KEY_WRITE, NULL, &hkey, NULL) != ERROR_SUCCESS)
98 return;
99
100 RegSetValueEx(hkey, _T("AppBar"), 0, REG_BINARY, (BYTE *)&AppBarConfig, sizeof(AppBarConfig));
101
102 value = uiZoom;
103 RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
104
105 value = bShowWarning;
106 RegSetValueEx(hkey, _T("ShowWarning"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
107
108 value = bInvertColors;
109 RegSetValueEx(hkey, _T("StationaryInvertColors"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
110
111 value = bStartMinimized;
112 RegSetValueEx(hkey, _T("StationaryStartMinimized"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
113
114 value = bFollowMouse;
115 RegSetValueEx(hkey, _T("StationaryTrackCursor"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
116
117 value = bFollowFocus;
118 RegSetValueEx(hkey, _T("StationaryTrackFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
119
120 value = bFollowFocus;
121 RegSetValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
122
123 value = bFollowCaret;
124 RegSetValueEx(hkey, _T("StationaryTrackText"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
125
126 RegCloseKey(hkey);
127 }
128