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 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 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