+/*
+ * PROJECT: ReactOS Magnify
+ * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
+ * PURPOSE: Magnification of parts of the screen.
+ * COPYRIGHT: Copyright 2007-2019 Marc Piulachs <marc.piulachs@codexchange.net>
+ * Copyright 2015-2019 David Quintana <gigaherz@gmail.com>
+ */
#include "magnifier.h"
-int iZoom = 3;
+#include <tchar.h>
+#include <winreg.h>
+
+UINT uiZoom = 3;
BOOL bShowWarning = TRUE;
BOOL bStartMinimized = FALSE;
BOOL bShowMagnifier = TRUE;
-void LoadSettings()
+struct _AppBarConfig_t AppBarConfig =
{
- HKEY hkey;
- LONG value;
- ULONG len;
-
- RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0,
- _T(""), 0, KEY_READ, NULL, &hkey, NULL);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len))
- {
- if(value >= 0 && value <= 9)
- iZoom = value;
- }
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len))
- bShowWarning = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len))
- bInvertColors = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len))
- bStartMinimized = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len))
- bFollowMouse = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len))
- bFollowFocus = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len))
- bFollowFocus = (value == 0 ? FALSE : TRUE);
-
- if(ERROR_SUCCESS == RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len))
- bFollowCaret = (value == 0 ? FALSE : TRUE);
-
- RegCloseKey(hkey);
+ sizeof(struct _AppBarConfig_t),
+ -2 /* ABE_TOP */,
+ 0, 1, /* unknown */
+ { 101,101,101,101 }, /* edge sizes */
+ { 20, 20, 600, 200 }, /* floating window rect */
+};
+
+void LoadSettings(void)
+{
+ HKEY hkey;
+ LONG value;
+ ULONG len;
+ struct _AppBarConfig_t config_temp;
+
+ if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, KEY_READ, &hkey) != ERROR_SUCCESS)
+ return;
+
+ len = sizeof(AppBarConfig);
+ if (RegQueryValueEx(hkey, _T("AppBar"), 0, 0, (BYTE *)&config_temp, &len) == ERROR_SUCCESS)
+ {
+ if(config_temp.cbSize == sizeof(AppBarConfig))
+ {
+ AppBarConfig = config_temp;
+ }
+ }
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryMagLevel"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ {
+ if (value >= 0 && value <= 9)
+ uiZoom = value;
+ }
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("ShowWarning"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bShowWarning = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryInvertColors"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bInvertColors = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryStartMinimized"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bStartMinimized = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryTrackCursor"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bFollowMouse = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryTrackFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bFollowFocus = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bFollowFocus = !!value;
+
+ len = sizeof(value);
+ if (RegQueryValueEx(hkey, _T("StationaryTrackText"), 0, 0, (BYTE *)&value, &len) == ERROR_SUCCESS)
+ bFollowCaret = !!value;
+
+ RegCloseKey(hkey);
}
-void SaveSettings()
+void SaveSettings(void)
{
- HKEY hkey;
- LONG value;
+ HKEY hkey;
+ LONG value;
+
+ if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0, _T(""), 0, KEY_WRITE, NULL, &hkey, NULL) != ERROR_SUCCESS)
+ return;
- RegCreateKeyEx(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Magnify"), 0,
- _T(""), 0, KEY_WRITE, NULL, &hkey, NULL);
+ RegSetValueEx(hkey, _T("AppBar"), 0, REG_BINARY, (BYTE *)&AppBarConfig, sizeof(AppBarConfig));
- value = iZoom;
- RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = uiZoom;
+ RegSetValueEx(hkey, _T("StationaryMagLevel"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bShowWarning;
- RegSetValueEx(hkey, _T("ShowWarning"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bShowWarning;
+ RegSetValueEx(hkey, _T("ShowWarning"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bInvertColors;
- RegSetValueEx(hkey, _T("StationaryInvertColors"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bInvertColors;
+ RegSetValueEx(hkey, _T("StationaryInvertColors"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bStartMinimized;
- RegSetValueEx(hkey, _T("StationaryStartMinimized"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bStartMinimized;
+ RegSetValueEx(hkey, _T("StationaryStartMinimized"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bFollowMouse;
- RegSetValueEx(hkey, _T("StationaryTrackCursor"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bFollowMouse;
+ RegSetValueEx(hkey, _T("StationaryTrackCursor"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bFollowFocus;
- RegSetValueEx(hkey, _T("StationaryTrackFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bFollowFocus;
+ RegSetValueEx(hkey, _T("StationaryTrackFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bFollowFocus;
- RegSetValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bFollowFocus;
+ RegSetValueEx(hkey, _T("StationaryTrackSecondaryFocus"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- value = bFollowCaret;
- RegSetValueEx(hkey, _T("StationaryTrackText"), 0, REG_DWORD, (BYTE *)&value, sizeof value);
+ value = bFollowCaret;
+ RegSetValueEx(hkey, _T("StationaryTrackText"), 0, REG_DWORD, (BYTE *)&value, sizeof(value));
- RegCloseKey(hkey);
+ RegCloseKey(hkey);
}