From 9283b0436c95b0ebe1418cdaa784dbcf3133638e Mon Sep 17 00:00:00 2001 From: Olivier Goguel Date: Wed, 31 Aug 2022 22:29:43 +0200 Subject: [PATCH] First Addition of the Win32 binary (using Visual Studio 2022) --- .gitignore | 4 + ActiveGS.exe/ActiveGS.sln | 31 + ActiveGS.exe/ActiveGS91.exe.vcxproj | 412 ++++++ ActiveGS.exe/ActiveGS91.exe.vcxproj.filters | 615 ++++++++ ActiveGS.exe/ActiveGSApp.aps | Bin 0 -> 63996 bytes ActiveGS.exe/ActiveGSApp.cpp | 80 ++ ActiveGS.exe/ActiveGSApp.h | 32 + ActiveGS.exe/ActiveGSApp.rc | 323 +++++ ActiveGS.exe/ActiveGSApp.rc.ref | 323 +++++ ActiveGS.exe/MainFrm.cpp | 281 ++++ ActiveGS.exe/MainFrm.h | 54 + ActiveGS.exe/Resource.h | 24 + ActiveGS.exe/cgfiltyp.cpp | 328 +++++ ActiveGS.exe/cgfiltyp.h | 100 ++ ActiveGS.exe/res/ActiveGSApp.ico | Bin 0 -> 11502 bytes ActiveGS.exe/res/ActiveGSApp.manifest | 22 + ActiveGS.exe/res/ActiveGSApp.rc2 | 13 + ActiveGS.exe/res/Toolbar.bmp | Bin 0 -> 598 bytes ActiveGS.exe/res/idr_22mg.ico | Bin 0 -> 11502 bytes ActiveGS.exe/res/idr_2mg1.ico | Bin 0 -> 11502 bytes ActiveGS.exe/res/idr_main.ico | Bin 0 -> 11502 bytes Common.win32/ActiveCommon.aps | Bin 0 -> 54216 bytes Common.win32/ActiveCommon.cpp | 664 +++++++++ Common.win32/ActiveCommon.rc | 334 +++++ Common.win32/ActiveDownloadWin32.cpp | 256 ++++ Common.win32/ActiveGS.aps | Bin 0 -> 172992 bytes Common.win32/ActiveGS.rc | 71 + Common.win32/ActiveGS.rc.h | 17 + Common.win32/ActiveHook.cpp | 111 ++ Common.win32/ActiveInfo.cpp | 440 ++++++ Common.win32/ActiveInfo.h | 47 + Common.win32/ActiveStatus.cpp | 49 + Common.win32/ActiveStatus.h | 26 + Common.win32/ChildView.cpp | 298 ++++ Common.win32/ChildView.h | 53 + Common.win32/DiskEditURL.cpp | 324 +++++ Common.win32/DiskEditURL.h | 37 + Common.win32/HyperLink.cpp | 498 +++++++ Common.win32/HyperLink.h | 106 ++ Common.win32/SliderZip.cpp | 38 + Common.win32/SliderZip.h | 27 + Common.win32/TabGeneral.cpp | 67 + Common.win32/TabGeneral.h | 29 + Common.win32/TabOption.cpp | 123 ++ Common.win32/TabOption.h | 30 + Common.win32/TabRuntime.cpp | 298 ++++ Common.win32/TabRuntime.h | 45 + Common.win32/TabXml.cpp | 122 ++ Common.win32/TabXml.h | 29 + Common.win32/activecommon.h | 114 ++ Common.win32/activecommonres.h | 90 ++ Common.win32/activeconfig.c | 239 ++++ Common.win32/bitmap1.bmp | Bin 0 -> 1270 bytes Common.win32/bitmap2.bmp | Bin 0 -> 958 bytes Common.win32/bmp00001.bmp | Bin 0 -> 318 bytes Common.win32/console.aps | Bin 0 -> 20252 bytes Common.win32/console.rc | 114 ++ Common.win32/consoleresrc.h | 23 + Common.win32/cursor1.cur | Bin 0 -> 326 bytes Common.win32/disk52.bmp | Bin 0 -> 958 bytes Common.win32/disk54.bmp | Bin 0 -> 958 bytes Common.win32/disk55.bmp | Bin 0 -> 958 bytes Common.win32/stdafx.cpp | 7 + Common.win32/stdafx.h | 49 + Common.win32/vs10fix/afxctrlcontainer.cpp | 378 +++++ Common.win32/vs10fix/afxglobals.cpp | 1409 +++++++++++++++++++ Common.win32/vs10fix/winmdi.cpp | 1177 ++++++++++++++++ Common.win32/winconsole.cpp | 389 +++++ Common/sounds/Apple Panic Start.wav | Bin 0 -> 24066 bytes Common/sounds/Apple_2_Disk_Drive_Sounds.txt | 130 ++ Common/sounds/Beep Beep.wav | Bin 0 -> 14698 bytes Common/sounds/Beep.wav | Bin 0 -> 8612 bytes Common/sounds/Ghostbusters.wav | Bin 0 -> 67334 bytes Common/sounds/Grunt Grind 1.wav | Bin 0 -> 54776 bytes Common/sounds/Grunt Grind 2.wav | Bin 0 -> 26476 bytes Common/sounds/Read 1.wav | Bin 0 -> 2476 bytes Common/sounds/Read 2.wav | Bin 0 -> 2522 bytes Common/sounds/Read 3.wav | Bin 0 -> 11998 bytes Common/sounds/Read 4.wav | Bin 0 -> 15270 bytes Common/sounds/Read 5.wav | Bin 0 -> 5174 bytes Common/sounds/Read 6.wav | Bin 0 -> 18376 bytes Common/sounds/Read 7.wav | Bin 0 -> 21180 bytes Common/sounds/Search Skip Search 1.wav | Bin 0 -> 115708 bytes Common/sounds/Search Skip Search 2.wav | Bin 0 -> 63172 bytes Common/sounds/Search Skip Search 3.wav | Bin 0 -> 37532 bytes Common/sounds/Search Skip Search 4.wav | Bin 0 -> 27964 bytes Common/sounds/Search Skip Search 5.wav | Bin 0 -> 42994 bytes Common/sounds/Spin Up Search 1.wav | Bin 0 -> 79122 bytes Common/sounds/Spin Up Search 2.wav | Bin 0 -> 74066 bytes Common/sounds/Spin.wav | Bin 0 -> 89440 bytes Common/sounds/Sqweak.wav | Bin 0 -> 9814 bytes Common/sounds/eject.aiff | Bin 0 -> 13210 bytes kegs/Src/StdString.h | 4 +- kegs/Src/bigfile.cpp | 184 +++ kegs/Src/bigfile.h | 27 + kegs/Src/sim65816.h | 12 +- kegs/Win/dirent-win32.h | 230 +++ kegs/Win/joystick_win.cpp | 123 ++ kegs/Win/scc_windriver.cpp | 260 ++++ kegs/Win/win32snd_driver.cpp | 261 ++++ kegs/Win/win_activegs.cpp | 69 + kegs/Win/win_console.cpp | 172 +++ kegs/Win/win_generic.cpp | 1022 ++++++++++++++ kegs/Win/win_raster.cpp | 157 +++ kegs/Win/winresource.h | 42 + 105 files changed, 13456 insertions(+), 7 deletions(-) create mode 100644 ActiveGS.exe/ActiveGS.sln create mode 100644 ActiveGS.exe/ActiveGS91.exe.vcxproj create mode 100644 ActiveGS.exe/ActiveGS91.exe.vcxproj.filters create mode 100644 ActiveGS.exe/ActiveGSApp.aps create mode 100644 ActiveGS.exe/ActiveGSApp.cpp create mode 100644 ActiveGS.exe/ActiveGSApp.h create mode 100644 ActiveGS.exe/ActiveGSApp.rc create mode 100644 ActiveGS.exe/ActiveGSApp.rc.ref create mode 100644 ActiveGS.exe/MainFrm.cpp create mode 100644 ActiveGS.exe/MainFrm.h create mode 100644 ActiveGS.exe/Resource.h create mode 100644 ActiveGS.exe/cgfiltyp.cpp create mode 100644 ActiveGS.exe/cgfiltyp.h create mode 100644 ActiveGS.exe/res/ActiveGSApp.ico create mode 100644 ActiveGS.exe/res/ActiveGSApp.manifest create mode 100644 ActiveGS.exe/res/ActiveGSApp.rc2 create mode 100644 ActiveGS.exe/res/Toolbar.bmp create mode 100644 ActiveGS.exe/res/idr_22mg.ico create mode 100644 ActiveGS.exe/res/idr_2mg1.ico create mode 100644 ActiveGS.exe/res/idr_main.ico create mode 100644 Common.win32/ActiveCommon.aps create mode 100644 Common.win32/ActiveCommon.cpp create mode 100644 Common.win32/ActiveCommon.rc create mode 100644 Common.win32/ActiveDownloadWin32.cpp create mode 100644 Common.win32/ActiveGS.aps create mode 100644 Common.win32/ActiveGS.rc create mode 100644 Common.win32/ActiveGS.rc.h create mode 100644 Common.win32/ActiveHook.cpp create mode 100644 Common.win32/ActiveInfo.cpp create mode 100644 Common.win32/ActiveInfo.h create mode 100644 Common.win32/ActiveStatus.cpp create mode 100644 Common.win32/ActiveStatus.h create mode 100644 Common.win32/ChildView.cpp create mode 100644 Common.win32/ChildView.h create mode 100644 Common.win32/DiskEditURL.cpp create mode 100644 Common.win32/DiskEditURL.h create mode 100644 Common.win32/HyperLink.cpp create mode 100644 Common.win32/HyperLink.h create mode 100644 Common.win32/SliderZip.cpp create mode 100644 Common.win32/SliderZip.h create mode 100644 Common.win32/TabGeneral.cpp create mode 100644 Common.win32/TabGeneral.h create mode 100644 Common.win32/TabOption.cpp create mode 100644 Common.win32/TabOption.h create mode 100644 Common.win32/TabRuntime.cpp create mode 100644 Common.win32/TabRuntime.h create mode 100644 Common.win32/TabXml.cpp create mode 100644 Common.win32/TabXml.h create mode 100644 Common.win32/activecommon.h create mode 100644 Common.win32/activecommonres.h create mode 100644 Common.win32/activeconfig.c create mode 100644 Common.win32/bitmap1.bmp create mode 100644 Common.win32/bitmap2.bmp create mode 100644 Common.win32/bmp00001.bmp create mode 100644 Common.win32/console.aps create mode 100644 Common.win32/console.rc create mode 100644 Common.win32/consoleresrc.h create mode 100644 Common.win32/cursor1.cur create mode 100644 Common.win32/disk52.bmp create mode 100644 Common.win32/disk54.bmp create mode 100644 Common.win32/disk55.bmp create mode 100644 Common.win32/stdafx.cpp create mode 100644 Common.win32/stdafx.h create mode 100644 Common.win32/vs10fix/afxctrlcontainer.cpp create mode 100644 Common.win32/vs10fix/afxglobals.cpp create mode 100644 Common.win32/vs10fix/winmdi.cpp create mode 100644 Common.win32/winconsole.cpp create mode 100644 Common/sounds/Apple Panic Start.wav create mode 100644 Common/sounds/Apple_2_Disk_Drive_Sounds.txt create mode 100644 Common/sounds/Beep Beep.wav create mode 100644 Common/sounds/Beep.wav create mode 100644 Common/sounds/Ghostbusters.wav create mode 100644 Common/sounds/Grunt Grind 1.wav create mode 100644 Common/sounds/Grunt Grind 2.wav create mode 100644 Common/sounds/Read 1.wav create mode 100644 Common/sounds/Read 2.wav create mode 100644 Common/sounds/Read 3.wav create mode 100644 Common/sounds/Read 4.wav create mode 100644 Common/sounds/Read 5.wav create mode 100644 Common/sounds/Read 6.wav create mode 100644 Common/sounds/Read 7.wav create mode 100644 Common/sounds/Search Skip Search 1.wav create mode 100644 Common/sounds/Search Skip Search 2.wav create mode 100644 Common/sounds/Search Skip Search 3.wav create mode 100644 Common/sounds/Search Skip Search 4.wav create mode 100644 Common/sounds/Search Skip Search 5.wav create mode 100644 Common/sounds/Spin Up Search 1.wav create mode 100644 Common/sounds/Spin Up Search 2.wav create mode 100644 Common/sounds/Spin.wav create mode 100644 Common/sounds/Sqweak.wav create mode 100644 Common/sounds/eject.aiff create mode 100644 kegs/Src/bigfile.cpp create mode 100644 kegs/Src/bigfile.h create mode 100644 kegs/Win/dirent-win32.h create mode 100644 kegs/Win/joystick_win.cpp create mode 100644 kegs/Win/scc_windriver.cpp create mode 100644 kegs/Win/win32snd_driver.cpp create mode 100644 kegs/Win/win_activegs.cpp create mode 100644 kegs/Win/win_console.cpp create mode 100644 kegs/Win/win_generic.cpp create mode 100644 kegs/Win/win_raster.cpp create mode 100644 kegs/Win/winresource.h diff --git a/.gitignore b/.gitignore index 0a694cf..c4a4948 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ xcuserdata/ ActiveGS_AsmJS/out contents.xcworkspacedata +.vs/ +~Build/ +*.vcxproj.user + diff --git a/ActiveGS.exe/ActiveGS.sln b/ActiveGS.exe/ActiveGS.sln new file mode 100644 index 0000000..7dc79e9 --- /dev/null +++ b/ActiveGS.exe/ActiveGS.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32819.101 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ActiveGS", "ActiveGS91.exe.vcxproj", "{49D558B6-A2BC-4F7F-9F20-8C722193DD76}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Debug|x64.ActiveCfg = Debug|x64 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Debug|x64.Build.0 = Debug|x64 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Debug|x86.ActiveCfg = Debug|Win32 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Debug|x86.Build.0 = Debug|Win32 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Release|x64.ActiveCfg = Release|x64 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Release|x64.Build.0 = Release|x64 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Release|x86.ActiveCfg = Release|Win32 + {49D558B6-A2BC-4F7F-9F20-8C722193DD76}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B0B0FDD8-92C9-4AF4-A72D-4DAFD4AAF4BF} + EndGlobalSection +EndGlobal diff --git a/ActiveGS.exe/ActiveGS91.exe.vcxproj b/ActiveGS.exe/ActiveGS91.exe.vcxproj new file mode 100644 index 0000000..9d127ec --- /dev/null +++ b/ActiveGS.exe/ActiveGS91.exe.vcxproj @@ -0,0 +1,412 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + ActiveGS + {49D558B6-A2BC-4F7F-9F20-8C722193DD76} + ActiveGS91exe + Win32Proj + 10.0 + + + + Application + v143 + Static + MultiByte + true + + + Application + v143 + Static + MultiByte + true + + + Application + v143 + Static + MultiByte + true + + + Application + v143 + Static + MultiByte + true + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>16.0.30427.251 + + + $(SolutionDir)~Build\$(ProjectName)\$(Configuration)\$(PlatformShortName) + $(SolutionDir)~Build\Objs\$(ProjectName)\$(Configuration)\$(PlatformShortName) + true + A$(TargetExt) + + + true + $(SolutionDir)~Build\$(ProjectName)\$(Configuration)\$(PlatformShortName) + $(SolutionDir)~Build\Objs\$(ProjectName)\$(Configuration)\$(PlatformShortName) + $(ProjectName) + + + $(SolutionDir)~Build\$(ProjectName)\$(Configuration)\$(PlatformShortName) + $(SolutionDir)~Build\Objs\$(ProjectName)\$(Configuration)\$(PlatformShortName) + false + + + false + $(SolutionDir)~Build\$(ProjectName)\$(Configuration)\$(PlatformShortName) + $(SolutionDir)~Build\Objs\$(ProjectName)\$(Configuration)\$(PlatformShortName) + + + + Disabled + WIN32;_DEBUG;_WINDOWS;KEGS_LITTLE_ENDIAN;ACTIVEGS;KEGS91;KEGS_BETAVERSION;DRIVER_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + + Level3 + ProgramDatabase + 4996;%(DisableSpecificWarnings) + + + winmm.lib;comctl32.lib;nafxcwd.lib;libcmtd.lib;%(AdditionalDependencies) + msvcrtd.lib nafxcwd.lib libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + MachineX86 + $(OutDir)$(TargetName) + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;KEGS_LITTLE_ENDIAN;ACTIVEGS;KEGS91;KEGS_BETAVERSION;DRIVER_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebug + + + Level3 + ProgramDatabase + 4996;%(DisableSpecificWarnings) + + + winmm.lib;comctl32.lib;nafxcwd.lib;libcmtd.lib;%(AdditionalDependencies) + msvcrtd.lib nafxcwd.lib libcmtd.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + $(OutDir)$(ProjectName).exe + + + + + MaxSpeed + true + WIN32;NDEBUG;_WINDOWS;KEGS_LITTLE_ENDIAN;ACTIVEGS;KEGS91;KEGS_BETAVERSION;DRIVER_WINDOWS;%(PreprocessorDefinitions) + MultiThreaded + true + + ../Common.win32/StdAfx.h + Level3 + ProgramDatabase + 4996;%(DisableSpecificWarnings) + + + winmm.lib;comctl32.lib;nafxcw.lib;libcmt.lib;%(AdditionalDependencies) + $(SolutionDir)run\ActiveGS.exe + msvcrt.lib nafxcw.lib libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + true + true + MachineX86 + + + + + MaxSpeed + true + WIN32;NDEBUG;_WINDOWS;KEGS_LITTLE_ENDIAN;ACTIVEGS;KEGS91;KEGS_BETAVERSION;DRIVER_WINDOWS;%(PreprocessorDefinitions) + MultiThreaded + true + + + ../Common.win32/StdAfx.h + Level3 + ProgramDatabase + 4996;%(DisableSpecificWarnings) + + + winmm.lib;comctl32.lib;nafxcw.lib;libcmt.lib;%(AdditionalDependencies) + $(OutDir)$(ProjectName).exe + msvcrt.lib nafxcw.lib libcmt.lib;%(IgnoreSpecificDefaultLibraries) + true + Windows + true + true + + + + + + + + + + + + + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ActiveGS.exe/ActiveGS91.exe.vcxproj.filters b/ActiveGS.exe/ActiveGS91.exe.vcxproj.filters new file mode 100644 index 0000000..be54e44 --- /dev/null +++ b/ActiveGS.exe/ActiveGS91.exe.vcxproj.filters @@ -0,0 +1,615 @@ + + + + + {0876290e-5ea0-4529-80ca-3e33de8b9a40} + + + {6da1666e-cbb0-4abb-a97f-ac0478b844f8} + + + {b38e7a11-43e1-4c45-9e0a-298f7faa5b34} + + + {12d375d5-3df0-4a7e-9086-c545dbdf625d} + + + {51dc8c41-b398-47e4-b68a-61417da40967} + + + {3dfcff28-c626-4032-b6ff-b8dc129d187a} + + + {3f6df060-e239-4886-b77c-b474461ce911} + + + {411622c0-1a8d-4b39-9fee-49dcbb8dd4c6} + + + {a0ee4f56-59a4-46a1-aa53-a3effdb48cbc} + + + {e88f5577-5dd9-4f81-adc3-d2e0001f5661} + + + {4b8c0a8d-8a74-40fa-aa3c-be5fb3ec4e7e} + + + {b96f449f-29ea-4305-b074-52155c15c111} + + + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + Src + + + activegs.exe + + + activegs.exe + + + activegs.exe + + + activegs.exe + + + win + + + win + + + win + + + win + + + win + + + win + + + Drivers + + + Src + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + libpng + + + zlib + + + zlib + + + zlib + + + unzip + + + zlib + + + zlib + + + zlib + + + unzip + + + unzip + + + zlib + + + zlib + + + unzip + + + unzip + + + zlib + + + + + Common + + + Common + + + Common + + + Common + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + common.win32 + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + Src\H + + + activegs.exe + + + activegs.exe\Header Files + + + activegs.exe\Header Files + + + activegs.exe\Header Files + + + activegs.exe\Header Files + + + win + + + win + + + + Src\H + + + libpng + + + libpng + + + zlib + + + unzip + + + unzip + + + zlib + + + zlib + + + zlib + + + zlib + + + unzip + + + unzip + + + zlib + + + unzip + + + zlib + + + zlib + + + unzip + + + zlib + + + zlib + + + + + common.win32 + + + common.win32 + + + common.win32 + + + activegs.exe\Header Files + + + + + Run + + + + + activegs.exe\Header Files + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ActiveGS.exe/ActiveGSApp.aps b/ActiveGS.exe/ActiveGSApp.aps new file mode 100644 index 0000000000000000000000000000000000000000..482f8478148a7153d37e228c2f7c1dca490b97bb GIT binary patch literal 63996 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 literal 0 HcmV?d00001 diff --git a/ActiveGS.exe/ActiveGSApp.cpp b/ActiveGS.exe/ActiveGSApp.cpp new file mode 100644 index 0000000..b22674f --- /dev/null +++ b/ActiveGS.exe/ActiveGSApp.cpp @@ -0,0 +1,80 @@ +// ActiveGSApp.cpp : Définit les comportements de classe pour l'application. +// + +#include "../Common.win32/stdafx.h" +#include "ActiveGSApp.h" +#include "MainFrm.h" + + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CActiveGSAppAp +BEGIN_MESSAGE_MAP(CActiveGSAppApp, CWinApp) +// ON_COMMAND(ID_APP_ABOUT, OnAppAbout) +END_MESSAGE_MAP() + + +// construction CActiveGSAppApp + +CActiveGSAppApp::CActiveGSAppApp() +{ + // TODO : ajoutez ici du code de construction, + // Placez toutes les initialisations significatives dans InitInstance +} + + +// Seul et unique objet CActiveGSAppApp + +CActiveGSAppApp theApp; + +// initialisation CActiveGSAppApp + +BOOL CActiveGSAppApp::InitInstance() +{ + // InitCommonControls() est requis sur Windows XP si le manifeste de l'application + // spécifie l'utilisation de ComCtl32.dll version 6 ou ultérieure pour activer + // les styles visuels. Dans le cas contraire, la création de fenêtres échouera. + InitCommonControls(); + + CWinApp::InitInstance(); + + // Initialiser les bibliothèques OLE + if (!AfxOleInit()) + { + AfxMessageBox(IDP_OLE_INIT_FAILED); + return FALSE; + } + AfxEnableControlContainer(); + // Initialisation standard + // Si vous n'utilisez pas ces fonctionnalités et que vous souhaitez réduire la taille + // de votre exécutable final, vous devez supprimer ci-dessous + // les routines d'initialisation spécifiques dont vous n'avez pas besoin. + // Changez la clé de Registre sous laquelle nos paramètres sont enregistrés. + // TODO : Modifiez cette chaîne avec des informations appropriées, + // telles que le nom de votre société ou organisation + SetRegistryKey(_T("Applications locales générées par AppWizard")); + // Pour créer la fenêtre principale, ce code crée un nouvel objet fenêtre frame + // qu'il définit ensuite en tant qu'objet fenêtre principale de l'application + + int argc = __argc; + char** argv = __argv; + + + CMainFrame* pFrame = new CMainFrame(argc,argv); + if (!pFrame) + return FALSE; + m_pMainWnd = pFrame; + + // MEts à jour le nom de la fenetre + + // La seule fenêtre a été initialisée et peut donc être affichée et mise à jour + pFrame->ShowWindow(SW_SHOW); + pFrame->UpdateWindow(); + // appelle DragAcceptFiles uniquement s'il y a un suffixe + // Dans une application SDI, cet appel doit avoir lieu juste après ProcessShellCommand + return TRUE; +} + diff --git a/ActiveGS.exe/ActiveGSApp.h b/ActiveGS.exe/ActiveGSApp.h new file mode 100644 index 0000000..e5fb754 --- /dev/null +++ b/ActiveGS.exe/ActiveGSApp.h @@ -0,0 +1,32 @@ +// ActiveGSApp.h : fichier d'en-tête principal pour l'application ActiveGSApp +// +#pragma once + +#ifndef __AFXWIN_H__ + #error inclut 'stdafx.h' avant d'inclure ce fichier pour PCH +#endif + +#include "resource.h" // symboles principaux + +// CActiveGSAppApp : +// Consultez ActiveGSApp.cpp pour l'implémentation de cette classe +// + +class CActiveGSAppApp : public CWinApp +{ +public: + CActiveGSAppApp(); + + +// Substitutions +public: + virtual BOOL InitInstance(); + +// Implémentation + +public: +// afx_msg void OnAppAbout(); + DECLARE_MESSAGE_MAP() +}; + +extern CActiveGSAppApp theApp; diff --git a/ActiveGS.exe/ActiveGSApp.rc b/ActiveGS.exe/ActiveGSApp.rc new file mode 100644 index 0000000..7694662 --- /dev/null +++ b/ActiveGS.exe/ActiveGSApp.rc @@ -0,0 +1,323 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)\r\n" + "LANGUAGE 12, 1\r\n" + "#pragma code_page(1252)\r\n" + "#include ""res\\ActiveGSApp.rc2"" // ressources non modifiées par Microsoft Visual C++ \r\n" + "#include ""afxres.rc"" // Composants standard\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON "res\\ActiveGSApp.ico" +IDR_2DSK ICON "res\\idr_2mg1.ico" +IDR_32MG ICON "res\\idr_22mg.ico" +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDR_MAINFRAME BITMAP "res\\Toolbar.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Toolbar +// + +IDR_MAINFRAME TOOLBAR 16, 15 +BEGIN + BUTTON ID_EDIT_CUT + BUTTON ID_EDIT_COPY + BUTTON ID_EDIT_PASTE + SEPARATOR + BUTTON ID_APP_ABOUT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU +BEGIN + POPUP "&Fichier" + BEGIN + MENUITEM "&quitter", ID_APP_EXIT + END + POPUP "&Edition" + BEGIN + MENUITEM "&Annuler\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "&Couper\tCtrl+X", ID_EDIT_CUT + MENUITEM "C&opier\tCtrl+C", ID_EDIT_COPY + MENUITEM "Co&ller\tCtrl+V", ID_EDIT_PASTE + END + POPUP "&Affichage" + BEGIN + MENUITEM "&barre d'outils", ID_VIEW_TOOLBAR + MENUITEM "&barre d'état", ID_VIEW_STATUS_BAR + END + POPUP "&Aide" + BEGIN + MENUITEM "&À propos de ActiveGSApp...", ID_APP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MAINFRAME ACCELERATORS +BEGIN + "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT + VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT + VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT + VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT + "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT + "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "À propos de ActiveGSApp" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "ActiveGSApp Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX + LTEXT "Copyright (C) 2003",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 3,7,1199,0 + PRODUCTVERSION 3,7,1199,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040c04e4" + BEGIN + VALUE "CompanyName", "Second Sight Software" + VALUE "FileDescription", "ActiveGS StandAlone Application" + VALUE "FileVersion", "3.7.1199" + VALUE "InternalName", "ActiveGS.exe" + VALUE "LegalCopyright", "(c) Second Sight Software 2009-2011" + VALUE "OriginalFilename", "ActiveGSApp.exe" + VALUE "ProductName", "ActiveGS Standalone Application" + VALUE "ProductVersion", "3.7.1199" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x40c, 1252 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 228 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDR_MAINFRAME "ActiveGSApp" +END + +STRINGTABLE +BEGIN + AFX_IDS_APP_TITLE "ActiveGSApp" + AFX_IDS_IDLEMESSAGE "Prêt" +END + +STRINGTABLE +BEGIN + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "MAJ" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "DÉFIL" + ID_INDICATOR_OVR "RFP" + ID_INDICATOR_REC "ENR" +END + +STRINGTABLE +BEGIN + ID_APP_ABOUT "Affiche des informations concernant le programme, le numéro de version et le copyright\nÀ propos de" + ID_APP_EXIT "Quitte l'application et invite à enregistrer les documents\nQuitter" +END + +STRINGTABLE +BEGIN + ID_NEXT_PANE "Bascule vers le volet de fenêtre suivant\nVolet suivant" + ID_PREV_PANE "Bascule vers le volet de fenêtre précédent\nVolet précédent" +END + +STRINGTABLE +BEGIN + ID_WINDOW_SPLIT "Fractionne la fenêtre active en volets\nFractionner" +END + +STRINGTABLE +BEGIN + ID_EDIT_CLEAR "Efface la sélection\nEffacer" + ID_EDIT_CLEAR_ALL "Efface tout\nEffacer tout" + ID_EDIT_COPY "Copie la sélection et la place dans le Presse-papiers\nCopier" + ID_EDIT_CUT "Coupe la sélection et la place dans le Presse-papiers\nCouper" + ID_EDIT_FIND "Recherche le texte spécifié\nRechercher" + ID_EDIT_PASTE "Insère le contenu du presse-papiers\nColler" + ID_EDIT_REPEAT "Répète la dernière action\nRépéter" + ID_EDIT_REPLACE "Remplace un texte spécifié par un texte différent\nRemplacer" + ID_EDIT_SELECT_ALL "Sélectionne la totalité du document\nSélectionner tout" + ID_EDIT_UNDO "Annule la dernière action\nAnnuler" + ID_EDIT_REDO "Rétablit l'action précédemment annulée\nRétablir" +END + +STRINGTABLE +BEGIN + ID_VIEW_TOOLBAR "Affiche ou masque la barre d'outils\nActiver/Désactiver Barre d'outils" + ID_VIEW_STATUS_BAR "Affiche ou masque la barre d'état\nActiver/Désactiver Barre d'état" +END + +STRINGTABLE +BEGIN + AFX_IDS_SCSIZE "Modifie la taille de la fenêtre" + AFX_IDS_SCMOVE "Modifie la position de la fenêtre" + AFX_IDS_SCMINIMIZE "Affiche la fenêtre sous forme d'icône" + AFX_IDS_SCMAXIMIZE "Affiche la fenêtre en plein écran" + AFX_IDS_SCNEXTWINDOW "Bascule vers la fenêtre de document suivante" + AFX_IDS_SCPREVWINDOW "Bascule vers la fenêtre de document précédente" + AFX_IDS_SCCLOSE "Ferme la fenêtre active et propose l'enregistrement des documents" +END + +STRINGTABLE +BEGIN + AFX_IDS_SCRESTORE "Restaure la fenêtre à sa taille normale" + AFX_IDS_SCTASKLIST "Active la liste des tâches" +END + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +LANGUAGE 12, 1 +#pragma code_page(1252) +#include "res\ActiveGSApp.rc2" // ressources non modifiées par Microsoft Visual C++ +#include "afxres.rc" // Composants standard +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/ActiveGS.exe/ActiveGSApp.rc.ref b/ActiveGS.exe/ActiveGSApp.rc.ref new file mode 100644 index 0000000..2ca15cf --- /dev/null +++ b/ActiveGS.exe/ActiveGSApp.rc.ref @@ -0,0 +1,323 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA)\r\n" + "LANGUAGE 12, 1\r\n" + "#pragma code_page(1252)\r\n" + "#include ""res\\ActiveGSApp.rc2"" // ressources non modifiées par Microsoft Visual C++ \r\n" + "#include ""afxres.rc"" // Composants standard\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON "res\\ActiveGSApp.ico" +IDR_2DSK ICON "res\\idr_2mg1.ico" +IDR_32MG ICON "res\\idr_22mg.ico" +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDR_MAINFRAME BITMAP "res\\Toolbar.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Toolbar +// + +IDR_MAINFRAME TOOLBAR 16, 15 +BEGIN + BUTTON ID_EDIT_CUT + BUTTON ID_EDIT_COPY + BUTTON ID_EDIT_PASTE + SEPARATOR + BUTTON ID_APP_ABOUT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDR_MAINFRAME MENU +BEGIN + POPUP "&Fichier" + BEGIN + MENUITEM "&quitter", ID_APP_EXIT + END + POPUP "&Edition" + BEGIN + MENUITEM "&Annuler\tCtrl+Z", ID_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "&Couper\tCtrl+X", ID_EDIT_CUT + MENUITEM "C&opier\tCtrl+C", ID_EDIT_COPY + MENUITEM "Co&ller\tCtrl+V", ID_EDIT_PASTE + END + POPUP "&Affichage" + BEGIN + MENUITEM "&barre d'outils", ID_VIEW_TOOLBAR + MENUITEM "&barre d'état", ID_VIEW_STATUS_BAR + END + POPUP "&Aide" + BEGIN + MENUITEM "&À propos de ActiveGSApp...", ID_APP_ABOUT + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_MAINFRAME ACCELERATORS +BEGIN + "C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + "V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT + VK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT + VK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT + VK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT + VK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT + VK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT + "X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT + "Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "À propos de ActiveGSApp" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "ActiveGSApp Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX + LTEXT "Copyright (C) 2003",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION $MAJORVER$,$MINORVER$,$WCREV$,0 + PRODUCTVERSION $MAJORVER$,$MINORVER$,$WCREV$,0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040c04e4" + BEGIN + VALUE "CompanyName", "Second Sight Software" + VALUE "FileDescription", "ActiveGS StandAlone Application" + VALUE "FileVersion", "$MAJORVER$.$MINORVER$.$WCREV$" + VALUE "InternalName", "ActiveGS.exe" + VALUE "LegalCopyright", "(c) Second Sight Software 2009-2011" + VALUE "OriginalFilename", "ActiveGSApp.exe" + VALUE "ProductName", "ActiveGS Standalone Application" + VALUE "ProductVersion", "$MAJORVER$.$MINORVER$.$WCREV$" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x40c, 1252 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ABOUTBOX, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 228 + TOPMARGIN, 7 + BOTTOMMARGIN, 48 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDR_MAINFRAME "ActiveGSApp" +END + +STRINGTABLE +BEGIN + AFX_IDS_APP_TITLE "ActiveGSApp" + AFX_IDS_IDLEMESSAGE "Prêt" +END + +STRINGTABLE +BEGIN + ID_INDICATOR_EXT "EXT" + ID_INDICATOR_CAPS "MAJ" + ID_INDICATOR_NUM "NUM" + ID_INDICATOR_SCRL "DÉFIL" + ID_INDICATOR_OVR "RFP" + ID_INDICATOR_REC "ENR" +END + +STRINGTABLE +BEGIN + ID_APP_ABOUT "Affiche des informations concernant le programme, le numéro de version et le copyright\nÀ propos de" + ID_APP_EXIT "Quitte l'application et invite à enregistrer les documents\nQuitter" +END + +STRINGTABLE +BEGIN + ID_NEXT_PANE "Bascule vers le volet de fenêtre suivant\nVolet suivant" + ID_PREV_PANE "Bascule vers le volet de fenêtre précédent\nVolet précédent" +END + +STRINGTABLE +BEGIN + ID_WINDOW_SPLIT "Fractionne la fenêtre active en volets\nFractionner" +END + +STRINGTABLE +BEGIN + ID_EDIT_CLEAR "Efface la sélection\nEffacer" + ID_EDIT_CLEAR_ALL "Efface tout\nEffacer tout" + ID_EDIT_COPY "Copie la sélection et la place dans le Presse-papiers\nCopier" + ID_EDIT_CUT "Coupe la sélection et la place dans le Presse-papiers\nCouper" + ID_EDIT_FIND "Recherche le texte spécifié\nRechercher" + ID_EDIT_PASTE "Insère le contenu du presse-papiers\nColler" + ID_EDIT_REPEAT "Répète la dernière action\nRépéter" + ID_EDIT_REPLACE "Remplace un texte spécifié par un texte différent\nRemplacer" + ID_EDIT_SELECT_ALL "Sélectionne la totalité du document\nSélectionner tout" + ID_EDIT_UNDO "Annule la dernière action\nAnnuler" + ID_EDIT_REDO "Rétablit l'action précédemment annulée\nRétablir" +END + +STRINGTABLE +BEGIN + ID_VIEW_TOOLBAR "Affiche ou masque la barre d'outils\nActiver/Désactiver Barre d'outils" + ID_VIEW_STATUS_BAR "Affiche ou masque la barre d'état\nActiver/Désactiver Barre d'état" +END + +STRINGTABLE +BEGIN + AFX_IDS_SCSIZE "Modifie la taille de la fenêtre" + AFX_IDS_SCMOVE "Modifie la position de la fenêtre" + AFX_IDS_SCMINIMIZE "Affiche la fenêtre sous forme d'icône" + AFX_IDS_SCMAXIMIZE "Affiche la fenêtre en plein écran" + AFX_IDS_SCNEXTWINDOW "Bascule vers la fenêtre de document suivante" + AFX_IDS_SCPREVWINDOW "Bascule vers la fenêtre de document précédente" + AFX_IDS_SCCLOSE "Ferme la fenêtre active et propose l'enregistrement des documents" +END + +STRINGTABLE +BEGIN + AFX_IDS_SCRESTORE "Restaure la fenêtre à sa taille normale" + AFX_IDS_SCTASKLIST "Active la liste des tâches" +END + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +LANGUAGE 12, 1 +#pragma code_page(1252) +#include "res\ActiveGSApp.rc2" // ressources non modifiées par Microsoft Visual C++ +#include "afxres.rc" // Composants standard +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/ActiveGS.exe/MainFrm.cpp b/ActiveGS.exe/MainFrm.cpp new file mode 100644 index 0000000..5c89205 --- /dev/null +++ b/ActiveGS.exe/MainFrm.cpp @@ -0,0 +1,281 @@ +// MainFrm.cpp : implémentation de la classe CMainFrame +// + +#include "../Common.win32/stdafx.h" +#include "ActiveGSApp.h" + +#include "../common.win32/activecommon.h" +#include "../common/CEmulatorCtrl.h" +#include "mainfrm.h" +#include "../common/ki.h" + +#include "../common/svnversion.h" +#include "../kegs/src/defcomm.h" +#include "../kegs/src/savestate.h" +#include "../kegs/src/driver.h" +#include "cgfiltyp.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CMainFrame + +IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd) + +BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) + ON_WM_CREATE() + ON_WM_SETFOCUS() + ON_WM_DESTROY() + ON_WM_SIZING() +END_MESSAGE_MAP() + +void associateActiceGSConfig(const char* _ext, const char* _desc, int _icon) +{ + + CGCFileTypeAccess TheFTA; + + // get full file path to program executable file + + TCHAR szProgPath[MAX_PATH * 2]; + ::GetModuleFileName(NULL, szProgPath, sizeof(szProgPath)/sizeof(TCHAR)); + + CString csTempText; + + TheFTA.SetExtension(_ext); + + // just pass file path in quotes on command line + + csTempText = szProgPath; + csTempText += " \"%1\""; + TheFTA.SetShellOpenCommand(csTempText); + TheFTA.SetDocumentShellOpenCommand(csTempText); + + CString classname("ActiveGS."); + classname += _ext; + TheFTA.SetDocumentClassName(classname); + + TheFTA.SetDocumentDescription(_desc); + + // use first icon in program + + csTempText = szProgPath; + csTempText += ","; + csTempText += (char)(_icon+'0'); + TheFTA.SetDocumentDefaultIcon(csTempText); + + // set the necessary registry entries + + TheFTA.RegSetAllInfo(); + +} +CMainFrame::CMainFrame(int _argc, char** _argv) +{ + outputInfo("CMainFrame() (inst:%0X)\n",this); + + // Répertoire par default = pour une appli, le répertoire courant + char windir[1024]; + GetCurrentDirectory(1024,windir); + +#ifndef ACTIVEGSKARATEKA + associateActiceGSConfig("activegsxml","ActiveGS Configuration file",0); + associateActiceGSConfig("nib","Apple II 5.25 Disk Image",1); + associateActiceGSConfig("dsk","Apple II 5.25 Disk Image",1); + associateActiceGSConfig("2mg","Apple II 3.5 Image",2); + associateActiceGSConfig("po","Apple II 3.5 Disk Image",2); + associateActiceGSConfig("do","Apple II 5.25 Disk Image",1); +#endif + + + void (*driver)() = NULL; +#ifdef VIRTUALAPPLE + extern void jniSetup(const char*); + jniSetup(NULL); +#else + #ifdef ACTIVEGSKARATEKA + extern void karateka_driver(); + driver = karateka_driver; + #else + extern void activegs_driver(); + driver = activegs_driver; + #endif + g_driver.init( driver ); +#endif + + CDownload::initPersistentPath(); + + option.initOptions(); + + + m_wndView.config.setBaseURL(windir); + +#ifdef VIRTUALAPPLE + m_wndView.config.xmlconfig =g_driver.activegsxml; +#else + #ifdef ACTIVEGSPOP + m_wndView.config.xmlconfig ="http://asset/pop.activegsxml"; + #elif ACTIVEGSKARATEKA + m_wndView.config.xmlconfig ="http://asset/karateka.activegsxml"; + #else + m_wndView.config.xmlconfig ="default.activegsxml"; + m_wndView.config.processCommandLine(_argc,_argv); + #endif +#endif + + RECT r; + r.left = 100; + r.top = 100; + r.right = r.left+X_A2_WINDOW_WIDTH; + +#ifdef VIDEO_SINGLEHLINE + float w = X_A2_WINDOW_WIDTH*2; +#else + float w = X_A2_WINDOW_WIDTH; +#endif + + r.right = r.left + w * 2; + + +#ifdef VIDEO_SINGLEVLINE + float h = X_A2_WINDOW_HEIGHT*2; +#else + float h = X_A2_WINDOW_HEIGHT; +#endif + + r.bottom = r.top + h * 2; + + const char* ver = ACTIVEGSVERSIONSTR; + + Create(NULL, ver, WS_THICKFRAME | WS_SYSMENU,r, NULL,NULL, 0, NULL ); + + + +} + +CMainFrame::~CMainFrame() +{ + +} + +int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (CFrameWnd::OnCreate(lpCreateStruct) == -1) + return -1; + + outputInfo("OnCreate (inst:%0X)\n",lpCreateStruct->hInstance); + + m_wndView.CreateEmulatorWindow(this); + + return 0; +} + +BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) +{ + if( !CFrameWnd::PreCreateWindow(cs) ) + return FALSE; + return TRUE; +} + +// diagnostics pour CMainFrame + +#ifdef _DEBUG +void CMainFrame::AssertValid() const +{ + CFrameWnd::AssertValid(); +} + +void CMainFrame::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); +} + +#endif //_DEBUG + +// gestionnaires de messages pour CMainFrame + +void CMainFrame::OnSetFocus(CWnd* /*pOldWnd*/) +{ + // passe le focus à la fenêtre d'affichage + m_wndView.SetFocus(); +} + +BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) +{ + /* + // laisser la priorité à la vue pour cette commande + if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) + return TRUE; + */ + // sinon, la gestion par défaut est utilisée + return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); +} +void CMainFrame::OnDestroy() +{ + outputInfo("OnDestroy() (inst:%0X)\n",this); + CFrameWnd::OnDestroy(); + +} + + +extern void window_needs_full_refresh(); + +LRESULT CMainFrame::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) +{ + + if (message==WM_SIZE) + { + m_wndView.resize(); + return 1; + } + else + if (message==WM_ERASEBKGND) + { + // prevent mainframe to refresh its background + return 1; + } + else + return CFrameWnd::DefWindowProc(message, wParam, lParam); +} + + + +void CMainFrame::OnSizing(UINT nSide,LPRECT lpRect) +{ + RECT rcClient, rcWindow; + GetClientRect( &rcClient); + GetWindowRect( &rcWindow); + int borderw = (rcWindow.right - rcClient.right) + (rcClient.left - rcWindow.left ); + int borderh = (rcWindow.bottom - rcClient.bottom) + (rcClient.top - rcWindow.top ); + + // détermine le sens du resize (en x ou en y) + + int deltax = (rcWindow.right-lpRect->right) + (rcWindow.left-lpRect->left); + if (deltax<0) deltax = -deltax; + int deltay = (rcWindow.bottom-lpRect->bottom) + (rcWindow.top-lpRect->top); + if (deltay<0) deltay = -deltay; + +#ifdef VIDEO_SINGLEVLINE + int bottom = X_A2_WINDOW_HEIGHT*2; +#else + int bottom = X_A2_WINDOW_HEIGHT; +#endif +#ifdef VIDEO_SINGLEHLINE + int right = X_A2_WINDOW_WIDTH*2; +#else + int right = X_A2_WINDOW_WIDTH; +#endif +const float ratio = (float)right/(float)bottom; + + int w = (lpRect->right - lpRect->left) - borderw ; + int h = (lpRect->bottom - lpRect->top) - borderh ; + + if (deltax || deltay) + { + if (nSide !=6) + lpRect->bottom = lpRect->top + (int)(w/ratio) + borderh; + else + lpRect->right = lpRect->left + (int)(h*ratio) + borderw; + } + return CFrameWnd::OnSizing(nSide,lpRect); +} diff --git a/ActiveGS.exe/MainFrm.h b/ActiveGS.exe/MainFrm.h new file mode 100644 index 0000000..2192c40 --- /dev/null +++ b/ActiveGS.exe/MainFrm.h @@ -0,0 +1,54 @@ +// MainFrm.h : interface de la classe CMainFrame +// + + +#pragma once + +#include "../Common.win32/ChildView.h" +//#include "../common32/activecommon.h" + +class CMainFrame : public CFrameWnd +{ + +public: + CMainFrame(int _argc, char ** _argv); +protected: + DECLARE_DYNAMIC(CMainFrame) + +// Attributs +public: + CChildView m_wndView; + +// Opérations +public: + +// Substitutions +public: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo); + +// Implémentation +public: + virtual ~CMainFrame(); +#ifdef _DEBUG + virtual void AssertValid() const; + virtual void Dump(CDumpContext& dc) const; +#endif + +protected: // membres incorporés de la barre de contrôle + /* + CStatusBar m_wndStatusBar; + CToolBar m_wndToolBar; + */ +// Fonctions générées de la table des messages +protected: + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSetFocus(CWnd *pOldWnd); + DECLARE_MESSAGE_MAP() + virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam); + afx_msg void OnSizing(UINT nSide,LPRECT lpRect); +public: + afx_msg void OnDestroy(); +}; + + diff --git a/ActiveGS.exe/Resource.h b/ActiveGS.exe/Resource.h new file mode 100644 index 0000000..3070db3 --- /dev/null +++ b/ActiveGS.exe/Resource.h @@ -0,0 +1,24 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by ActiveGSApp.rc +// +#define IDD_ABOUTBOX 100 +#define IDP_OLE_INIT_FAILED 100 +#define IDR_HTML_TABDISKURL 103 +#define IDR_MAINFRAME 128 +#define IDR_ActiveGSAppTYPE 129 +#define IDR_1APP 129 +#define IDR_3DSK 130 +#define IDR_2DSK 130 +#define IDR_32MG 131 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 130 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 104 +#endif +#endif diff --git a/ActiveGS.exe/cgfiltyp.cpp b/ActiveGS.exe/cgfiltyp.cpp new file mode 100644 index 0000000..1d689ba --- /dev/null +++ b/ActiveGS.exe/cgfiltyp.cpp @@ -0,0 +1,328 @@ +//- ----------------------------------------------------------------- +//- (C) Copyright 2000 Blake V. Miller +//- All Rights Reserved. +//- ----------------------------------------------------------------- +//- File : CGFILTYP.CPP +//- Author : Blake Miller +//- Version : June 16, 2000 +//- Purpose : File Type Access +//- ----------------------------------------------------------------- + +#include "../Common.win32/stdafx.h" +#include "winerror.h" + +#ifndef __CGFILTYP_H__ +#include "CGFILTYP.H" // CGCFileTypeAccess +#endif + +#undef THIS_FILE +static char THIS_FILE[] = "CGFILTYP.CPP"; + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +IMPLEMENT_DYNAMIC(CGCFileTypeAccess, CObject) + +CGCFileTypeAccess::CGCFileTypeAccess() +{ +} + +// virtual +CGCFileTypeAccess::~CGCFileTypeAccess() +{ +} + +//- ***************************************************************** +//- Functions Affecting Registry +//- ***************************************************************** + +// virtual +BOOL CGCFileTypeAccess::RegSetAllInfo(void) +{ + RegSetExtension(); + RegSetDocumentType(); + RegSetCLSID(); + RegSetShellInfo(); + + return TRUE; +} + +// HKEY_CLASSES_ROOT\. +// virtual +BOOL CGCFileTypeAccess::RegSetExtension(void) +{ + if( m_csExtension.IsEmpty() ){ + return TRUE; + } + + CString csKey = "." + m_csExtension; + + SetRegistryValue(HKEY_CLASSES_ROOT, csKey, "", m_csDocumentClassName); + + if( !m_csShellOpenCommand.IsEmpty() ){ + csKey += "\\shell\\open\\command"; + SetRegistryValue(HKEY_CLASSES_ROOT, csKey, "", m_csShellOpenCommand); + } + + return TRUE; +} + +// HKEY_CLASSES_ROOT\. +// virtual +BOOL CGCFileTypeAccess::RegSetDocumentType(void) +{ + if( m_csDocumentClassName.IsEmpty()){ + return TRUE; + } + + CString csKey = m_csDocumentClassName; + + SetRegistryValue(HKEY_CLASSES_ROOT, csKey, "", m_csDocumentDescription); + + // DefaultIcon + if( !m_csDocumentDefaultIcon.IsEmpty() ){ + csKey = m_csDocumentClassName; + csKey += "\\DefaultIcon"; + SetRegistryValue(HKEY_CLASSES_ROOT, csKey, "", m_csDocumentDefaultIcon); + } + + // shell\open\command + if( !m_csShellOpenCommand.IsEmpty() ){ + csKey = m_csDocumentClassName; + csKey += "\\shell\\open\\command"; + SetRegistryValue(HKEY_CLASSES_ROOT, csKey, "", m_csShellOpenCommand); + } + + return TRUE; +} + +// HKEY_CLASSES_ROOT\CLSID\ +// virtual +BOOL CGCFileTypeAccess::RegSetCLSID(void) +{ + return TRUE; +} + +// +// virtual +BOOL CGCFileTypeAccess::RegSetShellInfo(void) +{ + return TRUE; +} + +//- ***************************************************************** +//- Member Variable Get/Set Methods +//- ***************************************************************** + +void CGCFileTypeAccess::SetExtension( + LPCTSTR szExtension +){ + m_csExtension = szExtension; +} +void CGCFileTypeAccess::GetExtension( + CString& csExtension +) const { + csExtension = m_csExtension; +} + +void CGCFileTypeAccess::SetContentType( + LPCTSTR szContentType +){ + m_csContentType = szContentType; +} +void CGCFileTypeAccess::GetContentType( + CString& csContentType +) const { + csContentType = m_csContentType; +} + +void CGCFileTypeAccess::SetShellOpenCommand( + LPCTSTR szShellOpenCommand +){ + m_csShellOpenCommand = szShellOpenCommand; +} +void CGCFileTypeAccess::GetShellOpenCommand( + CString& csShellOpenCommand +) const { + csShellOpenCommand = m_csShellOpenCommand; +} + +void CGCFileTypeAccess::SetShellNewCommand( + LPCTSTR szShellNewCommand +){ + m_csShellNewCommand = szShellNewCommand; +} +void CGCFileTypeAccess::GetShellNewCommand( + CString& csShellNewCommand +) const { + csShellNewCommand = m_csShellNewCommand; +} + +void CGCFileTypeAccess::SetShellNewFileName( + LPCTSTR szShellNewFileName +){ + m_csShellNewFileName = szShellNewFileName; +} +void CGCFileTypeAccess::GetShellNewFileName( + CString& csShellNewFileName +) const { + csShellNewFileName = m_csShellNewFileName; +} + +void CGCFileTypeAccess::SetDocumentClassName( + LPCTSTR szDocumentClassName +){ + m_csDocumentClassName = szDocumentClassName; +} +void CGCFileTypeAccess::GetDocumentClassName( + CString& csDocumentClassName +) const { + csDocumentClassName = m_csDocumentClassName; +} + +void CGCFileTypeAccess::SetDocumentDescription( + LPCTSTR szDocumentDescription +){ + m_csDocumentDescription = szDocumentDescription; +} +void CGCFileTypeAccess::GetDocumentDescription( + CString& csDocumentDescription +) const { + csDocumentDescription = m_csDocumentDescription; +} + +void CGCFileTypeAccess::SetDocumentCLSID( + LPCTSTR szDocumentCLSID +){ + m_csDocumentCLSID = szDocumentCLSID; +} +void CGCFileTypeAccess::GetDocumentCLSID( + CString& csDocumentCLSID +) const { + csDocumentCLSID = m_csDocumentCLSID; +} + +void CGCFileTypeAccess::SetDocumentCurrentVersion( + LPCTSTR szDocumentCurrentVersion +){ + m_csDocumentCurrentVersion = szDocumentCurrentVersion; +} +void CGCFileTypeAccess::GetDocumentCurrentVersion( + CString& csDocumentCurrentVersion +) const { + csDocumentCurrentVersion = m_csDocumentCurrentVersion; +} + +void CGCFileTypeAccess::SetDocumentDefaultIcon( + LPCTSTR szDocumentDefaultIcon +){ + m_csDocumentDefaultIcon = szDocumentDefaultIcon; +} +void CGCFileTypeAccess::GetDocumentDefaultIcon( + CString& csDocumentDefaultIcon +) const { + csDocumentDefaultIcon = m_csDocumentDefaultIcon; +} + +void CGCFileTypeAccess::SetDocumentShellOpenCommand( + LPCTSTR szDocumentShellOpenCommand +){ + m_csDocumentShellOpenCommand = szDocumentShellOpenCommand; +} +void CGCFileTypeAccess::GetDocumentShellOpenCommand( + CString& csDocumentShellOpenCommand +) const { + csDocumentShellOpenCommand = m_csDocumentShellOpenCommand; +} + +// virtual +void CGCFileTypeAccess::ClearAllData(void) +{ + m_csExtension.Empty(); + m_csContentType.Empty(); + m_csShellOpenCommand.Empty(); + m_csShellNewCommand.Empty(); + m_csShellNewFileName.Empty(); + + m_csDocumentClassName.Empty(); + m_csDocumentDescription.Empty(); + m_csDocumentCLSID.Empty(); + m_csDocumentCurrentVersion.Empty(); + m_csDocumentDefaultIcon.Empty(); + m_csDocumentShellOpenCommand.Empty(); +} + +//- ----------------------------------------------------------------- +//- set string value into registry + +BOOL CGCFileTypeAccess::SetRegistryValue( + HKEY hOpenKey, + LPCTSTR szKey, + LPCTSTR szValue, + LPCTSTR szData +){ + + // OG HACK + // Write to the Current User instead of Class Root : bypass UAC !!! + + hOpenKey = HKEY_CURRENT_USER ; + CString newKey; + newKey.Format("Software\\Classes\\%s",szKey); + szKey = (const char*)newKey; + + // validate input + if( !hOpenKey || !szKey || !szKey[0] || + !szValue || !szData ){ + ::SetLastError(E_INVALIDARG); + return FALSE; + } + + BOOL bRetVal = FALSE; + DWORD dwDisposition; + DWORD dwReserved = 0; + HKEY hTempKey = (HKEY)0; + + // length specifier is in bytes, and some TCHAR + // are more than 1 byte each + DWORD dwBufferLength = lstrlen(szData) * sizeof(TCHAR); + + // Open key of interest + // Assume all access is okay and that all keys will be stored to file + // Utilize the default security attributes + + // OG Track error + LONG err = ::RegCreateKeyEx(hOpenKey, szKey, dwReserved, + (LPTSTR)0, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE, 0, + &hTempKey, &dwDisposition); + + if( ERROR_SUCCESS ==err ) + { + + // dwBufferLength must include size of terminating nul + // character when using REG_SZ with RegSetValueEx function + dwBufferLength += sizeof(TCHAR); + + err = ::RegSetValueEx(hTempKey, (LPTSTR)szValue, + dwReserved, REG_SZ, (LPBYTE)szData, dwBufferLength) ; + if( ERROR_SUCCESS == err ) + bRetVal = TRUE; + } + + if (err != ERROR_SUCCESS) + { + char errstr[1024]; + sprintf(errstr,"RegSetValueEx: %Xn",err); + OutputDebugString(errstr); + } + // close opened key + if( hTempKey ){ + ::RegCloseKey(hTempKey); + } + + return bRetVal; +} + +//- ----------------------------------------------------------------- +//- END CGFILTYP.CPP Source File +//- ----------------------------------------------------------------- diff --git a/ActiveGS.exe/cgfiltyp.h b/ActiveGS.exe/cgfiltyp.h new file mode 100644 index 0000000..b510d95 --- /dev/null +++ b/ActiveGS.exe/cgfiltyp.h @@ -0,0 +1,100 @@ +//- ----------------------------------------------------------------- +//- (C) Copyright 2000 Blake V. Miller +//- All Rights Reserved. +//- ----------------------------------------------------------------- +//- File : CGFILTYP.H +//- Author : Blake Miller +//- Version : June 16, 2000 +//- Purpose : File Type Access +//- ----------------------------------------------------------------- + +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifndef __CGFILTYP_H__ +#define __CGFILTYP_H__ +#ifdef __cplusplus + +class CGCFileTypeAccess : public CObject +{ + DECLARE_DYNAMIC(CGCFileTypeAccess) + +public: + + CGCFileTypeAccess(); + virtual ~CGCFileTypeAccess(); + + virtual void ClearAllData(void); + + //- ---------------------------------------- + //- Effect Registry + + virtual BOOL RegSetAllInfo (void); + + virtual BOOL RegSetExtension (void); + virtual BOOL RegSetDocumentType (void); + virtual BOOL RegSetCLSID (void); + virtual BOOL RegSetShellInfo (void); + + //- ---------------------------------------- + //- Modify Member Variables + + void SetExtension (LPCTSTR); + void GetExtension (CString&) const; + + void SetContentType (LPCTSTR); + void GetContentType (CString&) const; + + void SetShellOpenCommand (LPCTSTR); + void GetShellOpenCommand (CString&) const; + + void SetShellNewCommand (LPCTSTR); + void GetShellNewCommand (CString&) const; + + void SetShellNewFileName (LPCTSTR); + void GetShellNewFileName (CString&) const; + + void SetDocumentClassName (LPCTSTR); + void GetDocumentClassName (CString&) const; + + void SetDocumentDescription (LPCTSTR); + void GetDocumentDescription (CString&) const; + + void SetDocumentCLSID (LPCTSTR); + void GetDocumentCLSID (CString&) const; + + void SetDocumentCurrentVersion (LPCTSTR); + void GetDocumentCurrentVersion (CString&) const; + + void SetDocumentDefaultIcon (LPCTSTR); + void GetDocumentDefaultIcon (CString&) const; + + void SetDocumentShellOpenCommand (LPCTSTR); + void GetDocumentShellOpenCommand (CString&) const; + +protected: + + BOOL SetRegistryValue(HKEY, LPCTSTR, LPCTSTR, LPCTSTR); + + CString m_csExtension; + CString m_csContentType; + CString m_csShellOpenCommand; + CString m_csShellNewCommand; + CString m_csShellNewFileName; + + CString m_csDocumentClassName; + CString m_csDocumentDescription; + CString m_csDocumentCLSID; + CString m_csDocumentCurrentVersion; + CString m_csDocumentDefaultIcon; + CString m_csDocumentShellOpenCommand; + +}; + +#endif // __cplusplus +#endif // __CGFILTYP_H__ + +//- ----------------------------------------------------------------- +//- END CGFILTYP.H Header File +//- ----------------------------------------------------------------- diff --git a/ActiveGS.exe/res/ActiveGSApp.ico b/ActiveGS.exe/res/ActiveGSApp.ico new file mode 100644 index 0000000000000000000000000000000000000000..d96e3b49cb44354dc90cbd4697c6479beccc7d8c GIT binary patch literal 11502 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 L0+JG?I1KwgLV^d5 literal 0 HcmV?d00001 diff --git a/ActiveGS.exe/res/ActiveGSApp.manifest b/ActiveGS.exe/res/ActiveGSApp.manifest new file mode 100644 index 0000000..110f622 --- /dev/null +++ b/ActiveGS.exe/res/ActiveGSApp.manifest @@ -0,0 +1,22 @@ + + + +Tapez ici une description de votre application + + + + + + diff --git a/ActiveGS.exe/res/ActiveGSApp.rc2 b/ActiveGS.exe/res/ActiveGSApp.rc2 new file mode 100644 index 0000000..2dfe134 --- /dev/null +++ b/ActiveGS.exe/res/ActiveGSApp.rc2 @@ -0,0 +1,13 @@ +// +// ActiveGSApp.RC2 - ressources que Microsoft Visual C++ ne modifie pas directement +// + +#ifdef APSTUDIO_INVOKED +#error "ce fichier n'est pas modifiable par Microsoft Visual C++" +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Ajouter ici les ressources modifiées manuellement... + +///////////////////////////////////////////////////////////////////////////// diff --git a/ActiveGS.exe/res/Toolbar.bmp b/ActiveGS.exe/res/Toolbar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b8c8c8e4a03e80c1adfa23a298c7b005362f42ca GIT binary patch literal 598 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 Pl-R>p1w;iN(-Ha)Z;w&R literal 0 HcmV?d00001 diff --git a/ActiveGS.exe/res/idr_main.ico b/ActiveGS.exe/res/idr_main.ico new file mode 100644 index 0000000000000000000000000000000000000000..d96e3b49cb44354dc90cbd4697c6479beccc7d8c GIT binary patch literal 11502 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 L0+JG?I1KwgLV^d5 literal 0 HcmV?d00001 diff --git a/Common.win32/ActiveCommon.aps b/Common.win32/ActiveCommon.aps new file mode 100644 index 0000000000000000000000000000000000000000..901e8956bc595f9f10b88028f6210841dfc71d06 GIT binary patch literal 54216 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 DoKqdz literal 0 HcmV?d00001 diff --git a/Common.win32/ActiveCommon.cpp b/Common.win32/ActiveCommon.cpp new file mode 100644 index 0000000..edf7323 --- /dev/null +++ b/Common.win32/ActiveCommon.cpp @@ -0,0 +1,664 @@ +#include "../common.win32/stdafx.h" +#include +#include +#include "activecommon.h" +#include "../kegs/src/sim65816.h" +#include "../kegs/src/driver.h" +#include "../kegs/src/adb.h" +#include "../common.win32/activegs.rc.h" + + +extern const char* currentBuild; + +void x_display_alert(int _abord, const char* _title, const char* _msg) +{ + + CString strsys(_msg); + CString titlesys(_title); + + MessageBox(NULL,strsys,titlesys,MB_OK); +} + + +CEmulatorWin32::CEmulatorWin32(CEmulator** _parent) : CEmulator(_parent) +{ + + m_hWnd = NULL; + hThread = NULL; +#ifndef UNDER_CE + hAlphaCursor = NULL; + activeInfo = NULL; + wStatus=NULL; + wLoading=NULL; + theConsole=NULL; + hhkLowLevelKybd=NULL; +#endif + +} + +extern void my_exit(int); + +CEmulatorWin32::~CEmulatorWin32() +{ + outputInfo("~CEmulatorWin32 (%X)\n",this); + destroy(); +#ifndef UNDER_CE + disableSystemKeys(); +#endif + +} +extern void kegsshut(); + +DWORD WINAPI CEmulatorWin32::myThread(LPVOID lpParameter) +{ + CEmulatorWin32* emu = (CEmulatorWin32*)lpParameter; + kegsinit(emu->m_hWnd); + emu->theThread(); + kegsshut(); + CloseHandle(emu->hThread); + emu->hThread=NULL; + return 0; +} + + + + + + +int CEmulatorWin32::initWindow(HWND _hWnd, HINSTANCE _hInstance) +{ + + m_hWnd = _hWnd; + hInst = _hInstance; + +#ifndef UNDER_CE + theConsole=new CConsole(); + CWnd *pw =CWnd::FromHandle(m_hWnd); + wStatus = new CActiveStatus(pw); + wStatus->Create(CActiveStatus::IDD,pw); + wLoading = new CActiveStatus(pw); + wLoading->Create(IDD_LOADING,pw); + + wLoadingBitmap[0].LoadBitmap(IDB_DISK51); + wLoadingBitmap[1].LoadBitmap(IDB_DISK52); + wLoadingBitmap[2].LoadBitmap(IDB_DISK61); + wLoadingBitmap[3].LoadBitmap(IDB_DISK62); + + enableSystemKeys(); +#endif + + resetLocalIMG(); + return 1; + +} + +void async_snd_shutdown(); +void async_sound_init(); + +void CEmulatorWin32::x_WaitForEndThread() +{ + // enlËve le mode pause + //g_pause=0; + + DWORD r; + MSG msg; + while ( ::PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE )||bInThread ) + { + // Sleep(20); + int bStillRunning = hThread && (r=WaitForSingleObject(hThread,0)==WAIT_TIMEOUT); + if (!bStillRunning) + { + outputInfo("exiting thread %X %X\n",hThread,r); + break; + } + } + +} +/* +void CEmulatorWin32::activateEmulator() +{ + if (theEmulator != this) + return ; + launchEmulator( this->hInst,this->m_hWnd ); +} +*/ + +void CEmulatorWin32::x_LaunchThread( ) +{ + if (theEmulator != this) return ; + + outputInfo("launching win32 thread\n"); + + DWORD threadID; + +#ifndef UNDER_CE + theConsole->initConsole(this->hInst,this->m_hWnd); + hAlphaCursor = CreateAlphaCursor(hInst); +#endif + + // initialize le son async + //async_sound_init(); + + hThread= CreateThread(NULL,0,myThread,this,0,&threadID ); + if (!hThread) + outputInfo("thread initialisation failed!\n"); +/* + else + bRun = true; +*/ +} + + + +LRESULT CEmulatorWin32::eventHandler(UINT umsg, WPARAM wParam, LPARAM lParam) +{ + return win_event_handler(m_hWnd,umsg,wParam,lParam); +} + +void win_event_key_async(HWND hwnd, UINT raw_vk, BOOL down, int repeat, UINT flags); + +void CEmulatorWin32::keyHandler(UINT raw_vk,BOOL down, UINT flags) +{ + win_event_key_async(m_hWnd,raw_vk, down, 0/*repeat*/, flags); +} + +int CEmulatorWin32::hasFocus() +{ + HWND h = ::GetFocus(); + if (h == m_hWnd) return 1; + else return 0; +} + +#ifndef UNDER_CE +LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) +{ + + BOOL fEatKeystroke = FALSE; + CEmulatorWin32* emu = (CEmulatorWin32*)CEmulator::theEmulator; + + // Manage the key only if the emulator has the focus + if (emu && emu->hasFocus() && nCode == HC_ACTION) + { + PKBDLLHOOKSTRUCT p; + p = (PKBDLLHOOKSTRUCT) lParam; + + int down=0; + switch (wParam) + { + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + down=1; + case WM_SYSKEYUP: + case WM_KEYUP: + + int syskeys = ( p->vkCode == VK_TAB && p->flags & LLKHF_ALTDOWN ) || + ( p->vkCode == VK_ESCAPE && p->flags & LLKHF_ALTDOWN ) || + ( p->vkCode == VK_ESCAPE && (GetKeyState(VK_CONTROL) & 0x8000)) || + p->vkCode == VK_LWIN || + p->vkCode == VK_RWIN || + p->vkCode==VK_CANCEL || + p->vkCode==VK_SCROLL || + p->vkCode==VK_TAB || + p->vkCode==VK_LMENU || + p->vkCode == VK_APPS; + + if (syskeys ) + { + fEatKeystroke = 1; + // outputInfo("LLSYKEY: %X\n",p->vkCode); + ASSERT(emu); + emu->keyHandler(p->vkCode,down,((p->flags&0x1)<<8)); + } + else + { + // outputInfo("LLKEY: %X\n",p->vkCode); + } + + break; + } + } + else + { + // outputInfo("NO LL: %X %X %X",GetActiveWindow(),::GetFocus(),emu?emu->m_hWnd:0 ); + } + + return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, + lParam)); +} + +void CEmulatorWin32::enableSystemKeys() +{ + hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, AfxGetInstanceHandle(), 0); +} + +void CEmulatorWin32::disableSystemKeys() +{ + if (hhkLowLevelKybd) + UnhookWindowsHookEx(hhkLowLevelKybd); +} +#endif + + +extern const char * activegsdownloaddir ; + +extern int g_config_control_panel; + +LRESULT CEmulatorWin32::windowProc(UINT message, WPARAM wParam, LPARAM lParam) +{ + { + if (message==WM_USER) + { + if (wParam==LOADING_ON) + { + showLoading(TRUE,lParam); + return TRUE; + } + else + if (wParam==LOADING_OFF) + { + showLoading(FALSE,lParam); + return TRUE; + } + else + if (wParam==REFRESH_STATUS) + { + refreshStatus(this->statusMsg.c_str()); + return TRUE; + } + else + return eventHandler(message,wParam,lParam); + + } + else +#ifndef UNDER_CE + if (message==WM_SETCURSOR) + { + if (hasFocus() && !g_config_control_panel) + { + SetCursor(hAlphaCursor); + return TRUE; + } + else + { + //outputInfo("nofocus\n"); + return FALSE; + } + } + else +#endif + if (message==WM_RBUTTONDOWN) + { + ShowActiveInfo(); + } + else + return eventHandler(message,wParam,lParam); + } + + return DefWindowProc(m_hWnd,message, wParam, lParam); +} + +void CEmulatorWin32::destroy() +{ + + + outputInfo("onDestroy\n"); + +#ifndef UNDER_CE + if (hAlphaCursor) + { + DestroyIcon(hAlphaCursor); + hAlphaCursor = NULL; + } + if (activeInfo) + { + activeInfo->DestroyWindow(); + delete activeInfo; + activeInfo=NULL; + } + + if (wStatus ) + { + // if (IsWindow(wStatus->m_hWnd)) + wStatus->DestroyWindow(); + delete wStatus; + wStatus = NULL; + + } + + + if (wLoading ) + { + + // if (IsWindow(wLoading->m_hWnd)) + wLoading->DestroyWindow(); + delete wLoading; + wLoading=NULL; + } + + + for(int i=0;i<4;i++) + wLoadingBitmap[i].DeleteObject(); + + if (theConsole) + { + theConsole->shutConsole(this->m_hWnd); + delete theConsole; + theConsole=NULL; + } +#endif +} + + +void CEmulatorWin32::ShowActiveInfo() +{ + if(!bInThread) + { + MessageBox(m_hWnd,_T("Close other instances first & reload page"),_T("ActiveGS"),MB_OK); + return ; + } +#ifndef UNDER_CE + if (!activeInfo) + { + CWnd *pw =CWnd::FromHandle(m_hWnd); + activeInfo = new CActiveInfo(pw); // this? + activeInfo->Create(CActiveInfo::IDD,pw); // this ? + } + + g_adb.g_warp_pointer=WARP_NONE; + g_adb.g_hide_pointer = 0; + x_hide_pointer(false); + + activeInfo->ShowWindow(SW_SHOW); +#endif +} + +void CEmulatorWin32::refreshStatus(const char* _msg) +{ +#ifndef UNDER_CE + if (wStatus) + { + RECT my; + wStatus->GetWindowRect(&my); + wStatus->ScreenToClient(&my); + my.left += 8; + my.right += 8; + my.bottom += 8; + my.top +=8; + + wStatus->MoveWindow(&my); + wStatus->SendDlgItemMessage(IDC_STATUS,WM_SETTEXT,0,(LPARAM)(LPCSTR)_msg); + wStatus->ShowWindow(SW_SHOWNOACTIVATE); + OutputDebugString(_msg); + if (wStatus->TimerID) + wStatus->KillTimer(wStatus->TimerID); + wStatus->TimerID = wStatus->SetTimer(0,2000,NULL); + + } +#endif +} + + +void CEmulatorWin32::showLoading( int _loading,int _disk) +{ +#ifndef UNDER_CE + if (wLoading) + { + if (_loading) + { + RECT my; + wLoading->GetWindowRect(&my); + wLoading->ScreenToClient(&my); + + + CWnd* w = CWnd::FromHandle(this->m_hWnd); + RECT wrect; + w->GetClientRect(&wrect); + + + my.left += wrect.right-56; + my.right += wrect.right-56; + my.bottom += 8; + my.top +=8; + wLoading->MoveWindow(&my); + + CWnd * hWndViewer = wLoading->GetDlgItem(IDC_IMAGECTRLDISK); + hWndViewer->SendMessage( STM_SETIMAGE, (WPARAM) IMAGE_BITMAP, (LPARAM) wLoadingBitmap[_disk].m_hObject ); + + wLoading->ShowWindow(SW_SHOWNOACTIVATE); + if (wLoading->TimerID) + { + wLoading->KillTimer(wLoading->TimerID); + wLoading->TimerID = NULL; + } + } + else + { + if (!wLoading->TimerID) + wLoading->TimerID = wLoading->SetTimer(2,2000,NULL); + } + + } +#endif +} + +#ifndef UNDER_CE +void DeleteCursor(HCURSOR theCursor) +{ + DestroyIcon(theCursor); +} + +typedef struct { + DWORD bV5Size; + LONG bV5Width; + LONG bV5Height; + WORD bV5Planes; + WORD bV5BitCount; + DWORD bV5Compression; + DWORD bV5SizeImage; + LONG bV5XPelsPerMeter; + LONG bV5YPelsPerMeter; + DWORD bV5ClrUsed; + DWORD bV5ClrImportant; + DWORD bV5RedMask; + DWORD bV5GreenMask; + DWORD bV5BlueMask; + DWORD bV5AlphaMask; + DWORD bV5CSType; + CIEXYZTRIPLE bV5Endpoints; + DWORD bV5GammaRed; + DWORD bV5GammaGreen; + DWORD bV5GammaBlue; + DWORD bV5Intent; + DWORD bV5ProfileData; + DWORD bV5ProfileSize; + DWORD bV5Reserved; +} MYBITMAPV5HEADER; + + + +HCURSOR CreateAlphaCursor(HINSTANCE hInst) +{ +HDC hMemDC; +DWORD dwWidth, dwHeight; +MYBITMAPV5HEADER bi; +HBITMAP hBitmap, hOldBitmap; +void *lpBits; +DWORD x,y; +HCURSOR hAlphaCursor = NULL; + +HDC hdc; +HDC src; +HBITMAP hMonoBitmap; +DWORD *lpdwPixel; +ICONINFO ii; +HGDIOBJ hOldSrc; + + HBITMAP hBm = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_ALPHACURSOR)); + if (!hBm) + { + outputInfo("Load AlphaCursor failed (inst:%0X)\n",hInst); + return NULL; + } + + BITMAP bm; + GetObject(hBm, sizeof(bm), &bm); + /* + alpha.GetBitmap(&bm); + */ + + dwWidth = bm.bmWidth; // width of cursor + dwHeight = bm.bmHeight; // height of cursor + + ZeroMemory(&bi,sizeof(MYBITMAPV5HEADER)); + bi.bV5Size = sizeof(MYBITMAPV5HEADER); + bi.bV5Width = dwWidth; + bi.bV5Height = dwHeight; + bi.bV5Planes = 1; + bi.bV5BitCount = 32; + bi.bV5Compression = BI_BITFIELDS; + // The following mask specification specifies a supported 32 BPP + // alpha format for Windows XP. + bi.bV5RedMask = 0x00FF0000; + bi.bV5GreenMask = 0x0000FF00; + bi.bV5BlueMask = 0x000000FF; + bi.bV5AlphaMask = 0xFF000000; + + + hdc = GetDC(NULL); + + // Create the DIB section with an alpha channel. + hBitmap = CreateDIBSection(hdc, (BITMAPINFO *)&bi, DIB_RGB_COLORS, + (void **)&lpBits, NULL, (DWORD)0); + + hMemDC = CreateCompatibleDC(hdc); + src = CreateCompatibleDC(hdc); + ReleaseDC(NULL,hdc); + + hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap); + hOldSrc = SelectObject( src, hBm ); + BitBlt(hMemDC,0,0,dwWidth,dwHeight,src,0,0,SRCCOPY); + SelectObject(src,hOldSrc); + DeleteDC(src); + SelectObject(hMemDC,hOldBitmap); + DeleteDC(hMemDC); + + // Create an empty mask bitmap + hMonoBitmap = CreateBitmap(dwWidth,dwHeight,1,1,NULL); + + lpdwPixel = (DWORD *)lpBits; + for (x=0;xdisableConsole(); +#endif +} + +int CEmulatorWin32::activeRead(char *buf) +{ +#ifndef UNDER_CE + CConsole* c = theConsole; + if (c) + return c->read(buf); +#endif + buf[0]=0; + return 0; + +} +void CEmulatorWin32::getEngineString(MyString& _engine) +{ + + _engine ="WIN32"; +#ifdef USE_RASTER + _engine+="(vbl)"; +#endif +}; + + +void x_refresh_panel(int _enum) +{ +#ifndef UNDER_CE + CEmulatorWin32* p = (CEmulatorWin32*)CEmulator::theEmulator; + if (!p) return; + if (!p->activeInfo) return ; + if (_enum & PANEL_PARAMS) + p->activeInfo->updateParams(); + if (_enum & (PANEL_DISK | PANEL_RUNTIME)) + p->activeInfo->refresh(); +#endif +} + + +const int soundWin32Ressources[]= +{ + NULL, + IDR_SPINUPSEARCH1, + IDR_SPINUPSEARCH2 +}; + +void x_play_sound(enum_sound hSound) +{ + HINSTANCE h = ((CEmulatorWin32*)CEmulator::theEmulator)->hInst; + BOOL err = PlaySound(MAKEINTRESOURCE(soundWin32Ressources[hSound]), h, SND_RESOURCE | SND_ASYNC); +} + +int x_is_sound_playing(enum_sound _hSound) +{ + return 0; +}; \ No newline at end of file diff --git a/Common.win32/ActiveCommon.rc b/Common.win32/ActiveCommon.rc new file mode 100644 index 0000000..80bc15f --- /dev/null +++ b/Common.win32/ActiveCommon.rc @@ -0,0 +1,334 @@ +// Microsoft Visual C++ generated resource script. +// +#include "activecommonres.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Français (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "activecommonres.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_DISK51 BITMAP "bitmap2.bmp" + +IDB_DISK52 BITMAP "disk52.bmp" + +IDB_DISK61 BITMAP "disk54.bmp" + +IDB_DISK62 BITMAP "disk55.bmp" + +IDB_ALPHACURSOR BITMAP "bmp00001.bmp" + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ACTIVEINFO DIALOGEX 0, 0, 247, 143 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ActiveGS v2.3 (Build BETA 07/MAY/09)" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_ACTIVETAB,"SysTabControl32",0x0,7,7,233,129 +END + +IDD_TABGENERAL DIALOGEX 0, 0, 192, 105 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "ActiveGS v3.6",IDC_STATIC,6,18,72,8 + LTEXT "Olivier Goguel",IDC_URLOG,84,18,54,8 + LTEXT "Kegs v0.91",IDC_STATIC,6,30,72,8 + LTEXT "Kent Dickey",IDC_URLKD,84,30,54,8 + LTEXT "Active GS Home Page",IDC_STATIC,6,66,70,8 + LTEXT "http://activegs.freetoolsassociation.com",IDC_URLFTA,84,66,99,8 + LTEXT "Build :",IDC_BUILD,7,97,178,8 + LTEXT "Active GS Home Page",IDC_VERSION,7,90,178,8 + LTEXT "Disk Drive Sounds",IDC_STATIC,7,44,72,8 + LTEXT "Moose O'Malley",IDC_URLKD2,85,44,54,8 +END + +IDD_TABDISKCONF DIALOGEX 0, 0, 230, 117 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_SLOTLIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,6,6,209,68 + PUSHBUTTON "Mount",IDC_MOUNTBUTTON,174,96,41,12 + EDITTEXT IDC_EDITURL,48,96,96,12,ES_AUTOHSCROLL,WS_EX_ACCEPTFILES + PUSHBUTTON "EJect",IDC_EJECT,48,78,30,12 + PUSHBUTTON "Reload",IDC_RELOAD,6,96,36,12 + PUSHBUTTON "5",IDC_REBOOT5,161,78,16,12 + PUSHBUTTON "6",IDC_REBOOT6,179,78,16,12 + PUSHBUTTON "7",IDC_REBOOT7,198,78,16,12 + LTEXT "Reboot",IDC_STATICSLOT2,136,80,23,9 + COMBOBOX IDC_COMBOSLOT,6,78,36,66,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDC_FILESELECT,146,96,16,12 + PUSHBUTTON "Swap",IDC_SWAP,81,78,30,12 +END + +IDD_TABPARAM DIALOGEX 0, 0, 198, 120 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_PARAMLIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,26,184,78 +END + +IDD_TABOPTION DIALOGEX 0, 0, 239, 113 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Use persistent storage",IDC_NOIECACHE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,18,108,10 + LTEXT "Persistent Directory",IDC_STATIC,12,30,64,12 + EDITTEXT IDC_PERSISTENT,78,30,138,14,ES_AUTOHSCROLL | ES_READONLY + GROUPBOX "Persistent Storage",IDC_STATIC,6,6,216,40 + GROUPBOX "Debug Options (for advanced users only)",IDC_STATIC,6,48,216,40 + CONTROL "Halt on bad memory read",IDC_HALTBADREAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,60,96,10 + CONTROL "Halt on all events",IDC_HALTEVENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,120,60,84,10 + CONTROL "Halt on bad memory access",IDC_HALTBADACCESS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,72,102,10 + PUSHBUTTON "Default Options",IDC_DEFAULTOPTIONS,150,72,66,12 + PUSHBUTTON "Clear Cache",IDC_CLEARCACHE,150,12,66,12,WS_DISABLED + CONTROL "Enable Realtime capture (Rewind Mode)",IDC_ENABLEREWIND, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,90,162,10 +END + +IDD_TABHELP DIALOGEX 0, 0, 230, 110 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "F4",IDC_STATIC,12,84,9,8 + LTEXT "Toggle joystick mode",IDC_STATIC,66,84,68,8 + LTEXT "ALT or F1",IDC_STATIC,12,18,32,8 + LTEXT "Open-Apple",IDC_STATIC,66,18,39,8 + LTEXT "WIN or F2",IDC_STATIC,12,30,34,8 + LTEXT "Closed-Apple / Option",IDC_STATIC,66,30,82,8 + LTEXT "F8",IDC_STATIC,12,72,9,8 + LTEXT "Toggle mouse lock",IDC_STATIC,66,72,59,8 + GROUPBOX "Apple II GS",IDC_STATIC,6,6,216,48 + GROUPBOX "Emulator",IDC_STATIC,6,60,216,48 + LTEXT "PAUSE or F12",IDC_STATIC,12,42,45,8 + LTEXT "Reset",IDC_STATIC,66,42,20,8 + LTEXT "F5",IDC_STATIC,12,97,9,8 + LTEXT "Pause/Resume",IDC_STATIC,66,97,48,8 +END + +IDD_TABRUNTIME1 DIALOGEX 0, 0, 230, 117 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "?",IDC_SPEED,144,6,79,8 + COMBOBOX IDC_SPEEDMODE,60,6,66,53,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + CONTROL "",IDC_ZIPSLIDER,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_TOOLTIPS | WS_TABSTOP,60,18,66,24 + LTEXT "Joystick Mode",IDC_STATIC,6,42,46,12 + COMBOBOX IDC_JOYSTICK,60,42,66,66,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Pause",IDC_PAUSE,144,78,66,12 + PUSHBUTTON "Screenshot",IDC_CONSOLEBUTTON2,144,60,66,12 + PUSHBUTTON "Capture State",IDC_SAVESTATE,60,96,66,12 + PUSHBUTTON "Restore State",IDC_RESTORESTATE,144,96,66,12 + LTEXT "Speed Mode",IDC_STATIC,6,6,48,12 + LTEXT "Video Type",IDC_STATIC,6,60,46,12 + COMBOBOX IDC_VIDEOFX,60,60,66,66,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "Color Mode",IDC_STATIC,6,78,46,12 + COMBOBOX IDC_COLORMODE,60,78,66,66,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP + LTEXT "Zip Speed",IDC_STATIC,6,24,48,12 + PUSHBUTTON "Display Console",IDC_CONSOLEBUTTON3,144,24,66,12 + COMBOBOX IDC_STATE,7,96,36,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP +END + +IDD_LOADING DIALOGEX 0, 0, 30, 24 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_BORDER | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_IMAGECTRLDISK,"Static",SS_BITMAP | SS_CENTERIMAGE,0,0,30,24 +END + +IDD_STATUS DIALOGEX 0, 0, 252, 22 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_BORDER +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "(...)",IDC_STATUS,7,7,238,8,0,WS_EX_TRANSPARENT +END + +IDD_TABXML DIALOGEX 0, 0, 230, 110 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_SYSMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "Name",-1,12,18,32,8 + LTEXT "Open-Apple",IDC_MULTIPLENAME,66,18,138,8 + LTEXT "Publisher",-1,12,30,31,8 + LTEXT "Closed-Apple / Option",IDC_MULTIPLEPUBLISHER,66,30,145,8 + LTEXT "Current",-1,12,72,26,8 + LTEXT "...",IDC_MULTIPLECURRENT,66,72,59,8 + GROUPBOX "Running",-1,6,6,216,48 + GROUPBOX "Multiple Disk",-1,6,60,216,42 + LTEXT "Year",-1,12,42,45,8 + LTEXT "Reset",IDC_MULTIPLEYEAR,66,42,148,8 + PUSHBUTTON "Swap",IDC_MULTIPLESWAP,161,69,54,12 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_ACTIVEINFO, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 240 + TOPMARGIN, 7 + BOTTOMMARGIN, 136 + END + + IDD_TABGENERAL, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 185 + TOPMARGIN, 7 + BOTTOMMARGIN, 90 + END + + IDD_TABDISKCONF, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 223 + TOPMARGIN, 7 + BOTTOMMARGIN, 108 + END + + IDD_TABPARAM, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 191 + TOPMARGIN, 7 + BOTTOMMARGIN, 113 + END + + IDD_TABOPTION, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 232 + TOPMARGIN, 7 + BOTTOMMARGIN, 106 + END + + IDD_TABHELP, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 223 + TOPMARGIN, 7 + BOTTOMMARGIN, 103 + END + + IDD_TABRUNTIME1, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 223 + TOPMARGIN, 7 + BOTTOMMARGIN, 110 + END + + IDD_LOADING, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 23 + TOPMARGIN, 7 + BOTTOMMARGIN, 17 + END + + IDD_STATUS, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 245 + TOPMARGIN, 7 + BOTTOMMARGIN, 15 + END + + IDD_TABXML, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 223 + TOPMARGIN, 7 + BOTTOMMARGIN, 103 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Cursor +// + +IDC_CURSOR1 CURSOR "cursor1.cur" + + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +IDD_TABGENERAL AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +#endif // Français (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Common.win32/ActiveDownloadWin32.cpp b/Common.win32/ActiveDownloadWin32.cpp new file mode 100644 index 0000000..44f9b70 --- /dev/null +++ b/Common.win32/ActiveDownloadWin32.cpp @@ -0,0 +1,256 @@ +#include "../common.win32/stdafx.h" +#include +#ifndef UNDER_CE +#include +#include +#endif +#include +#include "../common/cemulatorctrl.h" +#include "../Libraries/unzip101e/unzip.h" +#include "../kegs/src/sim65816.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +bool CDownload::GetFile( const char *url, const char *filename) +{ + #define HTTPBUFLEN 4096 // Size of HTTP Buffer... + char httpbuff[HTTPBUFLEN]; + +#if defined(ACTIVEGSKARATEKA) + if (!strncmp(url,"http://asset/",13)) + { + extern bool x_load_asset( const char *url, const char *filename); + return x_load_asset(url,filename); + + } +#endif + + CHttpConnection* pServer = NULL; + //CFile* remoteFile=NULL; + CHttpFile* remoteFile=NULL; + CFile* myfile = NULL; + int remotefileopen=0; + + TOSYSTEMCHAR(filename,filenamesys); + + if (filename) + { + outputInfo("*** Downloading %s to %s \n",url,filename); + showProgress(url,0); + } + + DWORD dwLength=0; + + TRY + { + + CString serverName; + CString serverFile; + DWORD dwServiceType; + INTERNET_PORT nPort; + DWORD dwRet; + + CInternetSession mysession(_T("ActiveGS")); + + TOSYSTEMCHAR(url,urlsys); + + if (!AfxParseURLEx(urlsys,dwServiceType,serverName,serverFile,nPort,CString(),CString(),ICU_NO_ENCODE)) + { + outputInfo("*** misformed url/filename : %s",url); + AfxThrowFileException(0,0,NULL); + return false; + } + + if (dwServiceType ==AFX_INET_SERVICE_FILE) + { + + outputInfo("*** not an http file : %s",url); + AfxThrowFileException(0,0,NULL); + return false; + } + + pServer = mysession.GetHttpConnection(serverName/*,INTERNET_FLAG_ASYNC*/, nPort); + + //outputInfo("*** GetHttpConnection %s\n",serverName); + + remoteFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET, serverFile); + + //outputInfo("*** OpenRequest %s\n",serverFile); + + if (!remoteFile->SendRequest()) + { + outputInfo("*** cannot SendRequest : %s",serverName); + AfxThrowFileException(0,0,NULL); + return false; + } + remotefileopen=1; + + if (!remoteFile->QueryInfoStatusCode(dwRet)) + { + outputInfo("*** QueryInfoStatusCode failed (%d)\n",GetLastError()); + } + + if (dwRet != HTTP_STATUS_OK) + { + outputInfo("*** cannot query http serveur : %s (status=%d)\n",serverName,dwRet); + AfxThrowFileException(0,0,NULL); + return false; + } + + DWORD BufferLength=sizeof(dwLength); + + if (!remoteFile->QueryInfo( HTTP_QUERY_CONTENT_LENGTH|HTTP_QUERY_FLAG_NUMBER, &dwLength, &BufferLength, NULL)) + { + + // File does not exist ? + + if (GetLastError()!=ERROR_HTTP_HEADER_NOT_FOUND) + { + outputInfo("*** cannot query file size (%d) (%s || %s)\n",GetLastError(),serverName,serverFile); + AfxThrowFileException(0,0,NULL); + return false; + } + else + { + // ce message apparait dans le cas des stats : pas de header ? + if (filename) + outputInfo("*** cannot query file size ERROR_HTTP_HEADER_NOT_FOUND (%s || %s)\n",serverName,serverFile); + } + } + + if (filename) + myfile = new CFile(filenamesys, CFile::modeCreate|CFile::modeWrite|CFile::typeBinary); + + int nbread=0; + int numbytes; + + + int pourcent=0; + + while (numbytes = remoteFile->Read(httpbuff, HTTPBUFLEN)) + { + nbread+=numbytes; + + if (myfile) + myfile->Write(httpbuff, numbytes); + + + if (dwLength) + pourcent = (nbread*100)/dwLength; + else + pourcent = (pourcent+5)%100; + + if (myfile) + { + showProgress(url,pourcent); //("downloading: %s (%3d%%)",getfile(url),pourcent); + + if (r_sim65816.should_emulator_terminate()) + { + outputInfo("Download aborted (%s)\n",url); + AfxThrowFileException(0,0,NULL); + } + } + } + + if (remoteFile) + { + remoteFile->Close(); + delete remoteFile; + remoteFile=NULL; + } + + if (pServer) + { + pServer->Close(); + delete pServer; + pServer=NULL; + } + + if (myfile) + { + myfile->Close(); + delete myfile; + myfile=NULL; + } + + } + + + CATCH_ALL(error) + { + int err = GetLastError(); + + showStatus("Cannot download %s\n",getfile(url)); + + if (myfile) { myfile->Close(); delete myfile; } + if (remoteFile && remotefileopen) { remoteFile->Close(); delete remoteFile; } + if (pServer) { pServer->Close(); delete pServer; } + + DeleteFile(filenamesys); + + return false; + } + END_CATCH_ALL; + + return true; +} + + + +bool CDownload::retrievePersistentZippedFile(const char* url,int _order,MyString& _path, MyString& _short) +{ + + MyString pdir = getPersistentDir(url); + CString dir(pdir); + + // enum + CString search; + search.Format(_T("%s\\%d_*.*"),dir.GetString(),_order); + + WIN32_FIND_DATA FindFileData; + HANDLE hFind; + + hFind = FindFirstFile(search, &FindFileData); + + if (hFind == INVALID_HANDLE_VALUE) + return false; + + MyString found(FindFileData.cFileName); + _path.Format("%s\\%s",pdir,found.c_str()); + _short = found.Mid(2); + return true; + +} + + +void CDownload::createDirectory(const char *_dir) +{ + TOSYSTEMCHAR(_dir,dirsys); + CreateDirectory(dirsys,NULL); +} + +extern const char * activegsdownloaddir; +extern const char * activegspersistentdir; + +void CDownload::initPersistentSystemPath(MyString& path) +{ + + TCHAR pfraw[MAX_PATH]; + SHGetSpecialFolderPath(NULL,pfraw,CSIDL_PERSONAL,TRUE); + path = pfraw; +} + + +void CDownload::deleteFile(const char* _dir) +{ +#ifndef WINCE + remove(_dir); +#endif +} + +void CDownload::deleteDirectory(const char* _dir, int keepDir) +{ +} diff --git a/Common.win32/ActiveGS.aps b/Common.win32/ActiveGS.aps new file mode 100644 index 0000000000000000000000000000000000000000..3307d4e3f65bd0b8cf9cc684ab3f31b2bed58922 GIT binary patch literal 172992 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

lr;=nB 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�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 +#include "ZipArchive.h" +#include +#include "activetools.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +TCActiveBaseCollection CActiveBase::m_Collection; +HHOOK CActiveBase::m_hHook=NULL; + +LRESULT CALLBACK CActiveBase::GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam) +{ + // If this is a keystrokes message, pass it to IsDialogMessage for tab + // and accelerator processing + LPMSG lpMsg = (LPMSG) lParam; + + if ( + (nCode >= 0) && + // PM_REMOVE == wParam && + ( + (lpMsg->message == WM_LBUTTONDOWN) || + (lpMsg->message == WM_MOUSEMOVE) || + (lpMsg->message == WM_LBUTTONUP) || + (lpMsg->message == WM_RBUTTONDOWN) || + (lpMsg->message == WM_MBUTTONDOWN) || + (lpMsg->message == WM_MBUTTONUP) || + (lpMsg->message == WM_RBUTTONUP) + ) + ) + + + { + CActiveBase* pObj; //, hActiveWindow = GetActiveWindow(); + TCActiveBaseCollection::iterator it =m_Collection.begin(); + + // check each window we manage to see if the message is meant for them + while (it != m_Collection.end()) + { + pObj = *it; + + // if (::IsWindow(hWnd)) + // ::IsDialogMessage(hWnd, lpMsg) + + { + pObj->m_ttip.RelayEvent(lpMsg); + /* + lpMsg->hwnd = NULL; + lpMsg->message = WM_NULL; + lpMsg->lParam = 0L; + lpMsg->wParam = 0; + */ + + // break; + } + + it++; + } + } + + // Passes the hook information to the next hook procedure in + // the current hook chain. + return ::CallNextHookEx(m_hHook, nCode, wParam, lParam); +} + +HRESULT CActiveBase::InstallHook() +{ + // make sure the hook is installed + if (m_hHook == NULL) + { + m_hHook = ::SetWindowsHookEx(WH_GETMESSAGE, + GetMessageProc, + AfxGetInstanceHandle(), + GetCurrentThreadId()); + + // is the hook set? + if (m_hHook == NULL) + { + return E_UNEXPECTED; + } + } + + // add the window to our list of managed windows + if (m_Collection.find(this) == m_Collection.end()) + m_Collection.insert(this); + + return S_OK; +} + +HRESULT CActiveBase::UninstallHook() +{ + HRESULT hr = S_OK; + + // was the window found? + if (m_Collection.erase(this) == 0) + return E_INVALIDARG; + + // is this the last window? if so, then uninstall the hook + if (m_Collection.size() == 0 && m_hHook) + { + if (!::UnhookWindowsHookEx(m_hHook)) + hr = HRESULT_FROM_WIN32(::GetLastError()); + + m_hHook = NULL; + } + + return hr; +} diff --git a/Common.win32/ActiveInfo.cpp b/Common.win32/ActiveInfo.cpp new file mode 100644 index 0000000..c9e5b54 --- /dev/null +++ b/Common.win32/ActiveInfo.cpp @@ -0,0 +1,440 @@ +// ActiveInfo.cpp : fichier d'implémentation +// + +#include "../common.win32/stdafx.h" +#include "activeinfo.h" +#include "tabgeneral.h" +#include "taboption.h" +#include "tabruntime.h" +#include "tabxml.h" +#include "diskediturl.h" +#include "activecommon.h" +#include "../common/svnversion.h" +#include "../kegs/src/moremem.h" +#include "../kegs/src/sim65816.h" + +// Boîte de dialogue CActiveInfo + +IMPLEMENT_DYNAMIC(CActiveInfo, CDialog) +CActiveInfo::CActiveInfo(CWnd* pParent /*=NULL*/) + : CDialog(CActiveInfo::IDD, pParent) +{ + pTabDialog = NULL; + uTimer=0; + +} + +CActiveInfo::~CActiveInfo() +{ + +} + +void CActiveInfo::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +// DDX_Control(pDX, IDC_ACTIVETAB, m_InfoTab); +// DDX_Control(pDX, IDC_URLOG, urlOG); +} + + +BEGIN_MESSAGE_MAP(CActiveInfo, CDialog) + ON_NOTIFY(TCN_SELCHANGE, IDC_ACTIVETAB, OnTcnSelchangeActivetab) + ON_WM_TIMER() + ON_WM_DESTROY() +END_MESSAGE_MAP() + +void CActiveInfo::freeTabDialog() +{ + if (pTabDialog) + { + if (uTimer) KillTimer(uTimer); + uTimer=0; + pTabDialog->DestroyWindow(); + delete pTabDialog; + pTabDialog=NULL; + + } +} + + +// Gestionnaires de messages CActiveInfo + +BOOL CActiveInfo::OnInitDialog() +{ + CDialog::OnInitDialog(); + + int i=0; + CTabCtrl* infoTab = (CTabCtrl*)GetDlgItem(IDC_ACTIVETAB); + if (infoTab) + { + //infoTab->InsertItem(i++,"Image") ; + infoTab->InsertItem(i++,"Disk Conf."); + infoTab->InsertItem(i++,"Runtime Info"); + infoTab->InsertItem(i++,"Options"); + infoTab->InsertItem(i++,"Variables"); + infoTab->InsertItem(i++,"Help"); + infoTab->InsertItem(i++,"Credits"); + OnTcnSelchangeActivetab(NULL,NULL); + } + else + outputInfo("getdlgitem failed: %d",GetLastError()); + /* + m_InfoTab.InsertItem(1,"Runtime Info"); + m_InfoTab.InsertItem(2,"Console"); + */ + + // change le titre + SetWindowText(ACTIVEGSVERSIONSTR); + //char s[1024]; + //GetWindowText(hWnd,s,1024); + CenterWindow(); + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION : les pages de propriétés OCX devraient retourner FALSE +} + +extern int g_zipgs_reg_c05a; + + +void CActiveInfo::OnTcnSelchangeActivetab(NMHDR *pNMHDR, LRESULT *pResult) +{ + CTabCtrl* infoTab = (CTabCtrl*)GetDlgItem(IDC_ACTIVETAB); + //static const int sel2id[]={ IDD_TABGENERAL,IDD_TABOPTION,IDD_TABRUNTIME1,IDD_TABDISKCONF,IDD_TABPARAM,IDD_TABHELP,0}; + static const int sel2id[]={ + // IDD_TABXML, + IDD_TABDISKCONF, + IDD_TABRUNTIME1, + IDD_TABOPTION, + IDD_TABPARAM, + IDD_TABHELP, + IDD_TABGENERAL, + 0}; + int sel = infoTab->GetCurSel(); + int id = sel2id[sel]; + + freeTabDialog(); + + + if (!id) return; + + CRect m_ClientRect,WindowRect; + + // Determine the size of the area for the contents + infoTab->GetClientRect(&m_ClientRect); + infoTab->AdjustRect(FALSE, &m_ClientRect); + + // Determine the offset within the view's client area + + infoTab->GetWindowRect(&WindowRect); + infoTab->ScreenToClient(WindowRect); + m_ClientRect.OffsetRect(WindowRect.left, WindowRect.top); + + + switch(id) + { + case IDD_TABGENERAL: + pTabDialog = new CTabGeneral(infoTab); + break; + case IDD_TABOPTION: + pTabDialog = new CTabOption(infoTab); + break; + case IDD_TABRUNTIME1: + pTabDialog = new CTabRuntime(infoTab); + break; + case IDD_TABDISKCONF: + pTabDialog = new CDiskEditURL(infoTab); + break; + case IDD_TABXML: + pTabDialog = new CTabXML(infoTab); + break; + default: + pTabDialog = new CTabActiveInfo(id,infoTab); + } + + pTabDialog->Create(id,infoTab); + + switch(id) + { + case IDD_TABDISKCONF: + { + + CComboBox *pCombo = (CComboBox*)pTabDialog->GetDlgItem(IDC_COMBOSLOT); + ASSERT(pCombo); + CDiskEditURL* pDialogDisk = (CDiskEditURL*)pTabDialog; + MyString s; + int id; + int err; + for(int slot=5;slot<=7;slot++) + { + int maxdrive=2; + if (slot==7) maxdrive=MAXSLOT7DRIVES; + for(int disk=1;disk<=maxdrive;disk++) + { + s.Format("S%dD%d",slot,disk); + id = slot*10+disk ; + err = pCombo->InsertString(-1,s.c_str()); + pCombo->SetItemData(err,id); + } + } + + int d = pDialogDisk->selectedItem ; + if (d==-1) d=0; + pCombo->SetCurSel(d); + pDialogDisk->OnCbnSelchangeComboslot(); + + CListCtrl *pList = (CListCtrl*)pTabDialog->GetDlgItem(IDC_SLOTLIST); + pList->InsertColumn(0,"Slot"); + pList->SetColumnWidth(0,40); + /* + pList->InsertColumn(1,"(E)"); + pList->SetColumnWidth(1,10); + */ + pList->InsertColumn(1,"Filename"); + pList->SetColumnWidth(1,100); + pList->InsertColumn(2,"Size"); + pList->SetColumnWidth(2,50); + pList->InsertColumn(3,"Prefix"); + pList->SetColumnWidth(3,120); + /* + pList->InsertColumn(5,"Path"); + pList->SetColumnWidth(5,1000); + */ + // updateRuntimeImages(); + } + break; + case IDD_TABRUNTIME1: + { + CSliderCtrl *pSlider = (CSliderCtrl*)pTabDialog->GetDlgItem(IDC_ZIPSLIDER); + pSlider->SetRange(0,15); + pSlider->SetPos(15-(g_moremem.g_zipgs_reg_c05a>>4)&0x0F); + updateRuntimeSpeed(); + uTimer = SetTimer(1, 1000, 0); + + break; + } + case IDD_TABPARAM: + { + CListCtrl *pList = (CListCtrl*)pTabDialog->GetDlgItem(IDC_PARAMLIST); + pList->InsertColumn(0,"Name"); + pList->SetColumnWidth(0,80); + pList->InsertColumn(1,"Value"); + pList->SetColumnWidth(1,160); + pList->InsertColumn(2,"Hex"); + pList->SetColumnWidth(2,80); + updateParams(); + break; + } + case IDD_TABOPTION: + { + + } + break; + case IDD_TABXML: + break; + + case IDD_TABGENERAL: + { + + CWnd *pText = (CWnd*)pTabDialog->GetDlgItem(IDC_BUILD); + if (pText) + { + const char * builddate = "Built on " ACTIVEGSDATE ; + pText->SetWindowText(builddate); + } + pText = (CWnd*)pTabDialog->GetDlgItem(IDC_VERSION); + if (pText) + { + const char * builddate = ACTIVEGSVERSIONSTRFULL; + pText->SetWindowText(builddate); + } + + + } + break; + default: + break; + } + + + refresh(); + pTabDialog->MoveWindow(m_ClientRect); + pTabDialog->ShowWindow(SW_SHOW); + + if (pResult) + *pResult = 0; + +} + +/* +void CActiveInfo::updateRuntimeImages() +{ + CListCtrl *pList = (CListCtrl*)pTabDialog->GetDlgItem(IDC_SLOTLIST); + if (!pList) return ; + + pList->DeleteAllItems(); + + int nbi=0; + for(int slot=5;slot<=7;slot++) + for(int disk=1;disk<=2;disk++) + for(int active=0;activegetLocalMultipleIMGInfo(slot,disk,info,active); + if (!ret) continue; + if (info.status==UNDEFINED || info.status ==NOTHING) continue; + + MyString str; + str.Format("S%dD%d",slot,disk); + if (ret==1) + str +="*"; + pList->InsertItem(nbi,str.c_str()); + // pList->SetItemData(nbi,(slot-5); + // pList->SetItemText(nbi,1,"e"); + + + MyString shortname (info.shortname.c_str()); + + MyString sizeStr; + if (info.size>1*1024*1024) + sizeStr.Format("%4dMb",info.size/(1024*1024)); + else + sizeStr.Format("%4dKo",info.size/1024); + + MyString prefix; + switch(info.status) + { + case MOUNTED: + prefix = info.prefix.c_str(); + break; + case EJECTED: + if (!info.filename.IsEmpty()) + prefix = "*EJECTED*"; + break; + case READY2MOUNT: + prefix = "*READY2MOUNT*"; + shortname = getfile(info.url); + break; + case DELAYEDMOUNT: + prefix = "*DELAYEDMOUNT*"; + shortname = getfile(info.url); + break; + case FAILED: + prefix ="*FAILED*"; + break; + } + pList->SetItemText(nbi,1,shortname.c_str()); + pList->SetItemText(nbi,2,sizeStr.c_str()); + pList->SetItemText(nbi,3,prefix.c_str()); + + // pList->SetItemText(nbi,5,info.name); + + nbi++; + + } + +} +*/ + + + +//extern char targetSpeed[256]; +extern char estimatedSpeed[256]; +//extern int g_speed_fast; + +void CActiveInfo::updateRuntimeSpeed() +{ + + CWnd* speedTab = (CWnd*)pTabDialog->GetDlgItem(IDC_SPEED); + if (!speedTab) return ; + + CString speed; // pour AppendFormat + speed.Format("%s MHz ",estimatedSpeed); + + if (g_sim65816.g_speed_fast) + { +// speed.AppendFormat("(%s MHz)",targetSpeed); + } + else + speed.Append("(1.0 MHz*)"); + + speedTab->SetWindowText(speed); + + CComboBox *pCombo = (CComboBox*)pTabDialog->GetDlgItem(IDC_SPEEDMODE); + if (pCombo && ( ((CTabRuntime*)pTabDialog)->enableSpeedChange)) + { + CEmulator* emu = CEmulator::theEmulator ; + int sel = pCombo->GetCurSel(); + int speed = pCombo->GetItemData(sel); + int sp = g_sim65816.get_limit_speed(); + if (sp != speed) + { + namevalue& nv = option.find(OPTION_SPEED); + int ispeed = nv.getOrder(g_sim65816.get_limit_speed()); + pCombo->SetCurSel(ispeed); + printf("resetting speed to %s (%d)\n",nv.getDescription(sp),sp); + } + } + + + CSliderCtrl *pSlider = (CSliderCtrl*)pTabDialog->GetDlgItem(IDC_ZIPSLIDER); + if (pSlider) + pSlider->SetPos(15-(g_moremem.g_zipgs_reg_c05a>>4)&0x0F); + +} + +void CActiveInfo::OnTimer(UINT_PTR nIDEvent) +{ + updateRuntimeSpeed(); + CDialog::OnTimer(nIDEvent); +} + +void CActiveInfo::updateParams() +{ + CListCtrl *pList = (CListCtrl*)pTabDialog->GetDlgItem(IDC_PARAMLIST); + if (!pList) return ; + pList->DeleteAllItems(); + CEmulator* emu=CEmulator::theEmulator; + int pos = 0; + for(int i=0;inbparams;i++) + { + pList->InsertItem(pos,emu->params[i].data.c_str()); + pList->SetItemText(pos,1,emu->params[i].value.c_str()); + MyString hex; + hex.Format("(%X)",emu->params[i].hex); + pList->SetItemText(pos,2,hex.c_str()); + pos++; + } + for(int i=0;iname; + pList->InsertItem(pos,name); + MyString desc; option.getStrValue(desc,(option_id)i); + pList->SetItemText(pos,1,desc.c_str()); + if (option.options[i].def->convertTableInt) + { + MyString hex; + hex.Format("(%d)",option.options[i].intvalue); + pList->SetItemText(pos,2,hex.c_str()); + + } + pos++; + } +} + +void CActiveInfo::OnDestroy() +{ + CDialog::OnDestroy(); + + // TODO : ajoutez ici le code de votre gestionnaire de messages + freeTabDialog(); +} + +void CActiveInfo::refresh() +{ + if (pTabDialog) + pTabDialog->refresh(); + +} + + + diff --git a/Common.win32/ActiveInfo.h b/Common.win32/ActiveInfo.h new file mode 100644 index 0000000..d2e70f1 --- /dev/null +++ b/Common.win32/ActiveInfo.h @@ -0,0 +1,47 @@ +#pragma once +#include "afxcmn.h" +#include "hyperlink.h" +#include "activecommonres.h" + +class CTabActiveInfo : public CDialog +{ +public: + CTabActiveInfo(UINT IDD, CWnd* pParent /*=NULL*/) + : CDialog(IDD, pParent) {} + + + virtual void refresh() {} ; +}; + +// Boîte de dialogue CActiveInfo + +class CActiveInfo : public CDialog +{ + DECLARE_DYNAMIC(CActiveInfo) + +public: + CActiveInfo(CWnd* pParent = NULL); // constructeur standard + virtual ~CActiveInfo(); + +// Données de boîte de dialogue + enum { IDD = IDD_ACTIVEINFO }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + + DECLARE_MESSAGE_MAP() +public: +// CActiveTab m_InfoTab; + CTabActiveInfo* pTabDialog; + UINT uTimer; + virtual BOOL OnInitDialog(); + afx_msg void OnTcnSelchangeActivetab(NMHDR *pNMHDR, LRESULT *pResult); + void updateRuntimeSpeed(); +// void updateRuntimeImages(); + void updateParams(); + afx_msg void OnTimer(UINT_PTR nIDEvent); + void freeTabDialog(); + afx_msg void OnDestroy(); + + void refresh(); +}; diff --git a/Common.win32/ActiveStatus.cpp b/Common.win32/ActiveStatus.cpp new file mode 100644 index 0000000..782e853 --- /dev/null +++ b/Common.win32/ActiveStatus.cpp @@ -0,0 +1,49 @@ +// ActiveStatus.cpp : implementation file +// + +#include "../common.win32/stdafx.h" +//#include "ActiveGS.h" +#include "ActiveStatus.h" +//#include "ActiveGSCtrl.h" + +// CActiveStatus dialog + +IMPLEMENT_DYNAMIC(CActiveStatus, CDialog) +CActiveStatus::CActiveStatus(CWnd* pParent /*=NULL*/) + : CDialog(CActiveStatus::IDD, pParent) +{ + TimerID = NULL; +} + +CActiveStatus::~CActiveStatus() +{ + +} + +void CActiveStatus::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CActiveStatus, CDialog) + ON_WM_TIMER() + ON_WM_DESTROY() +END_MESSAGE_MAP() + + +// CActiveStatus message handlers + +void CActiveStatus::OnTimer(UINT_PTR nIDEvent) +{ + ShowWindow(SW_HIDE); + CDialog::OnTimer(nIDEvent); + TimerID = NULL; +} + +void CActiveStatus::OnDestroy() +{ + if (TimerID) + KillTimer(TimerID); + TimerID = NULL; +} diff --git a/Common.win32/ActiveStatus.h b/Common.win32/ActiveStatus.h new file mode 100644 index 0000000..40a83bc --- /dev/null +++ b/Common.win32/ActiveStatus.h @@ -0,0 +1,26 @@ +#pragma once + +//#include "activegsresrc.h" +#include "activecommonres.h" +// CActiveStatus dialog + +class CActiveStatus : public CDialog +{ + DECLARE_DYNAMIC(CActiveStatus) + +public: + CActiveStatus(CWnd* pParent = NULL); // standard constructor + virtual ~CActiveStatus(); + UINT_PTR TimerID; + +// Dialog Data + enum { IDD = IDD_STATUS }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnTimer(UINT_PTR nIDEvent); + afx_msg void OnDestroy(); +}; diff --git a/Common.win32/ChildView.cpp b/Common.win32/ChildView.cpp new file mode 100644 index 0000000..315e5cf --- /dev/null +++ b/Common.win32/ChildView.cpp @@ -0,0 +1,298 @@ + +// ChildView.cpp : implementation of the CChildView class +// + +#include "../Common.win32/stdafx.h" +#include "ChildView.h" + + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + + +// CChildView + +CChildView::CChildView() +{ + pEmulatorCtrl = NULL; + parent = NULL; + //pConfig = NULL; +} + +CChildView::~CChildView() +{ +} + + +BEGIN_MESSAGE_MAP(CChildView, CWnd) + ON_WM_PAINT() + ON_WM_CREATE() + ON_WM_DESTROY() + ON_WM_SETFOCUS() + ON_WM_SETTINGCHANGE() +#ifndef UNDER_CE + ON_WM_MOUSEACTIVATE() +#endif + ON_WM_SIZE() +// ON_WM_ERASEBACKGND() +END_MESSAGE_MAP() + +// CChildView message handlers + +BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) +{ + OutputDebugString("PreCreateWindow"); + + if (!CWnd::PreCreateWindow(cs)) + return FALSE; +/* cs.dwExStyle |= WS_EX_CLIENTEDGE; + cs.style &= ~WS_BORDER; +*/ + cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, + ::LoadCursor(NULL, IDC_SIZEALL /*IDC_ARROW*/), NULL /*reinterpret_cast(COLOR_WINDOW+1)*/, NULL); + return TRUE; +} + +int CChildView::CreateEmulatorWindow(CWnd* _w) +{ + /* + strMyClass = AfxRegisterWndClass( + CS_VREDRAW | CS_HREDRAW, + ::LoadCursor(NULL, IDC_ARROW), + (HBRUSH) ::GetStockObject(WHITE_BRUSH), + ::LoadIcon(NULL, IDI_APPLICATION)); +*/ + + outputInfo("CreateEmulatorWindow w:%X this:%X pEmulator:%X theEmulator:%X\n",_w,this,pEmulatorCtrl,CEmulator::theEmulator); + CRect rect; + parent = _w; + _w->GetClientRect(&rect); + outputInfo("Rect width:%d, height:%d\n",rect.Width(),rect.Height()); + + BOOL (__thiscall CWnd::* p )(LPCTSTR,LPCTSTR,DWORD,const RECT &,CWnd *,UINT,CCreateContext *) = &CChildView::Create; + outputInfo("p=%X",p); + + int r = Create(NULL, _T("activegs"), WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN/*AFX_WS_DEFAULT_VIEW*/, + rect,_w + // CRect(rect0, 0, 704, 460), +// CRect(0, 0, 1000, 600), +, AFX_IDW_PANE_FIRST, NULL); + SetFocus(); + return r; +} + +extern int g_window_width; +extern int g_window_height; + +void CChildView::resize() +{ + + extern void window_needs_full_refresh(); + + if (!parent) return ; + RECT rcClient, rcWindow; + RECT localClient, localWindow; + POINT ptDiff; + parent->GetClientRect( &rcClient); + parent->GetWindowRect( &rcWindow); +GetClientRect( &localClient); +GetWindowRect( &localWindow); + +#ifdef VIDEO_SINGLEVLINE + localClient.bottom *=2; +#endif + ptDiff.x = (rcWindow.right - rcWindow.left) - rcClient.right; + ptDiff.y = (rcWindow.bottom - rcWindow.top) - rcClient.bottom; + int nWidth = rcClient.right - rcClient.left; + int nHeight = rcClient.bottom - rcClient.top; + MoveWindow(0/*rcWindow.left*/, 0/*rcWindow.top*/, nWidth + ptDiff.x, nHeight + ptDiff.y, TRUE); + + window_needs_full_refresh(); + +} + +int CChildView::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + outputInfo("OnCreate CChildView:%X CurrentEmulator:%X\n",this,CEmulator::theEmulator); + + if (CWnd::OnCreate(lpCreateStruct) == -1) + return -1; + +#ifdef UNDER_CE + DEVMODE mode; + memset(&mode,0,sizeof(DEVMODE)); + mode.dmSize = sizeof(DEVMODE); + + mode.dmFields=DM_DISPLAYORIENTATION; + mode.dmDisplayOrientation = DMDO_90; + + LONG Err= ChangeDisplaySettingsEx(NULL,&mode,NULL,0,NULL); + if (Err!=DISP_CHANGE_SUCCESSFUL) + outputInfo("failed to change display\n"); + #endif + + if (CEmulator::theEmulator) + { + outputInfo("Emulator was running: kill it (%X)\n",CEmulator::theEmulator); + CEmulator::theEmulator->terminateEmulator(); + delete CEmulator::theEmulator; + } + resize(); + + pEmulatorCtrl = new CEmulatorWin32((CEmulator**)&this->pEmulatorCtrl); + //id = pEmulatorCtrl->id; + //outputInfo("new emulator (%X)(%X)(%d)\n",this,pEmulatorCtrl,CEmulator::theEmulator->id); + hInst = lpCreateStruct->hInstance; + CEmulatorConfig* pConfig = &config; + +// g_download.initPersistentPath(); + + pEmulatorCtrl->initWindow(m_hWnd,hInst); + pEmulatorCtrl->setConfig(pConfig); + pEmulatorCtrl->launchEmulator(); + + return 0; +} + +void CChildView::OnPaint() +{ + + if ( pEmulatorCtrl && pEmulatorCtrl == CEmulator::theEmulator ) + { + + CWnd::OnPaint(); + } + else + { + PAINTSTRUCT ps; + CDC* cdc = BeginPaint(&ps); + RECT r; + GetClientRect(&r); + CBrush brush; + brush.CreateSolidBrush(RGB(36,34,244)); + cdc->FillRect(&r,&brush); + +#ifdef UNDER_CE + cdc->DrawText( _T("PAUSED"), -1, &r, DT_CENTER|DT_SINGLELINE|DT_VCENTER); +#else + cdc->SetTextColor(RGB(255,255,255)); + cdc->SetBkColor(RGB(36,34,244)); + + int l = (r.bottom - r.top)/2 - 20; + + const char* line1="The emulator has been closed as another instance is running."; + cdc->TextOut(100 ,l, line1,strlen(line1)); + const char line2[]="Refresh this window to re-activate the emulator."; + cdc->TextOut(100 ,l+20, line2,strlen(line2)); +#endif + EndPaint(&ps); + } +} + +void CChildView::OnDestroy() +{ + outputInfo("OnDestroy CChildView:%X theEmulator:%X\n",this,pEmulatorCtrl); + + if (pEmulatorCtrl) + { + // ASSERT(CEmulator::theEmulator == pEmulatorCtrl); + if (CEmulator::theEmulator == pEmulatorCtrl) + { + pEmulatorCtrl->terminateEmulator(); + delete pEmulatorCtrl; + pEmulatorCtrl = NULL; + } + else + outputInfo("ERR:OnDestroy but pEMulatorCtrl not owned by us ... CChildView:%X theEmulator:%X\n",this,pEmulatorCtrl); + + } +} + +LRESULT CChildView::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) +{ + + +#if 0 + switch(message) + { + + case WM_KEYUP: + outputInfo("DefWindowProc: WM_KEYUP: %X\n",wParam); + break; + case WM_KEYDOWN: + outputInfo("DefWindowProc: WM_KEYDOWN: %X\n",wParam); + break; + default: + break; + } +#endif + if (CEmulator::theEmulator && pEmulatorCtrl == CEmulator::theEmulator) + return pEmulatorCtrl->windowProc(message,wParam,lParam); + else + return CWnd::DefWindowProc(message, wParam, lParam); + +} + + BOOL CChildView::PreTranslateMessage(MSG* pMsg) +{ + switch(pMsg->message) + { + case WM_KEYDOWN: + case WM_KEYUP: + case WM_SYSKEYUP: + case WM_SYSKEYDOWN: + + if (pEmulatorCtrl && pEmulatorCtrl == CEmulator::theEmulator) + pEmulatorCtrl->windowProc(pMsg->message,pMsg->wParam,pMsg->lParam); + return 1; + /* + case WM_LBUTTONDOWN: + outputInfo("WM_LBUTTONDOWN\n"); + break; + case WM_LBUTTONUP: + outputInfo("WM_LBUTTONUP\n"); + break; + */ + default: + break; + } + + return 0; // to dispatch messag +} + + void CChildView::OnSetFocus(CWnd* pOldWnd ) + { + // outputInfo("OnSetFocus\n"); + CWnd::OnSetFocus(pOldWnd); + } + + CWnd* CChildView::SetFocus() + { + // outputInfo("SetFocus\n"); + CWnd* w = CWnd::SetFocus(); + return w; + } + +#ifndef UNDER_CE + int CChildView::OnMouseActivate(CWnd* pDesktopWnd,UINT nHitTest,UINT message ) + { +// outputInfo("child OnMouseActivate\n"); + + // Was used in the .OCX version +// OnActivateInPlace(TRUE, NULL); // OnActivateInPlace() is an undocumented function + return CWnd::OnMouseActivate(pDesktopWnd,nHitTest, message); +// return MA_ACTIVATEANDEAT ; + } +#endif + +BOOL CChildView::OnEraseBkgnd(CDC* pDC) + { + return 1; + } + +void CChildView::OnSettingChange(UINT uFlags,LPCTSTR lpszSection) + { + outputInfo("OnSettingChange"); + } + diff --git a/Common.win32/ChildView.h b/Common.win32/ChildView.h new file mode 100644 index 0000000..09c3fa1 --- /dev/null +++ b/Common.win32/ChildView.h @@ -0,0 +1,53 @@ + +// ChildView.h : interface of the CChildView class +// + + +#pragma once +#include "../common.win32/activecommon.h" +#include "../common/ki.h" + + +// CChildView window + +class CChildView : public CWnd +{ +// Construction +public: + CChildView(); + +// Attributes +public: + CEmulatorWin32* pEmulatorCtrl; + int id; + HINSTANCE hInst; + CEmulatorConfig config; + CWnd* parent; +// Operations +public: + int CreateEmulatorWindow(CWnd* _w); +// Overrides +protected: + virtual BOOL PreCreateWindow(CREATESTRUCT& cs); + +// Implementation +public: + virtual ~CChildView(); + afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); + afx_msg void OnSetFocus(CWnd* pOldWnd ); + afx_msg void OnDestroy(); + afx_msg int OnMouseActivate(CWnd* pDesktopWnd,UINT nHitTest,UINT message ); + afx_msg BOOL OnEraseBkgnd(CDC* pDC); + afx_msg void OnSettingChange(UINT uFlags,LPCTSTR lpszSection); + + virtual CWnd*SetFocus(); + virtual BOOL PreTranslateMessage(MSG* pMsg); + void resize(); + + // Generated message map functions +//protected: + afx_msg void OnPaint(); + DECLARE_MESSAGE_MAP() + virtual LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam); +}; + diff --git a/Common.win32/DiskEditURL.cpp b/Common.win32/DiskEditURL.cpp new file mode 100644 index 0000000..7059c4f --- /dev/null +++ b/Common.win32/DiskEditURL.cpp @@ -0,0 +1,324 @@ +// DiskEditURL.cpp : implementation file +// + +#include "../Common.win32/stdafx.h" +//#include "ActiveGSApp.h" +#include "activecommon.h" +#include "DiskEditURL.h" +#include + +// CDiskEditURL dialog + +IMPLEMENT_DYNAMIC(CDiskEditURL, CDialog) + +CDiskEditURL::CDiskEditURL(CWnd* pParent /*=NULL*/) + : CTabActiveInfo(CDiskEditURL::IDD, pParent) +{ + selectedItem=0; +} + +CDiskEditURL::~CDiskEditURL() +{ + +} + +BOOL CDiskEditURL::OnInitDialog() +{ + selectedItem = 0; + CDialog::OnInitDialog(); + /* + DragAcceptFiles(TRUE); + CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL); + ASSERT(edit); + edit->DragAcceptFiles(TRUE); + */ + return TRUE; +} + +void CDiskEditURL::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} +void CDiskEditURL::OnDropFiles() +{ + /* + HDROP hDrop = (HDROP)wParam; + char filename[MAX_PATH]; + DragQueryFile(hDrop, // Struture Identifier + + 0, // -1 to Drop more than one file or ( integer 0 to max ) + + // to drop selected No of files + + filename,// Droped File Name + + MAX_PATH); // Max char + */ +} + + +BEGIN_MESSAGE_MAP(CDiskEditURL, CDialog) + // ON_MESSAGE(WM_DROPFILES,OnDropFiles)// Message Handler for Drang and Drop + ON_CONTROL(WM_DROPFILES,IDC_EDITURL,OnDropFiles) +// ON_CONTROL(EN_UPDATE,IDC_EDITURL,OnDropFiles) +ON_BN_CLICKED(IDC_MOUNTBUTTON, &CDiskEditURL::OnBnClickedMountbutton) +ON_BN_CLICKED(IDC_EJECT, &CDiskEditURL::OnBnClickedEject) +ON_BN_CLICKED(IDC_RELOAD, &CDiskEditURL::OnBnClickedReload) +ON_NOTIFY(LVN_ITEMACTIVATE, IDC_SLOTLIST, &CDiskEditURL::OnLvnItemActivateSlotlist) +ON_NOTIFY(HDN_ITEMCLICK, 0, &CDiskEditURL::OnHdnItemclickSlotlist) +ON_BN_CLICKED(IDC_REBOOT5, &CDiskEditURL::OnBnClickedReboot5) +ON_BN_CLICKED(IDC_REBOOT6, &CDiskEditURL::OnBnClickedReboot6) +ON_BN_CLICKED(IDC_REBOOT7, &CDiskEditURL::OnBnClickedReboot7) +ON_BN_CLICKED(IDC_MOUNTBUTTON, &CDiskEditURL::OnBnClickedMountbutton) +ON_CBN_SELCHANGE(IDC_COMBOSLOT, &CDiskEditURL::OnCbnSelchangeComboslot) +ON_BN_CLICKED(IDC_FILESELECT, &CDiskEditURL::OnBnClickedFileselect) +ON_BN_CLICKED(IDC_SWAP, &CDiskEditURL::OnBnClickedSwap) +END_MESSAGE_MAP() + + +// CDiskEditURL message handlers + +void CDiskEditURL::OnBnClickedMountbutton() +{ + // TODO: Add your control notification handler code here + CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL); + char path[MAX_PATH]; + int l = Edit_GetLine(edit->m_hWnd,0,path,MAX_PATH); + path[l]=0; + + int slot,drive; + if (getCurrentSlotAndDrive(slot,drive)) + { + CEmulator::theEmulator->config->setSlot(slot,drive,path,REPLACECURRENT); + } +} +void CDiskEditURL::OnBnClickedEject() +{ + + int slot,drive; + if (!getCurrentSlotAndDrive(slot,drive)) return ; + CEmulator::theEmulator->ejectDisk(slot,drive); + +} + +void CDiskEditURL::OnBnClickedReload() +{ + int slot,drive; + if (!getCurrentSlotAndDrive(slot,drive)) return ; + CEmulator::theEmulator->reloadDisk(slot,drive); +} + +void CDiskEditURL::OnLvnItemActivateSlotlist(NMHDR *pNMHDR, LRESULT *pResult) +{ + LPNMITEMACTIVATE pNMIA = reinterpret_cast(pNMHDR); + // TODO: Add your control notification handler code here + /* + CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_SLOTLIST); + ASSERT(pList); + POSITION p = pList->GetFirstSelectedItemPosition(); + if (!p) return ; + int i =pList->GetNextSelectedItem(p); + selectedItem = pList->GetItemData(i); + refreshItem(); + */ + *pResult = 0; +} + +int CDiskEditURL::getCurrentSlotAndDrive(int& slot, int &drive) +{ + if (selectedItem==-1) return 0; + CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_COMBOSLOT); + int data = pCombo->GetItemData(selectedItem); + slot = data / 10; + drive = data %10; + return 1; +} + +void CDiskEditURL::refresh() +{ + + CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_SLOTLIST); + if (pList) + { + pList->DeleteAllItems(); + int nbi=0; + for(int slot=5;slot<=7;slot++) + { + int maxdrive=2; + if (slot==7) maxdrive=MAXSLOT7DRIVES; + for(int disk=1;disk<=maxdrive;disk++) + for(int active=0;activegetLocalMultipleIMGInfo(slot,disk,info,active); + if (!ret) continue; + if (info.status==UNDEFINED || info.status ==NOTHING) continue; + + MyString str; + str.Format("S%dD%d",slot,disk); + if (ret==1) + str +="*"; + pList->InsertItem(nbi,str.c_str()); + // pList->SetItemData(nbi,(slot-5); + // pList->SetItemText(nbi,1,"e"); + + + MyString shortname (info.shortname.c_str()); + + MyString sizeStr; + if (info.size>1*1024*1024) + sizeStr.Format(_T("%4dMb"),info.size/(1024*1024)); + else + sizeStr.Format(_T("%4dKo"),info.size/1024); + + MyString prefix; + switch(info.status) + { + case MOUNTED: + prefix = info.prefix.c_str(); + break; + case EJECTED: + if (!info.filename.IsEmpty()) + prefix = "*EJECTED*"; + break; + case READY2MOUNT: + prefix = "*READY2MOUNT*"; + shortname = getfile(info.url); + break; + case DELAYEDMOUNT: + prefix = "*DELAYEDMOUNT*"; + shortname = getfile(info.url); + break; + case FAILED: + prefix ="*FAILED*"; + break; + } + pList->SetItemText(nbi,1,shortname.c_str()); + pList->SetItemText(nbi,2,sizeStr.c_str()); + pList->SetItemText(nbi,3,prefix.c_str()); + + // pList->SetItemText(nbi,5,info.name); + + nbi++; + + } + } + } + +// int slot = selectedItem; + BOOL beject = TRUE; + BOOL breload = TRUE; + BOOL bmount = TRUE; + BOOL bSwap = FALSE; + + int slot,drive; + if (getCurrentSlotAndDrive(slot,drive)) + { + const CSlotInfo& info = CEmulator::theEmulator->getLocalIMGInfo(slot,drive); + SetDlgItemText(IDC_EDITURL,info.url); + switch(info.status) + { + case UNDEFINED: + beject=FALSE; + breload=FALSE; + break; + case FAILED: + beject=FALSE; + breload=TRUE; + break; + case EJECTED: + beject=FALSE; + breload=TRUE; + break; + case READY2MOUNT: + case DELAYEDMOUNT: + beject=TRUE; + breload=FALSE; + break; + case MOUNTED: + beject=TRUE; + breload=FALSE; + } + + int sw = CEmulator::theEmulator->getSmartSwap(); + if ( ((sw/10) == slot) && ( (sw%10) == drive ) ) // OG A UNIFIER!!!! + bSwap = TRUE; + } + else + { + beject=FALSE; + breload=FALSE; + } + + ::EnableWindow(GetDlgItem(IDC_EJECT)->m_hWnd,beject); + ::EnableWindow(GetDlgItem(IDC_RELOAD)->m_hWnd,breload); + ::EnableWindow(GetDlgItem(IDC_MOUNTBUTTON)->m_hWnd,bmount); + ::EnableWindow(GetDlgItem(IDC_SWAP)->m_hWnd,bSwap); +} + + +void CDiskEditURL::OnHdnItemclickSlotlist(NMHDR *pNMHDR, LRESULT *pResult) +{ + LPNMHEADER phdr = reinterpret_cast(pNMHDR); + // TODO: Add your control notification handler code here + *pResult = 0; +} + +void CDiskEditURL::OnBnClickedReboot5() +{ + CEmulator::theEmulator->onBootSlotChanged(5); +} + +void CDiskEditURL::OnBnClickedReboot6() +{ + CEmulator::theEmulator->onBootSlotChanged(6); +} + +void CDiskEditURL::OnBnClickedReboot7() +{ + CEmulator::theEmulator->onBootSlotChanged(7);} + + + +void CDiskEditURL::OnCbnSelchangeComboslot() +{ + // TODO: Add your control notification handler code here + CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_COMBOSLOT); + selectedItem = pCombo->GetCurSel(); + refresh(); +// SetDlgItemText(IDC_EDITURL,l_strFileName); +} + +void CDiskEditURL::OnBnClickedFileselect() +{ + +// CFileDialog l_SampleDlg(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,"2MG Images (*.img)|*.2mg|II Images (*.dsk)|*.dsk|II Images (*.nib)|*.nib|Archives (*.zip)|*.zip||"); + CFileDialog l_SampleDlg(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,"Disk Image (*.img;*.dsk;*.nib;*.bin;*.zip)||"); + + int iRet = l_SampleDlg.DoModal(); + CString l_strFileName; + l_strFileName = l_SampleDlg.GetPathName(); + + if(iRet == IDOK) + { + // CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL); + SetDlgItemText(IDC_EDITURL,l_strFileName); + OnBnClickedMountbutton(); + // MessageBox(l_strFileName); + // MessageBox(l_strFileName); + + } + /* + else + MessageBox("No File Selected!"); + */ +} + +void CDiskEditURL::OnBnClickedSwap() +{ +// int slot = selectedItem; + int slot,drive; + if (!getCurrentSlotAndDrive(slot,drive)) return ; + CEmulator::theEmulator->swapDisk(slot,drive); +} diff --git a/Common.win32/DiskEditURL.h b/Common.win32/DiskEditURL.h new file mode 100644 index 0000000..a87e6d4 --- /dev/null +++ b/Common.win32/DiskEditURL.h @@ -0,0 +1,37 @@ +#pragma once + + +// CDiskEditURL dialog + +class CDiskEditURL : public CTabActiveInfo +{ + DECLARE_DYNAMIC(CDiskEditURL) + +public: + CDiskEditURL(CWnd* pParent = NULL); // standard constructor + virtual ~CDiskEditURL(); + int selectedItem; +// Dialog Data + enum { IDD = IDD_TABDISKCONF }; + virtual void refresh(); +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + void OnDropFiles(); + + BOOL OnInitDialog(); + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedMountbutton(); + afx_msg void OnBnClickedEject(); + afx_msg void OnBnClickedReload(); + afx_msg void OnLvnItemActivateSlotlist(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnHdnItemclickSlotlist(NMHDR *pNMHDR, LRESULT *pResult); + afx_msg void OnBnClickedReboot5(); + afx_msg void OnBnClickedReboot6(); + afx_msg void OnBnClickedReboot7(); +// afx_msg void OnBnClickedMountbutton(); + afx_msg void OnCbnSelchangeComboslot(); + afx_msg void OnBnClickedFileselect(); + afx_msg void OnBnClickedSwap(); + int getCurrentSlotAndDrive(int& slot, int &drive); +}; diff --git a/Common.win32/HyperLink.cpp b/Common.win32/HyperLink.cpp new file mode 100644 index 0000000..3b7be37 --- /dev/null +++ b/Common.win32/HyperLink.cpp @@ -0,0 +1,498 @@ +// HyperLink.cpp : implementation file +// +// HyperLink static control. Will open the default browser with the given URL +// when the user clicks on the link. +// +// Copyright (C) 1997 - 1999 Chris Maunder +// All rights reserved. May not be sold for profit. +// +// Thanks to Pål K. Tønder for auto-size and window caption changes. +// +// "GotoURL" function by Stuart Patterson +// As seen in the August, 1997 Windows Developer's Journal. +// Copyright 1997 by Miller Freeman, Inc. All rights reserved. +// Modified by Chris Maunder to use TCHARs instead of chars. +// +// "Default hand cursor" from Paul DiLascia's Jan 1998 MSJ article. +// +// 2/29/00 -- P. Shaffer standard font mod. + +#include "../Common.win32/stdafx.h" +#include "HyperLink.h" + +#include "atlconv.h" // for Unicode conversion - requires #include // MFC OLE automation classes + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#define TOOLTIP_ID 1 + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink + +CHyperLink::CHyperLink() +{ + m_hLinkCursor = NULL; // No cursor as yet + m_crLinkColour = RGB( 0, 0, 238); // Blue + // m_crVisitedColour = RGB( 85, 26, 139); // Purple + m_crVisitedColour = RGB( 0, 0, 238); // Purple + m_crHoverColour = RGB(255, 0, 0); // Red + m_bOverControl = FALSE; // Cursor not yet over control + m_bVisited = FALSE; // Hasn't been visited yet. + m_nUnderline = ulHover; // Underline the link? + m_bAdjustToFit = TRUE; // Resize the window to fit the text? + m_strURL.Empty(); + m_nTimerID = 100; +} + +CHyperLink::~CHyperLink() +{ + m_UnderlineFont.DeleteObject(); +} + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink overrides + +BOOL CHyperLink::DestroyWindow() +{ + KillTimer(m_nTimerID); + + return CStatic::DestroyWindow(); +} + +BOOL CHyperLink::PreTranslateMessage(MSG* pMsg) +{ + m_ToolTip.RelayEvent(pMsg); + return CStatic::PreTranslateMessage(pMsg); +} + + +void CHyperLink::PreSubclassWindow() +{ + // We want to get mouse clicks via STN_CLICKED + DWORD dwStyle = GetStyle(); + ::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY); + + // Set the URL as the window text + if (m_strURL.IsEmpty()) + GetWindowText(m_strURL); + + // Check that the window text isn't empty. If it is, set it as the URL. + CString strWndText; + GetWindowText(strWndText); + if (strWndText.IsEmpty()) + { + ASSERT(!m_strURL.IsEmpty()); // Window and URL both NULL. DUH! + SetWindowText(m_strURL); + } + + CFont* pFont = GetFont(); + if (!pFont) + { + HFONT hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); + if (hFont == NULL) + hFont = (HFONT) GetStockObject(ANSI_VAR_FONT); + if (hFont) + pFont = CFont::FromHandle(hFont); + } + ASSERT(pFont->GetSafeHandle()); + + // Create the underline font + LOGFONT lf; + pFont->GetLogFont(&lf); + m_StdFont.CreateFontIndirect(&lf); + lf.lfUnderline = (BYTE) TRUE; + m_UnderlineFont.CreateFontIndirect(&lf); + + PositionWindow(); // Adjust size of window to fit URL if necessary + SetDefaultCursor(); // Try and load up a "hand" cursor + SetUnderline(ulAlways); + + // Create the tooltip + CRect rect; + GetClientRect(rect); + m_ToolTip.Create(this); + m_ToolTip.AddTool(this, m_strURL, rect, TOOLTIP_ID); + + CStatic::PreSubclassWindow(); +} + +BEGIN_MESSAGE_MAP(CHyperLink, CStatic) + //{{AFX_MSG_MAP(CHyperLink) + ON_WM_CTLCOLOR_REFLECT() + ON_WM_SETCURSOR() + ON_WM_MOUSEMOVE() + ON_WM_TIMER() + ON_CONTROL_REFLECT(STN_CLICKED, OnClicked) + ON_WM_ERASEBKGND() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink message handlers + +void CHyperLink::OnClicked() +{ + m_bOverControl = FALSE; + int result = (int)GotoURL(m_strURL, SW_SHOW); + m_bVisited = (result > HINSTANCE_ERROR); + if (!m_bVisited) + { + MessageBeep(MB_ICONEXCLAMATION); // Unable to follow link + ReportError(result); + } + else + SetVisited(); // Repaint to show visited colour +} + +HBRUSH CHyperLink::CtlColor(CDC* pDC, UINT nCtlColor) +{ + ASSERT(nCtlColor == CTLCOLOR_STATIC); + + if (m_bOverControl) + pDC->SetTextColor(m_crHoverColour); + else if (m_bVisited) + pDC->SetTextColor(m_crVisitedColour); + else + pDC->SetTextColor(m_crLinkColour); + + // transparent text. + pDC->SetBkMode(TRANSPARENT); + return (HBRUSH)GetStockObject(NULL_BRUSH); +} + +void CHyperLink::OnMouseMove(UINT nFlags, CPoint point) +{ + if (!m_bOverControl) // Cursor has just moved over control + { + m_bOverControl = TRUE; + + if (m_nUnderline == ulHover) + SetFont(&m_UnderlineFont); + Invalidate(); + + SetTimer(m_nTimerID, 100, NULL); + } + CStatic::OnMouseMove(nFlags, point); +} + +void CHyperLink::OnTimer(UINT_PTR nIDEvent) +{ + CPoint p(GetMessagePos()); + ScreenToClient(&p); + + CRect rect; + GetClientRect(rect); + if (!rect.PtInRect(p)) + { + m_bOverControl = FALSE; + KillTimer(m_nTimerID); + + if (m_nUnderline != ulAlways) + SetFont(&m_StdFont); + rect.bottom+=10; + InvalidateRect(rect); + } + + CStatic::OnTimer(nIDEvent); +} + +BOOL CHyperLink::OnSetCursor(CWnd* /*pWnd*/, UINT /*nHitTest*/, UINT /*message*/) +{ + if (m_hLinkCursor) + { + ::SetCursor(m_hLinkCursor); + return TRUE; + } + return FALSE; +} + +BOOL CHyperLink::OnEraseBkgnd(CDC* pDC) +{ + CRect rect; + GetClientRect(rect); + pDC->FillSolidRect(rect, ::GetSysColor(COLOR_3DFACE)); + + return TRUE; +} + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink operations + +void CHyperLink::SetURL(CString strURL) +{ + m_strURL = strURL; + + if (::IsWindow(GetSafeHwnd())) { + PositionWindow(); + m_ToolTip.UpdateTipText(strURL, this, TOOLTIP_ID); + } +} + +CString CHyperLink::GetURL() const +{ + return m_strURL; +} + +void CHyperLink::SetColours(COLORREF crLinkColour, COLORREF crVisitedColour, + COLORREF crHoverColour /* = -1 */) +{ + m_crLinkColour = crLinkColour; + m_crVisitedColour = crVisitedColour; + + if (crHoverColour == -1) + m_crHoverColour = ::GetSysColor(COLOR_HIGHLIGHT); + else + m_crHoverColour = crHoverColour; + + if (::IsWindow(m_hWnd)) + Invalidate(); +} + +COLORREF CHyperLink::GetLinkColour() const +{ + return m_crLinkColour; +} + +COLORREF CHyperLink::GetVisitedColour() const +{ + return m_crVisitedColour; +} + +COLORREF CHyperLink::GetHoverColour() const +{ + return m_crHoverColour; +} + +void CHyperLink::SetVisited(BOOL bVisited /* = TRUE */) +{ + m_bVisited = bVisited; + + if (::IsWindow(GetSafeHwnd())) + Invalidate(); +} + +BOOL CHyperLink::GetVisited() const +{ + return m_bVisited; +} + +void CHyperLink::SetLinkCursor(HCURSOR hCursor) +{ + m_hLinkCursor = hCursor; + if (m_hLinkCursor == NULL) + SetDefaultCursor(); +} + +HCURSOR CHyperLink::GetLinkCursor() const +{ + return m_hLinkCursor; +} + +void CHyperLink::SetUnderline(int nUnderline /*=ulHover*/) +{ + if (m_nUnderline == nUnderline) + return; + + if (::IsWindow(GetSafeHwnd())) + { + if (nUnderline == ulAlways) + SetFont(&m_UnderlineFont); + else + SetFont(&m_StdFont); + + Invalidate(); + } + + m_nUnderline = nUnderline; +} + +int CHyperLink::GetUnderline() const +{ + return m_nUnderline; +} + +void CHyperLink::SetAutoSize(BOOL bAutoSize /* = TRUE */) +{ + m_bAdjustToFit = bAutoSize; + + if (::IsWindow(GetSafeHwnd())) + PositionWindow(); +} + +BOOL CHyperLink::GetAutoSize() const +{ + return m_bAdjustToFit; +} + + +// Move and resize the window so that the window is the same size +// as the hyperlink text. This stops the hyperlink cursor being active +// when it is not directly over the text. If the text is left justified +// then the window is merely shrunk, but if it is centred or right +// justified then the window will have to be moved as well. +// +// Suggested by Pål K. Tønder + +void CHyperLink::PositionWindow() +{ + if (!::IsWindow(GetSafeHwnd()) || !m_bAdjustToFit) + return; + + // Get the current window position + CRect WndRect, ClientRect; + GetWindowRect(WndRect); + GetClientRect(ClientRect); + + ClientToScreen(ClientRect); + + CWnd* pParent = GetParent(); + if (pParent) + { + pParent->ScreenToClient(WndRect); + pParent->ScreenToClient(ClientRect); + } + + // Get the size of the window text + CString strWndText; + GetWindowText(strWndText); + + CDC* pDC = GetDC(); + CFont* pOldFont = pDC->SelectObject(&m_UnderlineFont); + CSize Extent = pDC->GetTextExtent(strWndText); + pDC->SelectObject(pOldFont); + ReleaseDC(pDC); + + // Adjust for window borders + Extent.cx += WndRect.Width() - ClientRect.Width(); + Extent.cy += WndRect.Height() - ClientRect.Height(); + + // Get the text justification via the window style + DWORD dwStyle = GetStyle(); + + // Recalc the window size and position based on the text justification + if (dwStyle & SS_CENTERIMAGE) + WndRect.DeflateRect(0, (WndRect.Height() - Extent.cy)/2); + else + WndRect.bottom = WndRect.top + Extent.cy; + + if (dwStyle & SS_CENTER) + WndRect.DeflateRect((WndRect.Width() - Extent.cx)/2, 0); + else if (dwStyle & SS_RIGHT) + WndRect.left = WndRect.right - Extent.cx; + else // SS_LEFT = 0, so we can't test for it explicitly + WndRect.right = WndRect.left + Extent.cx; + + // Move the window + SetWindowPos(NULL, WndRect.left, WndRect.top, WndRect.Width(), WndRect.Height(), SWP_NOZORDER); +} + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink implementation + +// The following appeared in Paul DiLascia's Jan 1998 MSJ articles. +// It loads a "hand" cursor from the winhlp32.exe module +void CHyperLink::SetDefaultCursor() +{ + if (m_hLinkCursor == NULL) // No cursor handle - load our own + { + /* + // Get the windows directory + CString strWndDir; + GetWindowsDirectory(strWndDir.GetBuffer(MAX_PATH), MAX_PATH); + strWndDir.ReleaseBuffer(); + + strWndDir += _T("\\winhlp32.exe"); + // This retrieves cursor #106 from winhlp32.exe, which is a hand pointer + HMODULE hModule = LoadLibrary(strWndDir); + if (hModule) { + HCURSOR hHandCursor = ::LoadCursor(hModule, MAKEINTRESOURCE(106)); + if (hHandCursor) + m_hLinkCursor = CopyCursor(hHandCursor); + } + FreeLibrary(hModule); + */ + } + +} + +LONG CHyperLink::GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR retdata) +{ + HKEY hkey; + LONG retval = RegOpenKeyEx(key, subkey, 0, KEY_QUERY_VALUE, &hkey); + + if (retval == ERROR_SUCCESS) { + long datasize = MAX_PATH; + TCHAR data[MAX_PATH]; + RegQueryValue(hkey, NULL, data, &datasize); + lstrcpy(retdata,data); + RegCloseKey(hkey); + } + + return retval; +} + +void CHyperLink::ReportError(int nError) +{ + CString str; + switch (nError) { + case 0: str = "The operating system is out\nof memory or resources."; break; + case SE_ERR_PNF: str = "The specified path was not found."; break; + case SE_ERR_FNF: str = "The specified file was not found."; break; + case ERROR_BAD_FORMAT: str = "The .EXE file is invalid\n(non-Win32 .EXE or error in .EXE image)."; break; + case SE_ERR_ACCESSDENIED: str = "The operating system denied\naccess to the specified file."; break; + case SE_ERR_ASSOCINCOMPLETE: str = "The filename association is\nincomplete or invalid."; break; + case SE_ERR_DDEBUSY: str = "The DDE transaction could not\nbe completed because other DDE transactions\nwere being processed."; break; + case SE_ERR_DDEFAIL: str = "The DDE transaction failed."; break; + case SE_ERR_DDETIMEOUT: str = "The DDE transaction could not\nbe completed because the request timed out."; break; + case SE_ERR_DLLNOTFOUND: str = "The specified dynamic-link library was not found."; break; + case SE_ERR_NOASSOC: str = "There is no application associated\nwith the given filename extension."; break; + case SE_ERR_OOM: str = "There was not enough memory to complete the operation."; break; + case SE_ERR_SHARE: str = "A sharing violation occurred. "; + default: str.Format(_T("Unknown Error (%d) occurred."), nError); break; + } + str = "Unable to open hyperlink:\n\n" + str; + AfxMessageBox(str, MB_ICONEXCLAMATION | MB_OK); +} + +HINSTANCE CHyperLink::GotoURL(LPCTSTR url, int showcmd) +{ + TCHAR key[MAX_PATH + MAX_PATH]; + + // First try ShellExecute() + HINSTANCE result = ShellExecute(NULL, _T("open"), url, NULL,NULL, showcmd); + + // If it failed, get the .htm regkey and lookup the program + if ((UINT)result <= HINSTANCE_ERROR) { + + if (GetRegKey(HKEY_CLASSES_ROOT, _T(".htm"), key) == ERROR_SUCCESS) { + lstrcat(key, _T("\\shell\\open\\command")); + + if (GetRegKey(HKEY_CLASSES_ROOT,key,key) == ERROR_SUCCESS) { + TCHAR *pos; + pos = _tcsstr(key, _T("\"%1\"")); + if (pos == NULL) { // No quotes found + pos = _tcsstr(key, _T("%1")); // Check for %1, without quotes + if (pos == NULL) // No parameter at all... + pos = key+lstrlen(key)-1; + else + *pos = '\0'; // Remove the parameter + } + else + *pos = '\0'; // Remove the parameter + + lstrcat(pos, _T(" ")); + lstrcat(pos, url); + + USES_CONVERSION; + result = (HINSTANCE) WinExec(T2A(key),showcmd); + } + } + } + + return result; +} + diff --git a/Common.win32/HyperLink.h b/Common.win32/HyperLink.h new file mode 100644 index 0000000..482d096 --- /dev/null +++ b/Common.win32/HyperLink.h @@ -0,0 +1,106 @@ +// HyperLink.h : header file +// +// +// HyperLink static control. Will open the default browser with the given URL +// when the user clicks on the link. +// +// Copyright Chris Maunder, 1997-1999 (cmaunder@mail.com) +// Feel free to use and distribute. May not be sold for profit. + +// 2/29/00 -- P. Shaffer standard font mod. + +#if !defined(AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_) +#define AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_ + +#if _MSC_VER >= 1000 +#pragma once +#endif // _MSC_VER >= 1000 + +///////////////////////////////////////////////////////////////////////////// +// CHyperLink window + +class CHyperLink : public CStatic +{ +// Construction/destruction +public: + CHyperLink(); + virtual ~CHyperLink(); + +public: + enum UnderLineOptions { ulHover = -1, ulNone = 0, ulAlways = 1}; + +// Attributes +public: + void SetURL(CString strURL); + CString GetURL() const; + + void SetColours(COLORREF crLinkColour, COLORREF crVisitedColour, + COLORREF crHoverColour = -1); + COLORREF GetLinkColour() const; + COLORREF GetVisitedColour() const; + COLORREF GetHoverColour() const; + + void SetVisited(BOOL bVisited = TRUE); + BOOL GetVisited() const; + + void SetLinkCursor(HCURSOR hCursor); + HCURSOR GetLinkCursor() const; + + void SetUnderline(int nUnderline = ulHover); + int GetUnderline() const; + + void SetAutoSize(BOOL bAutoSize = TRUE); + BOOL GetAutoSize() const; + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CHyperLink) + public: + virtual BOOL PreTranslateMessage(MSG* pMsg); + virtual BOOL DestroyWindow(); + protected: + virtual void PreSubclassWindow(); + //}}AFX_VIRTUAL + +// Implementation +protected: + HINSTANCE GotoURL(LPCTSTR url, int showcmd); + void ReportError(int nError); + LONG GetRegKey(HKEY key, LPCTSTR subkey, LPTSTR retdata); + void PositionWindow(); + void SetDefaultCursor(); + +// Protected attributes +protected: + COLORREF m_crLinkColour, m_crVisitedColour; // Hyperlink colours + COLORREF m_crHoverColour; // Hover colour + BOOL m_bOverControl; // cursor over control? + BOOL m_bVisited; // Has it been visited? + int m_nUnderline; // underline hyperlink? + BOOL m_bAdjustToFit; // Adjust window size to fit text? + CString m_strURL; // hyperlink URL + CFont m_UnderlineFont; // Font for underline display + CFont m_StdFont; // Standard font + HCURSOR m_hLinkCursor; // Cursor for hyperlink + CToolTipCtrl m_ToolTip; // The tooltip + UINT m_nTimerID; + + // Generated message map functions +protected: + //{{AFX_MSG(CHyperLink) + afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor); + afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); + afx_msg void OnMouseMove(UINT nFlags, CPoint point); + afx_msg void OnTimer(UINT_PTR nIDEvent); + afx_msg BOOL OnEraseBkgnd(CDC* pDC); + //}}AFX_MSG + afx_msg void OnClicked(); + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Developer Studio will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_HYPERLINK_H__D1625061_574B_11D1_ABBA_00A0243D1382__INCLUDED_) diff --git a/Common.win32/SliderZip.cpp b/Common.win32/SliderZip.cpp new file mode 100644 index 0000000..125c0a5 --- /dev/null +++ b/Common.win32/SliderZip.cpp @@ -0,0 +1,38 @@ +// SliderZip.cpp : fichier d'implémentation +// + +#include "../common.win32/stdafx.h" +#include "activecommon.h" +#include "SliderZip.h" +#include "../kegs/src/moremem.h" + +// Boîte de dialogue CSliderZip + +IMPLEMENT_DYNAMIC(CSliderZip, CSliderCtrl) +CSliderZip::CSliderZip(CWnd* pParent /*=NULL*/) + : CSliderCtrl() +{ +} + +CSliderZip::~CSliderZip() +{ +} + +void CSliderZip::DoDataExchange(CDataExchange* pDX) +{ + CSliderCtrl::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CSliderZip, CSliderCtrl) +ON_NOTIFY_REFLECT(NM_RELEASEDCAPTURE, OnNMReleasedcapture) +END_MESSAGE_MAP() + +// Gestionnaires de messages CSliderZip + +void CSliderZip::OnNMReleasedcapture(NMHDR *pNMHDR, LRESULT *pResult) +{ + g_moremem.g_zipgs_reg_c05a = ((15-(GetPos() & 0x0F))<< 4 )|(g_moremem.g_zipgs_reg_c05a&0x0F); + *pResult = 0; +} + diff --git a/Common.win32/SliderZip.h b/Common.win32/SliderZip.h new file mode 100644 index 0000000..f7d3120 --- /dev/null +++ b/Common.win32/SliderZip.h @@ -0,0 +1,27 @@ +#pragma once + + +// Boîte de dialogue CSliderZip + +class CSliderZip : public CSliderCtrl +{ + DECLARE_DYNAMIC(CSliderZip) + +public: + CSliderZip(CWnd* pParent = NULL); // constructeur standard + virtual ~CSliderZip(); + +// Données de boîte de dialogue + enum { IDD = IDD_TABRUNTIME }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + + DECLARE_MESSAGE_MAP() +public: + + afx_msg void OnNMReleasedcapture(NMHDR *pNMHDR, LRESULT *pResult); + +protected: + +}; diff --git a/Common.win32/TabGeneral.cpp b/Common.win32/TabGeneral.cpp new file mode 100644 index 0000000..d865ffa --- /dev/null +++ b/Common.win32/TabGeneral.cpp @@ -0,0 +1,67 @@ +// TabGeneral.cpp : fichier d'implémentation +// + +#include "../Common.win32/stdafx.h" +#include "activecommon.h" +#include "tabgeneral.h" + + +// Boîte de dialogue CTabGeneral + +IMPLEMENT_DYNAMIC(CTabGeneral, CDialog) +CTabGeneral::CTabGeneral(CWnd* pParent /*=NULL*/) + : CTabActiveInfo(CTabGeneral::IDD, pParent) +{ + HCURSOR hHand = NULL; +} + +CTabGeneral::~CTabGeneral() +{ + if (hHand) + DeleteObject(hHand); +} + +void CTabGeneral::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_URLOG, urlOG); + DDX_Control(pDX, IDC_URLKD, m_urlKD); +// DDX_Control(pDX, IDC_URLTD, urlTD); + DDX_Control(pDX, IDC_URLFTA, urlFTA); +} + + +BEGIN_MESSAGE_MAP(CTabGeneral, CDialog) + ON_STN_CLICKED(IDC_URLKD2, &CTabGeneral::OnStnClickedUrlkd2) +END_MESSAGE_MAP() + + +// Gestionnaires de messages CTabGeneral + +BOOL CTabGeneral::OnInitDialog() +{ + CDialog::OnInitDialog(); + + CEmulatorWin32* pEmu = (CEmulatorWin32*)CEmulator::theEmulator; + if (pEmu) + hHand = LoadCursor(pEmu->hInst,MAKEINTRESOURCE(IDC_CURSOR1)); + + + m_urlKD.SetURL("mailto:kadickey@alumni.princeton.edu"); + m_urlKD.SetLinkCursor(hHand); + urlOG.SetURL("mailto:o@goguel.com"); + urlOG.SetLinkCursor(hHand); + + // urlTD.SetURL("mailto:tdracz@artpol.com.pl"); + urlFTA.SetURL("http://activegs.freetoolsassociation.com"); + urlFTA.SetLinkCursor(hHand); + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION : les pages de propriétés OCX devraient retourner FALSE +} + + + +void CTabGeneral::OnStnClickedUrlkd2() +{ + // TODO: ajoutez ici le code de votre gestionnaire de notification de contrôle +} diff --git a/Common.win32/TabGeneral.h b/Common.win32/TabGeneral.h new file mode 100644 index 0000000..fb35605 --- /dev/null +++ b/Common.win32/TabGeneral.h @@ -0,0 +1,29 @@ +#pragma once +#include "hyperlink.h" + + +// Boîte de dialogue CTabGeneral + +class CTabGeneral : public CTabActiveInfo +{ + DECLARE_DYNAMIC(CTabGeneral) + +public: + CTabGeneral(CWnd* pParent = NULL); // constructeur standard + virtual ~CTabGeneral(); + HCURSOR hHand; +// Données de boîte de dialogue + enum { IDD = IDD_TABGENERAL }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + + DECLARE_MESSAGE_MAP() +public: + CHyperLink urlOG; + virtual BOOL OnInitDialog(); + CHyperLink m_urlKD; + CHyperLink urlTD; + CHyperLink urlFTA; + afx_msg void OnStnClickedUrlkd2(); +}; diff --git a/Common.win32/TabOption.cpp b/Common.win32/TabOption.cpp new file mode 100644 index 0000000..d79fbfd --- /dev/null +++ b/Common.win32/TabOption.cpp @@ -0,0 +1,123 @@ +// TabOption.cpp : fichier d'implémentation +// + +#include "../Common.win32/stdafx.h" +#include "activecommon.h" +#include "taboption.h" + + + +// Boîte de dialogue CTabOption + +IMPLEMENT_DYNAMIC(CTabOption, CDialog) +CTabOption::CTabOption(CWnd* pParent /*=NULL*/) + : CTabActiveInfo(CTabOption::IDD, pParent) +{ +} + +CTabOption::~CTabOption() +{ +} + +void CTabOption::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); +} + + +BEGIN_MESSAGE_MAP(CTabOption, CDialog) + ON_BN_CLICKED(IDC_NOIECACHE, OnBnClickedNoiecache) + ON_BN_CLICKED(IDC_HALTBADREAD, OnBnClickedHaltbadread) + ON_BN_CLICKED(IDC_HALTBADACCESS, OnBnClickedHaltbadaccess) + ON_BN_CLICKED(IDC_HALTEVENT, OnBnClickedHaltevent) + ON_BN_CLICKED(IDC_DEFAULTOPTIONS, OnBnClickedDefaultoptions) + ON_BN_CLICKED(IDC_DISABLEREWIND, &CTabOption::OnBnClickedDisablerewind) +END_MESSAGE_MAP() + + + +BOOL CTabOption::OnInitDialog() +{ + CDialog::OnInitDialog(); + initOptionDialog(); + return TRUE; +} + +void CTabOption::initOptionDialog() +{ + + CButton *pButton = (CButton*)GetDlgItem(IDC_NOIECACHE); + pButton->SetCheck(1); //pEmu->option.getIntValue(OPTION_PERSISTENTDIR)); + pButton->EnableWindow(0); + pButton = (CButton*)GetDlgItem(IDC_HALTBADREAD); + + pButton->SetCheck(option.getIntValue(OPTION_HALTONBADREAD)); + + pButton = (CButton*)GetDlgItem(IDC_HALTBADACCESS); + pButton->SetCheck(option.getIntValue(OPTION_HALTONBADACC)); + + pButton = (CButton*)GetDlgItem(IDC_HALTEVENT); + pButton->SetCheck(option.getIntValue(OPTION_HALTONHALTS)); + + pButton = (CButton*)GetDlgItem(IDC_ENABLEREWIND); + pButton->SetCheck(option.getIntValue(OPTION_ENABLEREWIND)); + + CWnd *pWnd = (CWnd*)GetDlgItem(IDC_PERSISTENT); + + pWnd->SetWindowText(CDownload::getPersistentPath()); +} + +void CTabOption::OnBnClickedNoiecache() +{ +} + + +void CTabOption::OnBnClickedHaltbadread() +{ + // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle + CButton *pButton = (CButton*)GetDlgItem(IDC_HALTBADREAD); + if (!pButton) return ; + int ck = pButton->GetCheck(); + option.setIntValue(OPTION_HALTONBADREAD,ck); + option.saveOptions(1); + +} + +void CTabOption::OnBnClickedHaltbadaccess() +{ + // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle + CButton *pButton = (CButton*)GetDlgItem(IDC_HALTBADACCESS); + if (!pButton) return ; + int ck = pButton->GetCheck(); + option.setIntValue(OPTION_HALTONBADACC,ck); + option.saveOptions(1); + +} + +void CTabOption::OnBnClickedHaltevent() +{ + // TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle + CButton *pButton = (CButton*)GetDlgItem(IDC_HALTEVENT); + if (!pButton) return ; + int ck = pButton->GetCheck(); + option.setIntValue(OPTION_HALTONHALTS,ck); + option.saveOptions(1); + +} + +void CTabOption::OnBnClickedDefaultoptions() +{ + option.setDefaultOptions(); + option.saveOptions(1); + initOptionDialog(); +} + + +void CTabOption::OnBnClickedDisablerewind() +{ + CButton *pButton = (CButton*)GetDlgItem(IDC_ENABLEREWIND); + if (!pButton) return ; + int ck = pButton->GetCheck(); + option.setIntValue(OPTION_ENABLEREWIND,ck); + option.saveOptions(1); +} diff --git a/Common.win32/TabOption.h b/Common.win32/TabOption.h new file mode 100644 index 0000000..b4e39bd --- /dev/null +++ b/Common.win32/TabOption.h @@ -0,0 +1,30 @@ +#pragma once + + +// Boîte de dialogue CTabOption + +class CTabOption : public CTabActiveInfo +{ + DECLARE_DYNAMIC(CTabOption) + +public: + CTabOption(CWnd* pParent = NULL); // constructeur standard + virtual ~CTabOption(); + +// Données de boîte de dialogue + enum { IDD = IDD_TABOPTION }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + void initOptionDialog(); + DECLARE_MESSAGE_MAP() +public: + virtual BOOL OnInitDialog(); + afx_msg void OnBnClickedNoiecache(); + afx_msg void OnBnClickedHaltbadread(); + afx_msg void OnBnClickedHaltbadaccess(); + afx_msg void OnBnClickedHaltevent(); + afx_msg void OnBnClickedDefaultoptions(); + afx_msg void OnBnClickedHaltbadread2(); + afx_msg void OnBnClickedDisablerewind(); +}; diff --git a/Common.win32/TabRuntime.cpp b/Common.win32/TabRuntime.cpp new file mode 100644 index 0000000..e45d933 --- /dev/null +++ b/Common.win32/TabRuntime.cpp @@ -0,0 +1,298 @@ +// TabRuntime.cpp : fichier d'implémentation +// + +#include "../Common.win32/stdafx.h" +#include "activecommon.h" +#include "tabruntime.h" +#include "../common/ki.h" +#include "sliderzip.h" +#include "../kegs/src/defcomm.h" +#include "../kegs/src/moremem.h" +#include "../kegs/src/paddles.h" +#include "../kegs/src/sim65816.h" +#include "../kegs/src/saveState.h" +#include "../kegs/src/video.h" + +// Boîte de dialogue CTabRuntime + +IMPLEMENT_DYNAMIC(CTabRuntime, CDialog) + + +CTabRuntime::CTabRuntime(CWnd* pParent /*=NULL*/) + : CTabActiveInfo(CTabRuntime::IDD, pParent) +{ +} + +CTabRuntime::~CTabRuntime() +{ +} + +void CTabRuntime::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_ZIPSLIDER, m_SliderZip); +} + + +BEGIN_MESSAGE_MAP(CTabRuntime, CDialog) + ON_CBN_SELCHANGE(IDC_SPEEDMODE, OnCbnSelchangeSpeedmode) + ON_CBN_DROPDOWN(IDC_SPEEDMODE, OnCbnDropdownSpeedmode) + ON_CBN_CLOSEUP(IDC_SPEEDMODE, OnCbnCloseupSpeedmode) + ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnNeedText ) + ON_CBN_SELCHANGE(IDC_JOYSTICK, OnCbnSelchangeJoystick) + ON_BN_CLICKED(IDC_CONSOLEBUTTON3, OnBnClickedConsolebutton) + ON_BN_CLICKED(IDC_PAUSE, OnBnClickedButton1) + + ON_BN_CLICKED(IDC_CONSOLEBUTTON2, &CTabRuntime::OnBnClickedConsolebutton2) + ON_BN_CLICKED(IDC_SAVESTATE, &CTabRuntime::OnBnClickedSavestate) + ON_BN_CLICKED(IDC_RESTORESTATE, &CTabRuntime::OnBnClickedRestorestate) + ON_CBN_SELCHANGE(IDC_VIDEOFX, &CTabRuntime::OnCbnSelchangeVideofx) + ON_CBN_SELCHANGE(IDC_COLORMODE, &CTabRuntime::OnCbnSelchangeColormode) +END_MESSAGE_MAP() + +// Gestionnaires de messages CTabRuntime + + +void fillCombo(CComboBox *_combo,option_id _id,int _cur) +{ + int pos=0; + int i=0; + const char* s; + + namevalue& nv = option.find(_id); + while(s=nv.def->convertTableDesc[i]) + { + _combo->InsertString(pos,s); + _combo->SetItemData(pos,nv.def->convertTableInt[i]); + pos++; + i++; + } + int o = nv.getOrder(_cur); + _combo->SetCurSel(o); +} + + +BOOL CTabRuntime::OnInitDialog() +{ + CDialog::OnInitDialog(); + + CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_SPEEDMODE); + fillCombo(pCombo,OPTION_SPEED,g_sim65816.get_limit_speed()); + + /*CComboBox * */pCombo = (CComboBox*)GetDlgItem(IDC_COLORMODE); + fillCombo(pCombo,OPTION_COLORMODE,r_sim65816.get_color_mode()); + +/*CComboBox * */pCombo = (CComboBox*)GetDlgItem(IDC_VIDEOFX); + fillCombo(pCombo,OPTION_VIDEOFX,r_sim65816.get_video_fx()); + + CSliderCtrl *pSlider = (CSliderCtrl*)GetDlgItem(IDC_ZIPSLIDER); + pSlider->SetRange(0,15); + pSlider->SetPos(g_moremem.g_zipgs_reg_c05a&0x0F); + + CComboBox *pComboJoy = (CComboBox*)GetDlgItem(IDC_JOYSTICK); + fillCombo(pComboJoy,OPTION_JOYSTICKMODE,g_joystick_type); + + CComboBox *pComboState = (CComboBox*)GetDlgItem(IDC_STATE); + for(int i=0;i<5;i++) + { + MyString str; + + int state_id = i; + if (state_id==0) + str = "Mem"; + else + str.Format("#%d",state_id); + pComboState->InsertString(i,str.c_str()); + pComboState->SetItemData(i,state_id); + } + pComboState->SetCurSel(0); + + enableSpeedChange=true; + OnCbnSelchangeSpeedmode(); + refresh(); + setPauseText(); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION : les pages de propriétés OCX devraient retourner FALSE +} + +void CTabRuntime::OnCbnSelchangeSpeedmode() +{ + CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_SPEEDMODE); + int sel = pCombo->GetCurSel(); + int sp = pCombo->GetItemData(sel); + CEmulator* emu = CEmulator::theEmulator ; + emu->onSpeedChanged(sp); + + if (enableSpeedChange) + { + CWnd *pSlider = (CWnd*)GetDlgItem(IDC_ZIPSLIDER); + pSlider->EnableWindow(g_sim65816.get_limit_speed() == SPEED_ZIP?SW_SHOW:SW_HIDE); + } + +} + +void CTabRuntime::OnCbnDropdownSpeedmode() +{ + + enableSpeedChange=false; +} + +void CTabRuntime::OnCbnCloseupSpeedmode() +{ + enableSpeedChange=true; +} + +BOOL CTabRuntime::OnNeedText( UINT id, NMHDR * pNMHDR, LRESULT * pResult ) +{ +TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR; + + CSliderCtrl *pSlider = (CSliderCtrl*)GetDlgItem(IDC_ZIPSLIDER); + if (pSlider) + { + CString string; + string.Format("%3d%%", (pSlider->GetPos()+1)*100/16); + ::lstrcpy(pTTT->szText, (LPCTSTR) string); + return TRUE; + } + return FALSE; + +} + +void CTabRuntime::refresh() +{ + CComboBox *pComboJoy = (CComboBox*)GetDlgItem(IDC_JOYSTICK); + namevalue& nv = option.find(OPTION_JOYSTICKMODE); + int sel = nv.getOrder(g_joystick_type); + pComboJoy->SetCurSel(sel); +} + + +int toggleJoystick(int _force); + +void CTabRuntime::OnCbnSelchangeJoystick() +{ + CComboBox *pComboJoy = (CComboBox*)GetDlgItem(IDC_JOYSTICK); + int sel = pComboJoy->GetCurSel(); + int joy = pComboJoy->GetItemData(sel); + + option.setIntValue(OPTION_JOYSTICKMODE,joy); + + outputInfo("switching to %s\n",option.getDescription(OPTION_JOYSTICKMODE,joy)); + + option.saveOptions(1); + refresh(); + + +} + + +void CTabRuntime::OnBnClickedConsolebutton() +{ + CConsole* c = ((CEmulatorWin32*)CEmulator::theEmulator)->theConsole; + if (c) + c->toggleConsole(); +} + + + +void CTabRuntime::setPauseText() +{ + CWnd *pWnd = (CWnd*)GetDlgItem(IDC_PAUSE); + if (pWnd) + {/* + if (r_sim65816.get_state() == IN_PAUSE ) + pWnd->SetWindowText("Resume"); + else + pWnd->SetWindowText("Pause"); + */ + pWnd->SetWindowText("Pause/Resume"); + } +} +void CTabRuntime::OnBnClickedButton1() +{ + if (r_sim65816.get_state()==IN_PAUSE) + r_sim65816.resume(); + else + if (r_sim65816.get_state()==RUNNING) + r_sim65816.pause(); + else + { + printf("emulator not running nor in pause...\n"); + return ; + } + setPauseText(); + +} + +void CTabRuntime::OnBnClickedConsolebutton2() +{ + CEmulator*pEmu = CEmulator::theEmulator; + if (!pEmu) + return ; + + MyString ret; + pEmu->processCommand("screenshot",ret); + ::MessageBox(NULL,ret.c_str(),"Screenshot saved",MB_OK); +} + + +void CTabRuntime::getStateFilename(MyString& filename) +{ + CComboBox *pComboState = (CComboBox*)GetDlgItem(IDC_STATE); + int s = pComboState->GetCurSel(); + int id = pComboState->GetItemData(s); + if (id==0) + return ; + + filename = CDownload::getPersistentPath(); + filename += ACTIVEGS_DIRECTORY_SEPARATOR; + + MyString f; + f.Format( "state_%d.state",id); + filename += f; + +} + +void CTabRuntime::OnBnClickedSavestate() +{ + MyString path; + + getStateFilename(path); + g_savestate.saveState(path.c_str()); + +} + +void CTabRuntime::OnBnClickedRestorestate() +{ + MyString path; + getStateFilename(path); + g_savestate.restoreState(path.c_str()); + +} + + + +void CTabRuntime::OnCbnSelchangeVideofx() +{ + CComboBox *pComboJoy = (CComboBox*)GetDlgItem(IDC_VIDEOFX); + int vfx = pComboJoy->GetCurSel(); + int vfxdata = pComboJoy->GetItemData(vfx); + option.setIntValue(OPTION_VIDEOFX,vfxdata); + option.saveOptions(1); + x_refresh_video(); +} + +void CTabRuntime::OnCbnSelchangeColormode() +{ + CComboBox *pComboJoy = (CComboBox*)GetDlgItem(IDC_COLORMODE); + int cm = pComboJoy->GetCurSel(); + int cmdata = pComboJoy->GetItemData(cm); + option.setIntValue(OPTION_COLORMODE,cmdata); + option.saveOptions(1); + x_refresh_video(); + + + +} + diff --git a/Common.win32/TabRuntime.h b/Common.win32/TabRuntime.h new file mode 100644 index 0000000..da5b2da --- /dev/null +++ b/Common.win32/TabRuntime.h @@ -0,0 +1,45 @@ +#pragma once +#include "sliderzip.h" +#include "../Kegs/Src/StdString.h" + + +// Boîte de dialogue CTabRuntime + +class CTabRuntime : public CTabActiveInfo +{ + DECLARE_DYNAMIC(CTabRuntime) + void getStateFilename(MyString& filename); +public: + CTabRuntime(CWnd* pParent = NULL); // constructeur standard + virtual ~CTabRuntime(); + bool enableSpeedChange; + +// Données de boîte de dialogue + enum { IDD = IDD_TABRUNTIME }; + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + + DECLARE_MESSAGE_MAP() +public: + virtual BOOL OnInitDialog(); + afx_msg void OnCbnSelchangeSpeedmode(); + CSliderZip m_SliderZip; + afx_msg void OnCbnDropdownSpeedmode(); + afx_msg void OnCbnCloseupSpeedmode(); + BOOL OnNeedText( UINT id, NMHDR * pTTTStruct, LRESULT * pResult ); + + virtual void refresh(); + void setPauseText(); + afx_msg void OnCbnSelchangeJoystick(); + afx_msg void OnBnClickedConsolebutton(); + + afx_msg void OnBnClickedButton1(); + + afx_msg void OnBnClickedConsolebutton2(); + afx_msg void OnBnClickedSavestate(); + afx_msg void OnBnClickedRestorestate(); + afx_msg void OnCbnSelchangeVideofx(); + afx_msg void OnCbnSelchangeColormode(); + afx_msg void OnBnClickedConsolebutton3(); +}; diff --git a/Common.win32/TabXml.cpp b/Common.win32/TabXml.cpp new file mode 100644 index 0000000..137e1ee --- /dev/null +++ b/Common.win32/TabXml.cpp @@ -0,0 +1,122 @@ +// TabOption.cpp : fichier d'implémentation +// + +#include "../Common.win32/stdafx.h" +#include "activecommon.h" +#include "tabxml.h" + + + +// Boîte de dialogue CTabOption + +IMPLEMENT_DYNAMIC(CTabXML, CDialog) +CTabXML::CTabXML(CWnd* pParent /*=NULL*/) + : CTabActiveInfo(CTabXML::IDD, pParent) +{ +} + +CTabXML::~CTabXML() +{ +} + +void CTabXML::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_MULTIPLENAME, urlName); + DDX_Control(pDX, IDC_MULTIPLEPUBLISHER, urlPublisher); + +} + + +BEGIN_MESSAGE_MAP(CTabXML, CDialog) + ON_BN_CLICKED(IDC_MULTIPLESWAP, OnBnClickedSwap) +END_MESSAGE_MAP() + + +/* +BOOL CTabOption::OnInitDialog() +{ + CDialog::OnInitDialog(); + initOptionDialog(); + return TRUE; +} +*/ + +void CTabXML::OnBnClickedSwap() +{ + CEmulator* emu = CEmulator::theEmulator ; + if (!emu) return ; + emu->smartSwap(); +} + + +void CTabXML::refresh() +{ + CEmulator* emu = CEmulator::theEmulator; + if (!emu) return ; + + /* + const char * name = "*Custom Config*"; + const char * publisher = ""; + const char * year = ""; + const char * nameurl = NULL; + const char * publisherurl = NULL; + MyString swapdisk = "*not available*"; + int swapdiskenable = 0; + + if (emu->config->pure) + { + name = emu->config->name.c_str(); + year = emu->config->year.c_str(); + publisher = emu->config->publisher.c_str(); + nameurl = emu->config->nameurl.c_str(); + publisherurl = emu->config->publisherurl.c_str(); + int smart = emu->getSmartSwap(); + if (smart) + { + CSlotInfo ref = emu->getLocalIMGInfo(smart/10,smart%10); + if (ref.status == DELAYEDMOUNT) + swapdisk.Format("*%s*",ref.shortname.c_str()); + else + swapdisk = ref.shortname.c_str(); + swapdiskenable=1; + } + } + CWnd* pText = GetDlgItem(IDC_MULTIPLENAME); + if (nameurl && nameurl[0]) + { + urlName.SetURL(nameurl); + urlName.SetWindowText(name); + if (pText) + pText->SetWindowText(NULL); + } + else + { + if (pText) + pText->SetWindowText(name); + } + + if( publisherurl && publisherurl[0]) + urlPublisher.SetURL(publisherurl); + urlPublisher.SetWindowText(publisher); + + + pText = GetDlgItem(IDC_MULTIPLEYEAR); + if (pText) + pText->SetWindowText(year); + + pText = GetDlgItem(IDC_MULTIPLEPUBLISHER); + if (pText) + pText->SetWindowText(publisher); + + + pText = GetDlgItem(IDC_MULTIPLECURRENT); + if (pText) + pText->SetWindowText(swapdisk.c_str()); + + CWnd *swapbutton = GetDlgItem(IDC_MULTIPLESWAP); + if (swapbutton) + ::EnableWindow(swapbutton->m_hWnd,swapdiskenable); + */ + +} \ No newline at end of file diff --git a/Common.win32/TabXml.h b/Common.win32/TabXml.h new file mode 100644 index 0000000..09342d1 --- /dev/null +++ b/Common.win32/TabXml.h @@ -0,0 +1,29 @@ +#pragma once + + +// Boîte de dialogue CTabXML + +class CTabXML : public CTabActiveInfo +{ + DECLARE_DYNAMIC(CTabXML) + +public: + CTabXML(CWnd* pParent = NULL); // constructeur standard + virtual ~CTabXML(); + +// Données de boîte de dialogue + enum { IDD = IDD_TABXML }; + + CHyperLink urlName; + CHyperLink urlPublisher; + + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // Prise en charge DDX/DDV + void initOptionDialog(); + DECLARE_MESSAGE_MAP() +public: +// virtual BOOL OnInitDialog(); + afx_msg void OnBnClickedSwap(); + virtual void refresh(); +}; diff --git a/Common.win32/activecommon.h b/Common.win32/activecommon.h new file mode 100644 index 0000000..4eb02cc --- /dev/null +++ b/Common.win32/activecommon.h @@ -0,0 +1,114 @@ +#pragma once + + +#include "stdafx.h" +#include "../Common/CEmulatorCtrl.h" + +#ifndef UNDER_CE +#include "activeinfo.h" +#include "activecommonres.h" // main symbols +#include "activestatus.h" +#endif + +//#define FTAURL "http://www.freetoolsassociation.com/stat/stat.php?ver=2,0,0,11" + + +bool retrieveProgramFilesPath(MyString& path); + + +#define HIST_DEFAULT_LIMIT 262144 + +HCURSOR CreateAlphaCursor(HINSTANCE hInst); + +struct CConsole +{ + CConsole* theConsole; + HMODULE mod; + + HWND hWnd; + HWND hWndParent; + int visible; + char ConsoleHistory[HIST_DEFAULT_LIMIT]; + int HistorySize; + int BufferSize; + int kNbVisibleLinesInEditCtrl; + int enable; + char inputBuffer[256]; + WNDPROC OldProc; + HFONT hFont; + + + CConsole(); + ~CConsole(); + + void showConsole(); + void hideConsole(); + void initConsole(HINSTANCE hInst,HWND hWnd); + void shutConsole(HWND); + void toggleConsole(); + void addLine(const char* buf); + void enableConsole(); + void disableConsole(); + int read(char* buf); + void refreshLine(); + +}; + +const int DEFAULTCONFIGPARAM = -1000; + + + +class CEmulatorWin32 : public CEmulator +{ +public: + +#ifndef UNDER_CE + CConsole* theConsole; + CActiveInfo* activeInfo; + CActiveStatus* wStatus; + CActiveStatus* wLoading; + CBitmap wLoadingBitmap[4]; + HCURSOR hAlphaCursor; +#endif + HANDLE hThread; + HWND m_hWnd; + + + HMODULE mod; + + HHOOK hhkLowLevelKybd; + void enableSystemKeys(); + void disableSystemKeys(); + int hasFocus(); + + static DWORD WINAPI myThread(LPVOID lpParameter); + + HINSTANCE hInst; + + CEmulatorWin32(CEmulator** _parent); + int initWindow(HWND _hWnd,HINSTANCE _hInst); + ~CEmulatorWin32(); + + LRESULT windowProc(UINT message, WPARAM wParam, LPARAM lParam); + void destroy(); + LRESULT eventHandler(UINT umsg, WPARAM wParam, LPARAM lParam); + void keyHandler(UINT raw_vk,BOOL down, UINT flags); + + void x_LaunchThread(); + void x_WaitForEndThread(); + + virtual void refreshStatus(const char* _msg); + virtual void showLoading( int _loading,int _disk); + void ShowActiveInfo(); + virtual void showStatus(const char* _msg); + virtual void loadingInProgress(int _motorOn,int _slot, int _drive); + virtual void disableConsole(); + virtual int activeRead(char *buf); + virtual void getEngineString(MyString& _engine); + + +}; + + + + diff --git a/Common.win32/activecommonres.h b/Common.win32/activecommonres.h new file mode 100644 index 0000000..6307ac2 --- /dev/null +++ b/Common.win32/activecommonres.h @@ -0,0 +1,90 @@ +//{{NO_DEPENDENCIES}} +// fichier Include Microsoft Visual C++. +// Utilisé par ActiveCommon.rc +// +#define IDB_ALPHACURSOR 102 +#define IDD_STATUS 202 +#define IDD_LOADING 203 +#define IDC_RICHEDIT22 205 +#define IDC_EDIT22 205 +#define IDB_DISK51 205 +#define IDB_DISK52 206 +#define IDC_STATUS 207 +#define IDD_ACTIVEINFO 208 +#define IDB_DISK61 209 +#define IDD_TABGENERAL 209 +#define IDB_DISK62 210 +#define IDD_TABRUNTIME 210 +#define IDD_TABDISKCONF 210 +#define IDD_TABPARAM 211 +#define IDC_IMAGECTRLDISK 211 +#define IDD_TABOPTION 212 +#define IDD_TABHELP 213 +#define IDD_TABRUNTIME1 214 +#define IDC_CURSOR1 214 +#define IDC_URLFTA 215 +#define IDD_TABXML 215 +#define IDC_URLOG 217 +#define IDC_URLKD 218 +#define IDC_SPEED 219 +#define IDC_URLKD2 219 +#define IDC_SLOTLIST 220 +#define IDC_ACTIVETAB 221 +#define IDC_PARAMLIST 222 +#define IDC_URLTD 223 +#define IDC_NOIECACHE 224 +#define IDC_PERSISTENT 225 +#define IDC_SPEEDMODE 226 +#define IDC_ZIPSLIDER 227 +#define IDC_JOYSTICK 228 +#define IDC_CONSOLEBUTTON 229 +#define IDC_PAUSE 230 +#define IDC_HALTBADREAD 231 +#define IDC_CONSOLEBUTTON2 231 +#define IDC_HALTEVENT 232 +#define IDC_SAVESTATE 232 +#define IDC_HALTBADACCESS 233 +#define IDC_CONSOLEBUTTON4 233 +#define IDC_RESTORESTATE 233 +#define IDC_DEFAULTOPTIONS 234 +#define IDC_RESTORESTATE2 234 +#define IDC_REWINDSTATE 234 +#define IDC_VIDEOFX 234 +#define IDC_COLORMODE 235 +#define IDC_EDITURL 236 +#define IDC_CLEARCACHE 236 +#define IDC_CONSOLEBUTTON3 236 +#define IDC_DISABLEREWIND 237 +#define IDC_ENABLEREWIND 237 +#define IDC_MOUNTSLOT 238 +#define IDC_MOUNTBUTTON 239 +#define IDC_EJECT 240 +#define IDC_RELOAD 241 +#define IDC_FILESELECT 242 +#define IDC_REBOOT5 243 +#define IDC_REBOOT6 244 +#define IDC_REBOOT7 245 +#define IDC_STATICSLOT2 246 +#define IDC_EJECT2 247 +#define IDC_SWAP 247 +#define IDC_COMBOSLOT 248 +#define IDC_BUILD 249 +#define IDC_VERSION 250 +#define IDC_MULTIPLECURRENT 251 +#define IDC_MULTIPLENAME 252 +#define IDC_MULTIPLEPUBLISHER 253 +#define IDC_MULTIPLEYEAR 254 +#define IDC_MULTIPLESWAP 255 +#define IDC_COMBO1 257 +#define IDC_STATE 257 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 216 +#define _APS_NEXT_COMMAND_VALUE 32768 +#define _APS_NEXT_CONTROL_VALUE 258 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/Common.win32/activeconfig.c b/Common.win32/activeconfig.c new file mode 100644 index 0000000..1ef2a84 --- /dev/null +++ b/Common.win32/activeconfig.c @@ -0,0 +1,239 @@ + +#include +#include +#include +#include "../src/defc.h" +#include "ki.h" + +extern Iwm iwm; + +void (*ki_loadingptr)(int,int,int) = NULL; + +void prepareDriveInfo(Disk* dsk,int slot, int drive) +{ + int l = dsk->image_size; + int s = dsk->image_start ; + int p = (dsk->image_type == DSK_TYPE_PRODOS); + readImageInfo(slot,drive+1,l,s,p); +} + +int toggleJoystick(int _force) + { + if (_force==-2) + { + // auto + joystick_init(); // ? Joy + } + else + if (_force==-1) + { + if (g_joystick_type == JOYSTICK_MOUSE) + g_joystick_type = JOYSTICK_NONE; + else + if (g_joystick_type == JOYSTICK_NONE) + { + joystick_init(); // ? Joy + // can be mouse if not detected + } + else + { + // joystick_win32 + g_joystick_type=JOYSTICK_MOUSE; + } + } + else + { + g_joystick_type = _force; + if (g_joystick_type == JOYSTICK_WIN32_1) + joystick_init(); + } + + if (g_joystick_type == JOYSTICK_MOUSE) + printf("joystick set to mouse emulation\n"); + else + if (g_joystick_type == JOYSTICK_NONE) + printf("joystick set to none\n"); + else + printf("joystick set to native\n"); + + refreshInfo(); + return 1; +} + + +#ifndef _CONSOLE + +/* +void ejectDisk(int slot,int disk) +{ + setLocalIMG(slot,disk,NULL); +} +*/ + + +void checkImages() +{ + extern int g_highest_smartport_unit ; + extern Iwm iwm; + + if (mountImages()) + { + printf("Mounting images...\n"); + + g_highest_smartport_unit = -1; + + insert_disk(5,0,getLocalIMG(5,1),0,0,0,0); + insert_disk(5,1,getLocalIMG(5,2),0,0,0,0); + insert_disk(6,0,getLocalIMG(6,1),0,0,0,0); + insert_disk(6,1,getLocalIMG(6,2),0,0,0,0); + + insert_disk(7,0,getLocalIMG(7,1),0,0,0,0); + insert_disk(7,1,getLocalIMG(7,2),0,0,0,0); + + refreshInfo(); + + } +} +/* +extern void ejectDiskCtrl(int _slot,int _drive); +void ejectDisk(int _slot,int _drive) +{ + if (!g_inMount) + ejectDiskCtrl(_slot,_drive); +} +*/ + +void config_init() +{ + /* +#ifndef _USRDLL + insert_disk(5,0,"nucleus.2mg",0,0,0,0); + insert_disk(6,0,"flobynoid (2002).dsk",0,0,0,0); +#endif + */ +} + +char bram_default[]={ +(char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x0D, (char)0x06, (char)0x02, (char)0x01, (char)0x01, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x07, (char)0x06, (char)0x02, (char)0x01, (char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x0F, (char)0x06, (char)0x06, (char)0x00, (char)0x05, (char)0x06, +(char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x03, (char)0x02, (char)0x02, (char)0x02, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x02, (char)0x03, (char)0x04, (char)0x05, (char)0x06, +(char)0x07, (char)0x00, (char)0x00, (char)0x01, (char)0x02, (char)0x03, (char)0x04, (char)0x05, (char)0x06, (char)0x07, (char)0x08, (char)0x09, (char)0x0A, (char)0x0B, (char)0x0C, (char)0x0D, +(char)0x0E, (char)0x0F, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, +(char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFF, (char)0xFD, (char)0x96, (char)0x57, (char)0x3C +}; + +void updateBramCheckSum(unsigned char* buf) // original code in FF/B61D +{ + register short int crc=0; // LDA #0 + int i; // CLC + for(i=255-4-1;i>=0;i--) // LDX #FA + { + crc = (crc << 1) | ((crc>>15) & 1); // ROL (1-bits) +#ifdef UNDER_CE + crc += buf[i]; + crc += buf[i+1]*256; +#else + crc += *(unsigned short*)(buf+i); // ADC bram,X +#endif + } // DEX + // CPX #FF + // BNE Loop + *(unsigned short*)(buf+252) = crc; // TAX + *(unsigned short*)(buf+254) = crc ^0xAAAA; // EOR #AAAA +} + + +void initializeBram(byte* g_bram_ptr) +{ + memcpy(g_bram_ptr,bram_default,256); + updateBramParameters(g_bram_ptr); + updateBramCheckSum(g_bram_ptr); + +} +#else + +void config_init() +{ +// insert_disk(7,0,"system6.2mg",0,0,0,0); +// insert_disk(7,0,"C:\\Work\\GS\\Images\\GSOS_6.2MG",0,0,0,0); +// insert_disk(7,0,"OOTW.2MG",0,0,0,0); + +// insert_disk(7,0,"C:\\Work\\GS\\Images\\NFCDemoDrive.2mg",0,0,0,0); + + insert_disk(5,0,"nucleus.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\ACS_Demo2.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\StarWizard(OK).2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\BeamDemo.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\Bestof2vol1.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\MODULAE.2MG",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\delta.2MG",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\TFORCE1.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\manoir.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\BOUNCIN_FERNO.2MG",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\Rastan with Intro Disk 1.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\Aaargh!.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\CaliforniaDemo.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\xmasdemo.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\nodrugs.2mg",0,0,0,0); +// insert_disk(5,0,"C:\\Work\\GS\\Images\\Star_Trek_Classic.2mg",0,0,0,0); + +// insert_disk(5,0,"C:\\Work\\GS\\Images\\shark.2mg",0,0,0,0); + +// insert_disk(6,0,"C:\\Work\\GS\\Images\\flobynoid (2002).dsk",0,0,0,0); +// insert_disk(6,0,"C:\\Work\\GS\\Images\\Ultima III - Exodus (Master) (Disk 1 of 2).zip_0_Ultima III - Exodus (Master) (Disk 1 of 2)[1].dsk",0,0,0,0); +// insert_disk(6,0,"C:\\Work\\GS\\Images\\karateka.dsk",0,0,0,0); + +} + +#endif + + + +void monitorStatus(int motorOn,int drive,int select) +{ + if (ki_loadingptr) + ki_loadingptr(motorOn,drive,select); + +} + +#ifndef UNDER_CE +char targetSpeed[256]; +char estimatedSpeed[256]; + +void updateInfo(const char* target,const char *speed) +{ + strcpy(targetSpeed,target); + strcpy(estimatedSpeed,speed); + +} +#endif + + +// SIM86516 + +void fatalExit(int ret) +{ + char str[255]; + unsigned short strw[1024]; + sprintf(str,"Critical Error : %d",ret); + +#ifndef UNDER_CE + MessageBox(NULL,str,"ActiveGS Halted!",MB_OK); +#else + + MultiByteToWideChar(CP_ACP, 0,str,strlen(str),strw,1024); + + MessageBox(NULL,strw,_T("ActiveGS Halted!"),MB_OK); +#endif + ExitThread(ret); +} \ No newline at end of file diff --git a/Common.win32/bitmap1.bmp b/Common.win32/bitmap1.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6e8e840620a27fb2fa28f68c860a5eaa5714167a GIT binary patch literal 1270 zcmZ?r{l>xo24z4}1BeZvn2`Y@(EybPD?%X}7#M(vp`ign0ZAZ};lP0dKpG_RAB-6O a{|B*v7zjZ^ApR&A4S~@R7!82|3IPD0SCat% literal 0 HcmV?d00001 diff --git a/Common.win32/bitmap2.bmp b/Common.win32/bitmap2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3568145a2a9b56b4b0eab73724b7a36f0db2fcf2 GIT binary patch literal 958 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 Od_9!ZIcC0Aoc{&yv;V&U literal 0 HcmV?d00001 diff --git a/Common.win32/console.rc b/Common.win32/console.rc new file mode 100644 index 0000000..bf64627 --- /dev/null +++ b/Common.win32/console.rc @@ -0,0 +1,114 @@ +// Microsoft Visual C++ generated resource script. +// +#include "consoleresrc.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "consoleresrc.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// French (France) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_FRA) +#ifdef _WIN32 +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONSOLE DIALOGEX 0, 0, 418, 252 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ActiveGS Console v1.1" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Command",IDC_STATIC,6,216,405,30 + PUSHBUTTON "Go!",IDC_GO,12,228,24,12 + PUSHBUTTON "Step",IDC_STEP,42,228,24,12 + PUSHBUTTON "Regs",IDC_REGS,72,228,24,12 + PUSHBUTTON "Brk!",IDC_BUTTONBRK,102,228,24,12 + CONTROL "",IDC_EDIT2,"RichEdit20A",ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP,7,7,404,203 + EDITTEXT IDC_EDIT1,138,228,267,12,ES_AUTOHSCROLL | WS_DISABLED +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_CONSOLE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 411 + TOPMARGIN, 7 + BOTTOMMARGIN, 245 + END +END +#endif // APSTUDIO_INVOKED + +#endif // French (France) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/Common.win32/consoleresrc.h b/Common.win32/consoleresrc.h new file mode 100644 index 0000000..000ab4a --- /dev/null +++ b/Common.win32/consoleresrc.h @@ -0,0 +1,23 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by console.rc +// +#define IDD_CONSOLE 101 +#define IDC_EDIT2 103 +#define IDC_EDIT1 104 +#define IDC_GO 105 +#define IDC_STEP 106 +#define IDC_REGS 107 +#define IDC_BUTTONBRK 108 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 114 +#define _APS_NEXT_COMMAND_VALUE 40013 +#define _APS_NEXT_CONTROL_VALUE 1004 +#define _APS_NEXT_SYMED_VALUE 109 +#endif +#endif diff --git a/Common.win32/cursor1.cur b/Common.win32/cursor1.cur new file mode 100644 index 0000000000000000000000000000000000000000..f6a36736c8b02e1131f503ffcfea1cbe51e4c0ad GIT binary patch literal 326 zcma*hEfNAT42I#aTfs00P#6R&k<1_wa1;&zXV^%N#Zfo{a>YV;(}DoC={!j%lm1AJ zlG;{UXsT_JmXbE0r6Uq6!b+~Gp@ax`ubYuMy|@#ZV_{O5=5Cr{g*|ppQ@#Y|&NzWL k{?Up*jEaHDuU?&pM{)4GsvFfluGBi`-e;`Q{Tkf;4X}ZDs{jB1 literal 0 HcmV?d00001 diff --git a/Common.win32/disk52.bmp b/Common.win32/disk52.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ec1c8f1f2ef777c603f0dc8b093d02195fa657e8 GIT binary patch literal 958 zcmb`Gu@S;B3`NC3A9kRjVF@Z4cA+Az*KoxqoJUHV%KR_K!3yFI?xIAt@~nIdIh?Q0 zt*G5G9^ohW0ltwPMv=?3&UimLW09b@gun=n3qeW=GfCE4a%Kd_MTDVu?Y1Vzj@J5K z^)19x;ab-)vAo})Km0*&b4Z_{`y?!ncGIpzn4eVSi`FVXPo8K zA0F!4mOR3^`V;TEoZ~~=YVyfP$e`VZ>$ZHs(bpFi96HF3A3ES8>-6-audiF1eVd+@ Quzo+wg~Gi*!2jR>3ukxMqyPW_ literal 0 HcmV?d00001 diff --git a/Common.win32/disk54.bmp b/Common.win32/disk54.bmp new file mode 100644 index 0000000000000000000000000000000000000000..aa61f4bc3b3bb030b8373fe31807a0ee2d410a0a GIT binary patch literal 958 zcmc(dF%H5o3`IWzsbS*|EG%4tiG{l`0i(CBU2_?fn}z?~N~KXUfRJ$F#Cmam?5L;9 za}Bo}*8}}X-_uvva0SlOx#HdAiUIQpGevX`1}P=(BH1T$Rz&9z;&QLr^(#*4H|>h-BH%#_wuad=q=Rh q1pD&zvM)(&V~oSH9^obj;!xB18D}|F{T6T5!zSjw6fN!Z|NjMADC^Y# literal 0 HcmV?d00001 diff --git a/Common.win32/disk55.bmp b/Common.win32/disk55.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b64554bde0a28c4cb4b646ff3bdf486e29cd3a0e GIT binary patch literal 958 zcmc(dF%H5o3`IWzsp-ZYSXj6O6AO1?0!DAFU2_@Ko0b3FO3>g8Wx&5x8s~*qK zHQcUT_w)mOM_*yX6*x`jino(12FxeS6wx^t^nK4=Wblb$P($U z8DX+`M}vwuB>hU++o>ZH~Dv%=`89tP2tE5c0NCCmRU${gJo6qPZ>q|6f4!> // composants MFC principaux et standard +#include // extensions MFC +#include // Classes MFC Automation +#include // MFC support for ActiveX Controls +#include // Prise en charge des MFC pour les contrôles communs Internet Explorer 4 +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // Prise en charge des MFC pour les contrôles communs Windows +#endif // _AFX_NO_AFXCMN_SUPPORT + diff --git a/Common.win32/vs10fix/afxctrlcontainer.cpp b/Common.win32/vs10fix/afxctrlcontainer.cpp new file mode 100644 index 0000000..e917442 --- /dev/null +++ b/Common.win32/vs10fix/afxctrlcontainer.cpp @@ -0,0 +1,378 @@ +// This is a part of the Microsoft Foundation Classes C++ library. +// Copyright (C) Microsoft Corporation +// All rights reserved. +// +// This source code is only intended as a supplement to the +// Microsoft Foundation Classes Reference and related +// electronic documentation provided with the library. +// See these sources for detailed information regarding the +// Microsoft Foundation Classes product. +// +// CWnd support for MFC Control containment (Feature Pack controls) +// + +#include "..\stdafx.h" +#include "afxpriv.h" +#include "afxole.h" +#include "..\src\mfc\oleimpl2.h" +#include "..\src\mfc\afximpl.h" +#include "afxctrlcontainer.h" +// OG TO REDUCE EXE SIZE +/* +#include "afxtagmanager.h" +#include "afxbutton.h" +#include "afxcolorbutton.h" +#include "afxeditbrowsectrl.h" +#include "afxfontcombobox.h" +#include "afxlinkctrl.h" +#include "afxmaskededit.h" +#include "afxmenubutton.h" +#include "afxpropertygridctrl.h" +#include "afxshelllistctrl.h" +#include "afxshelltreectrl.h" +#include "afxvslistbox.h" +*/ + +//////////////////////////////////////////////////////////////////////////// + +static void DoRegisterWindowClass(LPCTSTR lpszClassName, LPCTSTR lpszBaseClassName) +{ + ASSERT(lpszClassName != NULL); + ASSERT(lpszBaseClassName != NULL); + + WNDCLASS wnd = {0}; + + HINSTANCE hInst = AfxGetInstanceHandle(); + if (!AfxCtxGetClassInfo(hInst, lpszBaseClassName, &wnd)) + { + wnd.style = CS_DBLCLKS; + wnd.hInstance = hInst; + wnd.lpfnWndProc = ::DefWindowProc; + } + + wnd.lpszClassName = lpszClassName; + AfxRegisterClass(&wnd); +} + +void AfxRegisterMFCCtrlClasses() +{ + DoRegisterWindowClass(_T("MFCButton"), WC_BUTTON); + DoRegisterWindowClass(_T("MFCColorButton"), WC_BUTTON); + DoRegisterWindowClass(_T("MFCEditBrowse"), WC_EDIT); + DoRegisterWindowClass(_T("MFCFontComboBox"), WC_COMBOBOX); + DoRegisterWindowClass(_T("MFCLink"), WC_BUTTON); + DoRegisterWindowClass(_T("MFCMaskedEdit"), WC_EDIT); + DoRegisterWindowClass(_T("MFCMenuButton"), WC_BUTTON); + DoRegisterWindowClass(_T("MFCPropertyGrid"), WC_STATIC); + DoRegisterWindowClass(_T("MFCShellList"), WC_LISTVIEW); + DoRegisterWindowClass(_T("MFCShellTree"), WC_TREEVIEW); + DoRegisterWindowClass(_T("MFCVSListBox"), WC_STATIC); +} + +//////////////////////////////////////////////////////////////////////////// +// CMFCControlContainer + +CMFCControlContainer::CMFCControlContainer(CWnd* pWnd) : m_pWnd(pWnd) +{ +} + +CMFCControlContainer::~CMFCControlContainer() +{ + FreeSubclassedControls(); + ClearControlData(); +} + +BOOL CMFCControlContainer::SubclassDlgControls() +{ + if (m_pWnd->GetSafeHwnd() != NULL) + { + // Subclass Feature Pack controls: + CWnd* pWndChild = m_pWnd->GetWindow(GW_CHILD); + while (pWndChild != NULL) + { + ASSERT_VALID(pWndChild); + + TCHAR lpszClassName [MAX_CLASS_NAME + 1]; + + ::GetClassName(pWndChild->GetSafeHwnd(), lpszClassName, MAX_CLASS_NAME); + CWnd* pWndSubclassedCtrl = CreateDlgControl(lpszClassName); + + if (pWndSubclassedCtrl != NULL) + { + m_arSubclassedCtrls.Add((CObject*)pWndSubclassedCtrl); + pWndSubclassedCtrl->SubclassWindow(pWndChild->GetSafeHwnd()); + } + + pWndChild = pWndChild->GetNextWindow(); + } + + return TRUE; + } + + return FALSE; +} + +void CMFCControlContainer::FreeSubclassedControls() +{ + // Free subclassed controls: + for (int i = 0; i < m_arSubclassedCtrls.GetCount(); i++) + { + if (m_arSubclassedCtrls [i] != NULL) + { + delete m_arSubclassedCtrls [i]; + } + } + m_arSubclassedCtrls.RemoveAll(); +} + +CWnd* CMFCControlContainer::CreateDlgControl(LPCTSTR lpszClassName) +{ + ASSERT(m_pWnd->GetSafeHwnd() != NULL); + + if (lpszClassName != NULL) + { + CString strClass = lpszClassName; + CWnd* pWndSubclassedCtrl = NULL; + /* + if (strClass == _T("MFCButton")) + { + pWndSubclassedCtrl = new CMFCButton; + } + else if (strClass == _T("MFCColorButton")) + { + pWndSubclassedCtrl = new CMFCColorButton; + } + else if (strClass == _T("MFCEditBrowse")) + { + pWndSubclassedCtrl = new CMFCEditBrowseCtrl; + } + else if (strClass == _T("MFCFontComboBox")) + { + pWndSubclassedCtrl = new CMFCFontComboBox; + } + else if (strClass == _T("MFCLink")) + { + pWndSubclassedCtrl = new CMFCLinkCtrl; + } + else if (strClass == _T("MFCMaskedEdit")) + { + pWndSubclassedCtrl = new CMFCMaskedEdit; + } + else if (strClass == _T("MFCMenuButton")) + { + pWndSubclassedCtrl = new CMFCMenuButton; + } + else if (strClass == _T("MFCPropertyGrid")) + { + pWndSubclassedCtrl = new CMFCPropertyGridCtrl; + } + else if (strClass == _T("MFCShellList")) + { + pWndSubclassedCtrl = new CMFCShellListCtrl; + } + else if (strClass == _T("MFCShellTree")) + { + pWndSubclassedCtrl = new CMFCShellTreeCtrl; + } + else if (strClass == _T("MFCVSListBox")) + { + pWndSubclassedCtrl = new CVSListBox; + } + */ + return pWndSubclassedCtrl; + } + + return NULL; +} + +BOOL CMFCControlContainer::IsSubclassedFeaturePackControl(HWND hWndCtrl) +{ + if (hWndCtrl == NULL) + { + return FALSE; + } + + for (int i = 0; i < m_arSubclassedCtrls.GetCount(); i++) + { + CWnd* pWnd = (CWnd*)m_arSubclassedCtrls[i]; + if (pWnd->GetSafeHwnd() == hWndCtrl) + { + return TRUE; + } + } + + return FALSE; +} + +void CMFCControlContainer::PreUnsubclassControl(CWnd* pControl) +{ + /* + CMFCShellListCtrl* pListCtrl = DYNAMIC_DOWNCAST(CMFCShellListCtrl, pControl); + if (pListCtrl != NULL && pListCtrl->GetHeaderCtrl().GetSafeHwnd() != NULL) + { + pListCtrl->GetHeaderCtrl().UnsubclassWindow(); + } + */ +} + +BOOL CMFCControlContainer::ReSubclassControl(HWND hWndCtrl, WORD nIDC, CWnd& control) +{ + if (hWndCtrl == NULL) + { + return FALSE; + } + + int nIndex = -1; + for (int i = 0; i < m_arSubclassedCtrls.GetCount(); i++) + { + CWnd* pWnd = (CWnd*)m_arSubclassedCtrls [i]; + if (pWnd->GetSafeHwnd() == hWndCtrl) + { + nIndex = i; + break; + } + } + + if (nIndex != -1) + { + CWnd* pWnd = DYNAMIC_DOWNCAST(CWnd, m_arSubclassedCtrls [nIndex]); + + if (pWnd->GetSafeHwnd() != NULL) + { + ASSERT_VALID(pWnd); + + // get init state + DWORD dwSize = 0; + BYTE* pbInitData = NULL; + GetControlData(nIDC, dwSize, pbInitData); + + // Free old subclassed control: + m_arSubclassedCtrls [nIndex] = NULL; + + // unsubclass + PreUnsubclassControl(pWnd); + VERIFY(pWnd->UnsubclassWindow() == hWndCtrl); + // destroy + delete pWnd; + + // subclass + if (!control.SubclassWindow(hWndCtrl)) + { + ASSERT(FALSE); // possibly trying to subclass twice? + AfxThrowNotSupportedException(); + } + + // set init state + if (dwSize > 0) + { + control.SendMessage(WM_MFC_INITCTRL, (WPARAM)dwSize, (LPARAM)pbInitData); + } + + return TRUE; + } + } + + return FALSE; +} + +void CMFCControlContainer::SetControlData(WORD nIDC, DWORD dwSize, BYTE* pbData) +{ + CByteArray* pArray = new CByteArray; + pArray->SetSize(dwSize); + + BYTE* pbBuffer = pArray->GetData(); + if (memcpy_s(pbBuffer, dwSize, pbData, dwSize) != 0) + { + delete pArray; + ASSERT(FALSE); + return; + } + + m_mapControlData.SetAt(nIDC, pArray); +} + +BOOL CMFCControlContainer::GetControlData(WORD nIDC, DWORD& dwSize, BYTE*& pbData) +{ + CObject* pData = NULL; + if (m_mapControlData.Lookup(nIDC, pData) && pData != NULL) + { + CByteArray* pArray = (CByteArray*)pData; + dwSize = (DWORD)pArray->GetSize(); + pbData = pArray->GetData(); + return TRUE; + } + + return FALSE; +} + +void CMFCControlContainer::ClearControlData() +{ + WORD nIDC; + CObject* pData = NULL; + POSITION pos = m_mapControlData.GetStartPosition(); + while (pos != NULL) + { + m_mapControlData.GetNextAssoc(pos, nIDC, pData); + CByteArray* pArray = (CByteArray*)pData; + delete pArray; + } + + m_mapControlData.RemoveAll(); +} + +//////////////////////////////////////////////////////////////////////////// +// Accessing dialog DLGINIT helpers + +int __stdcall CMFCControlContainer::UTF8ToString(LPCSTR lpSrc, CString& strDst, int nLength) +{ + LPTSTR lpDst = NULL; + int count = ::MultiByteToWideChar(CP_UTF8, 0, lpSrc, nLength, NULL, 0); + if (count <= 0) + { + return 0; + } + + LPWSTR lpWide = new WCHAR[count + 1]; + memset(lpWide, 0, (count + 1) * sizeof(WCHAR)); + + ::MultiByteToWideChar(CP_UTF8, 0, lpSrc, nLength, lpWide, count); + +#ifdef _UNICODE + lpDst = lpWide; +#else + count = ::WideCharToMultiByte(::GetACP(), 0, lpWide, -1, NULL, 0, NULL, 0); + + if (count > 0) + { + lpDst = new char[count + 1]; + memset(lpDst, 0, count + 1); + + ::WideCharToMultiByte(::GetACP(), 0, lpWide, -1, lpDst, count, NULL, 0); + } + + delete [] lpWide; +#endif + + strDst = lpDst; + delete[] lpDst; + return count; +} + +BOOL __stdcall CMFCControlContainer::ReadBoolProp(CTagManager& tagManager, LPCTSTR lpszTag, BOOL& bMember) +{ + if (lpszTag == NULL) + { + return FALSE; + } + + CString str; +// tagManager.ExcludeTag(lpszTag, str); + + if (str.IsEmpty()) + { + return FALSE; + } + + bMember = (str.CompareNoCase(PS_True) == 0); + return TRUE; +} diff --git a/Common.win32/vs10fix/afxglobals.cpp b/Common.win32/vs10fix/afxglobals.cpp new file mode 100644 index 0000000..7016d57 --- /dev/null +++ b/Common.win32/vs10fix/afxglobals.cpp @@ -0,0 +1,1409 @@ +// This is a part of the Microsoft Foundation Classes C++ library. +// Copyright (C) Microsoft Corporation +// All rights reserved. +// +// This source code is only intended as a supplement to the +// Microsoft Foundation Classes Reference and related +// electronic documentation provided with the library. +// See these sources for detailed information regarding the +// Microsoft Foundation Classes product. + +#include "..\stdafx.h" +#include "afxpriv.h" +#include "afxole.h" +#include "..\src\mfc\oleimpl2.h" +#include "..\src\mfc\afximpl.h" +#include "comdef.h" + +//#include "afxcontrolbarutil.h" +#include "afxglobals.h" +/* +#include "afxvisualmanager.h" +#include "afxkeyboardmanager.h" +#include "afxmenuhash.h" +#include "afxtoolbar.h" +#include "afxmenuimages.h" +#include "afxpaneframewnd.h" +#include "afxdockingmanager.h" +#include "afxvisualmanageroffice2007.h" +#include "afxribbonres.h" + +#include "afxframewndex.h" +#include "afxmdiframewndex.h" +#include "afxoleipframewndex.h" +#include "afxoledocipframewndex.h" +#include "afxmdichildwndex.h" +*/ +extern CObList afxAllToolBars; + +BOOL CMemDC::m_bUseMemoryDC = TRUE; + +static const CString strOfficeFontName = _T("Tahoma"); +static const CString strOffice2007FontName = _T("Segoe UI"); +static const CString strDefaultFontName = _T("MS Sans Serif"); +static const CString strVertFontName = _T("Arial"); +static const CString strMarlettFontName = _T("Marlett"); + +CMemDC::CMemDC(CDC& dc, CWnd* pWnd) : + m_dc(dc), m_bMemDC(FALSE), m_hBufferedPaint(NULL), m_pOldBmp(NULL) +{ + ASSERT_VALID(pWnd); + + pWnd->GetClientRect(m_rect); + + m_rect.right += pWnd->GetScrollPos(SB_HORZ); + m_rect.bottom += pWnd->GetScrollPos(SB_VERT); + + if (afxGlobalData.m_pfBeginBufferedPaint != NULL && afxGlobalData.m_pfEndBufferedPaint != NULL) + { + HDC hdcPaint = NULL; + + if (!afxGlobalData.m_bBufferedPaintInited && afxGlobalData.m_pfBufferedPaintInit != NULL && afxGlobalData.m_pfBufferedPaintUnInit != NULL) + { + afxGlobalData.m_pfBufferedPaintInit(); + afxGlobalData.m_bBufferedPaintInited = TRUE; + } + + m_hBufferedPaint = (*afxGlobalData.m_pfBeginBufferedPaint)(dc.GetSafeHdc(), m_rect, AFX_BPBF_TOPDOWNDIB, NULL, &hdcPaint); + + if (m_hBufferedPaint != NULL && hdcPaint != NULL) + { + m_bMemDC = TRUE; + m_dcMem.Attach(hdcPaint); + } + } + else + { + if (m_bUseMemoryDC && m_dcMem.CreateCompatibleDC(&m_dc) && m_bmp.CreateCompatibleBitmap(&m_dc, m_rect.Width(), m_rect.Height())) + { + //------------------------------------------------------------- + // Off-screen DC successfully created. Better paint to it then! + //------------------------------------------------------------- + m_bMemDC = TRUE; + m_pOldBmp = m_dcMem.SelectObject(&m_bmp); + } + } +} + +CMemDC::CMemDC(CDC& dc, const CRect& rect) : + m_dc(dc), m_bMemDC(FALSE), m_hBufferedPaint(NULL), m_pOldBmp(NULL), m_rect(rect) +{ + ASSERT(!m_rect.IsRectEmpty()); + + if (afxGlobalData.m_pfBeginBufferedPaint != NULL && afxGlobalData.m_pfEndBufferedPaint != NULL) + { + HDC hdcPaint = NULL; + + if (!afxGlobalData.m_bBufferedPaintInited && afxGlobalData.m_pfBufferedPaintInit != NULL && afxGlobalData.m_pfBufferedPaintUnInit != NULL) + { + afxGlobalData.m_pfBufferedPaintInit(); + afxGlobalData.m_bBufferedPaintInited = TRUE; + } + + m_hBufferedPaint = (*afxGlobalData.m_pfBeginBufferedPaint)(dc.GetSafeHdc(), m_rect, AFX_BPBF_TOPDOWNDIB, NULL, &hdcPaint); + + if (m_hBufferedPaint != NULL && hdcPaint != NULL) + { + m_bMemDC = TRUE; + m_dcMem.Attach(hdcPaint); + } + } + else + { + if (m_bUseMemoryDC && m_dcMem.CreateCompatibleDC(&m_dc) && m_bmp.CreateCompatibleBitmap(&m_dc, m_rect.Width(), m_rect.Height())) + { + //------------------------------------------------------------- + // Off-screen DC successfully created. Better paint to it then! + //------------------------------------------------------------- + m_bMemDC = TRUE; + m_pOldBmp = m_dcMem.SelectObject(&m_bmp); + } + } +} + +CMemDC::~CMemDC() +{ + if (m_hBufferedPaint != NULL) + { + m_dcMem.Detach(); + (*afxGlobalData.m_pfEndBufferedPaint)(m_hBufferedPaint, TRUE); + } + else if (m_bMemDC) + { + //-------------------------------------- + // Copy the results to the on-screen DC: + //-------------------------------------- + CRect rectClip; + int nClipType = m_dc.GetClipBox(rectClip); + + if (nClipType != NULLREGION) + { + if (nClipType != SIMPLEREGION) + { + rectClip = m_rect; + } + + m_dc.BitBlt(rectClip.left, rectClip.top, rectClip.Width(), rectClip.Height(), &m_dcMem, rectClip.left, rectClip.top, SRCCOPY); + } + + m_dcMem.SelectObject(m_pOldBmp); + } +} + +static int CALLBACK FontFamalyProcFonts(const LOGFONT FAR* lplf, const TEXTMETRIC FAR* /*lptm*/, ULONG /*ulFontType*/, LPARAM lParam) +{ + ENSURE(lplf != NULL); + ENSURE(lParam != NULL); + + CString strFont = lplf->lfFaceName; + return strFont.CollateNoCase((LPCTSTR) lParam) == 0 ? 0 : 1; +} + +///////////////////////////////////////////////////////////////////////////// +// Cached system metrics, etc +AFX_GLOBAL_DATA afxGlobalData; + +// Initialization code +AFX_GLOBAL_DATA::AFX_GLOBAL_DATA() +{ + // Detect the kind of OS: + OSVERSIONINFO osvi; + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + + ::GetVersionEx(&osvi); + + bIsRemoteSession = GetSystemMetrics(SM_REMOTESESSION); + + bIsWindowsVista = (osvi.dwMajorVersion >= 6); + bIsWindows7 = (osvi.dwMajorVersion == 6) && (osvi.dwMinorVersion >= 1) || (osvi.dwMajorVersion > 6) ; + bDisableAero = FALSE; + + m_bIsRibbonImageScale = TRUE; + + // Cached system values(updated in CWnd::OnSysColorChange) + hbrBtnShadow = NULL; + hbrBtnHilite = NULL; + hbrWindow = NULL; + + UpdateSysColors(); + + m_hinstUXThemeDLL = ::AfxCtxLoadLibraryW(L"UxTheme.dll"); + if (m_hinstUXThemeDLL != NULL) + { + m_pfDrawThemeBackground = (DRAWTHEMEPARENTBACKGROUND)::GetProcAddress(m_hinstUXThemeDLL, "DrawThemeParentBackground"); + m_pfDrawThemeTextEx = (DRAWTHEMETEXTEX)::GetProcAddress(m_hinstUXThemeDLL, "DrawThemeTextEx"); + + m_pfBufferedPaintInit = (BUFFEREDPAINTINIT)::GetProcAddress(m_hinstUXThemeDLL, "BufferedPaintInit"); + m_pfBufferedPaintUnInit = (BUFFEREDPAINTUNINIT)::GetProcAddress(m_hinstUXThemeDLL, "BufferedPaintUnInit"); + + m_pfBeginBufferedPaint = (BEGINBUFFEREDPAINT)::GetProcAddress(m_hinstUXThemeDLL, "BeginBufferedPaint"); + m_pfEndBufferedPaint = (ENDBUFFEREDPAINT)::GetProcAddress(m_hinstUXThemeDLL, "EndBufferedPaint"); + } + else + { + m_pfDrawThemeBackground = NULL; + m_pfDrawThemeTextEx = NULL; + + m_pfBufferedPaintInit = NULL; + m_pfBufferedPaintUnInit = NULL; + + m_pfBeginBufferedPaint = NULL; + m_pfEndBufferedPaint = NULL; + } + + m_hinstDwmapiDLL = ::AfxCtxLoadLibraryW(L"dwmapi.dll"); + if (m_hinstDwmapiDLL != NULL) + { + m_pfDwmExtendFrameIntoClientArea = (DWMEXTENDFRAMEINTOCLIENTAREA)::GetProcAddress(m_hinstDwmapiDLL, "DwmExtendFrameIntoClientArea"); + m_pfDwmDefWindowProc = (DWMDEFWINDOWPROC) ::GetProcAddress(m_hinstDwmapiDLL, "DwmDefWindowProc"); + m_pfDwmIsCompositionEnabled = (DWMISCOMPOSITIONENABLED)::GetProcAddress(m_hinstDwmapiDLL, "DwmIsCompositionEnabled"); + } + else + { + m_pfDwmExtendFrameIntoClientArea = NULL; + m_pfDwmDefWindowProc = NULL; + m_pfDwmIsCompositionEnabled = NULL; + } + + m_hcurStretch = NULL; + m_hcurStretchVert = NULL; + m_hcurHand = NULL; + m_hcurSizeAll = NULL; + m_hiconTool = NULL; + m_hiconLink = NULL; + m_hiconColors = NULL; + m_hcurMoveTab = NULL; + m_hcurNoMoveTab = NULL; + + m_bUseSystemFont = FALSE; + m_bInSettingChange = FALSE; + + UpdateFonts(); + OnSettingChange(); + + m_bIsRTL = FALSE; + m_bBufferedPaintInited = FALSE; + + m_nDragFrameThicknessFloat = 4; // pixels + m_nDragFrameThicknessDock = 3; // pixels + + m_nAutoHideToolBarSpacing = 14; // pixels + m_nAutoHideToolBarMargin = 4; // pixels + + m_nCoveredMainWndClientAreaPercent = 50; // percents + + m_nMaxToolTipWidth = -1; + m_bIsBlackHighContrast = FALSE; + m_bIsWhiteHighContrast = FALSE; + + m_bUseBuiltIn32BitIcons = TRUE; +/* + m_bComInitialized = FALSE; + + m_pTaskbarList = NULL; + m_pTaskbarList3 = NULL; + m_bTaskBarInterfacesAvailable = TRUE; + */ + EnableAccessibilitySupport(); +} + +AFX_GLOBAL_DATA::~AFX_GLOBAL_DATA() +{ + CleanUp(); +} + +void AFX_GLOBAL_DATA::UpdateFonts() +{ + CWindowDC dc(NULL); + m_dblRibbonImageScale = dc.GetDeviceCaps(LOGPIXELSX) / 96.0f; + + if (m_dblRibbonImageScale > 1. && m_dblRibbonImageScale < 1.1) + { + m_dblRibbonImageScale = 1.; + } + + if (fontRegular.GetSafeHandle() != NULL) + { + ::DeleteObject(fontRegular.Detach()); + } + + if (fontTooltip.GetSafeHandle() != NULL) + { + ::DeleteObject(fontTooltip.Detach()); + } + + if (fontBold.GetSafeHandle() != NULL) + { + ::DeleteObject(fontBold.Detach()); + } + + if (fontDefaultGUIBold.GetSafeHandle() != NULL) + { + ::DeleteObject(fontDefaultGUIBold.Detach()); + } + + if (fontUnderline.GetSafeHandle() != NULL) + { + ::DeleteObject(fontUnderline.Detach()); + } + + if (fontDefaultGUIUnderline.GetSafeHandle() != NULL) + { + ::DeleteObject(fontDefaultGUIUnderline.Detach()); + } + + if (fontVert.GetSafeHandle() != NULL) + { + ::DeleteObject(fontVert.Detach()); + } + + if (fontVertCaption.GetSafeHandle() != NULL) + { + ::DeleteObject(fontVertCaption.Detach()); + } + + if (fontMarlett.GetSafeHandle() != NULL) + { + ::DeleteObject(fontMarlett.Detach()); + } + + if (fontSmall.GetSafeHandle() != NULL) + { + ::DeleteObject(fontSmall.Detach()); + } + + // Initialize fonts: + + NONCLIENTMETRICS info; + GetNonClientMetrics (info); + + LOGFONT lf; + memset(&lf, 0, sizeof(LOGFONT)); + + lf.lfCharSet = (BYTE) GetTextCharsetInfo(dc.GetSafeHdc(), NULL, 0); + + lf.lfHeight = info.lfMenuFont.lfHeight; + lf.lfWeight = info.lfMenuFont.lfWeight; + lf.lfItalic = info.lfMenuFont.lfItalic; + + //------------------ + // Adjust font size: + //------------------ + int nFontHeight = lf.lfHeight < 0 ? -lf.lfHeight : lf.lfHeight; + if (nFontHeight <= 12) + { + nFontHeight = 11; + } + else + { + nFontHeight--; + } + + lf.lfHeight = (lf.lfHeight < 0) ? -nFontHeight : nFontHeight; + + // Check if we should use system font + lstrcpy(lf.lfFaceName, info.lfMenuFont.lfFaceName); + + BOOL fUseSystemFont = m_bUseSystemFont || (info.lfMenuFont.lfCharSet > SYMBOL_CHARSET); + if (!fUseSystemFont) + { + // Check for "Segoe UI" or "Tahoma" font existance: + if (::EnumFontFamilies(dc.GetSafeHdc(), NULL, FontFamalyProcFonts, (LPARAM)(LPCTSTR) strOffice2007FontName) == 0) + { + // Found! Use MS Office 2007 font! + lstrcpy(lf.lfFaceName, strOffice2007FontName); + lf.lfQuality = 5 /*CLEARTYPE_QUALITY*/; + } + else if (::EnumFontFamilies(dc.GetSafeHdc(), NULL, FontFamalyProcFonts, (LPARAM)(LPCTSTR) strOfficeFontName) == 0) + { + // Found! Use MS Office font! + lstrcpy(lf.lfFaceName, strOfficeFontName); + } + else + { + // Not found. Use default font: + lstrcpy(lf.lfFaceName, strDefaultFontName); + } + } + + fontRegular.CreateFontIndirect(&lf); + + // Create small font: + LONG lfHeightSaved = lf.lfHeight; + + lf.lfHeight = (long)((1. + abs(lf.lfHeight)) * 2 / 3); + if (lfHeightSaved < 0) + { + lf.lfHeight = -lf.lfHeight; + } + + fontSmall.CreateFontIndirect(&lf); + lf.lfHeight = lfHeightSaved; + + // Create tooltip font: + NONCLIENTMETRICS ncm; + GetNonClientMetrics (ncm); + + lf.lfItalic = ncm.lfStatusFont.lfItalic; + lf.lfWeight = ncm.lfStatusFont.lfWeight; + fontTooltip.CreateFontIndirect(&lf); + + lf.lfItalic = info.lfMenuFont.lfItalic; + lf.lfWeight = info.lfMenuFont.lfWeight; + + // Create "underline" font: + lf.lfUnderline = TRUE; + fontUnderline.CreateFontIndirect(&lf); + lf.lfUnderline = FALSE; + + // Create bold font: + lf.lfWeight = FW_BOLD; + fontBold.CreateFontIndirect(&lf); + + // Create Marlett font: + BYTE bCharSet = lf.lfCharSet; + lf.lfWeight = info.lfMenuFont.lfWeight; + lf.lfCharSet = SYMBOL_CHARSET; + lf.lfWeight = 0; + lf.lfHeight = ::GetSystemMetrics(SM_CYMENUCHECK) - 1; + lstrcpy(lf.lfFaceName, strMarlettFontName); + + fontMarlett.CreateFontIndirect(&lf); + lf.lfCharSet = bCharSet; // Restore charset + + // Create vertical font: + CFont font; + if (font.CreateStockObject(DEFAULT_GUI_FONT)) + { + if (font.GetLogFont(&lf) != 0) + { + lf.lfOrientation = 900; + lf.lfEscapement = 2700; + + lf.lfHeight = info.lfMenuFont.lfHeight; + lf.lfWeight = info.lfMenuFont.lfWeight; + lf.lfItalic = info.lfMenuFont.lfItalic; + + { + lstrcpy(lf.lfFaceName, strVertFontName); + } + + fontVert.CreateFontIndirect(&lf); + + lf.lfEscapement = 900; + fontVertCaption.CreateFontIndirect(&lf); + } + } + + // Create dialog underline and bold fonts: + CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT)); + ASSERT_VALID(pDefaultGUIFont); + pDefaultGUIFont->GetLogFont(&lf); + + lf.lfUnderline = TRUE; + fontDefaultGUIUnderline.CreateFontIndirect(&lf); + lf.lfUnderline = FALSE; + + lf.lfWeight = FW_BOLD; + fontDefaultGUIBold.CreateFontIndirect(&lf); + + UpdateTextMetrics(); + + /* + // Notify toolbars about font changing: + for (POSITION posTlb = afxAllToolBars.GetHeadPosition(); posTlb != NULL;) + { + CMFCToolBar* pToolBar = (CMFCToolBar*) afxAllToolBars.GetNext(posTlb); + ENSURE(pToolBar != NULL); + + if (CWnd::FromHandlePermanent(pToolBar->m_hWnd) != NULL) + { + ASSERT_VALID(pToolBar); + pToolBar->OnGlobalFontsChanged(); + } + } + */ +} + +static BOOL CALLBACK InfoEnumProc( HMONITOR hMonitor, HDC /*hdcMonitor*/, LPRECT /*lprcMonitor*/, LPARAM dwData) +{ + CRect* pRect = (CRect*) dwData; + + MONITORINFO mi; + mi.cbSize = sizeof(MONITORINFO); + + if (GetMonitorInfo(hMonitor, &mi)) + { + CRect rectMon = mi.rcWork; + + pRect->left = min(pRect->left, rectMon.left); + pRect->right = max(pRect->right, rectMon.right); + pRect->top = min(pRect->top, rectMon.top); + pRect->bottom = max(pRect->bottom, rectMon.bottom); + } + + return TRUE; +} + +void AFX_GLOBAL_DATA::OnSettingChange() +{ + m_bInSettingChange = TRUE; + + m_sizeSmallIcon.cx = ::GetSystemMetrics(SM_CXSMICON); + m_sizeSmallIcon.cy = ::GetSystemMetrics(SM_CYSMICON); + + m_rectVirtual.SetRectEmpty(); + + if (!EnumDisplayMonitors(NULL, NULL, InfoEnumProc, (LPARAM) &m_rectVirtual)) + { + ::SystemParametersInfo(SPI_GETWORKAREA, 0, &m_rectVirtual, 0); + } + + // Get system menu animation type: + m_bMenuAnimation = FALSE; + m_bMenuFadeEffect = FALSE; + + if (!bIsRemoteSession) + { + ::SystemParametersInfo(SPI_GETMENUANIMATION, 0, &m_bMenuAnimation, 0); + + if (m_bMenuAnimation) + { + ::SystemParametersInfo(SPI_GETMENUFADE, 0, &m_bMenuFadeEffect, 0); + } + } + + m_nShellAutohideBars = 0; + m_bRefreshAutohideBars = TRUE; + + ::SystemParametersInfo(SPI_GETMENUUNDERLINES, 0, &m_bSysUnderlineKeyboardShortcuts, 0); + m_bUnderlineKeyboardShortcuts = m_bSysUnderlineKeyboardShortcuts; + + m_bInSettingChange = FALSE; +} + +void AFX_GLOBAL_DATA::UpdateSysColors() +{ + m_bIsBlackHighContrast = ::GetSysColor(COLOR_3DLIGHT) == RGB(255, 255, 255) && ::GetSysColor(COLOR_3DFACE) == RGB(0, 0, 0); + m_bIsWhiteHighContrast = ::GetSysColor(COLOR_3DDKSHADOW) == RGB(0, 0, 0) && ::GetSysColor(COLOR_3DFACE) == RGB(255, 255, 255); + + CWindowDC dc(NULL); + m_nBitsPerPixel = dc.GetDeviceCaps(BITSPIXEL); + + clrBarFace = clrBtnFace = ::GetSysColor(COLOR_BTNFACE); + clrBarShadow = clrBtnShadow = ::GetSysColor(COLOR_BTNSHADOW); + clrBarDkShadow = clrBtnDkShadow = ::GetSysColor(COLOR_3DDKSHADOW); + clrBarLight = clrBtnLight = ::GetSysColor(COLOR_3DLIGHT); + clrBarHilite = clrBtnHilite = ::GetSysColor(COLOR_BTNHIGHLIGHT); + clrBarText = clrBtnText = ::GetSysColor(COLOR_BTNTEXT); + clrGrayedText = ::GetSysColor(COLOR_GRAYTEXT); + clrWindowFrame = ::GetSysColor(COLOR_WINDOWFRAME); + + clrHilite = ::GetSysColor(COLOR_HIGHLIGHT); + clrTextHilite = ::GetSysColor(COLOR_HIGHLIGHTTEXT); + + clrBarWindow = clrWindow = ::GetSysColor(COLOR_WINDOW); + clrWindowText = ::GetSysColor(COLOR_WINDOWTEXT); + + clrCaptionText = ::GetSysColor(COLOR_CAPTIONTEXT); + clrMenuText = ::GetSysColor(COLOR_MENUTEXT); + + clrActiveCaption = ::GetSysColor(COLOR_ACTIVECAPTION); + clrInactiveCaption = ::GetSysColor(COLOR_INACTIVECAPTION); + + clrActiveCaptionGradient = ::GetSysColor(COLOR_GRADIENTACTIVECAPTION); + clrInactiveCaptionGradient = ::GetSysColor(COLOR_GRADIENTINACTIVECAPTION); + + clrActiveBorder = ::GetSysColor(COLOR_ACTIVEBORDER); + clrInactiveBorder = ::GetSysColor(COLOR_INACTIVEBORDER); + + clrInactiveCaptionText = ::GetSysColor(COLOR_INACTIVECAPTIONTEXT); + + if (m_bIsBlackHighContrast) + { + clrHotLinkNormalText = clrWindowText; + clrHotLinkHoveredText = clrWindowText; + clrHotLinkVisitedText = clrWindowText; + } + else + { + clrHotLinkNormalText = ::GetSysColor(COLOR_HOTLIGHT); + clrHotLinkHoveredText = RGB(0, 0, 255); // Bright blue + clrHotLinkVisitedText = RGB(128, 0, 128); // Violet + } + + hbrBtnShadow = ::GetSysColorBrush(COLOR_BTNSHADOW); + ENSURE(hbrBtnShadow != NULL); + + hbrBtnHilite = ::GetSysColorBrush(COLOR_BTNHIGHLIGHT); + ENSURE(hbrBtnHilite != NULL); + + hbrWindow = ::GetSysColorBrush(COLOR_WINDOW); + ENSURE(hbrWindow != NULL); + + brBtnFace.DeleteObject(); + brBtnFace.CreateSolidBrush(clrBtnFace); + + brBarFace.DeleteObject(); + brBarFace.CreateSolidBrush(clrBarFace); + + brActiveCaption.DeleteObject(); + brActiveCaption.CreateSolidBrush(clrActiveCaption); + + brInactiveCaption.DeleteObject(); + brInactiveCaption.CreateSolidBrush(clrInactiveCaption); + + brHilite.DeleteObject(); + brHilite.CreateSolidBrush(clrHilite); + + brBlack.DeleteObject(); + brBlack.CreateSolidBrush(clrBtnDkShadow); + + brWindow.DeleteObject(); + brWindow.CreateSolidBrush(clrWindow); + + penHilite.DeleteObject(); + penHilite.CreatePen(PS_SOLID, 1, afxGlobalData.clrHilite); + + penBarFace.DeleteObject(); + penBarFace.CreatePen(PS_SOLID, 1, afxGlobalData.clrBarFace); + + penBarShadow.DeleteObject(); + penBarShadow.CreatePen(PS_SOLID, 1, afxGlobalData.clrBarShadow); + + if (brLight.GetSafeHandle()) + { + brLight.DeleteObject(); + } + + if (m_nBitsPerPixel > 8) + { + COLORREF clrLight = RGB(GetRValue(clrBtnFace) +((GetRValue(clrBtnHilite) - GetRValue(clrBtnFace)) / 2 ), + GetGValue(clrBtnFace) +((GetGValue(clrBtnHilite) - GetGValue(clrBtnFace)) / 2), + GetBValue(clrBtnFace) +((GetBValue(clrBtnHilite) - GetBValue(clrBtnFace)) / 2)); + + brLight.CreateSolidBrush(clrLight); + } + else + { + HBITMAP hbmGray = CreateDitherBitmap(dc.GetSafeHdc()); + ENSURE(hbmGray != NULL); + + CBitmap bmp; + bmp.Attach(hbmGray); + + brLight.CreatePatternBrush(&bmp); + } + +// CMenuImages::CleanUp(); +// CDockingManager::m_bSDParamsModified = TRUE; +} + +BOOL AFX_GLOBAL_DATA::SetMenuFont(LPLOGFONT lpLogFont, BOOL bHorz) +{ + ENSURE(lpLogFont != NULL); + + if (bHorz) + { + // Create regular font: + fontRegular.DeleteObject(); + if (!fontRegular.CreateFontIndirect(lpLogFont)) + { + ASSERT(FALSE); + return FALSE; + } + + // Create underline font: + lpLogFont->lfUnderline = TRUE; + fontUnderline.DeleteObject(); + fontUnderline.CreateFontIndirect(lpLogFont); + lpLogFont->lfUnderline = FALSE; + + // Create bold font(used in the default menu items): + long lSavedWeight = lpLogFont->lfWeight; + lpLogFont->lfWeight = 700; + + fontBold.DeleteObject(); + BOOL bResult = fontBold.CreateFontIndirect(lpLogFont); + + lpLogFont->lfWeight = lSavedWeight; // Restore weight + + if (!bResult) + { + ASSERT(FALSE); + return FALSE; + } + } + else // Vertical font + { + fontVert.DeleteObject(); + if (!fontVert.CreateFontIndirect(lpLogFont)) + { + ASSERT(FALSE); + return FALSE; + } + } + + UpdateTextMetrics(); + return TRUE; +} + +void AFX_GLOBAL_DATA::UpdateTextMetrics() +{ + CWindowDC dc(NULL); + + CFont* pOldFont = dc.SelectObject(&fontRegular); + ENSURE(pOldFont != NULL); + + TEXTMETRIC tm; + dc.GetTextMetrics(&tm); + + int nExtra = tm.tmHeight < 15 ? 2 : 5; + + m_nTextHeightHorz = tm.tmHeight + nExtra; + m_nTextWidthHorz = tm.tmMaxCharWidth + nExtra; + + dc.SelectObject(&fontVert); + dc.GetTextMetrics(&tm); + + nExtra = tm.tmHeight < 15 ? 2 : 5; + + m_nTextHeightVert = tm.tmHeight + nExtra; + m_nTextWidthVert = tm.tmMaxCharWidth + nExtra; + + dc.SelectObject(pOldFont); +} + +HBITMAP AFX_GLOBAL_DATA::CreateDitherBitmap(HDC hDC) +{ + struct // BITMAPINFO with 16 colors + { + BITMAPINFOHEADER bmiHeader; + RGBQUAD bmiColors[16]; + } + bmi; + memset(&bmi, 0, sizeof(bmi)); + + bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); + bmi.bmiHeader.biWidth = 8; + bmi.bmiHeader.biHeight = 8; + bmi.bmiHeader.biPlanes = 1; + bmi.bmiHeader.biBitCount = 1; + bmi.bmiHeader.biCompression = BI_RGB; + + COLORREF clr = afxGlobalData.clrBtnFace; + + bmi.bmiColors[0].rgbBlue = GetBValue(clr); + bmi.bmiColors[0].rgbGreen = GetGValue(clr); + bmi.bmiColors[0].rgbRed = GetRValue(clr); + + clr = ::GetSysColor(COLOR_BTNHIGHLIGHT); + bmi.bmiColors[1].rgbBlue = GetBValue(clr); + bmi.bmiColors[1].rgbGreen = GetGValue(clr); + bmi.bmiColors[1].rgbRed = GetRValue(clr); + + // initialize the brushes + long patGray[8]; + for (int i = 0; i < 8; i++) + patGray[i] = (i & 1) ? 0xAAAA5555L : 0x5555AAAAL; + + HBITMAP hbm = CreateDIBitmap(hDC, &bmi.bmiHeader, CBM_INIT, (LPBYTE)patGray, (LPBITMAPINFO)&bmi, DIB_RGB_COLORS); + return hbm; +} + +#if (WINVER >= 0x0601) +ITaskbarList* AFX_GLOBAL_DATA::GetITaskbarList() +{ + HRESULT hr = S_OK; + + if (!bIsWindows7 || !m_bTaskBarInterfacesAvailable) + { + return NULL; + } + + if (m_pTaskbarList != NULL) + { + return m_pTaskbarList; + } + + if (!m_bComInitialized) + { + hr = CoInitialize(NULL); + if (SUCCEEDED(hr)) + { + m_bComInitialized = TRUE; + } + } + + if (SUCCEEDED(hr)) + { + hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pTaskbarList)); + } + + ASSERT(SUCCEEDED(hr)); + return m_pTaskbarList; +} + +ITaskbarList3* AFX_GLOBAL_DATA::GetITaskbarList3() +{ + HRESULT hr = S_OK; + + if (!bIsWindows7 || !m_bTaskBarInterfacesAvailable) + { + return NULL; + } + + if (m_pTaskbarList3 != NULL) + { + return m_pTaskbarList3; + } + + if (!m_bComInitialized) + { + hr = CoInitialize(NULL); + if (SUCCEEDED(hr)) + { + m_bComInitialized = TRUE; + } + } + + if (SUCCEEDED(hr)) + { + hr = CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&m_pTaskbarList3)); + } + + ASSERT(SUCCEEDED(hr)); + return m_pTaskbarList3; +} + +void AFX_GLOBAL_DATA::ReleaseTaskBarRefs() +{ + m_bTaskBarInterfacesAvailable = FALSE; + + if (m_pTaskbarList != NULL) + { + RELEASE(m_pTaskbarList); + m_pTaskbarList = NULL; + } + + if (m_pTaskbarList3 != NULL) + { + RELEASE(m_pTaskbarList3); + m_pTaskbarList3 = NULL; + } + + if (m_bComInitialized) + { + CoUninitialize(); + m_bComInitialized = FALSE; + } +} +#endif + +void AFX_GLOBAL_DATA::CleanUp() +{ + if (brLight.GetSafeHandle()) + { + brLight.DeleteObject(); + } + + // cleanup fonts: + fontRegular.DeleteObject(); + fontBold.DeleteObject(); + fontUnderline.DeleteObject(); + fontVert.DeleteObject(); + fontVertCaption.DeleteObject(); + fontTooltip.DeleteObject(); + +// ReleaseTaskBarRefs(); + + if (m_bBufferedPaintInited && m_pfBufferedPaintUnInit != NULL) + { + m_pfBufferedPaintUnInit(); + m_bBufferedPaintInited = FALSE; + } + + if (m_hinstUXThemeDLL != NULL) + { + ::FreeLibrary(m_hinstUXThemeDLL); + m_hinstUXThemeDLL = NULL; + } + + if (m_hinstDwmapiDLL != NULL) + { + ::FreeLibrary(m_hinstDwmapiDLL); + m_hinstDwmapiDLL = NULL; + } + + m_bEnableAccessibility = FALSE; +} + +void ControlBarCleanUp() +{ + afxGlobalData.CleanUp(); + + /* + afxMenuHash.CleanUp(); + + CMFCToolBar::CleanUpImages(); + CMenuImages::CleanUp(); + + if (GetCmdMgr() != NULL) + { + GetCmdMgr()->CleanUp(); + } + + CKeyboardManager::CleanUp(); + + // Destroy visualization manager: + CMFCVisualManager::DestroyInstance(TRUE ); // bAutoDestroyOnly + CMFCVisualManagerOffice2007::CleanStyle(); + */ +} + +BOOL AFX_GLOBAL_DATA::DrawParentBackground(CWnd* pWnd, CDC* pDC, LPRECT rectClip) +{ + ASSERT_VALID(pDC); + ASSERT_VALID(pWnd); + + BOOL bRes = FALSE; + + CRgn rgn; + if (rectClip != NULL) + { + rgn.CreateRectRgnIndirect(rectClip); + pDC->SelectClipRgn(&rgn); + } + + CWnd* pParent = pWnd->GetParent(); + ASSERT_VALID(pParent); + + // In Windows XP, we need to call DrawThemeParentBackground function to implement + // transparent controls + if (m_pfDrawThemeBackground != NULL) + { + bRes = (*m_pfDrawThemeBackground)(pWnd->GetSafeHwnd(), pDC->GetSafeHdc(), rectClip) == S_OK; + } + + if (!bRes) + { + CPoint pt(0, 0); + pWnd->MapWindowPoints(pParent, &pt, 1); + pt = pDC->OffsetWindowOrg(pt.x, pt.y); + + bRes = (BOOL) pParent->SendMessage(WM_ERASEBKGND, (WPARAM)pDC->m_hDC); + + pDC->SetWindowOrg(pt.x, pt.y); + } + + pDC->SelectClipRgn(NULL); + + return bRes; +} + +CFrameWnd* AFXGetParentFrame(const CWnd* pWnd) +{ + if (pWnd->GetSafeHwnd() == NULL) + { + return NULL; + } + ASSERT_VALID(pWnd); + + const CWnd* pParentWnd = pWnd; + + while (pParentWnd != NULL) + { + /* + if (pParentWnd->IsKindOf(RUNTIME_CLASS(CPaneFrameWnd))) + { + CPaneFrameWnd* pMiniFrame = DYNAMIC_DOWNCAST(CPaneFrameWnd, pParentWnd); + pParentWnd = pMiniFrame->GetParent(); + } + else + */ + { + pParentWnd = pParentWnd->GetParent(); + } + + if (pParentWnd == NULL) + { + return NULL; + } + + if (pParentWnd->IsFrameWnd()) + { + return(CFrameWnd*)pParentWnd; + } + } + + return NULL; +} + +COLORREF AFX_GLOBAL_DATA::GetColor(int nColor) +{ + switch(nColor) + { + case COLOR_BTNFACE: return clrBtnFace; + case COLOR_BTNSHADOW: return clrBtnShadow; + case COLOR_3DDKSHADOW: return clrBtnDkShadow; + case COLOR_3DLIGHT: return clrBtnLight; + case COLOR_BTNHIGHLIGHT: return clrBtnHilite; + case COLOR_BTNTEXT: return clrBtnText; + case COLOR_GRAYTEXT: return clrGrayedText; + case COLOR_WINDOWFRAME: return clrWindowFrame; + + case COLOR_HIGHLIGHT: return clrHilite; + case COLOR_HIGHLIGHTTEXT: return clrTextHilite; + + case COLOR_WINDOW: return clrWindow; + case COLOR_WINDOWTEXT: return clrWindowText; + + case COLOR_CAPTIONTEXT: return clrCaptionText; + case COLOR_MENUTEXT: return clrMenuText; + + case COLOR_ACTIVECAPTION: return clrActiveCaption; + case COLOR_INACTIVECAPTION: return clrInactiveCaption; + + case COLOR_ACTIVEBORDER: return clrActiveBorder; + case COLOR_INACTIVEBORDER: return clrInactiveBorder; + + case COLOR_INACTIVECAPTIONTEXT: return clrInactiveCaptionText; + } + + return ::GetSysColor(nColor); +} + +BOOL AFX_GLOBAL_DATA::SetLayeredAttrib(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags) +{ + return(::SetLayeredWindowAttributes(hwnd, crKey, bAlpha, dwFlags)); +} + +void AFX_GLOBAL_DATA::EnableAccessibilitySupport(BOOL bEnable/* = TRUE*/) +{ + m_bEnableAccessibility = bEnable; +} + +CString AFX_GLOBAL_DATA::RegisterWindowClass(LPCTSTR lpszClassNamePrefix) +{ + ENSURE(lpszClassNamePrefix != NULL); + + // Register a new window class: + HINSTANCE hInst = AfxGetInstanceHandle(); + UINT uiClassStyle = CS_DBLCLKS; + HCURSOR hCursor = ::LoadCursor(NULL, IDC_ARROW); + HBRUSH hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); + + CString strClassName; + strClassName.Format(_T("%s:%x:%x:%x:%x"), lpszClassNamePrefix, (UINT_PTR)hInst, uiClassStyle, (UINT_PTR)hCursor, (UINT_PTR)hbrBackground); + + // See if the class already exists: + WNDCLASS wndcls; + if (::GetClassInfo(hInst, strClassName, &wndcls)) + { + // Already registered, assert everything is good: + ASSERT(wndcls.style == uiClassStyle); + } + else + { + // Otherwise we need to register a new class: + wndcls.style = uiClassStyle; + wndcls.lpfnWndProc = ::DefWindowProc; + wndcls.cbClsExtra = wndcls.cbWndExtra = 0; + wndcls.hInstance = hInst; + wndcls.hIcon = NULL; + wndcls.hCursor = hCursor; + wndcls.hbrBackground = hbrBackground; + wndcls.lpszMenuName = NULL; + wndcls.lpszClassName = strClassName; + + if (!AfxRegisterClass(&wndcls)) + { + AfxThrowResourceException(); + } + } + + return strClassName; +} + +BOOL AFX_GLOBAL_DATA::ExcludeTag(CString& strBuffer, LPCTSTR lpszTag, CString& strTag, BOOL bIsCharsList /* = FALSE*/) +{ + const int iBufLen = strBuffer.GetLength(); + + CString strTagStart = _T("<"); + strTagStart += lpszTag; + strTagStart += _T(">"); + + const int iTagStartLen = strTagStart.GetLength(); + + int iStart = -1; + + int iIndexStart = strBuffer.Find(strTagStart); + if (iIndexStart < 0) + { + return FALSE; + } + + iStart = iIndexStart + iTagStartLen; + + CString strTagEnd = _T("'); + + const int iTagEndLen = strTagEnd.GetLength(); + + int iIndexEnd = -1; + int nBalanse = 1; + for (int i = iStart; i < iBufLen - iTagEndLen + 1; i ++) + { + if (strBuffer [i] != '<') + { + continue; + } + + if (i < iBufLen - iTagStartLen && _tcsncmp(strBuffer.Mid(i), strTagStart, iTagStartLen) == 0) + { + i += iTagStartLen - 1; + nBalanse ++; + continue; + } + + if (_tcsncmp(strBuffer.Mid(i), strTagEnd, iTagEndLen) == 0) + { + nBalanse --; + if (nBalanse == 0) + { + iIndexEnd = i; + break; + } + + i += iTagEndLen - 1; + } + } + + if (iIndexEnd == -1 || iStart > iIndexEnd) + { + return FALSE; + } + + strTag = strBuffer.Mid(iStart, iIndexEnd - iStart); + strTag.TrimLeft(); + strTag.TrimRight(); + + strBuffer.Delete(iIndexStart, iIndexEnd + iTagEndLen - iIndexStart); + + if (bIsCharsList) + { + if (strTag.GetLength() > 1 && strTag [0] == _T('\"')) + { + strTag = strTag.Mid(1, strTag.GetLength() - 2); + } + + strTag.Replace(_T("\\t"), _T("\t")); + strTag.Replace(_T("\\n"), _T("\n")); + strTag.Replace(_T("\\r"), _T("\r")); + strTag.Replace(_T("\\b"), _T("\b")); + strTag.Replace(_T("LT"), _T("<")); + strTag.Replace(_T("GT"), _T(">")); + strTag.Replace(_T("AMP"), _T("&")); + } + + return TRUE; +} + +BOOL AFX_GLOBAL_DATA::DwmExtendFrameIntoClientArea(HWND hWnd, AFX_MARGINS* pMargins) +{ + if (m_pfDwmExtendFrameIntoClientArea == NULL) + { + return FALSE; + } + + HRESULT hres = (*m_pfDwmExtendFrameIntoClientArea)(hWnd, pMargins); + return hres == S_OK; +} + +LRESULT AFX_GLOBAL_DATA::DwmDefWindowProc(HWND hWnd, UINT message, WPARAM wp, LPARAM lp) +{ + if (m_pfDwmDefWindowProc == NULL) + { + return(LRESULT)-1; + } + + LRESULT lres = 0; + (*m_pfDwmDefWindowProc)(hWnd, message, wp, lp, &lres); + + return lres; +} + +BOOL AFX_GLOBAL_DATA::DwmIsCompositionEnabled() +{ + if (m_pfDwmIsCompositionEnabled == NULL || bDisableAero) + { + return FALSE; + } + + BOOL bEnabled = FALSE; + + (*m_pfDwmIsCompositionEnabled)(&bEnabled); + return bEnabled; +} + +BOOL AFX_GLOBAL_DATA::DrawTextOnGlass(HTHEME hTheme, CDC* pDC, int iPartId, int iStateId, CString strText, CRect rect, DWORD dwFlags, int nGlowSize, COLORREF clrText) +{ + //---- bits used in dwFlags of DTTOPTS ---- +#define AFX_DTT_TEXTCOLOR (1UL << 0) // crText has been specified +#define AFX_DTT_BORDERCOLOR (1UL << 1) // crBorder has been specified +#define AFX_DTT_SHADOWCOLOR (1UL << 2) // crShadow has been specified +#define AFX_DTT_SHADOWTYPE (1UL << 3) // iTextShadowType has been specified +#define AFX_DTT_SHADOWOFFSET (1UL << 4) // ptShadowOffset has been specified +#define AFX_DTT_BORDERSIZE (1UL << 5) // nBorderSize has been specified +#define AFX_DTT_FONTPROP (1UL << 6) // iFontPropId has been specified +#define AFX_DTT_COLORPROP (1UL << 7) // iColorPropId has been specified +#define AFX_DTT_STATEID (1UL << 8) // IStateId has been specified +#define AFX_DTT_CALCRECT (1UL << 9) // Use pRect as and in/out parameter +#define AFX_DTT_APPLYOVERLAY (1UL << 10) // fApplyOverlay has been specified +#define AFX_DTT_GLOWSIZE (1UL << 11) // iGlowSize has been specified +#define AFX_DTT_CALLBACK (1UL << 12) // pfnDrawTextCallback has been specified +#define AFX_DTT_COMPOSITED (1UL << 13) // Draws text with antialiased alpha(needs a DIB section) + + if (hTheme == NULL || m_pfDrawThemeTextEx == NULL || !DwmIsCompositionEnabled()) + { + pDC->DrawText(strText, rect, dwFlags); + return FALSE; + } + + CComBSTR bstmp = (LPCTSTR)strText; + + wchar_t* wbuf = new wchar_t[bstmp.Length() + 1]; + wcscpy_s(wbuf, bstmp.Length() + 1, bstmp); + + AFX_DTTOPTS dto; + memset(&dto, 0, sizeof(AFX_DTTOPTS)); + dto.dwSize = sizeof(AFX_DTTOPTS); + dto.dwFlags = AFX_DTT_COMPOSITED; + + if (nGlowSize > 0) + { + dto.dwFlags |= AFX_DTT_GLOWSIZE; + dto.iGlowSize = nGlowSize; + } + + if (clrText != (COLORREF)-1) + { + dto.dwFlags |= AFX_DTT_TEXTCOLOR; + dto.crText = clrText; + } + + (*m_pfDrawThemeTextEx)(hTheme, pDC->GetSafeHdc(), iPartId, iStateId, wbuf, -1, dwFlags, rect, &dto); + + delete [] wbuf; + + return TRUE; +} + +HCURSOR AFX_GLOBAL_DATA::GetHandCursor() +{ + if (m_hcurHand == NULL) + { + m_hcurHand = ::LoadCursorW(NULL, MAKEINTRESOURCEW(IDC_HAND)); + } + + return m_hcurHand; +} + +BOOL AFX_GLOBAL_DATA::Resume() +{ + m_hinstUXThemeDLL = ::AfxCtxLoadLibraryW(L"UxTheme.dll"); + + if (m_hinstUXThemeDLL != NULL) + { + m_pfDrawThemeBackground = (DRAWTHEMEPARENTBACKGROUND)::GetProcAddress (m_hinstUXThemeDLL, "DrawThemeParentBackground"); + m_pfDrawThemeTextEx = (DRAWTHEMETEXTEX)::GetProcAddress (m_hinstUXThemeDLL, "DrawThemeTextEx"); + m_pfBeginBufferedPaint = (BEGINBUFFEREDPAINT)::GetProcAddress (m_hinstUXThemeDLL, "BeginBufferedPaint"); + m_pfEndBufferedPaint = (ENDBUFFEREDPAINT)::GetProcAddress (m_hinstUXThemeDLL, "EndBufferedPaint"); + } + else + { + m_pfDrawThemeBackground = NULL; + m_pfDrawThemeTextEx = NULL; + m_pfBeginBufferedPaint = NULL; + m_pfEndBufferedPaint = NULL; + } + + if (m_hinstDwmapiDLL != NULL) + { + m_hinstDwmapiDLL = ::AfxCtxLoadLibraryW(L"dwmapi.dll"); + ENSURE(m_hinstDwmapiDLL != NULL); + + m_pfDwmExtendFrameIntoClientArea = (DWMEXTENDFRAMEINTOCLIENTAREA)::GetProcAddress (m_hinstDwmapiDLL, "DwmExtendFrameIntoClientArea"); + m_pfDwmDefWindowProc = (DWMDEFWINDOWPROC) ::GetProcAddress (m_hinstDwmapiDLL, "DwmDefWindowProc"); + m_pfDwmIsCompositionEnabled = (DWMISCOMPOSITIONENABLED)::GetProcAddress (m_hinstDwmapiDLL, "DwmIsCompositionEnabled"); + } + + if (m_bEnableAccessibility) + { + EnableAccessibilitySupport(); + } + /* + CMFCVisualManagerOffice2007::CleanStyle (); + + if (CMFCVisualManager::m_pRTIDefault != NULL) + { + CMFCVisualManager::SetDefaultManager (CMFCVisualManager::m_pRTIDefault); + } + */ + return TRUE; +} + +BOOL AFX_GLOBAL_DATA::GetNonClientMetrics (NONCLIENTMETRICS& info) +{ + struct AFX_OLDNONCLIENTMETRICS + { + UINT cbSize; + int iBorderWidth; + int iScrollWidth; + int iScrollHeight; + int iCaptionWidth; + int iCaptionHeight; + LOGFONT lfCaptionFont; + int iSmCaptionWidth; + int iSmCaptionHeight; + LOGFONT lfSmCaptionFont; + int iMenuWidth; + int iMenuHeight; + LOGFONT lfMenuFont; + LOGFONT lfStatusFont; + LOGFONT lfMessageFont; + }; + + const UINT cbProperSize = (_AfxGetComCtlVersion() < MAKELONG(1, 6)) + ? sizeof(AFX_OLDNONCLIENTMETRICS) : sizeof(NONCLIENTMETRICS); + + info.cbSize = cbProperSize; + + return ::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, cbProperSize, &info, 0); +} + + +BOOL AFXAPI AfxIsExtendedFrameClass(CWnd* pWnd) +{ + /* + ENSURE( pWnd ); + if (pWnd->IsKindOf(RUNTIME_CLASS(CFrameWndEx))) + { + return TRUE; + } + if (pWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWndEx))) + { + return TRUE; + } + if (pWnd->IsKindOf(RUNTIME_CLASS(COleIPFrameWndEx))) + { + return TRUE; + } + if (pWnd->IsKindOf(RUNTIME_CLASS(COleDocIPFrameWndEx))) + { + return TRUE; + } + if (pWnd->IsKindOf(RUNTIME_CLASS(CMDIChildWndEx))) + { + return TRUE; + } + */ + return FALSE; +} + + +BOOL AFXAPI AfxIsMFCToolBar(CWnd* pWnd) +{ + ENSURE( pWnd ); + /* + if (pWnd->IsKindOf(RUNTIME_CLASS(CMFCToolBar))) + { + return TRUE; + } + */ + return FALSE; +} +/* +HRESULT AFX_GLOBAL_DATA::ShellCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv) +{ + static HMODULE hShellDll = AfxCtxLoadLibrary(_T("Shell32.dll")); + ENSURE(hShellDll != NULL); + + typedef HRESULT (__stdcall *PFNSHCREATEITEMFROMPARSINGNAME)( + PCWSTR, + IBindCtx*, + REFIID, + void** + ); + + PFNSHCREATEITEMFROMPARSINGNAME pSHCreateItemFromParsingName = + (PFNSHCREATEITEMFROMPARSINGNAME)GetProcAddress(hShellDll, "SHCreateItemFromParsingName"); + if (pSHCreateItemFromParsingName == NULL) + { + return E_FAIL; + } + + return (*pSHCreateItemFromParsingName)(pszPath, pbc, riid, ppv); +} +*/ \ No newline at end of file diff --git a/Common.win32/vs10fix/winmdi.cpp b/Common.win32/vs10fix/winmdi.cpp new file mode 100644 index 0000000..5ee9545 --- /dev/null +++ b/Common.win32/vs10fix/winmdi.cpp @@ -0,0 +1,1177 @@ +// This is a part of the Microsoft Foundation Classes C++ library. +// Copyright (C) Microsoft Corporation +// All rights reserved. +// +// This source code is only intended as a supplement to the +// Microsoft Foundation Classes Reference and related +// electronic documentation provided with the library. +// See these sources for detailed information regarding the +// Microsoft Foundation Classes product. + +#include "..\stdafx.h" +#include "afxpriv.h" +#include "afxole.h" +#include "..\src\mfc\oleimpl2.h" +//#include "..\src\mfc\afximpl.h" +/* +#include "afxmdichildwndex.h" +#include "afxmdiframewndex.h" +*/ +///////////////////////////////////////////////////////////////////////////// +// CMDIFrameWnd + +BEGIN_MESSAGE_MAP(CMDIFrameWnd, CFrameWnd) + //{{AFX_MSG_MAP(CMDIFrameWnd) + ON_MESSAGE_VOID(WM_IDLEUPDATECMDUI, CMDIFrameWnd::OnIdleUpdateCmdUI) + ON_UPDATE_COMMAND_UI(ID_WINDOW_ARRANGE, &CMDIFrameWnd::OnUpdateMDIWindowCmd) + ON_UPDATE_COMMAND_UI(ID_WINDOW_CASCADE, &CMDIFrameWnd::OnUpdateMDIWindowCmd) + ON_UPDATE_COMMAND_UI(ID_WINDOW_TILE_HORZ, &CMDIFrameWnd::OnUpdateMDIWindowCmd) + ON_UPDATE_COMMAND_UI(ID_WINDOW_TILE_VERT, &CMDIFrameWnd::OnUpdateMDIWindowCmd) + ON_WM_SIZE() + ON_COMMAND_EX(ID_WINDOW_ARRANGE, &CMDIFrameWnd::OnMDIWindowCmd) + ON_COMMAND_EX(ID_WINDOW_CASCADE, &CMDIFrameWnd::OnMDIWindowCmd) + ON_COMMAND_EX(ID_WINDOW_TILE_HORZ, &CMDIFrameWnd::OnMDIWindowCmd) + ON_COMMAND_EX(ID_WINDOW_TILE_VERT, &CMDIFrameWnd::OnMDIWindowCmd) + ON_UPDATE_COMMAND_UI(ID_WINDOW_NEW, &CMDIFrameWnd::OnUpdateMDIWindowCmd) + ON_COMMAND(ID_WINDOW_NEW, &CMDIFrameWnd::OnWindowNew) + ON_WM_DESTROY() + ON_MESSAGE(WM_COMMANDHELP, &CMDIFrameWnd::OnCommandHelp) + ON_WM_MENUCHAR() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +CMDIFrameWnd::CMDIFrameWnd() +{ + m_hWndMDIClient = NULL; +} + +BOOL CMDIFrameWnd::OnCommand(WPARAM wParam, LPARAM lParam) +{ + // send to MDI child first - will be re-sent through OnCmdMsg later + CMDIChildWnd* pActiveChild = MDIGetActive(); + if (pActiveChild != NULL && AfxCallWndProc(pActiveChild, + pActiveChild->m_hWnd, WM_COMMAND, wParam, lParam) != 0) + return TRUE; // handled by child + + if (CFrameWnd::OnCommand(wParam, lParam)) + return TRUE; // handled through normal mechanism (MDI child or frame) + + HWND hWndCtrl = (HWND)lParam; + + ASSERT(AFX_IDM_FIRST_MDICHILD == 0xFF00); + if (hWndCtrl == NULL && (LOWORD(wParam) & 0xf000) == 0xf000) + { + // menu or accelerator within range of MDI children + // default frame proc will handle it + DefWindowProc(WM_COMMAND, wParam, lParam); + return TRUE; + } + + return FALSE; // not handled +} + +BOOL CMDIFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra, + AFX_CMDHANDLERINFO* pHandlerInfo) +{ + CMDIChildWnd* pActiveChild = MDIGetActive(); + // pump through active child FIRST + if (pActiveChild != NULL) + { + CPushRoutingFrame push(this); + if (pActiveChild->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) + return TRUE; + } + + // then pump through normal frame + return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); +} + +LRESULT CMDIFrameWnd::OnCommandHelp(WPARAM wParam, LPARAM lParam) +{ + if (lParam == 0 && IsTracking()) + lParam = HID_BASE_COMMAND+m_nIDTracking; + + CMDIChildWnd* pActiveChild = MDIGetActive(); + if (pActiveChild != NULL && AfxCallWndProc(pActiveChild, + pActiveChild->m_hWnd, WM_COMMANDHELP, wParam, lParam) != 0) + { + // handled by child + return TRUE; + } + + if (CFrameWnd::OnCommandHelp(wParam, lParam)) + { + // handled by our base + return TRUE; + } + + if (lParam != 0) + { + CWinApp* pApp = AfxGetApp(); + if (pApp != NULL) + { + AfxGetApp()->WinHelpInternal(lParam); + return TRUE; + } + } + return FALSE; +} + +BOOL CMDIFrameWnd::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext*) +{ + CMenu* pMenu = NULL; + if (m_hMenuDefault == NULL) + { + // default implementation for MFC V1 backward compatibility + pMenu = GetMenu(); + ASSERT(pMenu != NULL); + // This is attempting to guess which sub-menu is the Window menu. + // The Windows user interface guidelines say that the right-most + // menu on the menu bar should be Help and Window should be one + // to the left of that. + int iMenu = pMenu->GetMenuItemCount() - 2; + + // If this assertion fails, your menu bar does not follow the guidelines + // so you will have to override this function and call CreateClient + // appropriately or use the MFC V2 MDI functionality. + ASSERT(iMenu >= 0); + pMenu = pMenu->GetSubMenu(iMenu); + ASSERT(pMenu != NULL); + } + + return CreateClient(lpcs, pMenu); +} + +BOOL CMDIFrameWnd::CreateClient(LPCREATESTRUCT lpCreateStruct, + CMenu* pWindowMenu) +{ + ASSERT(m_hWnd != NULL); + ASSERT(m_hWndMDIClient == NULL); + DWORD dwStyle = WS_VISIBLE | WS_CHILD | WS_BORDER | + WS_CLIPCHILDREN | WS_CLIPSIBLINGS | + MDIS_ALLCHILDSTYLES; // allow children to be created invisible + DWORD dwExStyle = 0; + // will be inset by the frame + + // special styles for 3d effect on Win4 + dwStyle &= ~WS_BORDER; + dwExStyle = WS_EX_CLIENTEDGE; + + CLIENTCREATESTRUCT ccs; + ccs.hWindowMenu = pWindowMenu->GetSafeHmenu(); + // set hWindowMenu for MFC V1 backward compatibility + // for MFC V2, window menu will be set in OnMDIActivate + ccs.idFirstChild = AFX_IDM_FIRST_MDICHILD; + + if (lpCreateStruct->style & (WS_HSCROLL|WS_VSCROLL)) + { + // parent MDIFrame's scroll styles move to the MDICLIENT + dwStyle |= (lpCreateStruct->style & (WS_HSCROLL|WS_VSCROLL)); + + // fast way to turn off the scrollbar bits (without a resize) + ModifyStyle(WS_HSCROLL|WS_VSCROLL, 0, SWP_NOREDRAW|SWP_FRAMECHANGED); + } + + // Create MDICLIENT control with special IDC + if ((m_hWndMDIClient = ::AfxCtxCreateWindowEx(dwExStyle, _T("mdiclient"), NULL, + dwStyle, 0, 0, 0, 0, m_hWnd, (HMENU)AFX_IDW_PANE_FIRST, + AfxGetInstanceHandle(), (LPVOID)&ccs)) == NULL) + { + TRACE(traceAppMsg, 0, _T("Warning: CMDIFrameWnd::OnCreateClient: failed to create MDICLIENT.") + _T(" GetLastError returns 0x%8.8X\n"), ::GetLastError()); + return FALSE; + } + // Move it to the top of z-order + ::BringWindowToTop(m_hWndMDIClient); + + return TRUE; +} + +LRESULT CMDIFrameWnd::DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam) +{ + return ::DefFrameProc(m_hWnd, m_hWndMDIClient, nMsg, wParam, lParam); +} + +BOOL CMDIFrameWnd::PreTranslateMessage(MSG* pMsg) +{ + // check for special cancel modes for ComboBoxes + if (pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_NCLBUTTONDOWN) + AfxCancelModes(pMsg->hwnd); // filter clicks + + // allow tooltip messages to be filtered + if (CWnd::PreTranslateMessage(pMsg)) + return TRUE; + +#ifndef _AFX_NO_OLE_SUPPORT + // allow hook to consume message + if (m_pNotifyHook != NULL && m_pNotifyHook->OnPreTranslateMessage(pMsg)) + return TRUE; +#endif + + CMDIChildWnd* pActiveChild = MDIGetActive(); + + // current active child gets first crack at it + if (pActiveChild != NULL && pActiveChild->PreTranslateMessage(pMsg)) + return TRUE; + + if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST) + { + // translate accelerators for frame and any children + if (m_hAccelTable != NULL && + ::TranslateAccelerator(m_hWnd, m_hAccelTable, pMsg)) + { + return TRUE; + } + + // special processing for MDI accelerators last + // and only if it is not in SDI mode (print preview) + if (GetActiveView() == NULL) + { + if (pMsg->message == WM_KEYDOWN || pMsg->message == WM_SYSKEYDOWN) + { + // the MDICLIENT window may translate it + if (::TranslateMDISysAccel(m_hWndMDIClient, pMsg)) + return TRUE; + } + } + } + + return FALSE; +} + +void CMDIFrameWnd::DelayUpdateFrameMenu(HMENU hMenuAlt) +{ + OnUpdateFrameMenu(hMenuAlt); + + m_nIdleFlags |= idleMenu; +} + +void CMDIFrameWnd::OnIdleUpdateCmdUI() +{ + if (m_nIdleFlags & idleMenu) + { + DrawMenuBar(); + m_nIdleFlags &= ~idleMenu; + } + CFrameWnd::OnIdleUpdateCmdUI(); +} + +CFrameWnd* CMDIFrameWnd::GetActiveFrame() +{ + CMDIChildWnd* pActiveChild = MDIGetActive(); + if (pActiveChild == NULL) + return this; + return pActiveChild; +} + +BOOL CMDIFrameWnd::PreCreateWindow(CREATESTRUCT& cs) +{ + if (cs.lpszClass == NULL) + { + VERIFY(AfxDeferRegisterClass(AFX_WNDMDIFRAME_REG)); + cs.lpszClass = _afxWndMDIFrame; + } + return TRUE; +} + +BOOL CMDIFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, + CWnd* pParentWnd, CCreateContext* pContext) +{ + if (!CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, + pParentWnd, pContext)) + return FALSE; + + // save menu to use when no active MDI child window is present + ASSERT(m_hWnd != NULL); + m_hMenuDefault = ::GetMenu(m_hWnd); + return TRUE; +} + +void CMDIFrameWnd::OnDestroy() +{ + CFrameWnd::OnDestroy(); // exit and misc cleanup + + // owned menu stored in shared slot for MDIFRAME + if (m_hMenuDefault != NULL && ::GetMenu(m_hWnd) != m_hMenuDefault) + { + // must go through MDI client to get rid of MDI menu additions + ::SendMessage(m_hWndMDIClient, WM_MDISETMENU, + (WPARAM)m_hMenuDefault, NULL); + ASSERT(::GetMenu(m_hWnd) == m_hMenuDefault); + } +} + +void CMDIFrameWnd::OnSize(UINT nType, int, int) +{ + // do not call default - it will reposition the MDICLIENT + if (nType != SIZE_MINIMIZED) + RecalcLayout(); +} + +LRESULT CMDIFrameWnd::OnMenuChar(UINT nChar, UINT, CMenu*) +{ + // do not call Default() for Alt+(-) when in print preview mode + if (m_lpfnCloseProc != NULL && nChar == (UINT)'-') + return 0; + else + return Default(); +} + +CMDIChildWnd* CMDIFrameWnd::MDIGetActive(BOOL* pbMaximized) const +{ + // check first for MDI client window not created + if (m_hWndMDIClient == NULL) + { + if (pbMaximized != NULL) + *pbMaximized = FALSE; + return NULL; + } + + // MDI client has been created, get active MDI child + HWND hWnd = (HWND)::SendMessage(m_hWndMDIClient, WM_MDIGETACTIVE, 0, + (LPARAM)pbMaximized); + CMDIChildWnd* pWnd = (CMDIChildWnd*)CWnd::FromHandlePermanent(hWnd); + ASSERT(pWnd == NULL || pWnd->IsKindOf(RUNTIME_CLASS(CMDIChildWnd))); + + // check for special pseudo-inactive state + if (pWnd != NULL && pWnd->m_bPseudoInactive && + (pWnd->GetStyle() & WS_VISIBLE) == 0) + { + // Window is hidden, active, but m_bPseudoInactive -- return NULL + pWnd = NULL; + // Ignore maximized flag if pseudo-inactive and maximized + if (pbMaximized != NULL) + *pbMaximized = FALSE; + } + return pWnd; +} + + +CMDIChildWnd* CMDIFrameWnd::CreateNewChild(CRuntimeClass* pClass, + UINT nResources, HMENU hMenu /* = NULL */, HACCEL hAccel /* = NULL */) +{ + ASSERT(pClass != NULL); + CMDIChildWnd* pFrame = (CMDIChildWnd*) pClass->CreateObject(); + ASSERT_KINDOF(CMDIChildWnd, pFrame); + + // load the frame + CCreateContext context; + context.m_pCurrentFrame = this; + + pFrame->SetHandles(hMenu, hAccel); + if (!pFrame->LoadFrame(nResources, + WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, &context)) + { + TRACE(traceAppMsg, 0, "Couldn't load frame window.\n"); + return NULL; + } + + CString strFullString, strTitle; + if (strFullString.LoadString(nResources)) + AfxExtractSubString(strTitle, strFullString, CDocTemplate::docName); + + // redraw the frame and parent + pFrame->SetTitle(strTitle); + pFrame->InitialUpdateFrame(NULL, TRUE); + + return pFrame; +} + +///////////////////////////////////////////////////////////////////////////// +// CMDIFrameWnd Diagnostics + +#ifdef _DEBUG +void CMDIFrameWnd::AssertValid() const +{ + CFrameWnd::AssertValid(); + ASSERT(m_hWndMDIClient == NULL || ::IsWindow(m_hWndMDIClient)); + ASSERT(m_hMenuDefault == NULL || ::IsMenu(m_hMenuDefault)); +} + +void CMDIFrameWnd::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); + + dc << "m_hWndMDIClient = " << (void*)m_hWndMDIClient; + dc << "\nm_hMenuDefault = " << (void*)m_hMenuDefault; + + dc << "\n"; +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// CMDIChildWnd + +BEGIN_MESSAGE_MAP(CMDIChildWnd, CFrameWnd) + //{{AFX_MSG_MAP(CMDIChildWnd) + ON_WM_MOUSEACTIVATE() + ON_WM_NCACTIVATE() + ON_WM_MDIACTIVATE() + ON_WM_SIZE() + ON_WM_WINDOWPOSCHANGING() + ON_WM_NCCREATE() + ON_WM_CREATE() + ON_WM_DESTROY() + ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0xFFFF, &CMDIChildWnd::OnToolTipText) + ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA, 0, 0xFFFF, &CMDIChildWnd::OnToolTipText) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +CMDIChildWnd::CMDIChildWnd() +{ + m_hMenuShared = NULL; + m_bPseudoInactive = FALSE; +} + +///////////////////////////////////////////////////////////////////////////// +// CMDIChildWnd special processing + +LRESULT CMDIChildWnd::DefWindowProc(UINT nMsg, WPARAM wParam, LPARAM lParam) +{ + return ::DefMDIChildProc(m_hWnd, nMsg, wParam, lParam); +} + +BOOL CMDIChildWnd::DestroyWindow() +{ + if (m_hWnd == NULL) + return FALSE; + + // avoid changing the caption during the destroy message(s) + CMDIFrameWnd* pFrameWnd = GetMDIFrame(); + HWND hWndFrame = pFrameWnd->m_hWnd; + ASSERT(::IsWindow(hWndFrame)); + DWORD dwStyle = SetWindowLong(hWndFrame, GWL_STYLE, + GetWindowLong(hWndFrame, GWL_STYLE) & ~FWS_ADDTOTITLE); + + MDIDestroy(); + + if (::IsWindow(hWndFrame)) + { + ASSERT(hWndFrame == pFrameWnd->m_hWnd); + SetWindowLong(hWndFrame, GWL_STYLE, dwStyle); + pFrameWnd->OnUpdateFrameTitle(TRUE); + } + + return TRUE; +} + +BOOL CMDIChildWnd::PreTranslateMessage(MSG* pMsg) +{ + // check for special cancel modes for combo boxes + if (pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_NCLBUTTONDOWN) + AfxCancelModes(pMsg->hwnd); // filter clicks + + // allow tooltip messages to be filtered + if (CWnd::PreTranslateMessage(pMsg)) + return TRUE; + + // we can't call 'CFrameWnd::PreTranslate' since it will translate + // accelerators in the context of the MDI Child - but since MDI Child + // windows don't have menus this doesn't work properly. MDI Child + // accelerators must be translated in context of their MDI Frame. + + if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST) + { + // use document specific accelerator table over m_hAccelTable + HACCEL hAccel = GetDefaultAccelerator(); + return hAccel != NULL && + ::TranslateAccelerator(GetMDIFrame()->m_hWnd, hAccel, pMsg); + } + return FALSE; +} + +BOOL CMDIChildWnd::PreCreateWindow(CREATESTRUCT& cs) +{ + ASSERT(cs.style & WS_CHILD); + // MFC V2 requires that MDI Children are created with proper styles, + // usually: WS_CHILD | WS_VISIBLE | WS_OVERLAPPEDWINDOW. + // See Technical note TN019 for more details on MFC V1->V2 migration. + + return CFrameWnd::PreCreateWindow(cs); +} + +BOOL CMDIChildWnd::Create(LPCTSTR lpszClassName, + LPCTSTR lpszWindowName, DWORD dwStyle, + const RECT& rect, CMDIFrameWnd* pParentWnd, + CCreateContext* pContext) +{ + if (pParentWnd == NULL) + { + CWinThread *pThread = AfxGetThread(); + ENSURE_VALID(pThread); + CWnd* pMainWnd = pThread->m_pMainWnd; + ENSURE_VALID(pMainWnd); + ASSERT_KINDOF(CMDIFrameWnd, pMainWnd); + pParentWnd = (CMDIFrameWnd*)pMainWnd; + } + ASSERT(::IsWindow(pParentWnd->m_hWndMDIClient)); + + // insure correct window positioning + pParentWnd->RecalcLayout(); + + // first copy into a CREATESTRUCT for PreCreate + CREATESTRUCT cs; + cs.dwExStyle = 0L; + cs.lpszClass = lpszClassName; + cs.lpszName = lpszWindowName; + cs.style = dwStyle; + cs.x = rect.left; + cs.y = rect.top; + cs.cx = rect.right - rect.left; + cs.cy = rect.bottom - rect.top; + cs.hwndParent = pParentWnd->m_hWnd; + cs.hMenu = NULL; + cs.hInstance = AfxGetInstanceHandle(); + cs.lpCreateParams = (LPVOID)pContext; + + if (!PreCreateWindow(cs)) + { + PostNcDestroy(); + return FALSE; + } + // extended style must be zero for MDI Children (except under Win4) + ASSERT(cs.hwndParent == pParentWnd->m_hWnd); // must not change + + // now copy into a MDICREATESTRUCT for real create + MDICREATESTRUCT mcs; + mcs.szClass = cs.lpszClass; + mcs.szTitle = cs.lpszName; + mcs.hOwner = cs.hInstance; + mcs.x = cs.x; + mcs.y = cs.y; + mcs.cx = cs.cx; + mcs.cy = cs.cy; + mcs.style = cs.style & ~(WS_MAXIMIZE | WS_VISIBLE); + mcs.lParam = (LPARAM)cs.lpCreateParams; + + // create the window through the MDICLIENT window + AfxHookWindowCreate(this); + HWND hWnd = (HWND)::SendMessage(pParentWnd->m_hWndMDIClient, + WM_MDICREATE, 0, (LPARAM)&mcs); + if (!AfxUnhookWindowCreate()) + PostNcDestroy(); // cleanup if MDICREATE fails too soon + + if (hWnd == NULL) + return FALSE; + + // special handling of visibility (always created invisible) + if (cs.style & WS_VISIBLE) + { + // place the window on top in z-order before showing it + ::BringWindowToTop(hWnd); + + // show it as specified + if (cs.style & WS_MINIMIZE) + ShowWindow(SW_SHOWMINIMIZED); + else if (cs.style & WS_MAXIMIZE) + ShowWindow(SW_SHOWMAXIMIZED); + else + ShowWindow(SW_SHOWNORMAL); + + // make sure it is active (visibility == activation) + pParentWnd->MDIActivate(this); + + // refresh MDI Window menu + ::SendMessage(pParentWnd->m_hWndMDIClient, WM_MDIREFRESHMENU, 0, 0); + } + + ASSERT(hWnd == m_hWnd); + return TRUE; +} + +BOOL CMDIChildWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, + CWnd* pParentWnd, CCreateContext* pContext) +{ + // only do this once + ASSERT_VALID_IDR(nIDResource); + ASSERT(m_nIDHelp == 0 || m_nIDHelp == nIDResource); + + m_nIDHelp = nIDResource; // ID for help context (+HID_BASE_RESOURCE) + + // parent must be MDI Frame (or NULL for default) + ASSERT(pParentWnd == NULL || pParentWnd->IsKindOf(RUNTIME_CLASS(CMDIFrameWnd))); + // will be a child of MDIClient + ASSERT(!(dwDefaultStyle & WS_POPUP)); + dwDefaultStyle |= WS_CHILD; + + // if available - get MDI child menus from doc template + CMultiDocTemplate* pTemplate; + if (pContext != NULL && + (pTemplate = (CMultiDocTemplate*)pContext->m_pNewDocTemplate) != NULL) + { + ASSERT_KINDOF(CMultiDocTemplate, pTemplate); + // get shared menu from doc template + m_hMenuShared = pTemplate->m_hMenuShared; + m_hAccelTable = pTemplate->m_hAccelTable; + } + else + { + TRACE(traceAppMsg, 0, "Warning: no shared menu/acceltable for MDI Child window.\n"); + // if this happens, programmer must load these manually + } + + CString strFullString, strTitle; + if (strFullString.LoadString(nIDResource)) + AfxExtractSubString(strTitle, strFullString, 0); // first sub-string + + ASSERT(m_hWnd == NULL); + if (!Create(GetIconWndClass(dwDefaultStyle, nIDResource), + strTitle, dwDefaultStyle, rectDefault, + (CMDIFrameWnd*)pParentWnd, pContext)) + { + return FALSE; // will self destruct on failure normally + } + + // it worked ! + return TRUE; +} + +void CMDIChildWnd::OnSize(UINT nType, int cx, int cy) +{ + CFrameWnd::OnSize(nType, cx, cy); + + // update our parent frame - in case we are now maximized or not + GetMDIFrame()->OnUpdateFrameTitle(TRUE); +} + + +BOOL CMDIChildWnd::UpdateClientEdge(LPRECT lpRect) +{ + // only adjust for active MDI child window + CMDIFrameWnd* pFrameWnd = GetMDIFrame(); + CMDIChildWnd* pChild = pFrameWnd->MDIGetActive(); + + // Only adjust for regular MDI child windows, not tabbed windows. Attempting to set WS_EX_CLIENTEDGE on the tabbed + // MDI client area window is subverted by CMDIClientAreaWnd::OnStyleChanging, so we always try to reset the style and + // always repaint, none of which is necessary since the tabbed MDI children never change from maximized to restored. + /* + CMDIChildWndEx* pChildEx = (pChild == NULL) ? NULL : DYNAMIC_DOWNCAST(CMDIChildWndEx, pChild); + BOOL bIsTabbedMDIChild = (pChildEx == NULL) ? FALSE : pChildEx->GetMDIFrameWndEx() != NULL && pChildEx->GetMDIFrameWndEx()->AreMDITabs(); + if ((pChild == NULL || pChild == this) && !bIsTabbedMDIChild) + { + // need to adjust the client edge style as max/restore happens + DWORD dwStyle = ::GetWindowLong(pFrameWnd->m_hWndMDIClient, GWL_EXSTYLE); + DWORD dwNewStyle = dwStyle; + if (pChild != NULL && !(GetExStyle() & WS_EX_CLIENTEDGE) && (GetStyle() & WS_MAXIMIZE)) + { + dwNewStyle &= ~(WS_EX_CLIENTEDGE); + } + else + { + dwNewStyle |= WS_EX_CLIENTEDGE; + } + + if (dwStyle != dwNewStyle) + { + // SetWindowPos will not move invalid bits + ::RedrawWindow(pFrameWnd->m_hWndMDIClient, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN); + + // remove/add WS_EX_CLIENTEDGE to MDI client area + ::SetWindowLong(pFrameWnd->m_hWndMDIClient, GWL_EXSTYLE, dwNewStyle); + ::SetWindowPos(pFrameWnd->m_hWndMDIClient, NULL, 0, 0, 0, 0, SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOCOPYBITS); + + // return new client area + if (lpRect != NULL) + { + ::GetClientRect(pFrameWnd->m_hWndMDIClient, lpRect); + } + + return TRUE; + } + } + */ + + return FALSE; +} + +void CMDIChildWnd::OnWindowPosChanging(LPWINDOWPOS lpWndPos) +{ + if (!(lpWndPos->flags & SWP_NOSIZE)) + { + CRect rectClient; + if (UpdateClientEdge(rectClient) && (GetStyle() & WS_MAXIMIZE)) + { + // adjust maximized window size and position based on new + // size/position of the MDI client area. + ::AdjustWindowRectEx(rectClient, GetStyle(), FALSE, GetExStyle()); + lpWndPos->x = rectClient.left; + lpWndPos->y = rectClient.top; + lpWndPos->cx = rectClient.Width(); + lpWndPos->cy = rectClient.Height(); + } + } + + CFrameWnd::OnWindowPosChanging(lpWndPos); +} + +void CMDIChildWnd::OnDestroy() +{ + UpdateClientEdge(); + + CFrameWnd::OnDestroy(); +} + +BOOL CMDIChildWnd::OnNcActivate(BOOL bActive) +{ + // bypass CFrameWnd::OnNcActivate() + return CWnd::OnNcActivate(bActive); +} + +int CMDIChildWnd::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) +{ + int nResult = CFrameWnd::OnMouseActivate(pDesktopWnd, nHitTest, message); + if (nResult == MA_NOACTIVATE || nResult == MA_NOACTIVATEANDEAT) + return nResult; // frame does not want to activate + + // activate this window if necessary + CMDIFrameWnd* pFrameWnd = GetMDIFrame(); + ENSURE_VALID(pFrameWnd); + CMDIChildWnd* pActive = pFrameWnd->MDIGetActive(); + if (pActive != this) + MDIActivate(); + + return nResult; +} + +BOOL CMDIChildWnd::OnToolTipText(UINT msg, NMHDR* pNMHDR, LRESULT* pResult) +{ + ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); + UNUSED(pNMHDR); + + // check to see if the message is going directly to this window or not + const MSG* pMsg = GetCurrentMessage(); + if (pMsg->hwnd != m_hWnd) + { + // let top level frame handle this for us + return FALSE; + } + + // otherwise, handle it ourselves + return CFrameWnd::OnToolTipText(msg, pNMHDR, pResult); +} + +void CMDIChildWnd::ActivateFrame(int nCmdShow) +{ + BOOL bVisibleThen = (GetStyle() & WS_VISIBLE) != 0; + CMDIFrameWnd* pFrameWnd = GetMDIFrame(); + ASSERT_VALID(pFrameWnd); + + // determine default show command + if (nCmdShow == -1) + { + // get maximized state of frame window (previously active child) + BOOL bMaximized; + pFrameWnd->MDIGetActive(&bMaximized); + + // convert show command based on current style + DWORD dwStyle = GetStyle(); + if (bMaximized || (dwStyle & WS_MAXIMIZE)) + nCmdShow = SW_SHOWMAXIMIZED; + else if (dwStyle & WS_MINIMIZE) + nCmdShow = SW_SHOWMINIMIZED; + } + + // finally, show the window + CFrameWnd::ActivateFrame(nCmdShow); + + // update the Window menu to reflect new child window + CMDIFrameWnd* pFrame = GetMDIFrame(); + ::SendMessage(pFrame->m_hWndMDIClient, WM_MDIREFRESHMENU, 0, 0); + + // Note: Update the m_bPseudoInactive flag. This is used to handle the + // last MDI child getting hidden. Windows provides no way to deactivate + // an MDI child window. + + BOOL bVisibleNow = (GetStyle() & WS_VISIBLE) != 0; + if (bVisibleNow == bVisibleThen) + return; + + if (!bVisibleNow) + { + // get current active window according to Windows MDI + HWND hWnd = (HWND)::SendMessage(pFrameWnd->m_hWndMDIClient, + WM_MDIGETACTIVE, 0, 0); + if (hWnd != m_hWnd) + { + // not active any more -- window must have been deactivated + ASSERT(!m_bPseudoInactive); + return; + } + + // check next window + ASSERT(hWnd != NULL); + pFrameWnd->MDINext(); + + // see if it has been deactivated now... + hWnd = (HWND)::SendMessage(pFrameWnd->m_hWndMDIClient, + WM_MDIGETACTIVE, 0, 0); + if (hWnd == m_hWnd) + { + // still active -- fake deactivate it + ASSERT(hWnd != NULL); + ::SendMessage(pFrameWnd->m_hWndMDIClient, WM_MDIACTIVATE, (WPARAM)m_hWnd, NULL); + m_bPseudoInactive = TRUE; // so MDIGetActive returns NULL + } + } + else if (m_bPseudoInactive) + { + // if state transitioned from not visible to visible, but + // was pseudo deactivated -- send activate notify now + ::SendMessage(pFrameWnd->m_hWndMDIClient, WM_MDIACTIVATE, NULL, (LPARAM)m_hWnd); + ASSERT(!m_bPseudoInactive); // should get set in OnMDIActivate! + } +} + +void CMDIChildWnd::SetHandles(HMENU hMenu, HACCEL hAccel) +{ + m_hMenuShared = hMenu; + m_hAccelTable = hAccel; +} + +///////////////////////////////////////////////////////////////////////////// +// CMDIChildWnd Diagnostics + +#ifdef _DEBUG +void CMDIChildWnd::AssertValid() const +{ + CFrameWnd::AssertValid(); + ASSERT(m_hMenuShared == NULL || ::IsMenu(m_hMenuShared)); +} + +void CMDIChildWnd::Dump(CDumpContext& dc) const +{ + CFrameWnd::Dump(dc); + + dc << "m_hMenuShared = " << (void*)m_hMenuShared; + dc << "\n"; +} +#endif //_DEBUG + +///////////////////////////////////////////////////////////////////////////// +// Smarts for the "Window" menu + +HMENU CMDIFrameWnd::GetWindowMenuPopup(HMENU hMenuBar) + // find which popup is the "Window" menu +{ + if (hMenuBar == NULL) + return NULL; + + ASSERT(::IsMenu(hMenuBar)); + + int iItem = ::GetMenuItemCount(hMenuBar); + while (iItem--) + { + HMENU hMenuPop = ::GetSubMenu(hMenuBar, iItem); + if (hMenuPop != NULL) + { + int iItemMax = ::GetMenuItemCount(hMenuPop); + for (int iItemPop = 0; iItemPop < iItemMax; iItemPop++) + { + UINT nID = GetMenuItemID(hMenuPop, iItemPop); + if (nID >= AFX_IDM_WINDOW_FIRST && nID <= AFX_IDM_WINDOW_LAST) + return hMenuPop; + } + } + } + + // no default menu found + TRACE(traceAppMsg, 0, "Warning: GetWindowMenuPopup failed!\n"); + return NULL; +} + +///////////////////////////////////////////////////////////////////////////// +// Smarts for updating the window menu based on the current child + +void CMDIFrameWnd::OnUpdateFrameMenu(HMENU hMenuAlt) +{ + CMDIChildWnd* pActiveWnd = MDIGetActive(); + if (pActiveWnd != NULL) + { + // let child update the menu bar + pActiveWnd->OnUpdateFrameMenu(TRUE, pActiveWnd, hMenuAlt); + } + else + { + // no child active, so have to update it ourselves + // (we can't send it to a child window, since pActiveWnd is NULL) + if (hMenuAlt == NULL) + hMenuAlt = m_hMenuDefault; // use default + ::SendMessage(m_hWndMDIClient, WM_MDISETMENU, (WPARAM)hMenuAlt, NULL); + } +} + +///////////////////////////////////////////////////////////////////////////// +// MDI Child Extensions + +// walk up two parents for MDIFrame that owns MDIChild (skip MDIClient) +CMDIFrameWnd* CMDIChildWnd::GetMDIFrame() +{ + ASSERT_KINDOF(CMDIChildWnd, this); + ASSERT(m_hWnd != NULL); + HWND hWndMDIClient = ::GetParent(m_hWnd); + ASSERT(hWndMDIClient != NULL); + + CMDIFrameWnd* pMDIFrame; + pMDIFrame = (CMDIFrameWnd*)CWnd::FromHandle(::GetParent(hWndMDIClient)); + ASSERT(pMDIFrame != NULL); + ASSERT_KINDOF(CMDIFrameWnd, pMDIFrame); + ASSERT(pMDIFrame->m_hWndMDIClient == hWndMDIClient); + ASSERT_VALID(pMDIFrame); + return pMDIFrame; +} + +CWnd* CMDIChildWnd::GetMessageBar() +{ + // status bar/message bar owned by parent MDI frame + return GetMDIFrame()->GetMessageBar(); +} + +void CMDIChildWnd::OnUpdateFrameTitle(BOOL bAddToTitle) +{ + // update our parent window first + GetMDIFrame()->OnUpdateFrameTitle(bAddToTitle); + + if ((GetStyle() & FWS_ADDTOTITLE) == 0) + return; // leave child window alone! + + CDocument* pDocument = GetActiveDocument(); + if (bAddToTitle) + { + TCHAR szText[256+_MAX_PATH]; + if (pDocument == NULL) + Checked::tcsncpy_s(szText, _countof(szText), m_strTitle, _TRUNCATE); + else + Checked::tcsncpy_s(szText, _countof(szText), pDocument->GetTitle(), _TRUNCATE); + if (m_nWindow > 0) + { + TCHAR szWinNumber[16+1]; + _stprintf_s(szWinNumber, _countof(szWinNumber), _T(":%d"), m_nWindow); + + if( lstrlen(szText) + lstrlen(szWinNumber) < _countof(szText) ) + { + Checked::tcscat_s( szText, _countof(szText), szWinNumber ); + } + } + + // set title if changed, but don't remove completely + AfxSetWindowText(m_hWnd, szText); + } +} + +void CMDIChildWnd::OnMDIActivate(BOOL bActivate, CWnd* pActivateWnd, CWnd*) +{ + m_bPseudoInactive = FALSE; // must be happening for real + + // make sure MDI client window has correct client edge + UpdateClientEdge(); + + // send deactivate notification to active view + CView* pActiveView = GetActiveView(); + if (!bActivate && pActiveView != NULL) + pActiveView->OnActivateView(FALSE, pActiveView, pActiveView); + + // allow hook to short circuit normal activation + BOOL bHooked = FALSE; +#ifndef _AFX_NO_OLE_SUPPORT + if (m_pNotifyHook != NULL && m_pNotifyHook->OnDocActivate(bActivate)) + bHooked = TRUE; +#endif + + // update titles (don't AddToTitle if deactivate last) + if (!bHooked) + OnUpdateFrameTitle(bActivate || (pActivateWnd != NULL)); + + // re-activate the appropriate view + if (bActivate) + { + if (pActiveView != NULL && GetMDIFrame() == GetActiveWindow()) + pActiveView->OnActivateView(TRUE, pActiveView, pActiveView); + } + + // update menus + if (!bHooked) + { + OnUpdateFrameMenu(bActivate, pActivateWnd, NULL); + GetMDIFrame()->DrawMenuBar(); + } +} + +void CMDIChildWnd::OnUpdateFrameMenu(BOOL bActivate, CWnd* pActivateWnd, + HMENU hMenuAlt) +{ + CMDIFrameWnd* pFrame = GetMDIFrame(); + + if (hMenuAlt == NULL && bActivate) + { + // attempt to get default menu from document + CDocument* pDoc = GetActiveDocument(); + if (pDoc != NULL) + hMenuAlt = pDoc->GetDefaultMenu(); + } + + // use default menu stored in frame if none from document + if (hMenuAlt == NULL) + hMenuAlt = m_hMenuShared; + + if (hMenuAlt != NULL && bActivate) + { + ASSERT(pActivateWnd == this); + + // activating child, set parent menu + ::SendMessage(pFrame->m_hWndMDIClient, WM_MDISETMENU, + (WPARAM)hMenuAlt, (LPARAM)pFrame->GetWindowMenuPopup(hMenuAlt)); + } + else if (hMenuAlt != NULL && !bActivate && pActivateWnd == NULL) + { + // destroying last child + HMENU hMenuLast = NULL; + ::SendMessage(pFrame->m_hWndMDIClient, WM_MDISETMENU, + (WPARAM)pFrame->m_hMenuDefault, (LPARAM)hMenuLast); + } + else + { + // refresh MDI Window menu (even if non-shared menu) + ::SendMessage(pFrame->m_hWndMDIClient, WM_MDIREFRESHMENU, 0, 0); + } +} + +BOOL CMDIChildWnd::OnNcCreate(LPCREATESTRUCT lpCreateStruct) +{ + if (!CFrameWnd::OnNcCreate(lpCreateStruct)) + return FALSE; + + // handle extended styles under Win4 + // call PreCreateWindow again just to get dwExStyle + VERIFY(PreCreateWindow(*lpCreateStruct)); + SetWindowLong(m_hWnd, GWL_EXSTYLE, lpCreateStruct->dwExStyle); + + return TRUE; +} + +int CMDIChildWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) +{ + // call base class with lParam context (not MDI one) + MDICREATESTRUCT* lpmcs; + lpmcs = (MDICREATESTRUCT*)lpCreateStruct->lpCreateParams; + CCreateContext* pContext = (CCreateContext*)lpmcs->lParam; + + return OnCreateHelper(lpCreateStruct, pContext); +} + +///////////////////////////////////////////////////////////////////////////// +// Special UI processing depending on current active child + +void CMDIFrameWnd::OnUpdateFrameTitle(BOOL bAddToTitle) +{ + if ((GetStyle() & FWS_ADDTOTITLE) == 0) + return; // leave it alone! + +#ifndef _AFX_NO_OLE_SUPPORT + // allow hook to set the title (used for OLE support) + if (m_pNotifyHook != NULL && m_pNotifyHook->OnUpdateFrameTitle()) + return; +#endif + + CMDIChildWnd* pActiveChild = NULL; + CDocument* pDocument = GetActiveDocument(); + if (bAddToTitle && + (pActiveChild = MDIGetActive()) != NULL && + (pActiveChild->GetStyle() & WS_MAXIMIZE) == 0 && + (pDocument != NULL || + (pDocument = pActiveChild->GetActiveDocument()) != NULL)) + UpdateFrameTitleForDocument(pDocument->GetTitle()); + else + { + LPCTSTR lpstrTitle = NULL; + CString strTitle; + + if (pActiveChild != NULL && + (pActiveChild->GetStyle() & WS_MAXIMIZE) == 0) + { + strTitle = pActiveChild->GetTitle(); + if (!strTitle.IsEmpty()) + lpstrTitle = strTitle; + } + UpdateFrameTitleForDocument(lpstrTitle); + } +} + +///////////////////////////////////////////////////////////////////////////// +// Standard MDI Commands + +// Two function for all standard MDI "Window" commands +void CMDIFrameWnd::OnUpdateMDIWindowCmd(CCmdUI* pCmdUI) +{ + ASSERT(m_hWndMDIClient != NULL); + pCmdUI->Enable(MDIGetActive() != NULL); +} + +BOOL CMDIFrameWnd::OnMDIWindowCmd(UINT nID) +{ + ASSERT(m_hWndMDIClient != NULL); + + UINT msg; + UINT wParam = 0; + switch (nID) + { + default: + return FALSE; // not for us + case ID_WINDOW_ARRANGE: + msg = WM_MDIICONARRANGE; + break; + case ID_WINDOW_CASCADE: + msg = WM_MDICASCADE; + break; + case ID_WINDOW_TILE_HORZ: + wParam = MDITILE_HORIZONTAL; + // fall through + case ID_WINDOW_TILE_VERT: + ASSERT(MDITILE_VERTICAL == 0); + msg = WM_MDITILE; + break; + } + + ::SendMessage(m_hWndMDIClient, msg, wParam, 0); + return TRUE; +} + +void CMDIFrameWnd::OnWindowNew() +{ + CMDIChildWnd* pActiveChild = MDIGetActive(); + CDocument* pDocument; + if (pActiveChild == NULL || + (pDocument = pActiveChild->GetActiveDocument()) == NULL) + { + TRACE(traceAppMsg, 0, "Warning: No active document for WindowNew command.\n"); + AfxMessageBox(AFX_IDP_COMMAND_FAILURE); + return; // command failed + } + + // otherwise we have a new frame ! + CDocTemplate* pTemplate = pDocument->GetDocTemplate(); + ASSERT_VALID(pTemplate); + CFrameWnd* pFrame = pTemplate->CreateNewFrame(pDocument, pActiveChild); + if (pFrame == NULL) + { + TRACE(traceAppMsg, 0, "Warning: failed to create new frame.\n"); + return; // command failed + } + + pTemplate->InitialUpdateFrame(pFrame, pDocument); +} + +void CMDIFrameWnd::SetMenuBarVisibility(DWORD dwStyle) +{ + ENSURE_ARG(dwStyle == AFX_MBV_KEEPVISIBLE); + ASSERT(m_dwMenuBarVisibility == AFX_MBV_KEEPVISIBLE); +} + +BOOL CMDIFrameWnd::SetMenuBarState(DWORD dwState) +{ + return m_dwMenuBarState == AFX_MBS_HIDDEN ? FALSE : CFrameWnd::SetMenuBarState(dwState); +} + +IMPLEMENT_DYNCREATE(CMDIFrameWnd, CFrameWnd) +IMPLEMENT_DYNCREATE(CMDIChildWnd, CFrameWnd) + +//////////////////////////////////////////////////////////////////////////// diff --git a/Common.win32/winconsole.cpp b/Common.win32/winconsole.cpp new file mode 100644 index 0000000..16ff28e --- /dev/null +++ b/Common.win32/winconsole.cpp @@ -0,0 +1,389 @@ +#include "../common.win32/stdafx.h" +#include +#include "consoleresrc.h" +#include "activecommon.h" +#include "../common/ki.h" +#include "../common/svnversion.h" +#include "../kegs/src/sim65816.h" + +int outputInfoInternal(const char* _str) +{ + CEmulatorWin32* p = (CEmulatorWin32*)CEmulator::theEmulator; + if (p) + { + CConsole* c = p->theConsole; + if (c && IsWindow(c->hWnd)) + c->addLine(_str); + } + + OutputDebugString(_str); + return 0; +} + +int outputInfo(const MYCHAR* format,...) +{ + + va_list argptr; + va_start( argptr, format ); + CString st; + st.FormatV(format,argptr); + va_end(argptr); + + outputInfoInternal(st); + return 0; +} + +int fOutputInfo(FILE* _file,const char* format,...) +{ + va_list argptr; + va_start( argptr, format ); + CString st; + st.FormatV(format,argptr); + va_end(argptr); + + if ((_file!=stdout) && (_file!=stderr)) + fprintf(_file,st); + else + outputInfoInternal(st); + return 0; + +} + +void CConsole::showConsole() +{ + if (!IsWindow(hWnd)) return ; + ShowWindow(hWnd,SW_SHOW); + visible++; +} + +void CConsole::hideConsole() +{ + if (!IsWindow(hWnd)) return ; + ShowWindow(hWnd,SW_HIDE); + visible--; + /* + if (enable) + // run the emulator + strcpy(inputBuffer,"g"); + */ +} + + + +BOOL CALLBACK EditProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +{ +HWND parent = GetParent(hwnd); + CConsole* theConsole = (CConsole*)GetWindowLongPtr(parent,GWLP_USERDATA); + + switch(Message) + { + case WM_CHAR: + if (wParam==VK_RETURN) + { + SendMessage( hwnd, WM_GETTEXT, (WPARAM)255, (LPARAM)(LPCSTR)(theConsole->inputBuffer)); + outputInfo(">%s\n",theConsole->inputBuffer); + SendMessage( hwnd, WM_SETTEXT, (WPARAM)NULL, (LPARAM)(LPCSTR)NULL); + UpdateWindow(hwnd); + return 0; + } + break; + } + return CallWindowProc(theConsole->OldProc,hwnd,Message,wParam,lParam); +} + +INT_PTR CALLBACK ConsoleProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam) +{ + + CConsole* theConsole = (CConsole*)GetWindowLongPtr(hwnd,GWLP_USERDATA); + + switch(Message) + { + case WM_USER: + if (theConsole) + theConsole->refreshLine(); + break; + case WM_DESTROY: + OutputDebugString("WM_DESTROY Console\n"); + + // détruit la font + if (theConsole) + { + if ( theConsole->hFont) + { + DeleteObject(theConsole->hFont); + theConsole->hFont=NULL; + } + theConsole->hWnd=NULL; + } + break; + case WM_CLOSE: + outputInfo("WM_CLOSE\n"); + theConsole->hideConsole(); + break; + case WM_COMMAND: + if (theConsole) + switch (LOWORD(wParam)) + { + case IDC_GO: + theConsole->inputBuffer[0]='g'; + theConsole->inputBuffer[1]=0; + break; + case IDC_REGS: + theConsole->inputBuffer[0]=0x05; + theConsole->inputBuffer[1]=0; + break; + case IDC_STEP: + theConsole->inputBuffer[0]='s'; + theConsole->inputBuffer[1]=0; + break; + case IDC_BUTTONBRK: + { + extern int g_config_control_panel; + if (!g_config_control_panel) + set_halt_act(HALT_WANTTOBRK); + else + outputInfo("Emulator not ready (likely in pause)...\n"); + } + break; + } + break; + case WM_CREATE: + outputInfo("WM_CREATE\n"); + break; + case WM_INITDIALOG: + { + // récupère le bon ptr + theConsole = (CConsole*)lParam; + // associe la classe à la fenetre + SetLastError(0); + if (! SetWindowLongPtr(hwnd,GWLP_USERDATA,(LONG_PTR)theConsole) && GetLastError()) + { + LONG err = GetLastError(); + char str[255]; + sprintf(str,"SetWindowLong(initdialog) Failed (%X %d)\n",hwnd,err); + OutputDebugString(str); + } + LOGFONT lf; + + // Creates a non proportionnal font for both EDIT1 & EDIT2 + + memset( &lf, 0, sizeof(LOGFONT) ); // zero out structure + lf.lfHeight = 14; // request a 12-pixel-height font + lf.lfWeight = FW_NORMAL; + lf.lfCharSet = ANSI_CHARSET; + lf.lfPitchAndFamily = FIXED_PITCH & FF_DONTCARE; + strcpy( lf.lfFaceName, "Courier New" ); // request a face name "Arial" + + if (!(theConsole->hFont = CreateFontIndirect( &lf )) ) + OutputDebugString("font failed\n"); + + // Hook a new windw procedure for EDIT1 + + HWND edit2 = GetDlgItem(hwnd,IDC_EDIT1); + ASSERT(edit2!=NULL); + if (!SetWindowLongPtr(edit2,GWLP_USERDATA,(LONG_PTR)theConsole)) + { + LONG err = GetLastError(); + char str[255]; + sprintf(str,"SetWindowLongPtr(edit2) Failed (%X %d)\n",edit2,err); + OutputDebugString(str); + } + + theConsole->OldProc = (WNDPROC)GetWindowLongPtr(edit2,GWLP_WNDPROC); + if (!SetWindowLongPtr(edit2,GWLP_WNDPROC,(LONG_PTR)EditProc)) + { + LONG err = GetLastError(); + char str[255]; + sprintf(str,"SetWindowLong(proc) Failed (%X %d)\n",edit2,err); + OutputDebugString(str); + } + SendDlgItemMessage(hwnd,IDC_EDIT2,WM_SETFONT,(WPARAM)theConsole->hFont,TRUE); + SendDlgItemMessage(hwnd,IDC_EDIT1,WM_SETFONT,(WPARAM)theConsole->hFont,TRUE); + + + + break; + } + + default: + return FALSE; + } + return TRUE; +} + + + + + +void CConsole::addLine(const char* buf) +{ + int lb,i; + + lb = (int)strlen(buf); + + // ignore un message qui ne tient pas dans le buffer + if (lb+16>HIST_DEFAULT_LIMIT) + return ; + + + if (HistorySize+lb > (BufferSize-8) ) + HistorySize = 0; + + strcpy(ConsoleHistory+HistorySize, buf); + HistorySize += lb; + + for(i=0;i 1 ) + { + CurLine = (int)SendDlgItemMessage(hWnd,IDC_EDIT2, EM_GETFIRSTVISIBLELINE, 0, 0 ); + if( CurLine > lcount ) + CurLine = lcount; + NbLinesToScroll = lcount - CurLine - kNbVisibleLinesInEditCtrl; + + if( NbLinesToScroll < 0 ) + NbLinesToScroll = 0; + + SendDlgItemMessage(hWnd,IDC_EDIT2, EM_LINESCROLL, 0, NbLinesToScroll ); + } +} + +void CConsole::shutConsole(HWND _hWndParent) +{ + +// if (_hWndParent!=hWndParent) return ; + + OutputDebugString("shutConsole\n"); + + if (IsWindow(hWnd)) + { + DestroyWindow(hWnd); + hWnd=NULL; + } + + +} + + +CConsole::CConsole() +{ + + mod = LoadLibrary("riched20.dll"); +// CEmulator::theEmulator->theConsole=this; + hWnd = NULL; + enable = 0; +} + +CConsole::~CConsole() +{ + FreeLibrary(mod); +// CEmulator::theEmulator->theConsole=NULL; + +} + +void CConsole::initConsole(HINSTANCE _hInst,HWND _hWndParent) +{ + + if (hWnd) + { + outputInfo("Console already running\n"); + return ; // Already running + } + + hWndParent = _hWndParent; + + //theConsole=this; + HistorySize = 0; + visible=0; + kNbVisibleLinesInEditCtrl = 23; + BufferSize = HIST_DEFAULT_LIMIT; + inputBuffer[0]=0; + + + // console +// __asm int 3; + OutputDebugString("createConsole\n"); + + hWnd = CreateDialogParam(_hInst, MAKEINTRESOURCE(IDD_CONSOLE), _hWndParent, ConsoleProc,(LPARAM)this); + if (!hWnd) + { + outputInfo("createConsole failed... %d (%X)\n",GetLastError(),_hInst); + // theConsole=NULL; + return ; + } + + SendDlgItemMessage(hWnd,IDC_EDIT2, EM_EXLIMITTEXT, (WPARAM)HIST_DEFAULT_LIMIT, 0); + + + return ; +} + + +void CConsole::toggleConsole() +{ + outputInfo("toggleConsole\n"); + + if (!visible) + showConsole(); + else + hideConsole(); + +} + + + +int CConsole::read(char* buf) +{ + int l; + + if (!enable) enableConsole(); + + while(!inputBuffer[0] && IsWindow(hWnd)) + { + Sleep(100); + if (r_sim65816.should_emulator_terminate()) + break; + } + + strcpy(buf,inputBuffer); + l = strlen(buf); + if (l) + buf[l++]=0x0A; + buf[l]=0; + inputBuffer[0]=0; + return l; +} + +void CConsole::enableConsole() +{ + EnableWindow(GetDlgItem(hWnd,IDC_EDIT1),TRUE); + enable=1; + inputBuffer[0]=0; // clear previous commands + if (!visible) + showConsole(); +} + +void CConsole::disableConsole() +{ + + EnableWindow(GetDlgItem(hWnd,IDC_EDIT1),FALSE); + enable=0; +} + + diff --git a/Common/sounds/Apple Panic Start.wav b/Common/sounds/Apple Panic Start.wav new file mode 100644 index 0000000000000000000000000000000000000000..fa2f92ba83cc691e085d5a228e4848aa1e00119f GIT binary patch literal 24066 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 Oy@q&I9qiq!hx|XSG#QTo literal 0 HcmV?d00001 diff --git a/Common/sounds/Apple_2_Disk_Drive_Sounds.txt b/Common/sounds/Apple_2_Disk_Drive_Sounds.txt new file mode 100644 index 0000000..17d6f31 --- /dev/null +++ b/Common/sounds/Apple_2_Disk_Drive_Sounds.txt @@ -0,0 +1,130 @@ + +Apple 2 Disk Drive Sounds Copyright (C) Moose O'Malley, +-------------------------- January 2011. + + +===========================================================+ + | T A B L E O F C O N T E N T S | + +===========================================================+ + | * Introduction | + | * Other Projects Using These Sounds | + | * License / Limitations / Restrictions | + | * Amendment History | + | * Contacting the Program's Author | + +===========================================================+ + +Introduction : +-------------- + +This ZIP file contains the Apple 2 disk drive sounds that I recorded for +use with my "Apple 2 Disk Drive Sound Simulator" program (Windows 95 / 98 / +ME / NT / 2000 / XP, Vista, etc). + + + +About the Disk Drive Sounds: (from my "Apple 2 Disk Drive Sound Simulator" program's readme). +----------------------------- + +As people may know from the Apple 2 Emulation section of my WEB pages : + + At the best of times, the Apple 2 disk drive used to make horrible + grunting and scrapping sounds as it loaded programs. When I used to go + to the local Burleigh Heads library and used the Apple 2 there, everyone + in the library would stop and stare (and sometimes glare !) at us + whenever the Apple 2 was reading floppy disks - the grunts and groans + from the drive were *that* loud !! + + N.B. These terrible sounds were perfectly normal for Apple 2 drives, + and they were quite loud as well, even when using brand new floppy + disks and brand new floppy drives. + +However, people today didn't believe me about the sounds or how loud they +really were. + +So now, a short MP3 of some Apple 2 disk drive sounds is available from my +WEB page. + +And, in addition, I have written this program to simulate some Apple 2 +disk drive sounds. + +All of the Apple 2 disk drive sounds were recorded by me on April 10 and 11, +2000. To record the sounds, I used a cheap microphone hooked up to my +Windows 98 PC, which was running Goldwave a good sound editing program. +I placed the microphone at the entrance to the Apple 2 floppy drive, and +then proceeded to record the loading sounds the drive made for a bunch +of games and programs. (I own an Apple ][c with both internal and +external drives). + +Finally, in December 2001, I again listened carefully to the sounds I recorded +18 months ago, and edited out some of the more common sound bytes. + +Then, I wrote a Delphi program to play them back, and compiled all of the +sounds into a single resource file, which was later compiled and compressed +into the Executable program. That is why there are no WAV files accompanying +this program - they are all contained inside the EXE file !! (See my +"Apple 2 Disk Drive Sound Simulator" program). + +The "squeak" was a sound that the disk drive makes very occassionally +when (I think) it is swinging its read head backwards and forwards +very quickly and the rubber belt slips - not sure about how it happens +but it does happen. It is definitely a sound the drive makes - not +the door on the drive. I rember it happening on all of the Apple ]['s I +used in the early 1980's and it still happens on my Apple ][c - but it is +very occasional. + +The "Ghostbusters" digitised speech sound is not a disk drive sound, +but I thought it would be fun to add this sound in as well to show +what digitised speech on the Apple ][ sounded like. Back in the +early 80's, this speech was state of the art and I remember +times when people used to crowd around my Apple ][ just to +hear it say "Ghostbusters" !! + + +Other Projects Using These Sounds : +------------------------------------ + +See the readme file that accompanies my "Apple 2 Disk Drive Sound Simulator" +program. + + +License / Limitations / Restrictions : +--------------------------------------- + +These sounds are freeware - which means they are copyrighted, but +any person and any company is welcome to use them in your own programs / +projects, subject to one condition. + +I am a friendly guy and I like supporting / helping other software +developers. If you want to use these sounds in your own programs / +projects, then that is fine: all I ask is that you add a credit to me +on your projects's web page, the credits screen, the help file, +or similar. A credit something like this would be perfect: + + Apple ][ disk drive sounds courtesy of + Moose's Software Valley: http://move.to/moose + +Please don't just rip off my work / take my work without giving me +any credit. + +Hope this is OK. + +Long Live the Apple ][ !!! + + +Amendment History : +-------------------- + +Vers Date Description + +1.0 25-Jan-2011 First Public Release of these sounds on their own. + + +If this ZIP file was not downloaded from my Home Page, then +it is possibly an old version. The latest version of this +ZIP file is available from my WEB page - see below. + + Mike "Moose" O'Malley +____________________________________________________ + Moose's Software Valley - Established July, 1996. + WEB: http://move.to/moose +____________________________________________________ + \ No newline at end of file diff --git a/Common/sounds/Beep Beep.wav b/Common/sounds/Beep Beep.wav new file mode 100644 index 0000000000000000000000000000000000000000..fae960dd0582369cc7db9048e374180f878aa66e GIT binary patch literal 14698 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 I=jH_e2Y;@eivR!s literal 0 HcmV?d00001 diff --git a/Common/sounds/Grunt Grind 1.wav b/Common/sounds/Grunt Grind 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..aabee1c23d71378f2ec3e7821d0a0c2cbd8db59b GIT binary patch literal 54776 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 O^j%{8q+Wvti2noQnYD}n literal 0 HcmV?d00001 diff --git a/Common/sounds/Grunt Grind 2.wav b/Common/sounds/Grunt Grind 2.wav new file mode 100644 index 0000000000000000000000000000000000000000..6a7eef84362be43f92399ba5c7cad69e3e68c092 GIT binary patch literal 26476 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 1.wav b/Common/sounds/Read 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..9b269746b725c17dd5cf4213b5fb30ab83a53440 GIT binary patch literal 2476 zcmX|DdwkF39)G`|?<_-E%jne93bDmFgeaGqttJ|_MyJk>tqqgAnIpMHZXv59Yu#v~ zi8Aew6gr`n`<=*T2ZbDjGs*AyoOk_kUfw# zAbMcBo|Ve6BO5T13-ByfphD62>vN^fXDEYT@Eh)76CTDEtixzD#3#1O?nVsip_gu7 z&o@|)%M|e-TH>tzXb-7|E*#B=7^TxS*_hWbPtp3~bDUB&nV7BJ2NYqr>Ya*rb;~6+ zd82+!<8m%!3*O8Xs%?on))M1!2tQ#Y`|(-U;McmRA%2KmP;;yiQUvnuYSh6qm7i^*C6v6X&juSWq?QM$R<>T=v z%XnV(cR~kDLXLW0odx_xwf&Ber5KFnid|t2Wk}~BzJ^IwYFBIv3ROiS53-kQ?Amd= zb+c2}1BcavIy}S{?hBq#2b$vr;jSD*kY_b*utjRp4Y(OCI7WTSR;NZN-UjCIOMZ@f zb>d-;M2TrwfqeikOMrw$eWzS`=#G_oFa)If$&58bk@d z^XxM_VX1b~ce8^wlD}}OGCIzzpjVi8;Vz6-ezI?BP4J2`=p(%J#ZKGmYuIl4NHZTJ zM91)BUO-dzV;MSgE`JkF<2B1?(1)#Db@wF)^9{G&^>Yol)ZVr2{zqlbW!SvfIKiJY<=cY#;lZER3aYV6Z88FQ^&3%ToKnr+N!D^OZi;0%74FOmTE= zIUVh=#&+5yi?S@+Y)deQ$-$biO<~)DU)(Mi;ilt~FY}Ys@miWfciyFG9K#J;ZfSPi zf8ophP#@!a_~~|rr9t1YXTv50bzBje*($%!x3cxP)y;7Af(Ai>dy9LKh{e{>@4QhX z)X2YM^>~$qZiDKW=vup3bUYnp#+QpC6VOyO`=*=j!)N0{rLa@nrG8^@j& z9f}Km8hXbvIokae)D0UI$ZdgZ*6|x)iPO)hMr}6=5 z*hegO&$t_$$v1IKJJw+U{v`F9FMhUXu{F06Rr{J<^_hOHA7YP5eM>mX4RL=Je%3RN zuS$7#XvTp!vdjJIM!GEK;h=qO@wfx&c8^W7uGlLT&BG!aW3$B6wbsCz84)KIPjfAT z_Cb=WAFjK43*Qf*4t};GsX=eP&zi2S`;M!z%`W?ieu!V^%WW^-W_$O&t8{%`E9OeS zZ^BHgZ%!CJjWf85tN6Ox<4!Z2YY~SOd&!UYUB&IQ*vNUVVeo-)v6Y=z3)6gM=wTme z3#|`4%6Ul|GL?_BLS7Mrzu`@!pp#gg%=+%AYZRPy-CcpyvjE3!qpgwBjMJ2pI2Y%v zjZhNJD(&uo1i4+At*~#bDb`{ulU!ZbgP-DNn$-G|?J%=J;&U68uvE_rI#;Z7G1!PZ zxeL#0eLsfE=blEPw0Q|u;XPH_TXAOF6b$4J7PCK3=(BkK6EXe1IoW9i8P~TjjLH@{kGY+vf;pQFYps;X`@(eq2_MqvV3i zHRHBLDyZ literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 2.wav b/Common/sounds/Read 2.wav new file mode 100644 index 0000000000000000000000000000000000000000..b7f77b09c5ed5fa97ad9a04474d487d5b47ea18c GIT binary patch literal 2522 zcmX|DdvuRi7TxE5KPn@}I|(7;F^ETyl6Ho~BSb?*$%{s(A_?M^Ok_+mRbqJ*8IMj7 z22sz7#s#ONckey-oPGA)`;LwX55MRE z#0`ucGI4r_exP=#Sqj97fgfA*mWrJNfq6}X0PVDSi-@sw|oi#UujoWjqzflG}3FV0CfZ22_(~0K z;RNGt=tTZe@CL=D!E;Qka?vgM2WTHGnxt8lH z)S$lv$awj)#B#I@btDJ#Fbl(pUl{lP0KT$W-j_rPlfF`fGW}B9Uml1(w`fC*!F{|CG3RB5lpvkaVlfBpXZP|X6uvsa zzG>^iN480-xhX@%U*h4TW$v-=+it5a)8AC#uIAvBbaF zmHpZ)e=r3y1;=f+9ib;!X$1S!Qnr{8X12W06?Tvf)Mm28q&YXudXr;HWe|S07i_9F zMG*Vghuuq*YOKdU$g*mEoAtLw2!ga4sb-!NC7wFc2J30LuD9(?yH|^3oH=5QE6WLX z9?K2Hdd<@k}Ib;vk!bsJfoa( z-Y_ZhJz0KQkLpgXv47VREki4rgq|8@$J^n04bw1)96Vr_IlY{LW-5_hZ};1l%r3|* zHJ_VLoSDv4d8~Q%kh_n~wWqWk8!??MXkq5cYglAA+O7IPe?!~X$#KS;IB6@h$>3J( z>vogK9EM=Bs{Oa^r}f}LE;X0oDA6;zU#ICpd(wT)9ju?BLcTHEoJz;bS!3Fmb3Dgm z^sJ56c=FRFqh+DIN@kD1t9Ync`ouo6P4z9EglJR8)zLNIIcUb2-e!o5#&wO>p*mPk zX(slQ3y$%220JYbaM%5`Hnz5Y?O}FfuKLJ3X0H?Cy6BqYy5sb4zLu#(##=q~tnS7u z;%6E;S&n1+NhFf=v3<+E#Qm*(q_cH6wP?R7a+=G1y`b@|-q*Y^!LE2`r8yzDV0DSD zs%`J~(EA!`o|@feoy@gEG+*!AS9G=Aq|b=rO6t;6twjaV-|WhFr8yrsZA?COCj=8P z5udVaZM9IZ!cUgr9;-TG&)b8xj<(RgnuTQPXpR!$#%2nc7AH+jiP>t#m_q8q3!b%5 z6l+iIq{%u_J5pN$@B|a&W4R~gGF`rd2M&`(jmhr&Qs_)~g*tuZiLTUpc7XlTcF+X9 zqoHzzeEvv+ut_6yiu!0G$L?x8`~S?iotds@&S8_tQ+8AXHAcOta~@QOCvar4{FN$p zn~GbAW@w-}Hr)2IOYHznp^E*Ajk4Tyay*?cOgA%1{)P+<;_e4B|#QKyREy-`PP&dWa-?LYQ=w5i)?9K9X9St&226&ua+#Q6TkAlu0)s zCWijd2$}l2zNfwEMimlb%FG7inEKKak9E9u=h#uL&>;F%3FgQ^Mr|*p{9b_ou5CkA zI)-pbmr_|r*YTl46ypq?GKaWS;ZM>|&ZB^;SiUX+hRoOhd!^N0={ zh0%DI{HWBrm`leArArPYb4E!6IfEZr)g_`k1IxL>kN;KSF>eUJmy`G}&LW$7uu7k6 z1H8_Ag0C##T0h+qbqFq{8%mL81URDL@l2Y91d!?`)EuZgT9TQczp?-M8S zIm*e2lSF%*@L}d8L zh^X-BP=1G}OiT7pOixb8NKW#fkm)}(by`wf!mQ*#|NnpbC#I%lrl(AroZ;U&EWkf( Pa(c>4|FHCglu7s>jk18^ literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 3.wav b/Common/sounds/Read 3.wav new file mode 100644 index 0000000000000000000000000000000000000000..c20693991c71770a54aafb6702fab09e4a34f489 GIT binary patch literal 11998 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 5.wav b/Common/sounds/Read 5.wav new file mode 100644 index 0000000000000000000000000000000000000000..dc1a628482520417645d9ff9336f5491378d2e35 GIT binary patch literal 5174 zcmX|_cXX9i)5T}b4OKcwRR}6Y5EMZXK~Muh6j6G4r9^sYF(3#80qIf(Z-VXg(29 zeqL%JQg@|@lYG)CqF=biIObYbpq;=ohdOgSia?!uJW>{|qa$*ir_bc7OqED1-y(a+%x?UBBDu7shO5&x z#3+%t9l@^0l3z2hX98Zt^Em@AF35hFECnRHl#+5Xnv5sO87xd>$6EeBBn7mPeySDp zEj_>u`{by+tU0xadhY!V|99Z?-}p0IBFOU;;!;)KklNfZhZ_zPz1*BoSPN(g_GPaA zl~^vp-=k6loF&SiWMwZa7s~%+f&4DTv84vl+eZv;$zV+&uj8=P>1D8#Aiebwi0CdU zWTJv5b513_fX@#=NqwR?L^3Sh1`x9?^0t%&H|6z&w8NfdoSSa%60^SATHn#0T2s@c zpyt!s8l^S#KB%ik?1#%FsYg_uj^pzykh}Fibi~VPBHLIS>MN?6Boipym?Z&Rs_ljLYKSsbeIU~dEwN|FQY988qoV{aWzk-VB$ zkIOGaVHE$5w}sY2PjSvv`$UfEGdXF8x2Ab(yt0V8|Sy^SveMM_a zP3+N|veMT15bGvQT_tzKCi@w_qg>NueNMf_N<+6PkmyFSs*t>*Go-R~BikdX@WI6C z1F}7sD!gJp}ME&bA+a^kLoj4$M6 zYT_)hTw{BEP3sHyrb#EgB6VTa7v&wvDZT8T|I^QvW-h}$ah+XJH&VxHYuRSarJ#h{ z4L?>=+>=16J4KaW1k11a2En>ybO2TQ5eUk(`#b)=B%}41{zeAQ>kIm|6r;|5&`AA< zs)^Kg?niywRs`ey16v?v;g#=oqsGcvJ1-UViM?(eEt8kyteuR25C4|q+ADCu-K3K8 zfQ%~GoK3&bynfNM+Lo%HxI`Iek=iz-N67nuVQ!kXvDo0A;1U~d<|8dauexz=6?MN> z3%eztJe7(cX}ztJl$UC@)f(zQVEmSxlB({-z+x>U4Q)qog3qSv^19+$KpxqrL~xoF zux^%36ZIQcA~4=v(B|Ot5iF6*3j2WdGzGCG+%{Jz5EE!0h;hx_Bu%FZO8dgTgwN)u z1&8=Zac(i^F4gkd7!KMcb+w;n(MeJbX3y=Wxer`^cUc!`JFO`j$@T=xu+s2gJy}8x zx0C1OlGT%AQj`4626q{HU1z`p;V#V8qF=Vx8}L+VIb?e*!ql$XY<=BTcPq3EoS8?W zY=JLt`)s={w*t~y_mhFmdPB>*A6*mIT!+ehD{tfMiq!{IQJTk1bYt8ekT?f4RJB_6 zk>!A|7tu3L>IFD%5LU#&QpcnuzI4`e)NWQSD|KX$mZSTpz>9n7Jw?FU$MOmMSqdhc zLsu9fP3RGEoYhV%=~1daS!U`8osUjvtZm_q;(S-d6(rg_WSx!2o6&Tv;&gzneBXt& z^d~ZK#xJvB#N&irwtI2_2B=2W%p~t6;YC=9K9T}&bkj}r_0yV#s%tI%Nh`i zHwbj})x-1)FO{UI&GK2u!X}B(F>rN1@O+@?ztb_3ADj6xo*8=s20>||f;{*okJK?Y*(#*>Y;Qi=|}fSNCc5>2&FiB2U6(+==bA2h*0R78e$a0j)AK2Im_AvwTl7<^L- zB@?BsU6kvtLu9Z0Y+t}EAKD;0V?WTF=8(Icny#TPRBzc)%PXBxIurB~wk)N0#t@G| z=$WB(&^B`4vQo?MVZ|8fuHWkKROCTBZAov z|5}_KMFAbQP#7ejtHE)7GTPaF?w09OvOgI8IM~Wa7qak;H9(teAeQs#FgetNOldvZ`gz_U9(f|~q{Z0>TBWu^NH zoE0Zm^L=H1({Gg(Xt2k+*R^+p>)RoV!7X=-X66Z#iT0?UL=ar;^p()!HtH zE6F$C=?;792T6#l?S^UsoVx^6_Mr1jf}_q_SIMV2ow;}oK^Mo%Lu+lD;M_QRMLGFg zn+Ae`C4rWK(JoxWQ8#n^@4*^AtM!2M`$)V-x~Xmyp0%S!QJ;3(SF!GJ)q7G8%rzkr z3Gl~k`r9m6xDy>@m_6_h{R~SZe!oa9D)tY*2=nLU z`A}&r;pm-N=&{}KPjB?c4m??7Q+*|W80B=>ez!zl1yLe2*GPLqA?aRW#NBnztd@PqRa|7lrr$ zJIleL$H2zRaAh4`&kXoFs`?uZL682A48#)G@s@1)$!dVT#vlb8+Tu>TzTf2XvP z58<5|Ob&NYu7|m=q$};7cWZT&w6cpnH<8_MCE{83rv=&Ooj!RaEifdAJbdTFard%s18Hi&K(QyvK(=llOIP&}m zWw;x5UC(6D5~X;RSXH7sR;3rVz}o^?cmqxz$Lx_giyvWPXdzkT1*ZA>aNtU2q9(9= zR#@6;I`N2Q&RWcb6ip_kbIVD2Ne60O;*-M9Ii5tI25K@P)sS9t7mle)-+THWoBYZo zbqP+3<&IuVm}{7jf9KW*Oy42Q`RB=BIgndQ-sEWs6nX`073S52SeS&3F(7?C>-W)R zYiO`h{{-$&F3I9 zi{@Yw-O7zQ=!jiVNwe{^CHi$17S4hrQmMzrXwEb;QdDnq<7oCT!H52I<}%>o33qM8 zo)k{mg96$N-m~g>Uo=!{|?MC|7=NA#jYq=UhE+;R$5qmL7%7nzbH$-s7EUWpr? zheLa#lqM33%=aM0!Pxig@_3(2A6-kVW-zH|zTFrGQ?20kWt?1?-D#XR8Sl1G4Wr2S z9&EZo{15YFC-|F3Z`y+;@jO4pJB8aIY!8^Yfp!?i&vb0wO%$^0U1EBiY^So~3M&uM z(S|WSCgSHtaFzrXVyS^~pmq!2ZKS(x$InQf4d-()JO1ROk>nZ0{29eN7iT;!J36qb%QUBr9iFxu0s9 zL4{n!kD_{=9f{bvgtPyWh7FoF`3O ww0@tSomxip?_4?b|Nji_*e7aWboZ{^`h}Jcdo?tyTXgrnp<&Sx-Mh;F0Z%*CU;qFB literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 6.wav b/Common/sounds/Read 6.wav new file mode 100644 index 0000000000000000000000000000000000000000..8f623c08448c16e05c2e47573e85e93afb488912 GIT binary patch literal 18376 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Read 7.wav b/Common/sounds/Read 7.wav new file mode 100644 index 0000000000000000000000000000000000000000..a1f3105b62c083cc1cef92346655db0f2c4e616b GIT binary patch literal 21180 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Search Skip Search 1.wav b/Common/sounds/Search Skip Search 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..ca203f68e19970a4bebaebca1530ac86d1840ee8 GIT binary patch literal 115708 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 A%K!iX literal 0 HcmV?d00001 diff --git a/Common/sounds/Search Skip Search 2.wav b/Common/sounds/Search Skip Search 2.wav new file mode 100644 index 0000000000000000000000000000000000000000..0d87532c4aa155d729fcaed77f66082e6d8fcf58 GIT binary patch literal 63172 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Spin.wav b/Common/sounds/Spin.wav new file mode 100644 index 0000000000000000000000000000000000000000..1168ae8f7c189c2225c361d4666fec4a44645a97 GIT binary patch literal 89440 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%0Ar~zF&!VtEwhmoWkyyLRjX)o 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 literal 0 HcmV?d00001 diff --git a/Common/sounds/Sqweak.wav b/Common/sounds/Sqweak.wav new file mode 100644 index 0000000000000000000000000000000000000000..b9b59bd54178e6075f5bbee9baa94fc7b4bb9e24 GIT binary patch literal 9814 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 + // ...and #elif defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) diff --git a/kegs/Src/bigfile.cpp b/kegs/Src/bigfile.cpp new file mode 100644 index 0000000..3a19dd1 --- /dev/null +++ b/kegs/Src/bigfile.cpp @@ -0,0 +1,184 @@ +// +// bigfile.cpp +// ActiveGS_Karateka +// +// Created by Olivier Goguel on 14/12/2017. +// + + +#include "bigfile.h" + + +#if KARATEKA_BIGFILE +#define ONLY_BIG +#endif + +#define BIG 0x8000 + +struct CBigFile +{ + const char* filename; + off_t seek_pos; + const char* buffer; + int size; + bool opened; + int code; +}; + + +#if KARATEKA_BIGFILE +extern "C" const char karateka_bin[]; +extern "C" const char karateka_activegsxml[]; + + +CBigFile files[] ={ + "karateka.bin", 0, karateka_bin,143360,false,0xEA, + "karateka.activegsxml", 0, karateka_activegsxml,5260,false,0XEA, + + NULL,0,NULL,0,false +}; +#else +CBigFile files[] ={ + NULL,0,NULL,0,false +}; + +#endif + + +/* +off_t seek_pos = -1; +const char* buffer = NULL; +int file_size = -1; +*/ + +static const char* getfile(const char* p) +{ + int l = strlen(p); + while(l>=0) + { + if (p[l]=='/') + return p+l+1; + l--; + } + return p; +} + + +int big_open(const char *_pathname, int _flags, mode_t _mode) +{ + const char* file = getfile(_pathname); + if (file[0]=='*') + { +#if KARATEKA_BIGFILE + int l = 0; + while(files[l].filename != NULL) + { + if (!strcmp(file+1,files[l].filename)) + { + if (files[l].opened) + { + printf("already opened %s",_pathname); + // return -1; + } + files[l].opened = true; + files[l].seek_pos = 0; + return BIG+l; + } + l++; + } + return -1; +#else + return open(_pathname+1,_flags,_mode); +#endif + } + else + { +#ifdef ONLY_BIG + printf("missing file %s\n",_pathname); + return -1; +#else + return open(_pathname,_flags,_mode); +#endif + } +} + + + +off_t big_lseek(int _fd, off_t _offset, int _whence) +{ + if ( ( _fd & BIG ) == 0 ) + { +#ifdef ONLY_BIG + return 0; +#else + return lseek(_fd, _offset, _whence); +#endif + } + else + { + CBigFile& file = files[_fd &~BIG]; + if (_whence == SEEK_SET) + file.seek_pos = _offset; + else + if (_whence == SEEK_END) + file.seek_pos = file.size-1; + + return file.seek_pos; + } +} + +ssize_t big_read(int _fd, void *_buf, size_t _count) +{ + if ( ( _fd & BIG ) == 0 ) + { +#ifdef ONLY_BIG + return 0; +#else + return read(_fd, _buf, _count); +#endif + } + else + { + CBigFile& file = files[_fd &~BIG]; + + if (_count + file.seek_pos > file.size) + _count = file.size - file.seek_pos; + + memcpy(_buf,file.buffer+file.seek_pos,_count); + char *decode = (char*)_buf; + for(int i=0;i<_count;i++) + decode[i] ^= file.code; + file.seek_pos += _count; + return _count; + } +} + +ssize_t big_write(int _fd, void* _buf, size_t _count) +{ + if ( ( _fd & BIG ) == 0 ) + { + return _count; + } + else { + return write(_fd, _buf, _count); + } +} + + +int big_close(int _fd) +{ + if ( ( _fd & BIG ) == 0 ) + { + CBigFile& file = files[_fd &~BIG]; + if (!file.opened) + { + printf("nothing to close"); + return -1; + } + file.opened=false; + } + else + close(_fd); + return 0; +} + diff --git a/kegs/Src/bigfile.h b/kegs/Src/bigfile.h new file mode 100644 index 0000000..1af917b --- /dev/null +++ b/kegs/Src/bigfile.h @@ -0,0 +1,27 @@ +// +// bigfile.hpp +// ActiveGS_Karateka +// +// Created by Olivier Goguel on 14/12/2017. +// + + +#ifndef bigfile_hpp +#define bigfile_hpp + +#include "defc.h" + +#if _MSC_VER +#define mode_t int +#define ssize_t int +#endif + +int big_open(const char *_pathname, int _flags, mode_t _mode); +off_t big_lseek(int _fd, off_t _offset, int _whence); +ssize_t big_read(int _fd, void *_buf, size_t _count); +ssize_t big_write(int _fd, void *_buf, size_t _count); +int big_close(int _fd); +ssize_t big_write(int _fd, const void* _buf, size_t _count); + +#endif /* bigfile_hpp */ + diff --git a/kegs/Src/sim65816.h b/kegs/Src/sim65816.h index 46dc32d..c2964a8 100644 --- a/kegs/Src/sim65816.h +++ b/kegs/Src/sim65816.h @@ -1,9 +1,9 @@ -/* - ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS - Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net - This code is covered by the GNU GPL licence -*/ - +/* + ActiveGS, Copyright 2004-2016 Olivier Goguel, https://github.com/ogoguel/ActiveGS + Based on Kegs, Copyright 2004 Kent Dickey, https://kegs.sourceforge.net + This code is covered by the GNU GPL licence +*/ + #pragma once #define START_DCYCS (0.0) diff --git a/kegs/Win/dirent-win32.h b/kegs/Win/dirent-win32.h new file mode 100644 index 0000000..6425174 --- /dev/null +++ b/kegs/Win/dirent-win32.h @@ -0,0 +1,230 @@ +/***************************************************************************** + * dirent.h - dirent API for Microsoft Visual Studio + * + * Copyright (C) 2006 Toni Ronkko + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * ``Software''), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Dec 15, 2009, John Cunningham + * Added rewinddir member function + * + * Jan 18, 2008, Toni Ronkko + * Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string + * between multi-byte and unicode representations. This makes the + * code simpler and also allows the code to be compiled under MingW. Thanks + * to Azriel Fasten for the suggestion. + * + * Mar 4, 2007, Toni Ronkko + * Bug fix: due to the strncpy_s() function this file only compiled in + * Visual Studio 2005. Using the new string functions only when the + * compiler version allows. + * + * Nov 2, 2006, Toni Ronkko + * Major update: removed support for Watcom C, MS-DOS and Turbo C to + * simplify the file, updated the code to compile cleanly on Visual + * Studio 2005 with both unicode and multi-byte character strings, + * removed rewinddir() as it had a bug. + * + * Aug 20, 2006, Toni Ronkko + * Removed all remarks about MSVC 1.0, which is antiqued now. Simplified + * comments by removing SGML tags. + * + * May 14 2002, Toni Ronkko + * Embedded the function definitions directly to the header so that no + * source modules need to be included in the Visual Studio project. Removed + * all the dependencies to other projects so that this very header can be + * used independently. + * + * May 28 1998, Toni Ronkko + * First version. + *****************************************************************************/ +#ifndef DIRENT_H +#define DIRENT_H + +#include +#include +#include + + +typedef struct dirent +{ + char d_name[MAX_PATH + 1]; /* current dir entry (multi-byte char string) */ + WIN32_FIND_DATAA data; /* file attributes */ +} dirent; + + +typedef struct DIR +{ + dirent current; /* Current directory entry */ + int cached; /* Indicates un-processed entry in memory */ + HANDLE search_handle; /* File search handle */ + char patt[MAX_PATH + 3]; /* search pattern (3 = pattern + "\\*\0") */ +} DIR; + + +/* Forward declarations */ +static DIR *opendir (const char *dirname); +static struct dirent *readdir (DIR *dirp); +static int closedir (DIR *dirp); +static void rewinddir(DIR* dirp); + + +/* Use the new safe string functions introduced in Visual Studio 2005 */ +#if defined(_MSC_VER) && _MSC_VER >= 1400 +# define STRNCPY(dest,src,size) strncpy_s((dest),(size),(src),_TRUNCATE) +#else +# define STRNCPY(dest,src,size) strncpy((dest),(src),(size)) +#endif + + +/***************************************************************************** + * Open directory stream DIRNAME for read and return a pointer to the + * internal working area that is used to retrieve individual directory + * entries. + */ +static DIR *opendir(const char *dirname) +{ + DIR *dirp; + assert (dirname != NULL); + assert (strlen (dirname) < MAX_PATH); + + /* construct new DIR structure */ + dirp = (DIR*) malloc (sizeof (struct DIR)); + if (dirp != NULL) { + char *p; + + /* take directory name... */ + STRNCPY (dirp->patt, dirname, sizeof(dirp->patt)); + dirp->patt[MAX_PATH] = '\0'; + + /* ... and append search pattern to it */ + p = strchr (dirp->patt, '\0'); + if (dirp->patt < p && *(p-1) != '\\' && *(p-1) != ':') { + *p++ = '\\'; + } + *p++ = '*'; + *p = '\0'; + + /* open stream and retrieve first file */ + dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data); + if (dirp->search_handle == INVALID_HANDLE_VALUE) { + /* invalid search pattern? */ + free (dirp); + return NULL; + } + + /* there is an un-processed directory entry in memory now */ + dirp->cached = 1; + } + + return dirp; +} + + +/***************************************************************************** + * Read a directory entry, and return a pointer to a dirent structure + * containing the name of the entry in d_name field. Individual directory + * entries returned by this very function include regular files, + * sub-directories, pseudo-directories "." and "..", but also volume labels, + * hidden files and system files may be returned. + */ +static struct dirent *readdir(DIR *dirp) +{ + assert (dirp != NULL); + + if (dirp->search_handle == INVALID_HANDLE_VALUE) { + /* directory stream was opened/rewound incorrectly or ended normally */ + return NULL; + } + + /* get next directory entry */ + if (dirp->cached != 0) { + /* a valid directory entry already in memory */ + dirp->cached = 0; + } else { + /* read next directory entry from disk */ + if (FindNextFileA (dirp->search_handle, &dirp->current.data) == FALSE) { + /* the very last file has been processed or an error occured */ + FindClose (dirp->search_handle); + dirp->search_handle = INVALID_HANDLE_VALUE; + return NULL; + } + } + + /* copy as a multibyte character string */ + STRNCPY ( dirp->current.d_name, + dirp->current.data.cFileName, + sizeof(dirp->current.d_name) ); + dirp->current.d_name[MAX_PATH] = '\0'; + + return &dirp->current; +} + + +/***************************************************************************** + * Close directory stream opened by opendir() function. Close of the + * directory stream invalidates the DIR structure as well as any previously + * read directory entry. + */ +static int closedir(DIR *dirp) +{ + assert (dirp != NULL); + + /* release search handle */ + if (dirp->search_handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->search_handle); + dirp->search_handle = INVALID_HANDLE_VALUE; + } + + /* release directory handle */ + free (dirp); + return 0; +} + + +/***************************************************************************** + * Resets the position of the directory stream to which dirp refers to the + * beginning of the directory. It also causes the directory stream to refer + * to the current state of the corresponding directory, as a call to opendir() + * would have done. If dirp does not refer to a directory stream, the effect + * is undefined. + */ +static void rewinddir(DIR* dirp) +{ + /* release search handle */ + if (dirp->search_handle != INVALID_HANDLE_VALUE) { + FindClose (dirp->search_handle); + dirp->search_handle = INVALID_HANDLE_VALUE; + } + + /* open new search handle and retrieve first file */ + dirp->search_handle = FindFirstFileA (dirp->patt, &dirp->current.data); + if (dirp->search_handle == INVALID_HANDLE_VALUE) { + /* invalid search pattern? */ + free (dirp); + return; + } + + /* there is an un-processed directory entry in memory now */ + dirp->cached = 1; +} + + +#endif /*DIRENT_H*/ diff --git a/kegs/Win/joystick_win.cpp b/kegs/Win/joystick_win.cpp new file mode 100644 index 0000000..ed8c148 --- /dev/null +++ b/kegs/Win/joystick_win.cpp @@ -0,0 +1,123 @@ +/************************************************************************/ +/* KEGS: Apple //gs Emulator */ +/* Copyright 2002 by Kent Dickey */ +/* */ +/* This code is covered by the GNU GPL */ +/* */ +/* The KEGS web page is kegs.sourceforge.net */ +/* You may contact the author at: kadickey@alumni.princeton.edu */ +/************************************************************************/ + +const char rcsid_joystick_driver_c[] = "@(#)$KmKId: joystick_driver.c,v 1.12 2004-10-17 21:28:48-04 kentd Exp $"; + +#include "../src/defc.h" +#include "../src/moremem.h" +#include "../src/paddles.h" + +# include +# include + + +void joystick_init() +{ + JOYINFO info; + JOYCAPS joycap; + MMRESULT ret1, ret2; + int i; + + // Check that there is a joystick device + if(joyGetNumDevs() <= 0) { + printf("No joystick hardware detected\n"); + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; + return; + } + + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; + + // Check that at least joystick 1 or joystick 2 is available + ret1 = joyGetPos(JOYSTICKID1, &info); + ret2 = joyGetDevCaps(JOYSTICKID1, &joycap, sizeof(joycap)); + if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { + g_joystick_native_type1 = JOYSTICKID1; + printf("Joystick #1 = %s\n", joycap.szPname); + g_joystick_native_type = JOYSTICKID1; + } + ret1 = joyGetPos(JOYSTICKID2, &info); + ret2 = joyGetDevCaps(JOYSTICKID2, &joycap, sizeof(joycap)); + if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { + g_joystick_native_type2 = JOYSTICKID2; + printf("Joystick #2 = %s\n", joycap.szPname); + if(g_joystick_native_type < 0) { + g_joystick_native_type = JOYSTICKID2; + } + } + + for(i = 0; i < 4; i++) { + g_paddles.g_paddle_val[i] = 32767; + } + g_moremem.g_paddle_buttons = 0xc; + + joystick_update(0.0); +} + +void +joystick_update(double dcycs) +{ + JOYCAPS joycap; + JOYINFO info; + UINT id; + MMRESULT ret1, ret2; + + id = g_joystick_native_type; + + ret1 = joyGetDevCaps(id, &joycap, sizeof(joycap)); + ret2 = joyGetPos(id, &info); + if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { + // OG Convert to -32767/32767 + g_paddles.g_paddle_val[0] = (info.wXpos - joycap.wXmin) * 65535 / (joycap.wXmax - joycap.wXmin) - 32768; + g_paddles.g_paddle_val[1] = (info.wYpos - joycap.wYmin) * 65535 / (joycap.wYmax - joycap.wYmin) - 32768; + + if(info.wButtons & JOY_BUTTON1) { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 1; + } else { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~1); + } + if(info.wButtons & JOY_BUTTON2) { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 2; + } else { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~2); + } + paddle_update_trigger_dcycs(dcycs); + } +} + +void +joystick_update_buttons() +{ + JOYINFOEX info; + UINT id; + + id = g_joystick_native_type; + + info.dwSize = sizeof(JOYINFOEX); + info.dwFlags = JOY_RETURNBUTTONS; + if(joyGetPosEx(id, &info) == JOYERR_NOERROR) { + if(info.dwButtons & JOY_BUTTON1) { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 1; + } else { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~1); + } + if(info.dwButtons & JOY_BUTTON2) { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons | 2; + } else { + g_moremem.g_paddle_buttons = g_moremem.g_paddle_buttons & (~2); + } + } +} + +// OG +void joystick_shut() +{ +} diff --git a/kegs/Win/scc_windriver.cpp b/kegs/Win/scc_windriver.cpp new file mode 100644 index 0000000..90359c0 --- /dev/null +++ b/kegs/Win/scc_windriver.cpp @@ -0,0 +1,260 @@ +/************************************************************************/ +/* KEGS: Apple //gs Emulator */ +/* Copyright 2002 by Kent Dickey */ +/* */ +/* This code is covered by the GNU GPL */ +/* */ +/* The KEGS web page is kegs.sourceforge.net */ +/* You may contact the author at: kadickey@alumni.princeton.edu */ +/************************************************************************/ + +const char rcsid_scc_windriver_c[] = "@(#)$KmKId: scc_windriver.c,v 1.4 2004-11-19 02:00:46-05 kentd Exp $"; + +/* This file contains the Win32 COM1/COM2 calls */ + +#include "../src/defc.h" +#include "../src/scc.h" + +#ifdef UNDER_CE +#define vsnprintf _vsnprintf +#endif + + +extern word32 g_c025_val; + +#ifdef _WIN32 +int +scc_serial_win_init(int port) +{ + COMMTIMEOUTS commtimeouts; + TCHAR str_buf[8]; + Scc *scc_ptr; + HANDLE host_handle; + int state; + int ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + scc_ptr->state = 0; /* mark as failed */ + +#ifdef UNICODE + wsprintf(&str_buf[0], _T("COM%d"), port+1); +#else + sprintf(&str_buf[0], "COM%d", port+1); +#endif + host_handle = CreateFile(&str_buf[0], GENERIC_READ | GENERIC_WRITE, + 0, NULL, OPEN_EXISTING, 0, NULL); + + scc_ptr->host_handle = host_handle; + scc_ptr->host_handle2 = malloc(sizeof(DCB)); + + printf("scc_socket_init %d called, host_handle: %p\n", port, + host_handle); + + if(host_handle == INVALID_HANDLE_VALUE) { + scc_ptr->host_handle = 0; + return 0; + } + + scc_serial_win_change_params(port); + + + commtimeouts.ReadIntervalTimeout = MAXDWORD; + commtimeouts.ReadTotalTimeoutMultiplier = 0; + commtimeouts.ReadTotalTimeoutConstant = 0; + commtimeouts.WriteTotalTimeoutMultiplier = 0; + commtimeouts.WriteTotalTimeoutConstant = 10; + ret = SetCommTimeouts(host_handle, &commtimeouts); + if(ret == 0) { + printf("setcommtimeout ret: %d\n", ret); + } + + state = 2; /* raw serial */ + scc_ptr->state = state; + + return state; +} + +void +scc_serial_win_change_params(int port) +{ + DCB *dcbptr; + HANDLE host_handle; + Scc *scc_ptr; + int ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + host_handle = scc_ptr->host_handle; + dcbptr = (DCB*)scc_ptr->host_handle2; // OG Added cast + if(host_handle == 0) { + return; + } + + ret = GetCommState(host_handle, dcbptr); + if(ret == 0) { + printf("getcomm port%d ret: %d\n", port, ret); + } + +#if 1 + printf("dcb.baudrate: %d, bytesize:%d, stops:%d, parity:%d\n", + (int)dcbptr->BaudRate, (int)dcbptr->ByteSize, + (int)dcbptr->StopBits, (int)dcbptr->Parity); + printf("dcb.binary: %d, ctsflow: %d, dsrflow: %d, dtr: %d, dsr: %d\n", + (int)dcbptr->fBinary, + (int)dcbptr->fOutxCtsFlow, + (int)dcbptr->fOutxDsrFlow, + (int)dcbptr->fDtrControl, + (int)dcbptr->fDsrSensitivity); + printf("dcb.txonxoff:%d, outx:%d, inx: %d, null: %d, rts: %d\n", + (int)dcbptr->fTXContinueOnXoff, + (int)dcbptr->fOutX, + (int)dcbptr->fInX, + (int)dcbptr->fNull, + (int)dcbptr->fRtsControl); + printf("dcb.fAbortOnErr:%d, fParity:%d\n", (int)dcbptr->fAbortOnError, + (int)dcbptr->fParity); +#endif + + dcbptr->fAbortOnError = 0; + + dcbptr->BaudRate = scc_ptr->baud_rate; + dcbptr->ByteSize = scc_ptr->char_size; + dcbptr->StopBits = ONESTOPBIT; + switch((scc_ptr->reg[4] >> 2) & 0x3) { + case 2: // 1.5 stop bits + dcbptr->StopBits = ONE5STOPBITS; + break; + case 3: // 2 stop bits + dcbptr->StopBits = TWOSTOPBITS; + break; + } + + dcbptr->Parity = NOPARITY; + switch((scc_ptr->reg[4]) & 0x3) { + case 1: // Odd parity + dcbptr->Parity = ODDPARITY; + break; + case 3: // Even parity + dcbptr->Parity = EVENPARITY; + break; + } + + dcbptr->fNull = 0; + dcbptr->fDtrControl = DTR_CONTROL_ENABLE; + dcbptr->fDsrSensitivity = 0; + dcbptr->fOutxCtsFlow = 0; + dcbptr->fOutxDsrFlow = 0; + dcbptr->fParity = 0; + dcbptr->fInX = 0; + dcbptr->fOutX = 0; + dcbptr->fRtsControl = RTS_CONTROL_ENABLE; + + ret = SetCommState(host_handle, dcbptr); + if(ret == 0) { + printf("SetCommState ret: %d, new baud: %d\n", ret, + (int)dcbptr->BaudRate); + } +} + +void +scc_serial_win_fill_readbuf(int port, int space_left, double dcycs) +{ + byte tmp_buf[256]; + Scc *scc_ptr; + HANDLE host_handle; + DWORD bytes_read; + DWORD i; + int ret; + + scc_ptr = &(g_scc.scc_stat[port]); + + host_handle = scc_ptr->host_handle; + if(host_handle == 0) { + return; + } + + /* Try reading some bytes */ + space_left = MIN(256, space_left); + ret = ReadFile(host_handle, tmp_buf, space_left, &bytes_read, NULL); + + if(ret == 0) { + printf("ReadFile ret 0\n"); + } + + if(ret && (bytes_read > 0)) { + for(i = 0; i < bytes_read; i++) { + scc_add_to_readbuf(port, tmp_buf[i], dcycs); + } + } + +} + +void +scc_serial_win_empty_writebuf(int port) +{ + Scc *scc_ptr; + HANDLE host_handle; + int rdptr; + int wrptr; + int done; + word32 err_code; + DWORD bytes_written; + int ret; + int len; + + scc_ptr = &(g_scc.scc_stat[port]); + + //printf("win_empty_writebuf, host_handle: %d\n", scc_ptr->host_handle); + host_handle = scc_ptr->host_handle; + if(host_handle == 0) { + return; + } + + /* Try writing some bytes */ + done = 0; + while(!done) { + rdptr = scc_ptr->out_rdptr; + wrptr = scc_ptr->out_wrptr; + if(rdptr == wrptr) { + //printf("...rdptr == wrptr\n"); + done = 1; + break; + } + len = wrptr - rdptr; + if(len < 0) { + len = SCC_OUTBUF_SIZE - rdptr; + } + if(len > 32) { + len = 32; + } + if(len <= 0) { + done = 1; + break; + } + bytes_written = 1; + ret = WriteFile(host_handle, &(scc_ptr->out_buf[rdptr]), len, + &bytes_written, NULL); + printf("WriteFile ret: %d, bytes_written:%d, len:%d\n", ret, + (int)bytes_written, len); + + err_code = (word32)-1; + if(ret == 0) { + err_code = (word32)GetLastError(); + printf("WriteFile ret:0, err_code: %08x\n", err_code); + } + + if(ret == 0 || (bytes_written == 0)) { + done = 1; + break; + } else { + rdptr = rdptr + bytes_written; + if(rdptr >= SCC_OUTBUF_SIZE) { + rdptr = rdptr - SCC_OUTBUF_SIZE; + } + scc_ptr->out_rdptr = rdptr; + } + } +} + +#endif diff --git a/kegs/Win/win32snd_driver.cpp b/kegs/Win/win32snd_driver.cpp new file mode 100644 index 0000000..425f46b --- /dev/null +++ b/kegs/Win/win32snd_driver.cpp @@ -0,0 +1,261 @@ +/************************************************************************/ +/* KEGS: Apple //gs Emulator */ +/* Copyright 2002 by Kent Dickey */ +/* */ +/* This code is covered by the GNU GPL */ +/* */ +/* The KEGS web page is kegs.sourceforge.net */ +/* You may contact the author at: kadickey@alumni.princeton.edu */ +/************************************************************************/ + +const char rcsid_win32snd_driver_c[] = "@(#)$KmKId: win32snd_driver.c,v 1.5 2002-11-19 03:09:59-05 kadickey Exp $"; + +#include "../src/defc.h" +#include "../src/sound.h" + +# include +# include + +//extern int Verbose; + +//extern int g_audio_rate; + +unsigned int __stdcall child_sound_loop_win32(void *param); +void check_wave_error(int res, char *str); + +#define NUM_WAVE_HEADERS 8 + +#ifndef __CYGWIN__ +HWAVEOUT g_wave_handle = NULL; // OG Default value must be set +WAVEHDR g_wavehdr[NUM_WAVE_HEADERS]; +#endif + +//extern int g_audio_enable; +extern word32 *g_sound_shm_addr; +// extern int g_preferred_rate; + +int g_win32snd_buflen = 0x1000; + +void +x_snd_init(word32 *shmaddr) +{ +// printf("win32snd_init\n"); +// child_sound_loop(-1, -1, shmaddr); + + return; +} + + +// OG Added global to free the dedicated win32 sound memory +byte *bptr = NULL; + +// OG shut win32 sound resources +void +x_snd_shutdown() +{ + + if (g_wave_handle) + { + MMRESULT res = waveOutReset(g_wave_handle); + if (res!=MMSYSERR_NOERROR ) + printf("waveOutReset Failed"); + + res = waveOutClose(g_wave_handle); + if (res!=MMSYSERR_NOERROR ) + printf("waveOutClose Failed"); + g_wave_handle=NULL; + } + // OG Free dedicated sound memory + if (bptr) + { + free(bptr); + bptr = NULL; + } + +} + + +void CALLBACK handle_wav_snd(HWAVEOUT hwo, UINT uMsg, DWORD_PTR dwInstance, DWORD_PTR dwParam1, DWORD_PTR dwParam2) +{ + LPWAVEHDR lpwavehdr; + + /* Only service "buffer done playing messages */ + if(uMsg == WOM_DONE) { + lpwavehdr = (LPWAVEHDR)dwParam1; + if(lpwavehdr->dwFlags == (WHDR_DONE | WHDR_PREPARED)) { + lpwavehdr->dwUser = FALSE; + } + } + + return; +} +void +check_wave_error(int res, char *str) +{ + TCHAR buf[256]; + + if(res == MMSYSERR_NOERROR) { + return; + } + + waveOutGetErrorText(res, &buf[0], sizeof(buf)); + printf("%s: %s\n", str, buf); + x_exit(1); +} + +void +x_snd_child_init() +{ + WAVEFORMATEX wavefmt; + WAVEOUTCAPS caps; + +// OG Moved as global variable (to rename) +// byte *bptr; + int bits_per_sample, channels, block_align; + int blen; + int res; + int i; + + memset(&wavefmt, 0, sizeof(WAVEFORMATEX)); + + wavefmt.wFormatTag = WAVE_FORMAT_PCM; +#ifndef UNDER_CE + bits_per_sample = 16; + wavefmt.nSamplesPerSec = g_sound.g_audio_rate; +#else + bits_per_sample = 16; + wavefmt.nSamplesPerSec = 12000; +#endif + + channels = 2; + wavefmt.wBitsPerSample = bits_per_sample; + wavefmt.nChannels = channels; + block_align = channels * (bits_per_sample / 8); + wavefmt.nBlockAlign = block_align; + wavefmt.nAvgBytesPerSec = block_align * g_sound.g_audio_rate; + + res = waveOutOpen(&g_wave_handle, WAVE_MAPPER, &wavefmt, 0, 0, + WAVE_FORMAT_QUERY); + + if(res != MMSYSERR_NOERROR) { + printf("Cannot open audio device\n"); + g_sound.g_audio_enable = 0; + return; + } + + res = waveOutOpen(&g_wave_handle, WAVE_MAPPER, &wavefmt, + (DWORD_PTR)handle_wav_snd, 0, CALLBACK_FUNCTION | WAVE_ALLOWSYNC); + + if(res != MMSYSERR_NOERROR) { + printf("Cannot register audio\n"); + g_sound.g_audio_enable = 0; + return; + } + + g_sound.g_audio_rate = wavefmt.nSamplesPerSec; + + blen = (SOUND_SHM_SAMP_SIZE * 4 * 2) / NUM_WAVE_HEADERS; + g_win32snd_buflen = blen; + bptr = (byte*)malloc(blen * NUM_WAVE_HEADERS); // OG Added cast + if(bptr == NULL) { + printf("Unabled to allocate sound buffer\n"); + x_exit(1); + } + + for(i = 0; i < NUM_WAVE_HEADERS; i++) { + memset(&g_wavehdr[i], 0, sizeof(WAVEHDR)); + g_wavehdr[i].dwUser = FALSE; + g_wavehdr[i].lpData = (LPSTR)&(bptr[i*blen]); // OG Added cast + g_wavehdr[i].dwBufferLength = blen; + g_wavehdr[i].dwFlags = 0; + g_wavehdr[i].dwLoops = 0; + res = waveOutPrepareHeader(g_wave_handle, &g_wavehdr[i], + sizeof(WAVEHDR)); + check_wave_error(res, "waveOutPrepareHeader"); + } + + res = waveOutGetDevCaps((UINT_PTR)g_wave_handle, &caps, sizeof(caps)); + check_wave_error(res, "waveOutGetDevCaps"); + printf("Using %s\n", caps.szPname); + printf(" Bits per Sample = %d. Channels = %d\n", + wavefmt.wBitsPerSample, wavefmt.nChannels); + printf(" Sampling rate = %d, avg_bytes_per_sec = %d\n", + (int)wavefmt.nSamplesPerSec, (int)wavefmt.nAvgBytesPerSec); + + set_audio_rate(g_sound.g_audio_rate); + +} + +void +win32_send_audio2(byte *ptr, int size) +{ + int found; + int res; + int i; + + found = 0; + for(i = 0; i < NUM_WAVE_HEADERS; i++) { + if(g_wavehdr[i].dwUser == FALSE) { + found = 1; + break; + } + } + + if(!found) { + /* all audio buffers busy, just get out */ + return; + } + + memcpy(g_wavehdr[i].lpData, ptr, size); + g_wavehdr[i].dwBufferLength = size; + g_wavehdr[i].dwUser = TRUE; + + res = waveOutWrite(g_wave_handle, &g_wavehdr[i], sizeof(g_wavehdr)); + check_wave_error(res, "waveOutWrite"); + + return; +} + +int +x_snd_send_audio(byte *ptr, int in_size) +{ + int size; + int tmpsize; + + size = in_size; + while(size > 0) { + tmpsize = size; + if(size > g_win32snd_buflen) { + tmpsize = g_win32snd_buflen; + } + win32_send_audio2(ptr, tmpsize); + ptr += tmpsize; + size = size - tmpsize; + } + + return in_size; +} + +word32* x_sound_allocate(int size) +{ +word32 *shmaddr; + shmaddr = (word32*)malloc(size); + memset(shmaddr, 0, size); + return shmaddr; +} + + +void x_sound_free(word32* _mem) +{ + if (_mem) + free(_mem); + +} + +void x_async_sound_init() +{ +} + +void x_async_snd_shutdown() +{ +} \ No newline at end of file diff --git a/kegs/Win/win_activegs.cpp b/kegs/Win/win_activegs.cpp new file mode 100644 index 0000000..1c96c21 --- /dev/null +++ b/kegs/Win/win_activegs.cpp @@ -0,0 +1,69 @@ +#include "../../common/cemulatorctrl.h" +#include "../src/sim65816.h" +#include "../src/video.h" + +extern int g_config_control_panel; +extern HWND g_hwnd_main; + + + +int +win_nonblock_read_stdin(int fd, char *bufptr, int len) +{ + extern int activeRead(char* buf); + return activeRead(bufptr); +} + + +int +x_show_alert(int is_fatal, const char *str) +{ + return 0; +} + + + +void +x_redraw_status_lines() +{ +} + +// OG Added Stretchable window + +int x_calc_ratio(float& ratiox,float& ratioy) +{ + +#ifdef UNDER_CE + return 0; +#else + RECT rect; + ::GetClientRect(g_hwnd_main,&rect); + ratiox = (float)(rect.right - rect.left)/(float)X_A2_WINDOW_WIDTH; + ratioy = (float)(rect.bottom - rect.top)/(float)X_A2_WINDOW_HEIGHT; + if ( (ratiox == 1.0 ) && (ratioy == 1.0) ) + return 0; // not stretched + else + return 1; +#endif +} + +//extern void addFrameRate(int _id); + +//extern Kimage g_win32_offscreen ; +extern HDC g_main_cdc; + + +void x_check_system_input_events() +{ +#ifndef ACTIVEGS + if (r_sim65816.get_state()==IN_PAUSE) + { + int oldpanel = g_config_control_panel; + extern int halt_sim; + g_config_control_panel = 1; + while (!r_sim65816.should_emulator_terminate()) + Sleep(100); + g_config_control_panel = oldpanel; + } +#endif +} diff --git a/kegs/Win/win_console.cpp b/kegs/Win/win_console.cpp new file mode 100644 index 0000000..a23c245 --- /dev/null +++ b/kegs/Win/win_console.cpp @@ -0,0 +1,172 @@ +#include +#include +#include +//#include +//#include + +#include "../src/defc.h" +#include "../src/protos_windriver.h" +#include "../src/driver.h" + +extern void kegsinit(HWND _hwnd); +extern void kegsshut(); +extern HWND g_hwnd_main; + +extern char *g_status_ptrs[MAX_STATUS_LINES]; + + +int +win_nonblock_read_stdin(int fd, char *bufptr, int len) +{ + + + HANDLE oshandle; + DWORD dwret; + int ret; + + errno = EAGAIN; + oshandle = (HANDLE)_get_osfhandle(fd); // get stdin handle + dwret = WaitForSingleObject(oshandle, 1); // wait 1msec for data + ret = -1; + if(dwret == WAIT_OBJECT_0) { + ret = read(fd, bufptr, len); + } + return ret; + +} + + + +void +x_fatal_exit(const char *str) +{ + +} +int +x_show_alert(int is_fatal, const char *str) +{ + return 0; +} + +int WINAPI WinMain ( + HINSTANCE hInstance, + HINSTANCE hPrevInstance, + LPSTR lpCmdLine, + int nShowCmd) +{ + return main(0,0); +} + +int +main(int argc, char **argv) +{ +// InitCommonControls(); + + WNDCLASS wndclass; + RECT rect; + int height; + + + wndclass.style = 0; + wndclass.lpfnWndProc = (WNDPROC)win_event_handler; + wndclass.cbClsExtra = 0; + wndclass.cbWndExtra = 0; + wndclass.hInstance = GetModuleHandle(NULL); + wndclass.hIcon = LoadIcon((HINSTANCE)NULL, IDI_APPLICATION); + wndclass.hCursor = LoadCursor((HINSTANCE) NULL, IDC_ARROW); + wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // OG Added cast + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = "kegswin"; + + // Register the window + if(!RegisterClass(&wndclass)) { + printf("Registering window failed\n"); + exit(1); + } + + height = X_A2_WINDOW_HEIGHT + (MAX_STATUS_LINES * 16) + 32; +// g_main_height = height; + +#include "../Src/kegsversion.h" + + char windowstr[255]; + sprintf(windowstr, "KEGS v%-6s BUILD v%s - Apple //gs Emulator", + g_kegs_version_str, g_kegs_version_build); + + HWND hwnd = CreateWindow("kegswin", windowstr, + WS_TILED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, + CW_USEDEFAULT, CW_USEDEFAULT, + X_A2_WINDOW_WIDTH, height, + NULL, NULL, GetModuleHandle(NULL), NULL); + + printf("g_hwnd_main = %p, height = %d\n", hwnd, height); + GetWindowRect(hwnd, &rect); + printf("...rect is: %ld, %ld, %ld, %ld\n", rect.left, rect.top, + rect.right, rect.bottom); + + extern void kegs_driver(); + g_driver.init(kegs_driver); + + kegsinit(hwnd); + int ret = kegsmain(argc, argv); + + UnregisterClass(wndclass.lpszClassName,GetModuleHandle(NULL)); + + kegsshut(); + return ret; +} + +void +x_check_system_input_events() +{ + + MSG msg; + + while(PeekMessage(&msg, g_hwnd_main, 0, 0, PM_NOREMOVE)) { + if(GetMessage(&msg, g_hwnd_main, 0, 0) > 0) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } else { + printf("GetMessage returned <= 0\n"); + my_exit(2); + } + } +} + + + +void +x_redraw_status_lines() +{ + COLORREF oldtextcolor, oldbkcolor; + char *buf; + int line; + int len; + int height; + int margin; + + height = 16; + margin = 0; + + HDC localdc = GetDC(g_hwnd_main); // OG Use on the fly DC + oldtextcolor = SetTextColor(localdc, 0); + oldbkcolor = SetBkColor(localdc, 0xffffff); + for(line = 0; line < MAX_STATUS_LINES; line++) { + buf = g_status_ptrs[line]; + if(buf != 0) { + len = strlen(buf); + TextOut(localdc, 10, X_A2_WINDOW_HEIGHT + + height*line + margin, buf, len); + } + } + SetTextColor(localdc, oldtextcolor); + SetBkColor(localdc, oldbkcolor); + ReleaseDC(g_hwnd_main,localdc); +} + +int x_calc_ratio(float& ratiox,float& ratioy) +{ + return 0; // not stretched +} + + diff --git a/kegs/Win/win_generic.cpp b/kegs/Win/win_generic.cpp new file mode 100644 index 0000000..a8485ec --- /dev/null +++ b/kegs/Win/win_generic.cpp @@ -0,0 +1,1022 @@ +/************************************************************************/ +/* KEGS: Apple //gs Emulator */ +/* Copyright 2002 by Kent Dickey */ +/* */ +/* This code is covered by the GNU GPL */ +/* */ +/* The KEGS web page is kegs.sourceforge.net */ +/* You may contact the author at: kadickey@alumni.princeton.edu */ +/************************************************************************/ + +#pragma once +const char rcsid_windriver_c[] = "@(#)$KmKId: windriver.c,v 1.11 2004-11-24 16:43:46-05 kentd Exp $"; + +/* Based on code from Chea Chee Keong from KEGS32, which is available at */ +/* http://www.geocities.com/akilgard/kegs32 */ + +#define WIN32_LEAN_AND_MEAN /* Tell windows we want less header gunk */ +#define STRICT /* Tell Windows we want compile type checks */ + +#include +#include +#include +//#include + +#ifdef ACTIVEGS +#include "../src/raster.h" +#endif + +#ifdef ACTIVEGSKARATEKA +#include "../../drivers/karateka.h" +#include "../../drivers/karateka_interface.h" +#endif + +//#define USE_GDIPLUS + +#ifdef USE_GDIPLUS +#include +#include +using namespace Gdiplus; +#pragma comment (lib,"Gdiplus.lib") +#endif + +#include "../src/defc.h" +#include "../src/protos_windriver.h" +#include "../src/adb.h" +#include "../src/sim65816.h" +#include "../src/video.h" +#include "../src/graphcounter.h" +#include "../src/driver.h" + +//extern int g_screen_mdepth; +//extern int g_screen_depth; + +// OG replaced g_quit_sim_now by quitEmulator +// extern int g_quit_sim_now; + + +int g_use_shmem = 1; +int g_has_focus = 0; +int g_auto_repeat_on = -1; + +//extern Kimage g_mainwin_kimage; + +//HDC g_main_dc; // OG dc cannot be a global +HDC g_main_cdc; +//int g_main_height = 0; + +int g_win_capslock_down = 0; + +extern void x_async_paint(); + +extern word32 g_palette_8to1624[256]; +extern word32 g_a2palette_8to1624[256]; + +extern word32 g_full_refresh_needed; + +extern int g_border_sides_refresh_needed; +extern int g_border_special_refresh_needed; +//extern int g_status_refresh_needed; + +extern int g_lores_colors[]; +extern int g_cur_a2_stat; + +extern int g_a2vid_palette; + +//extern int g_installed_full_superhires_colormap; + +extern int g_screen_redraw_skip_amt; + +extern word32 g_a2_screen_buffer_changed; + +HWND g_hwnd_main; +BITMAPINFO *g_bmapinfo_ptr = 0; +volatile BITMAPINFOHEADER *g_bmaphdr_ptr = 0; + +int g_num_a2_keycodes = 0; + + +int g_win_button_states = 0; + +// OG Added calc_ratio +int x_calc_ratio(float& ratiox,float& ratioy); + +/* +// FROM THE IPHONE VERSION + +struct kbdDefinition kbdDefinitions[]= +{ +{ KBDWIDTH,"esc",0x35,0,0 }, +{ KBDWIDTH,"1",0x12,"!",0 }, +{ KBDWIDTH,"2",0x13,"@",0 }, +{ KBDWIDTH,"3",0x14,"#",0 }, +{ KBDWIDTH,"4",0x15,"$",0 }, +{ KBDWIDTH,"5",0x17,"%",0 }, +{ KBDWIDTH,"6",0x16,"^",0 }, +{ KBDWIDTH,"7",0x1A,"&",0 }, +{ KBDWIDTH,"8",0x1C,"*",0 }, +{ KBDWIDTH,"9",0x19,"(",0 }, +{ KBDWIDTH,"0",0x1D,")",0 }, +{ KBDWIDTH,"-",0x1B,"_",0 }, +{ KBDWIDTH,"=",0x18,"+",0 }, +{ KBDWIDTHTAB,"delete",0x33,0,0 }, +{ -1,0,0,0,0 }, +{ KBDWIDTHTAB,"tab",0x30,0,0 }, +{ KBDWIDTH,"q",0x0C,"Q",0 }, +{ KBDWIDTH,"w",0x0D,"W",0 }, +{ KBDWIDTH,"e",0x0E,"E",0 }, +{ KBDWIDTH,"r",0x0F,"R",0 }, +{ KBDWIDTH,"t",0x11,"T",0 }, +{ KBDWIDTH,"y",0x10,"Y",0 }, +{ KBDWIDTH,"u",0x20,"U",0 }, +{ KBDWIDTH,"i",0x22,"I",0 }, +{ KBDWIDTH,"o",0x1F,"O",0 }, +{ KBDWIDTH,"p",0x23,"P",0 }, +{ KBDWIDTH,"[",0x21,"{",0 }, +{ KBDWIDTH,"]",0x1E,"}",0 }, + { KBDWIDTHTAB,"menu",-1,0,0 }, +{ -1,0,0,0,0 }, +{ KBDWIDTHCTRL,"control",0x36,0,0 }, +{ KBDWIDTH,"a",0x00,"A",0 }, +{ KBDWIDTH,"s",0x01,"S",0 }, +{ KBDWIDTH,"d",0x02,"D",0 }, +{ KBDWIDTH,"f",0x03,"F",0 }, +{ KBDWIDTH,"g",0x05,"G",0 }, +{ KBDWIDTH,"h",0x04,"H",0 }, +{ KBDWIDTH,"j",0x26,"J",0 }, +{ KBDWIDTH,"k",0x28,"K",0 }, +{ KBDWIDTH,"l",0x25,"L",0 }, +{ KBDWIDTH,";",0x29,":",0 }, +{ KBDWIDTH,"'",0x27,"\"",0 }, +{ KBDWIDTHRET,"return",0x24,0,0 }, +{ -1,0,0,0,0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { KBDWIDTH,"z",0x06,"Z",0 }, + { KBDWIDTH,"x",0x07,"X",0 }, + { KBDWIDTH,"c",0x08,"C",0 }, + { KBDWIDTH,"v",0x09,"V",0 }, + { KBDWIDTH,"b",0x0B,"B",0 }, + { KBDWIDTH,"n",0x2D,"N",0 }, + { KBDWIDTH,"m",0x2E,"M",0 }, + { KBDWIDTH,",",0x2B,"<",0 }, + { KBDWIDTH,".",0x2F,">",0 }, + { KBDWIDTH,"/",0x2C,"?",0 }, + { KBDWIDTHSHIFT,"shift",0x38,0,0 }, + { -1,0,0,0,0 }, + { KBDWIDTH,"caps",0x39,0,0 }, + { KBDWIDTH,"option",0x37,0,0 }, + { KBDWIDTHAPPLE,"",0x3A,0,0 }, + { KBDWIDTH,"`",0x12,0,0 }, + { KBDWIDTHSPACE," ",0x31,0,0 }, + { KBDWIDTH,"x",0x13,0,0 }, + { KBDWIDTH,"->",0x3C,0,0 }, + { KBDWIDTH,"<-",0x3B,0,0 }, + { KBDWIDTH,"^",0x5B,0,0 }, + { KBDWIDTH,"v",0x13,0,0 }, + + { 0,0,0,0,0 } + +}; +*/ + +/* this table is used to search for the Windows VK_* in col 1 or 2 */ +/* flags bit 8 is or'ed into the VK, so we can distinguish keypad keys */ +/* regardless of numlock */ +int g_a2_key_to_wsym[][3] = +{ + { 0x35, VK_ESCAPE, 0 }, + { 0x7a, VK_F1, 0 }, + { 0x78, VK_F2, 0 }, // OG Was 7B but F2 is defined has 0x78 in a2_key_to_ascii + { 0x63, VK_F3, 0 }, + { 0x76, VK_F4, 0 }, + { 0x60, VK_F5, 0 }, + { 0x61, VK_F6, 0 }, + { 0x62, VK_F7, 0 }, + { 0x64, VK_F8, 0 }, + { 0x65, VK_F9, 0 }, + { 0x6d, VK_F10, 0 }, + { 0x67, VK_F11, 0 }, + { 0x6f, VK_F12, 0 }, + { 0x69, VK_F13, 0 }, + { 0x6b, VK_F14, 0 }, + { 0x71, VK_F15, 0 }, + { 0x7f, VK_PAUSE, VK_CANCEL+0x100 }, + + { 0x32, 0xc0, 0 }, /* '`' */ + { 0x12, '1', 0 }, + { 0x13, '2', 0 }, + { 0x14, '3', 0 }, + { 0x15, '4', 0 }, + { 0x17, '5', 0 }, + { 0x16, '6', 0 }, + { 0x1a, '7', 0 }, + { 0x1c, '8', 0 }, + { 0x19, '9', 0 }, + { 0x1d, '0', 0 }, + { 0x1b, 0xbd, 0 }, /* '-' */ + { 0x18, 0xbb, 0 }, /* '=' */ + { 0x33, VK_BACK, 0 }, /* backspace */ + { 0x72, VK_INSERT+0x100, 0 }, /* Insert key */ + /* { 0x73, XK_Home, 0 }, alias VK_HOME to be KP_Equal! */ + { 0x74, VK_PRIOR+0x100, 0 }, /* pageup */ + { 0x47, VK_NUMLOCK, VK_NUMLOCK+0x100 }, /* clear */ + { 0x51, VK_HOME+0x100, 0 }, /* KP_equal is HOME key */ + { 0x4b, VK_DIVIDE, VK_DIVIDE+0x100 }, + { 0x43, VK_MULTIPLY, VK_MULTIPLY+0x100 }, + + { 0x30, VK_TAB, 0 }, + { 0x0c, 'Q', 0 }, + { 0x0d, 'W', 0 }, + { 0x0e, 'E', 0 }, + { 0x0f, 'R', 0 }, + { 0x11, 'T', 0 }, + { 0x10, 'Y', 0 }, + { 0x20, 'U', 0 }, + { 0x22, 'I', 0 }, + { 0x1f, 'O', 0 }, + { 0x23, 'P', 0 }, + { 0x21, 0xdb, 0 }, /* [ */ + { 0x1e, 0xdd, 0 }, /* ] */ + { 0x2a, 0xdc, 0 }, /* backslash, bar */ + { 0x75, VK_DELETE+0x100, 0 }, + { 0x77, VK_END+0x100, VK_END }, + { 0x79, VK_NEXT+0x100, 0 }, + { 0x59, VK_NUMPAD7, VK_HOME }, + { 0x5b, VK_NUMPAD8, VK_UP }, + { 0x5c, VK_NUMPAD9, VK_PRIOR }, + { 0x4e, VK_SUBTRACT, VK_SUBTRACT+0x100 }, + + // { 0x39, VK_CAPITAL, 0 }, // Handled specially! + { 0x00, 'A', 0 }, + { 0x01, 'S', 0 }, + { 0x02, 'D', 0 }, + { 0x03, 'F', 0 }, + { 0x05, 'G', 0 }, + { 0x04, 'H', 0 }, + { 0x26, 'J', 0 }, + { 0x28, 'K', 0 }, + { 0x25, 'L', 0 }, + { 0x29, 0xba, 0 }, /* ; */ + { 0x27, 0xde, 0 }, /* single quote */ + { 0x24, VK_RETURN, 0 }, + { 0x56, VK_NUMPAD4, VK_LEFT }, + { 0x57, VK_NUMPAD5, VK_CLEAR }, + { 0x58, VK_NUMPAD6, VK_RIGHT }, + { 0x45, VK_ADD, 0 }, + + { 0x38, VK_SHIFT, 0 }, + { 0x06, 'Z', 0 }, + { 0x07, 'X', 0 }, + { 0x08, 'C', 0 }, + { 0x09, 'V', 0 }, + { 0x0b, 'B', 0 }, + { 0x2d, 'N', 0 }, + { 0x2e, 'M', 0 }, + { 0x2b, 0xbc, 0 }, /* , */ + { 0x2f, 0xbe, 0 }, /* . */ + { 0x2c, 0xbf, 0 }, /* / */ + { 0x3e, VK_UP+0x100, 0 }, + { 0x53, VK_NUMPAD1, VK_END }, + { 0x54, VK_NUMPAD2, VK_DOWN }, + { 0x55, VK_NUMPAD3, VK_NEXT }, + + { 0x36, VK_CONTROL, VK_CONTROL+0x100 }, + { 0x3a, VK_SNAPSHOT+0x100, VK_MENU+0x100 },/* Opt=prntscrn or alt-r */ + +// OG ActiveGS map OA-CA to Win & AltKey +#ifndef ACTIVEGS + { 0x37, VK_SCROLL, VK_MENU }, /* Command=scr_lock or alt-l */ +#else + { 0x7f, VK_CANCEL, 0 }, + { 0x3A, VK_LWIN+0x100, VK_LWIN }, + { 0x37, VK_MENU, 0 }, /* Command=alt-l */ + { 0x37, VK_LMENU, 0 }, /* Command=alt-l */ + { 0x7F, VK_SCROLL,0 }, /* RESET */ + { 0x36, VK_LCONTROL, 0 }, // CTRL +#endif + + { 0x31, ' ', 0 }, + { 0x3b, VK_LEFT+0x100, 0 }, + { 0x3d, VK_DOWN+0x100, 0 }, + { 0x3c, VK_RIGHT+0x100, 0 }, + { 0x52, VK_NUMPAD0, VK_INSERT }, + { 0x41, VK_DECIMAL, VK_DECIMAL }, + { 0x4c, VK_RETURN+0x100, 0 }, + { -1, -1, -1 } +}; + +extern int g_config_control_panel; +extern int g_config_control_panel; // OG Expose g_config_control_panel + +void x_update_modifiers(word32) +{ +} + + +extern void add_event_mouse(int,int,int,int); +extern void add_event_key(int,int); + +extern void simulate_space_event(); + +void x_recenter_hw_mouse() +{ + /* move mouse to center of screen */ + POINT pt; + pt.x = X_A2_WINDOW_WIDTH/2; + pt.y = X_A2_WINDOW_HEIGHT/2; + ClientToScreen(g_hwnd_main, &pt); + SetCursorPos(pt.x, pt.y); +} + +void win_event_mouse_async(int umsg,WPARAM wParam, LPARAM lParam) +{ + + word32 flags; + int buttons; + int x, y; + + x = LOWORD(lParam); + y = HIWORD(lParam); + + flags = wParam; + buttons = (flags & 1); // + (((flags >> 1) & 1) << 2) + (((flags >> 4) & 1) << 1); + + if (umsg == WM_LBUTTONDBLCLK) + simulate_space_event(); + + + if(g_adb.g_warp_pointer==WARP_POINTER) + { + + int buttons_changed = (g_win_button_states != buttons); + g_win_button_states = buttons; //(g_win_button_states & ~buttons_valid) | (button_states & buttons_valid); + if ( (x == X_A2_WINDOW_WIDTH/2) && (y == X_A2_WINDOW_HEIGHT/2) && (!buttons_changed) ) + { + // tell adb routs to recenter but ignore this motion + add_event_mouse(x, y, 0, -1); + // win_recenter_hw_mouse(); + return ; + } + + } + else + { + // OG Reformat the mouse coordinates + float ratiox,ratioy; + if (x_calc_ratio(ratiox,ratioy)) + { + x = (int)((float)(x)/ratiox); + y = (int)((float)(y)/ratioy); + } + x -= BASE_MARGIN_LEFT; + y -= BASE_MARGIN_TOP; + } + + +#if 0 + if (umsg!=WM_MOUSEMOVE) + printf("Mouse at %d, %d fl: %08x, but: %d\n", x, y, flags, buttons); +#endif + + // ajoute l'event +#ifdef ACTIVEGSKARATEKA +// extern void jniTouch(int mode,float x, float y, int nbtap); + if (umsg==WM_LBUTTONDOWN) + jniTouch(0,EVT_TOUCHBEGAN,(float)x,(float)y,1); + else + if (umsg==WM_LBUTTONUP) + jniTouch(0,EVT_TOUCHENDED,(float)x,(float)y,1); +#else + add_event_mouse(x, y, buttons, 7); +#endif + + if(g_adb.g_warp_pointer == WARP_POINTER) + x_recenter_hw_mouse(); + +} + +void win_event_key_async(HWND hwnd, UINT raw_vk, BOOL down, int repeat, UINT flags) +{ + word32 vk; + int a2code; + int is_up; + int capslock_down; + int i; + if((flags & 0x4000) && down) + { + /* auto-repeating, just ignore it */ + return; + } + vk = raw_vk + (flags & 0x100); +#if 0 + printf("Key event, vk=%04x, down:%d, repeat: %d, flags: %08x\n", + vk, down, repeat, flags); +#endif + /* remap a few keys here.. sigh */ + if((vk & 0xff) == VK_APPS) + { + /* remap to command */ + vk = VK_MENU; + } + if((vk & 0xff) == VK_CAPITAL) + { + // Windows gives us up-and-down events of the actual key + // Use GetKeyState to get the true toggle state, and pass + // that on to the adb interface + capslock_down = GetKeyState(VK_CAPITAL) & 0x01; + if(capslock_down != g_win_capslock_down) + { + g_win_capslock_down = capslock_down; + //adb_physical_key_update(0x39, !capslock_down); + add_event_key(0x39, !capslock_down); + } + return; // Do no more processing! + } + // cherche déjà en ascii + a2code = -1; + int a2shift = -1; + is_up = !down; + /* + extern const int a2_key_to_ascii[][4]; + + int nbascii =128; + for(int i=0;i= 0; i--) + { + a2code = g_a2_key_to_wsym[i][0]; + if((vk == g_a2_key_to_wsym[i][1]) || + (vk == g_a2_key_to_wsym[i][2])) + { + vid_printf("Found vk:%04x = %02x\n", vk, a2code); + // adb_physical_key_update(a2code, is_up); + add_event_key(a2code,is_up); + return; + } + } + printf("VK: %04x unknown\n", vk); +} + +void +win_event_quit(HWND hwnd) +{ + r_sim65816.quit_emulator(); +} + +//extern int g_needfullrefreshfornextframe ; + +extern void ui_process_message( WPARAM wParam, LPARAM lParam); + +void window_needs_full_refresh() +{ + // Nothing to do : the whole offscreen is always refreshed +} + +LRESULT CALLBACK +win_event_handler(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) +{ +#if 0 + extern word32 g_vbl_count; + if (umsg==WM_LBUTTONDOWN) + outputInfo("WM_LBUTTONDOWN (%d)\n",g_vbl_count); + if (umsg==WM_LBUTTONUP) + outputInfo("WM_LBUTTONUP (%d)\n",g_vbl_count); + if (umsg==WM_LBUTTONDBLCLK) + outputInfo("WM_LBUTTONDBLCLK (%d)\n",g_vbl_count); +#endif + switch(umsg) + { + case WM_USER: + ui_process_message(wParam,lParam); + return 0; + case WM_MOUSEMOVE: + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_MBUTTONDOWN: + case WM_MBUTTONUP: + case WM_RBUTTONDOWN: + case WM_RBUTTONUP: + case WM_LBUTTONDBLCLK: // OG Added dblclk as WM_LBUTTONDOWN + win_event_mouse_async(umsg,wParam, lParam); + return 0; + case WM_ERASEBKGND: + window_needs_full_refresh(); + return 1; + break; + case WM_PAINT: + x_async_paint(); + break; + HANDLE_MSG(hwnd, WM_KEYUP, win_event_key_async); + HANDLE_MSG(hwnd, WM_KEYDOWN, win_event_key_async); + HANDLE_MSG(hwnd, WM_SYSKEYUP, win_event_key_async); + HANDLE_MSG(hwnd, WM_SYSKEYDOWN, win_event_key_async); + HANDLE_MSG(hwnd, WM_DESTROY, win_event_quit); + } +#if 0 + switch(umsg) + { + case WM_NCACTIVATE: + case WM_NCHITTEST: + case WM_NCMOUSEMOVE: + case WM_SETCURSOR: + case WM_LBUTTONDOWN: + case WM_LBUTTONUP: + case WM_RBUTTONDOWN: + case WM_CONTEXTMENU: + case WM_RBUTTONUP: + case WM_MBUTTONDOWN: + case WM_MBUTTONUP: + case WM_PAINT: + break; + default: + printf("Got umsg2: %d\n", umsg); + } +#endif + return DefWindowProc(hwnd, umsg, wParam, lParam); +} + +// OG Added Generic kegsinit/kegsshut functions + +void kegsinit(HWND _hwnd) +{ + g_hwnd_main = _hwnd; + HDC localdc = GetDC(g_hwnd_main); + SetTextColor(localdc, 0); + SetBkColor(localdc, 0xFFFFFF); + g_main_cdc = CreateCompatibleDC(localdc); + ReleaseDC(g_hwnd_main,localdc); +} +void kegsshut() +{ + if (g_main_cdc) + { + DeleteDC(g_main_cdc); + g_main_cdc = NULL; + } + g_hwnd_main = NULL; +} + + +void +x_update_color(int col_num, int red, int green, int blue, word32 rgb) +{ +} + +void +x_update_physical_colormap() +{ +} + +void +x_show_color_array() +{ + int i; + for(i = 0; i < 256; i++) + { + printf("%02x: %08x\n", i, g_palette_8to1624[i]); + } +} + + +// OG Add function to clear all get_images loaded (dev dependent) +void x_release_kimage(Kimage *kimage_ptr) +{ + if ((int)kimage_ptr->dev_handle != -1) + { + DeleteObject(kimage_ptr->dev_handle); + kimage_ptr->dev_handle = (void*)-1; + } + else if (kimage_ptr->data_ptr) + { + free(kimage_ptr->data_ptr); + kimage_ptr->data_ptr = NULL; + } +} + + +void x_video_shut() // Should be renamed to dev_video_shut() ??? +{ +//#ifdef ACTIVEGS + x_release_kimage(&g_kimage_offscreen); +//#endif + x_release_kimage(&s_video.g_mainwin_kimage); + GlobalFree(g_bmapinfo_ptr); // allocated in x_dev_video_init + g_bmapinfo_ptr = 0; + printf("win32 video driver end\n"); +} + + +void x_get_kimage(Kimage *kimage_ptr) +{ + + int width; + int height; + int depth, mdepth; + int size; + width = kimage_ptr->width_req; + height = kimage_ptr->height; + depth = kimage_ptr->depth; + mdepth = kimage_ptr->mdepth; + size = 0; + + /* Use g_bmapinfo_ptr, adjusting width, height */ +#ifdef USE_GDIPLUS + Bitmap* bmp = new Bitmap(width,height,PixelFormat32bppARGB); + kimage_ptr->dev_handle = bmp; + + BitmapData* bdata = new BitmapData; + bdata->Width = width, + bdata->Height = height; + bdata->Stride = 4*width; + bdata->PixelFormat = PixelFormat32bppRGB; + bdata->Scan0 = (VOID*)malloc(height*width*4); + bdata->Reserved = NULL; + kimage_ptr->dev_handle2 = bdata; + + kimage_ptr->data_ptr = (byte*)bdata->Scan0; + +#else + g_bmaphdr_ptr->biWidth = width; + g_bmaphdr_ptr->biHeight = -height; + HDC localdc = GetDC(g_hwnd_main); // OG Use on the fly DC + kimage_ptr->dev_handle = CreateDIBSection(localdc, + g_bmapinfo_ptr, DIB_RGB_COLORS, + (VOID **)&(kimage_ptr->data_ptr), NULL, 0); + ReleaseDC(g_hwnd_main,localdc); +#endif + printf("kim: %p, dev:%p data: %p, size: %08x\n", kimage_ptr, + kimage_ptr->dev_handle, kimage_ptr->data_ptr, size); + return; +} + + +void x_video_init() +{ + int extra_size; + + printf("Preparing graphics system\n"); + + +#ifdef USE_GDIPLUS + GdiplusStartupInput gdiplusStartupInput; + ULONG_PTR gdiplusToken; + + // Initialize GDI+. + GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); +#endif + + // OG fix g_num_a2_keycodes identification + g_num_a2_keycodes = sizeof(g_a2_key_to_wsym)/3/sizeof(int); + g_num_a2_keycodes--; // last entry=-1 + + +#ifndef UNDER_CE + s_video.g_screen_depth = 24; + s_video.g_screen_mdepth = 32; +#else + // OG Forcing 16bits depth for WiNCE + s_video.g_screen_depth = 16; + s_video.g_screen_mdepth = 16; + s_video.g_red_mask = 0xff; + s_video.g_green_mask = 0xff; + s_video.g_blue_mask = 0xff; + s_video.g_red_left_shift = 10; + s_video.g_green_left_shift = 5; + s_video.g_blue_left_shift = 0; + s_video.g_red_right_shift = 3; + s_video.g_green_right_shift = 3; + s_video.g_blue_right_shift = 3; +#endif + extra_size = sizeof(RGBQUAD); + if(s_video.g_screen_depth == 8) + { + extra_size = 256 * sizeof(RGBQUAD); + } + g_bmapinfo_ptr = (BITMAPINFO *)GlobalAlloc(GPTR, + sizeof(BITMAPINFOHEADER) + extra_size); + g_bmaphdr_ptr = (BITMAPINFOHEADER *)g_bmapinfo_ptr; + g_bmaphdr_ptr->biSize = sizeof(BITMAPINFOHEADER); + g_bmaphdr_ptr->biWidth = A2_WINDOW_WIDTH; + g_bmaphdr_ptr->biHeight = -A2_WINDOW_HEIGHT; + g_bmaphdr_ptr->biPlanes = 1; + g_bmaphdr_ptr->biBitCount = s_video.g_screen_mdepth; + g_bmaphdr_ptr->biCompression = BI_RGB; + g_bmaphdr_ptr->biClrUsed = 0; + video_get_kimages(); + if(s_video.g_screen_depth != 8) + { + // Allocate g_mainwin_kimage + video_get_kimage(&s_video.g_mainwin_kimage, 0, s_video.g_screen_depth,s_video.g_screen_mdepth); + } + s_video.g_installed_full_superhires_colormap = 1; + + init_kimage(&g_kimage_offscreen,0,s_video.g_screen_depth, s_video.g_screen_mdepth); + g_kimage_offscreen.width_req = X_A2_WINDOW_WIDTH; + g_kimage_offscreen.width_act = X_A2_WINDOW_WIDTH; + g_kimage_offscreen.height = X_A2_WINDOW_HEIGHT; + x_get_kimage(&g_kimage_offscreen); + +#ifndef UNDER_CE + ShowWindow(g_hwnd_main, SW_SHOWDEFAULT); +#else + ShowWindow(g_hwnd_main, SW_SHOW); +#endif + UpdateWindow(g_hwnd_main); + +#ifdef USE_RASTER + x_init_raster((void*)g_hwnd_main); +#endif + + printf("Done with dev_video_init\n"); + fflush(stdout); +} + + + +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, + int width, int height) +{ + + int pixsize = kimage_ptr->mdepth>>3 ; + int srcrow = kimage_ptr->width_act * pixsize; + int dstrow = g_kimage_offscreen.width_act * pixsize; + int byte2copy = width * pixsize ; + char* ptrdest = (char*)g_kimage_offscreen.data_ptr +dstrow*desty + destx*pixsize; + char* srcdest = (char*)kimage_ptr->data_ptr + srcrow*srcy + srcx*pixsize; + int dbl = 1; +#if !defined(VIDEO_SINGLEVLINE) + int crt = (r_sim65816.get_video_fx()==VIDEOFX_CRT); +#else + int crt = 0; +#endif + for(int i=0; i>=1; + pixel &=0x7F7F7F7F, + ((word32*)ptrdest)[j]=pixel; + } + // memset(ptrdest,0,byte2copy); + } + else + memcpy(ptrdest,srcdest,byte2copy); + ptrdest += dstrow; + srcdest += srcrow; + } + g_video_offscreen_has_been_modified = 1; +} + + +void +x_push_done() +{ +} + +void +x_auto_repeat_on(int must) +{ +} + +void +x_auto_repeat_off(int must) +{ +} + + +void +x_hide_pointer(int do_hide) +{ + static int previous_hide = 0; // visible by default + if (previous_hide == do_hide) + return ; + if (do_hide==1 && g_adb.g_warp_pointer != WARP_POINTER) + return ; + + previous_hide = do_hide; + ::PostMessage(g_hwnd_main,WM_USER,SHOW_CURSOR,do_hide); +} + + + +void ui_hide_pointer(LONG do_hide) +{ + int count; + if(do_hide) + { + count= ShowCursor(0); + } + else + { + count = ShowCursor(1); + } +// printf("hide pointer %d (count:%d)\n",do_hide,count); +} + +void ui_process_message(WPARAM wParam, LPARAM lParam) +{ + if (wParam==SHOW_CURSOR) + return ui_hide_pointer(lParam); +} + +void +x_full_screen(int do_full) +{ + return; +} + +//int x_screen_dirty = 0; + +void x_refresh_video() +{ +#ifdef USE_RASTER + extern void x_async_paint(); + x_async_paint(); +#else + InvalidateRect(g_hwnd_main,NULL,0); + UpdateWindow(g_hwnd_main); +#endif + +} + +extern BOOL StretchBltPlus( + HDC hdcDest, + int nXOriginDest, + int nYOriginDest, + int nWidthDest, + int nHeightDest, + HDC hdcSrc, + int nXOriginSrc, + int nYOriginSrc, + int nWidthSrc, + int nHeightSrc, + DWORD dwRop +) ; + +void x_async_paint() +{ + + + extern void addConsoleWindow(Kimage*); +#ifndef USE_RASTER + RECT r; + BOOL b = GetUpdateRect( g_hwnd_main,&r,FALSE); + if (!b) + { + // System Paint : ignore + return ; + } +#endif + if (!r_sim65816.is_emulator_offscreen_available()) + { + printf("skip frame\n"); + PAINTSTRUCT ps; + RECT r; + GetClientRect(g_hwnd_main,&r); + HDC hdc = BeginPaint(g_hwnd_main,&ps); + HBRUSH brush = CreateSolidBrush(RGB(36,34,244)); + FillRect(hdc, &r, brush); + DeleteObject(brush); + + EndPaint(g_hwnd_main,&ps); + + return ; + } + +// DRAW_BORDER(); + + CHANGE_BORDER(1,0xFF); + CHANGE_BORDER(2,0xFF); + + addFrameRate(0); + +#if defined(ACTIVEGS) + addConsoleWindow(&g_kimage_offscreen); +#ifdef ENABLE_GRAPH + + static double lastframe = 0; + double curframe = get_dtime(); + double delay = curframe - lastframe; + double frame = 1/delay; + g_graph.add_graph(1,(float)frame,g_sim65816.g_vbl_count); + lastframe = curframe; + g_graph.draw_graph(&g_kimage_offscreen,g_sim65816.g_vbl_count); +#endif +#endif + +#ifdef USE_GDIPLUS + PAINTSTRUCT ps; + HDC localdc = BeginPaint(g_hwnd_main,&ps); // Faster than GetDC in WM_PAINT response + Graphics dest(localdc); + + int srcx =0; + int srcy =0; + int destx = 0; + + int desty = 0; + int width = g_kimage_offscreen.width_act; + int height = g_kimage_offscreen.height; + + Bitmap* bmp = (Bitmap*)g_kimage_offscreen.dev_handle; + Graphics src(bmp); + + BitmapData* data = (BitmapData*)g_kimage_offscreen.dev_handle2; + Rect rdata(0,0,width,height); + Status s= bmp->LockBits( + &rdata, + ImageLockModeWrite|ImageLockModeUserInputBuf, + PixelFormat32bppRGB, + data); + + // Commit the changes and unlock the 50x30 portion of the bitmap. + s = bmp->UnlockBits(data); + + float ratiox,ratioy; + int isStretched = x_calc_ratio(ratiox,ratioy); + float xdest = (destx)*ratiox; + float ydest = (desty)*ratioy; + float wdest = (width)*ratiox; + float hdest = (height)*ratioy; + + RectF rdest(xdest,ydest,wdest,hdest); + /* + SolidBrush br(Color::AliceBlue); + dest.FillRectangle(&br,rdest); +*/ + //dest.SetInterpolationMode(InterpolationModeHighQuality); + dest.SetInterpolationMode(InterpolationModeDefault); + s = dest.DrawImage(bmp, rdest, 0, 0, width, height, UnitPixel); + + EndPaint(g_hwnd_main,&ps); + + +#else + void *bitm_old; + POINT point; + point.x = 0; + point.y = 0; + ClientToScreen(g_hwnd_main, &point); + +// PAINTSTRUCT ps; +// HDC localdc = BeginPaint(g_hwnd_main,&ps); // Faster than GetDC in WM_PAINT response + HDC localdc = GetDC(g_hwnd_main); // Faster than GetDC in WM_PAINT response + + HDC localcdc = g_main_cdc; + bitm_old = SelectObject(localcdc, g_kimage_offscreen.dev_handle); + HRGN hrgn=NULL; + + int srcx =0; + + int srcy =0; + int destx = 0; + int desty = 0; + int width = g_kimage_offscreen.width_act; + int height = g_kimage_offscreen.height; + float ratiox,ratioy; + int isStretched = x_calc_ratio(ratiox,ratioy); + if (!isStretched) + BitBlt(localdc, destx, desty, width, height, localcdc, srcx, srcy, SRCCOPY); + else + { + float xdest = (destx)*ratiox; + float ydest = (desty)*ratioy; + float wdest = (width)*ratiox; + float hdest = (height)*ratioy; + BOOL err= StretchBlt(localdc,(int)xdest,(int)ydest,(int)wdest,(int)hdest, localcdc, srcx, srcy,width,height, SRCCOPY); + } + SelectObject(localcdc, bitm_old); + ReleaseDC(g_hwnd_main,localdc); +// EndPaint(g_hwnd_main,&ps); +#endif + CHANGE_BORDER(1,0); + CHANGE_BORDER(2,0); + + if (g_driver.x_handle_state_on_paint!=NULL) + g_driver.x_handle_state_on_paint((float)g_kimage_offscreen.width_act,(float)g_kimage_offscreen.height); +} diff --git a/kegs/Win/win_raster.cpp b/kegs/Win/win_raster.cpp new file mode 100644 index 0000000..d138e54 --- /dev/null +++ b/kegs/Win/win_raster.cpp @@ -0,0 +1,157 @@ +// TestRaster.cpp : Defines the entry point for the console application. +// + + +#include "../../common.win32/stdafx.h" +#include "../../Common/CemulatorCtrl.h" +#include "../src/raster.h" +#include "../src/graphcounter.h" + +#ifdef USE_RASTER +#include +#pragma comment(lib,"d3d9.lib") + +LPDIRECT3DDEVICE9 p_dx_Device = NULL; +LPDIRECT3D9 p_dx_Object = NULL; +int screenHeight; + +int x_init_raster(void* _data) +{ + HWND hwnd = (HWND)_data; + + p_dx_Object = Direct3DCreate9(D3D_SDK_VERSION); + if (p_dx_Object == NULL) + { + printf("DirectX Runtime library not installed!\n"); +return 0; + } + +// IDirect3DDevice9 * device; + +D3DPRESENT_PARAMETERS dx_PresParams; + + ZeroMemory( &dx_PresParams, sizeof(dx_PresParams) ); + dx_PresParams.Windowed = TRUE; + dx_PresParams.SwapEffect = D3DSWAPEFFECT_DISCARD; + dx_PresParams.BackBufferFormat = D3DFMT_UNKNOWN; + + +// HWND hWND=NULL; + + HRESULT err =p_dx_Object->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dx_PresParams, &p_dx_Device); +//HRESULT err = IDirect3D9::CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,NULL,0,NULL,&device); + +if (err!=D3D_OK) +{ + printf("failed device"); + return 0; +} + + D3DRASTER_STATUS status; + err = p_dx_Device->GetRasterStatus(0,&status); +if (err!=D3D_OK) +{ + printf("failed getraster"); + return 0; +} + + screenHeight = GetSystemMetrics(SM_CYSCREEN) ; + + printf("screenHeight:%d\n",screenHeight); + + + return 1; +} + +int getScanLine() +{ + if (!p_dx_Device) return -1; + + D3DRASTER_STATUS status; + HRESULT err = p_dx_Device->GetRasterStatus(0,&status); + if (err!=D3D_OK) + { + printf("failed getraster"); + return 0; + } + + static int mins = 100000; + static int maxs = 0; + + if (mins>status.ScanLine) mins=status.ScanLine; + if (maxsGetRasterStatus(0,&status); + if (err!=D3D_OK) + { + printf("failed getraster"); + return 0; + } + return status.InVBlank; + +} + +int x_wait_for_last_refresh(double _w) +{ +#ifndef WIN32 + +#ifdef ENABLE_GRAPH + double s = get_dtime(); +#endif +CHANGE_BORDER(0,0xFFFFFF); +CHANGE_BORDER(2,0xFFFFFF); + // attends la prochaine vbl + //... x_wait_for_vbl(); +CHANGE_BORDER(0,0x000000); +CHANGE_BORDER(2,0); +#ifdef ENABLE_GRAPH + double d = get_dtime() - s; + g_graph.add_graph(2,(float)d,g_sim65816.g_vbl_count); +#endif + +#else + while(1) + { + int l =getScanLine(); + if (lscreenHeight-20) + break; + } +CHANGE_BORDER(0,0x000000); +CHANGE_BORDER(2,0); +#ifdef ENABLE_GRAPH + double d = get_dtime() - s; + g_graph.add_graph(2,(float)d,g_sim65816.g_vbl_count); +#endif // graph + + return 1; +} + +#endif diff --git a/kegs/Win/winresource.h b/kegs/Win/winresource.h new file mode 100644 index 0000000..27ef394 --- /dev/null +++ b/kegs/Win/winresource.h @@ -0,0 +1,42 @@ +//{{NO_DEPENDENCIES}} +// $Id: $ +// Microsoft Developer Studio generated include file. +// Used by win32.rc +// +#define IDD_ABOUT_DIALOG 101 +#define IDC_KEGS32 102 +#define IDR_TOOLBAR 103 +#define IDD_DLG_DISKCONF 104 +#define IDR_ACCEL 105 +#define ID_TOOLBAR 5000 +#define ID_STATUSBAR 5001 +#define IDC_EDIT_S5D1 10051 +#define IDC_EDIT_S5D2 10052 +#define IDC_EDIT_S6D1 10061 +#define IDC_EDIT_S6D2 10062 +#define IDC_EDIT_S7D1 10071 +#define IDC_EDIT_S7D2 10072 +#define IDC_BTN_S5D1 11051 +#define IDC_BTN_S5D2 11052 +#define IDC_BTN_S6D1 11061 +#define IDC_BTN_S6D2 11062 +#define IDC_BTN_S7D1 11071 +#define IDC_BTN_S7D2 11072 +#define ID_HELP_ABOUT 40001 +#define ID_FILE_EXIT 40002 +#define ID_FILE_DISK 40003 +#define ID_FILE_SENDRESET 40004 +#define ID_FILE_JOYSTICK 40005 +#define ID_FILE_DEBUGSTAT 40006 +#define ID_FILE_FULLSCREEN 40012 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 111 +#define _APS_NEXT_COMMAND_VALUE 40013 +#define _APS_NEXT_CONTROL_VALUE 1003 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif

`(e#$R4G@nYB7jN_B}o#jtMjuk!?O=%{A1<(i3-e0eP>8O}7&->;mgPbyMc) zKUnTXtI^^$dxmW20myDGMOCob;EV4|>l1U=-jxsfo)gED$GJ?*-i3-(Co-x_vNH4nz`w_AJySDCXsDG)KQKV%Vy3DkMdOTv~vo`K~u}_G|fz0>QsJutmm#W(;5a$&+?M}{#OmoA_}H1$gCgZAaoP;HrVTc+6ihdg zJWf_8rXH<)Mw!MwpEntK#8ue*ku<>WF6kA-wh=_f>2xLeZARIbWP{YCSWDSPo$>^p zb+9_5i|8t5vNxlRw7K1?u7rB(`U#bqL_E_@4fCG#F1F=iTDKMxi0#fq@^z>~)>d!v zuUCA_R5%!(sjRg3Ji#Zg*Ug=C5@>$fYW6JAPA{^v!RYQe(tQR`8oS4P%Ui;?!p+u1aYli&oA=HPx5d7v^h;Px4cZ;os(D zs9%Uv?^7SY0TWv)LMPz(w|KuIRK9}sW=}ECaHj;-h>LLfDQe%;or$8_o0{yPxk}~y z19|!zSgrt-x_Q(~sU8#CD(5pSQi@vcLF%sU$bKJ66)B~rkx5>HBNKxdpBYDfm4^83 zB{q4B*y|E203&Q^byprb=RE~ImGo7WoBH7oUsf|pjn<#^MyfKysaZ5YpX1@o#@O-$ z_})+buto6$^Q5WM(z6yFryvVt7n$8}X4p%_%gb3Ex?!(V2bxE9dWp{9^l(-YD-MIJ z6HuZ5ZU+!AHxl9yXRn@26=E3m?A&U%9Mj{~G!q@J9d5Hz8~d%cQHM_}BXkR=o0Crk z{Y~xtZaT9D=C9uB%h7iDeIhgXgWt+&`grI0663j6q4oGwkG>PB7bX@;Om1J?zBQ-q zGO9z~wT)=z7j;kDsn&%MuG!WNw=Aev@P{Pcc?Xi>Q~rVt-ru`ce-|Nd^9r z^!5~XDw4T&lCf-Rt8{m z?~!{}{N!P^hIs#^%B=S|MVtw&EPcYaYa8mTKs9ESQ_a~7lLxaR|H>rwweuZYT}wqHVd+;W-Ch@=L^|>7j>ElCXPC7HrfMJ><-Bj>fr-zBQ%|d^{A5Y z`UZJNo;{rvj|8kj43{T(k}i^x%0>ZJPllt>(y-zY8_j+<6YOiOxTN&ft+47r@Y?{} zi*>&cYA?^JGwr5oKh)WzZ{ZKqU|(g(wc=odO{k)LVqGB-`JTcy;;4OQ4<4zxjw{!_ z9^V2fCZ$;ettBb^TKF|4<6c88W}jK+ede1%q!p94J2~N66E94)cT7M0Vi)R{G365L zsDrQ_H?l6Ir#f@=Ng}Ht+luwDqBewBwGOqbwQ|j@pn`tIx07|R3u=aDm!;XSmQw#c zL4LQ>JR~BhCFBouZWA|P&<7f2a!=h>IOT>%Ln>edT03N+Vt$>`y`KbFHeMXg?hzi z?69?|>U%?O_mq{0Uew|Lakl9AtP$LxhLfBKGKPL5jqn@;7{e`l$b2=GS-0KdRPgKI zS)-GK=o7xfCWUQgW7z|?fQ*v3R9Q<>$2vmXQkAuYzF?sR^|!xrikfbiT?yxUiH#rI zFKVj3PUY-8=(|JpG!>cjB3S5y8pqCyao{2*JW!C?1R=|N_PlvdCi}!pA>Y2N_YsjK z!PYAguRNzV>9r$RHR-0uv1ely`v-!|0-nBYcH8JwcN37Uwbo6fBGsTq5-dOQzcnSU z^Gm<7{d^PcY1TJ$Qb8Xo9mv);+Gr*z{{Esb()ZkUWZytR)-Z!LdzQ^BU#KZeWV~8( z=n#G1Ip^8$oF?;0j`UknmCYy(i5zdhsxQfg9$~Y6oC|uA`s6F;o6Ri0_=a0Ym-ck> ztOVbV{G`b%6vU632>JaKCeW=Y&X8os!$!A{K@A8Wt>aoI`k&4A-GHv2c8KP_Ii8@pd zbEfGv>M>FO2bet{`;-1qw~nM{I|~;4OSHGvRIv+@XGg5N9vYpC=dKNV9R@KuS&Jzq z4J9A>=RDTA40+sttOohp^yaIt5WJO@c_b#fzOGNQ##EO~{xJ2!J0`k0Y__V>`m|oC zR}vW()@7vuJo?fmvmTp`Sm-8maig>O)Z}K_L`0(@c&VSZ9C6`3;)PCl@mFB0Emj?y zb+Sx&rM5)5gQ*vkAlK-t%W0H>Cfe8y)Np!G151l#UDh*nHfaJ1+OPwr9;jI$*;#-6 z1hWn$GwNka5yM`zdqBKHo|K*Sg&R@(uCk#mqbAE|BF+1Fm)S&EcgP^N5T*Vm-u_0- zrk71i4lskPusYE*JFumyGnKgMl~VdB40Oo00dx0MQhQP@(wEr9vD7!;{E<9Z(iXFe z+RaKS$2wnaTMTda(d@J}i2G9#KUGrIh;-A!kDFCaJ<{>&P)1L!Ma8hoeI-<+v(ay@ zC!UVSDtC6%$UO2rXE(_`8Ky_*Cgg1E)Ejf(_seK1x&c^MPGbDcT`Il!vwVBIw0S9`S`b{C)BtcSlniRs`R( zntct)PE@6c915}KcY+#0LCH(Kb&RcK=TS{ch)u_nQsRU0^TGJ5)dX1Tf*DRtuO69Q zajK3Xv=yD&<4m%@bFfH|n}@PmxP|O`ju}kcSel$JDfoFr&Ah%^!P|_AhYYi~8 zi`sA(?BWS|*;%6A_Uv0JF0)wONXB|=LrZo{W|WfH(MJuw5VP>7ZjhB-YX1?#JM6Kk zMYL6!3giykiYospvWDdP3^Cw0yNNZ78SK(n!3z9mm6>*TQN#HNV@`sV&Vtu4+foJb zZEZ=yD)TOoSDkf%9mLN+$gP%8gPDL`ykJ~G*uV_6k&HGbe7TzSoiq5nj4@dW2ZBQRn&NP78z)yw~J}Wy7_J0+gU+Pbe~S^ zJd^1*HJmlY<}sIjfi}6$;tZt=t}dG;+#VSjHB1qa0?X?=tJ> z=g7R@P(l0aJLxOIE`!rp?PPL=mbxX?hsTvl%Zf`ycgYvK=otnw7!jWN|}>8|R-I>&K%eF<2bL*?NTd(g&_B`*YN>xlGv;JpgK zg!jl~8c|11r6X9qbC5(&zAp>{BV-E9b4`DvqErRBCkMm5kZTX{+5o0nNUXPzHJDmN zb3Rp#J(q2$6&<8T(V1u{E4vC)Nn`wOE)bMNN0PNqA)5FDFI-|pDjbiPh>F5LtWGXr z1?N4?lz~0}KB@+x?40RuTiW%kV{HNlUsWny#5wNFb{4^UXH{Q2#Dw{Jnk{xZJw+&Y zJ*f>|cotDyZ!C5lRk4qFv*FYqR;uyfryTiwR(5^0p(@vsYGzI<6VZP~@O*_)4wU{>fZ|d6_L;QQ{%T5f z?CLI+(=hgXPDJ8e$T2&~URZMnUcE7Or(Q5>J2e4m?3ba`7TU8<=C_;Av6_~R3RoO! zRxPO3{c$Uutf9RHS#7Y(1XR=N{!?_vieI)sQK zi~fp-Ya-c*RaU~>wOMOfM^t9B#7R3lfwX5C<*OhoJ*SzWexFfTZM zFPCVwDmtwN=QU$bLw>yJQg(5dMq>x?KBtwU!r7g-55uyRiH~~|@vfyRbRFF0AcL9> z`rTauM_~hheBuw{kEisM5#D$TTf4jK{lIHWNyCiWvlF9~JRxuEgUu$OiufI@gfOdi z)RKzPVsrBJvhdz8P_&*Z^d*qg3xC!RX^sXPf2dM<&|yMklv_^0nWvat0T?&~?=K@) zxWmrsm*Auh^~LJ!^YO6imy$K3?r8KNyxfrd=Y~3t)N84+Dx5mRIuO;L{?;+yH^|4I z`eG)ss9vl;Z>6eu68;u^K{g`eW>ozfg2T4FGa4K0gxsr=^IlS#O8P?VbQ}9}4-qN2 zXT|Q}wOTRv;%K!vJ1J6-F^ABXyRXaLcf3KJW2_Dge1|M_Jfq$~lrfbUD~yqZU@Kpd z&sx@0&d}x*zT3{f#$i$6>_Zwz+cD(?^Pj+MPB7AWjClzNd_fkUL(0Gk+nGlRc8+I4 zS96HmH=qsoRKRCiAIV7E^E}mImT^dYB){)gSsCSRuo^&=v6erV7(-!JlnPNPdq(b- zf*j#7BWQ>O{zY4Ruop|uEjhQ~o=VAy{M-{O0nG9Wkxz2!Ts5&(%?kBu-WkR-D_FT{ zMqTnV^Qp^xgV4twaJLYIH{prB;C;4iMq7AuKL1I5Fc8!~Mk9NWsSiDm0bfs<^Foj~ z3*6^d|6x6onBRT+jR%YPVOzVTPOTXP8+JS`0$B{lM%oR=)33jfp`-5{vymUeI_PYe~i& z#-RHX>=Q}A9>oVRO(G)I;Yef`ImRg@^+4r7cl)q1FA{%>6l%gWr}4uh$bt*WU;ed? z(LP}gC6M+X#?li6L=p-A#6C{))J>!?7Ho!qk=cB=o!{K^iY35Wdf4kcw$mP)fF;40 zi_dLTy|1FHAm%oY9%jSs)zP}F!qk%zBb%6 z1P@=32sMTz181j^|8YjNk5QZeA8}+Ldt{1I)k{yVmyK*YoVd9zoIeVSNl&fkI*56U zY?7j_!*Ivu2+e5V2pV2;4jj0G7rzIE7<%mg#AkQ9H zLO#%W9;vKmUi-l0Huho7VBXUpr9fQLTGZt67+gS_w3_ksN;v^{h3sPr*+-dlP z3p`T?ZXC@B@1XUANLjFem*6pi=ic)~TJ}e!1xXg1o#ba1$k_?B{QA? zH?<|!Z2@a#lPmOaLDdBrq2y()@fm~h1xuL2Vh}!zS>2R50= zNZrWcy&53hBA`mvQ}4ZDG4hJh`8_ z_rZ=9(Bp2bTfoIO(DaTPsGCnUW$a6ki@jO82OyQd>J({Cj}jXZFGLkbpPl;yv!F5yTb-jl1W8-Lq}}SlS;X{ebNFBwjNcb?s}Q`T*-_ zcBV-?X31B?G$@EIWUc9=v<)H~=uFJr7p9{d}v#)L~|!I8tj@Oqx! z#uKrT%^rTj>1QHX?8fMxBaQvwB{4G#Lp#?P`2^a$hm_kQKljARd-$$2c9@QsaVfUa z1shughQ48U?%MH7-d+MUY#&-oOhy@u)W(C#sq_(uMdibu zX3=XjxOP5z>Vrl$qW=$kk_?HiWn?qZ>sIjVp1E4jXg)?U$y-`F#yoyA^Nn!XC>VGt zmXw~nC^<8KfL8p${8Z*slsLv^`@M`R63N^`1Lv^Xd$3d~WW5aUbqD6yjHKLi$S09b zK-9X>CG74vTz7^~-E)VF!8#`!hzpX)CcH+CD8605s7~WC*jLCitI*J7+G~n03yzvm z4cKH2_OdVPvxLlf22bwe`Cn8FSK{MNGqV7!xG#E21_H0EjG*;C{MsFFe1viK#DdbH z{ciLa!pu7}l4~GgIcz!>ExKoA|C+(JklQqa`0j>51 zJgx$F==!@NqNtO}<6fTcWICGK}a$lS$==Hi}5=nwZSM>c5~VQP6wd(nu?w$j%y<`;_QX7cr^>&yS2KfIi;PW=UenZD{Wi zw)h=1Jb?j@z&4r0V4H7M8QR{47P~O#ci81sBA&K*nl>Qi85+)yFZ~4`H=&`4he)qsKT{ z>pR*U$!CigUlouR3WLwa2OWbyLZeRJwgExI8Be&Xz?f%)i(7nmj9Gtxi9hjXC~}$( zx&oNjH!w90^oO#-G=+X{q1kYF^c@Hc!5-bXx*rzq`l3YOeJyWxqhCL9xzvmF;>u0l z?2Jcjgv9qVuaDqAka3=4hedYYPY1eQBl+7z5yh|vADX@kX0uBkeBoer53Z!WH`q!D z(%Fl21F>f}3h#z4*}K48uQI0HjIjmiO(37KzT9x`X1r80aP*M*U1L1a@lMxyVmW84 z`tq;(Xr>{E_VIfQyu=v1czf~jUpIP~3SvXBx*KTZFVW&B(6jAJ*NTF!j`g;}@p z`(rGrHN4*w$({if!x+zbW^tMJ!?qHH_~C7I7YlUBlj8f1VuAmPGbraZj03PAUlJkz^ft z$#;?HcQZ41%+De+w_)fbn4a%a%WEeO(M(S`X9b+&?#2FqbyvXp&tr#Pq?k{B;E`9L zk!5hy5~R|COez$K2ZO4^u--|0ZBluRJ#>b32J&oHB=CYrX&@uL0NUFz>uKO<9hlA? z#nJDu_F%@M(553UQyhamKB5JG<`=;45$MOYp=FF_65e1Sc-_Gae0(|?J?#cFNwJ+z zjBYw89e{o_krzya37%l>OF+Ae<`c++lYYq9&1!xV-Q5AlZE5KhIs6p9sRG98GFmt0 zZU>j1BRYJ}Tn_SVY*~dC6S3V8lmwI)c%;C-wJ(gD`NDR(2wznY{my8IDH-p|rLG z9p@pZ+fUoG7~5gI_gbv&GkoFRE)rKBF~V=E6?tA~^8M+^^Cqnhs-z;jGsXEFzRekefWa2+Zw54{pwWk$&9B z-iup=1S@6No5w@a%J*d_%WJO&NsM9atUzXNEyEjnC|)^;jyTJZ7{f`Mxg}Pzjs52&mDyC9)jg|f|*Z)n>(;Xnzvz+{UsJ%XQFH5TE7Vcd`_X8D_f@DZIh9-CIi7(M?`35bODc4DzCHL-y$2 zcd`*3F9*>sPr4bvYBaYO8<+#CZ-en4$jJ5d<-voy8vKN@`6ItP;txkpkCNX(M)Cq# zj0aI}bQMi@@!K@y8%}FGsKr$QFPFi1dbz~@(W1!k0c}l3ZXG0pY(&%U{X^M^bdHiG z#RA_kVT}z~@f7@VcKqWbMw|ezTPw=fySF|ZqMsZv$$Dy$BjBK-*wG7W5#{6}BN+kC z=P}Z)Jegj;5a(=1lh0t|<9vDqxejK8=RwXs7_}na{3Wt~%ztliQa>e-gcPhU)uTu8uo+H%e3OwY~S!~A}~;#oNN~{nOjY8& zQ{zWRBBvGjuZ3W&l4N3D?P1NDc&Q=qQwSBVS|B+Dy9fr8?rl4Fkxg~Ry@Oed$I`w; zS^FLI8HD}18SO7du$ms8Fmm^P5BJ`z4WPkg$d<5H0p_p~y~Jl+@96gkNbCe+ALCIA z!V+1rgGBO)H~g9JRz~aQpz9dt8Ah=Xd+Us}UV;4me0qRCOK9&R*eC+J%HkW{J3S_2 zNee+#0RAJPJmu+)^fUoBpMnm2pllc#aPP7CiB&}M*$H&+<{Wd#LRvGkU7)5IYX~3F z&J224iEKtN?s+_?=*7L$A_-Bjd(+WmMmv=VzAHU6hX<~b7bNG2iL~;aUOt0@&9KQ? zbajS4^2La2BI;BR99&;QHZDyb%K&en3XoiBtZfyKvsy z&NrK|A@_XfV`3XGayklUk3d$t_{5+5XDYwnKo=40{{9aQU!$+-%%MHsdhiaT!Tane z&$Amo%?Jx`=DV8cxD4%_K}&UsiQO#Z0TObnRxjxP5#P*%*#h8}?2?ykc{jS9#wUA` z(^<4JotBq_2DhI40DWC&932?j6@GVbM*9pGBnN>f(84s@3T3=s8TBAE%9&=E%bnqQ zBD_(I^f0oDpx47ls5N-)&M4DJX4$~^Ghqw&F1As$6s>Mo{Zv`% zv3EY5MA9?&A~4VGv=D&hW|ETF!DzZOc!9J6%mVZm6}9hI4Ccx-w;g*2w| za|LPLfomHRZ!Lo_>l1k{!?s4EV>bgo0iGkl%S0p+Qyzf)Y4F4=MtKC;CMMUb!TL=x zIR~?)hPm8&U4Lfi-uO3^QC;SLPk!bA;`*cRqK6b_4y^iLx5O`xJJxEsP4#(=@R z@Kg!OFFVk8Ofrfz*yc_oaRu#NM`G@+db`j>5cV(-D++`GMzMZT5P3vm$q#tehrUkn zujnvHCf2$75qIq%`>6v%xwl;fGM@BcKAISCwUqr`@yO)n;SDQc%enB`>6pt`wC6_V zJFzj&7&FG@XmdH}NH1krC)iFOp-6Z-{nta*-|!-_PXKY;G~Bj`v!eXqB4{f`MpFNgJ}6PaZOTUqn1<*-!RLXVBU?U2lIUb zJX`=w_Ku&Fth29Uv>Wg*XYp34WjVOLjs=_oJ!k3Lt+M^WAG@0D#ppkRo6}g8n;ouX z>?`Qqt*%-6+(_#avD9b8O>RZP^+<=2RDY~>F4B&VZmUygN(lx7VTXET$+NII7g3w= z50PkQAq;kw8AgI#_m;BS*vW+`fA)<&YT%>i;ROW`c^I@#VwBgBp}Q{s7@f@rCtvtE zN4v+d*brKq%}Csv{L&F~bR$wPMvHDO`V$sg8Oxc8y}ZL-mN8Fu`Jm%}XtfX)umEje z=C?$0n3gy3&JFCAQ|RU~K5+_vr=WrnM(bN> z?+EjHj6J?ZZzs^%1JKbI9xBcV=VMcai2t-)W!`Sod4Z>w)9+sx>j0RThyIjI!RGgZ zg{5$;d&BMWs9F6*ww;mUX;6~}j&pBee1<;UyA8bPY6HlQDQ+#~1akd|-rW234l~AX zyf+yHY@^jX^zevp-J8JfVoAgBl3rrt2J#HOe*}vIi8T(vjj53GNq(C_7FZPhxY_U$ zTK+&AYrtV3`_Xf%vGyAkzhmtDNy5Dk8)XS6BkNs8Rd{$a!(T8yimGSHzY|6g$Tlm>p(#~A*ov_bf(dXP5Fq>UvWrW+* zq?O*Oig7yPA~(P+fhTsdllw2X06z4{jE42gD2$Y+l$5>_z>m z*K-HS0F6HIZ6hV89K+ji?tnd<4Q$q^)2SEP-!+#Vo0~ZwztvX4o-10Ci z;LW0O*UxlW<4Nr)qbtZJrP=3|*M9Im{u|<5VIsJFCp#zgO5ixahu zBa8LG*6hXSMv@>sSl7~7#o@HT2J^ve<7C+$tRpX$kW(J8qyHrAoQXYUi_~m($^O>o zok&Ky+tlVPd1X#LCgmJfbQ@C|abiCRU)vXpoC9i$*lE6Kz9cSYxeINBd*hCHxSMPg z+N;6LD>zqlu;0FbQT_ zEYtK4PG#4Z?CgCnXJ46p?0Fl)4JMyWOKt#J0ecVP#;?b+T2*AvYcJUe`gd_NSTET0 zFwEP4e{ZxuIfsys+ch52?iEvjGvw|~q|4bk+THo$InD0>`rJ0PSnc7|NM&7GYqb+p z9I-XIy)4k4l_yRmCxyJ`EL0(Gn+f-x^2W4^GdN2)Su)%SWj}8PX{rlzX7V^U;hg0> zh-FV~D|Wlq1JzIUInQS>my=yuo7kWH-S@}Wms1w8xgqMH4saY=u&gIk;fcg5vsvWp z;+tap)p5?Z&*HX-<9dxVSXbk;WO`1lm1bAp2lm_7RfX{x4XHLxq~_%4JM3%d%-+si zL^UnBO(EDk{qawE)NOwCiO}IS)79QyKQV0LASzbsevuIBK zlOG!$te*cqG?R&LA*hQ{!VLrpbE*0U$C zDiY;hNa@AN$n4UJ{XN;(_2{+FklrfJA*Y9*N2n#7jv2&`!}qYkzj(hFFm*mvie0jK z*$=sf{n{~QLDW9AGVsk4&iPHlFAd`7HGZ)O78gbhAi22lNpjf*qBtYUnSmbEfw*}R zxvynUczPJCIWgdB7^4inC@m;zig#~M44xP5xGR)@VDP3$tvvoBlw9c;jNDY*wVOd$ zS!r5v_ZhulS7UoJ3or3YJ$Snhj8uag6O-6nWE~gSWxUu<#cx$+mE{TR>ua1b?|}1@HAD;XcJq#=jNmX+@q5i4mrqK@4t2((H-~oa853WD%n-yg<7?DlJqgjBg~Y4%kWfNd#(A1*W`@avj&8H}_BxV3pmMPD`neq9 z4BSzB!uYd$*B={&O`W<Ir4$*%FTV< zyJ27O`+Gd}D(Y{o!OJo3iga(9_v6;gNc$A8{*&APmXTAOve!*!ZdZ$`A5zb)!MU6n zdMxpNFdEx}6~5yB!Yzz@Jtwo*k>OdDLH@8erWp6bxsm>6a)`rf0(S=N4y>9p0Ik;qN%9?6Wxl5yI8HPMygH1>0( z*Pe4Mq9S0!Ur~A4QF53zL}_=qgRG=86>mLH`{9Wiaz=5SeS}?bMme)BE#MQ0~> zPGY7j+|YEMyX<1>f623d5ZQFq7qnM>H&;v>l~z~NFR}XAtVV^hOLhvUlzW*wzR6}N zyY<7kO=Y!C>-ptO(M|AM_vtB%{lrPW`a~MvIoBVX(QF4H6PQO8Th9zKJ&?k1PIbDs zVQgf#%pgvtWYV!O_#K4p&4fmnox5GJ79fPmV*B4F7e zO>GI`HV?C%TYxU=gq~cIlG6cM>{eFX40j^@Ap*NA(VQo$key_n+2J}I|LiA2YziWg z4K^DmlzJnrXS##lD+7pFisRESa!rbS4SmH~?bOrx)J>oGet0YR0=cUv zx!$O2V8J7aytt*F=&dsQ;Rof_!^e^Y9PA%);jG0K{KTbDw#xwo0UBta@u{#=>!tA$lqr@`b z1@AO(Mqdc`C_TqI@5^`H$azjb`#1^FR93)0)yZGox^-JPXFgd`C(soxJJc6*&xF~J zcw8SR@oE`k9@vDOHc4!IiB~7*6zCy*{A2vaDsI+T;e0-ecbFzP;ARS=5zy{idt}+~$PIDDEA3hbMkRrg6y(H4(&!)W-ETTAL^7 zL1#1LXR>kTC9~0A z1J#MMaw}8{d%&b6f6nYF(>$U2g5q!Z&Zesh++30M{ z)!{y-U!24~CbKv_X*p|go3mywVWVzD{^Pj?HW_x4l^d9n=uOT7toXWV#vLfleSyCE zc(+(8uF1;XgXMJ|<>9We9D1>n1^;=0obNffjliyckbjf}s~@n>Fz37TT<&w0zLDAD zOTv9URXJ7on!f&Z#yC%4!{(e6PQ~pS?>G^%NOgtlPm{BLP_gw*d{%0yN}7-|luI^t8S$_Wnc$W*Do8L@%HL|>^7r6Z>K zjSreiOxIlXB}Q4PeVmU`a+=dYN72h4&d~ga6+6OBE!_5-le2|S;q9B8EMh+dCoiLM z;%pi5@OBt5LTYo9s2`_%JIfZbtKZxu^n$y$;!AH^mUAV|(ZUk!F)p4h3t3+UogaT& zQ;u?z@KWxL*sljUAMIG*I@`+`o6Wv; z+$+{spGS{lIh|PD_4!n!i`lWJf~@kp9&M~&eX@?y`aPVq)?PHl(Pw^6tF<9-`#>bR zi+h^6cg*Z%b!01d&86p_>m}q2t&zK*p6B%Noae^8=#qxBcUif)Vk(&JKpXV`^IT$>cYz)6+hkUQ-Bp@%S6xC|$^?4f z{4K<3;}2@BWN>Qf&FTbPRgQDP!-=Y=fc_om>j6yJi?c|Mj*lf5AUYjLEE0o^Bn9{K z4J4wkNnAdkO3@W08f0&qB%FKC!71Df+*)};C-x-p^wNdZN>jvaCPwUz6i(uVqy znr?3U9umi2_ucVrHJMm7c}NcHak6k)c$v<^Y129Ey5av7p^_09RpmaR;@l0h0)HOP z3Coi(T_alzwm(fYvX>KtE7fU>OApeO^GR--S^wXt>kTyQFVD_u6l=<`b101 zsJ8U9O?~l9c6Eg~Y(ClWdG2yD)WkbkpKq^8rM~IJep&n`dpbGAIPIK_+w(@4W!$;a zfIr98eK}&qw5Q?_&WYr%)Lm}c3cl{{l~JT_Y;vrZR4N z*vEOS5#$-`Ol5BpZ?MUt%X!{n9RV`V5obMd)LZM`XB)0Ead%ZS-B5ND-xrYCoKMXr zIc=~h$1T+j%wEIIVN~V2p}{-$DW{N=+lI1T*KyKwt}r1n>|tG1_W=ukkq!5Hs9SP| zJnjQKl-I*6Rk`1YBTq@Px6)I4zZl-oiukII4zun`hPv$dAv^5{s-`9@BJW}uewU5Q{B2$ zhD1ukZKP-*Qy~rJ5J{x223@2=s1S`5k(44ugoMl~LnJfdB*_rx+0XC2{PBC87iW0( zu-11T*7~fE+09jS^&AoJ3R+_Kv#Z|~JO4{{dOIIf-MZsVc8Q&y|4IZ=9*Ra!QOben z9Vh^0;!0wKKE@Zbf~CZ)JL31_u<~b3bUTT8Fuf1T)j{awN1^bH$<$=~KC;($NtA;- zQc;!WZ_!%+xJ9-~TpabrtBfDWKa^f+-}i}d86JbYH9Gw$Z6~6Ch+lY%2bz{ymlhKx z^waN2qvF{S+5crXB<*!H|maCku z9{mB_q^0r2$vBzF-QwaJ(OmoEzKJ))tLb5tI8XOhLLsV_d;92tq6byFmSmpAuLE)a zq;z&)oXL!_3;ywZH@F*h*p)afx;W`$*W>Ln)^eE>^QF^exuv;Lu!UB^ z*10x1YTi3xGfqivOFo7bR6jZlr*?SSCG9Gv|1PSTltrhnqf?{1pmui4T~t)Js8g;3 zOp7|vi}1ESfe&+9Tv>iGNS$;Jd%eak#9nc+)I$j-w6Zla%YkJJ~~=8lg`;6vV&xA&En59=fH?8BdfUr+I^uNnP26%<%;EZ!{2x` zvq3(20gKf-x*}SH^9Q2F^yZq_?n0imy*>Ur;)e3{jdI~RmAfW402XlAi{*l{WbV_b>u5$jROdHmCZZaR<+NnuxHNt1?Fq*^)$xy>(;YH(6T2># zh|z9_AUZ_;eVO|4+Vo3%JUeAx%wHA5pRVHrO0yli)ap9H z<+zLAUkHh7ugdfLBDW#pvE9*)_T>EsIzaR65z+EMHHvaHbvnN}lSlrL&uXdCH&u-A zNUl|`rJVkLBW|4D58X2x-IyFnYLdiuQH7*xvJ`UKPH}rByeA;fklDK+n z(Tt-Fiq23q@2!e+Z89!9CaE0j1n0*<8LE}(?&OPN*|U=$Rj+nK!B`JH^&lHkJyRBz z-*ho~qqG~U{gYL_m=>*oqw{g*v3R6BwrX-9J_!BkkO-;h7}8lqlJI>zPlm8tBzvQL ztwVl$?zmj@+zIJpkdQ~K*YwX!gu>MWCP-yb@6AykS@#;*(Jy%ac;@2x-fTg!g6!ew zyZmHWfg^H@bMNMIxrg$zqZ!Haq+HyKZZ(DbQD3xqMZ8-DxE9~MRMn+n{Ho}(f}ODw zR7bCdx^f@f#znA)|Aa+!l~s!8#-d0X)dG^zX(|qFl>s@cM%cd;jnpPs!l+DhUsmZ8L% zX6f6x%ISrAGwtAGoJxD=roX|d=?wYm0Vk8x$$XmaS$uo;%IpvEaP{HA@HfUmryQTJ z96ijBRZf0^r1pFM6evEsj`l3tl6KeQ>BrZ+pX^pe_*HjyVCErJ=1lT<{DPQrA^gGq z^!P<+kCVk9>Y8Gr#VU}!(-FCpo!bLTY;8JC?pG?AoV=K=n{5z3mw!90u3onw-#i_k z?;l^EJt12?X~7aVi7w0k10}|$1!;}kJ8Yg6HlAJ1*G+ulym+15ae1bFdQkSd78X~1 z^_^Am(44IS$V#&G+uY=$h5OyG%5&=LF^kNf3sg_k!ncWZ8VuB4vML{ZlC_>JVPq)%Mk8jIWH?M!AYd>1J?NM{CPaq3px)cs;Zxufj0}q>*chY%wWApvSWNoc5U|kWOh`}=__yY z*|&*RYQqN~~EzeBCTJCv_$ZWQXVS4IrT$hQ@NMihtd>Y<3}>;K9j| z_(pd8DTq8{^l0{^J915PXY&k~8jpR#{LM_L$(>YK#_CkmhJx8h&t`8jS~Y04U1!)VDnbP;k|-C z8Nnu0Nq*pkv-%N3(i?J@v2p$Ko7IVq7uo&}mGcR_e<@j*ZC>o6VksMWgPPIow0o{z zE+ZNpAnvG^lo2P)g70@tdQYxv?v~siMbmPZK|<*w4(uS3_!H{a1IaEm)5WUpBb_A? zvqx3M)VD#*EG7aeNFUd4xhz*HZJJ*M8zOke`D%%8@)HXnTHPWNemZXH`;TJt@1pMN zI%^>Vgnq$-bbjtQQPvvx*?VA6-AA*(73U7uS@{_f;u2vb|F?#Z|SQ5iLKReKqdR$_)@DHO$q` z^~&$jrD_DVWj;&zaORHm1jwtKRJQKO-IsRcpTBpq#D{#`Xo$*_vQe?EYR|EbdsmVF zUFuhPeaP}wob80^aZcKvuBW*((kZ#AMFZ3E(colqc6fG;_nsGj29cz8$VT8Vej5EJ znIr1GJgFLAlqs9OS+p$IM4VVkPP-bqPDdHz0jJ|kBWJ^4el1q>FRAl$l@91i71r6A z%i?bGrA*Qzb9?$}u1v0c?p%C(I(;7R%SUfOlHDu|Ya|M3f$B3w7C9BYJ@A)4itER7 zqmjCU?|5Hdn*2|Cx(xDKQyIyqOkZ`VYND%w(fz7{@371zRm2C8ux~RZAf{9h@pY4( z6{s3q2DxZV+A3EocYHc0oi3_-05ZijaXWUbO%%xr?UaeWg85c8*&+X06kX@(^~LdD z(9donfb!(&L8lJ0JPSf@LpA$Z|MhEzZ7GmVLA@A*nhp{nkr6w@Uev$4hZYRCC94w5;`lQW# zXen`LfBC`%QDt#&J{^$e)dDtUGRC|mshRDS%vKG9{1}y&4>Z+J=$$r5e}$6UM{WHs zp3m;nbW*OC%wR`)b^i0rVU~6d9N(XkPvX&;isHLF)E*mWilTYR7+v6RJm*KaQDxGP za;HP;9Fq?_sQ0?2bo5QUGkF@ibcuMr2xOlc{gQk!eCaJ~yv1LyQ`;%Z7gNo>DZerI zdeIL>aoRV3NNuuE^t(?*y^YRFp>dU0yXqGmV)^ch6Pe&vHIJXwV;aEAei`K^ZDk`xztC#JO(I@Vg zA&}Un>O-&StKPzwSBbZY;5Vtwo|5@VW%Vyn${`;2ez=^~q6cKp$K^Yw4cM9buzQE0 z*zTx}k2N)n3uLIz#^*=( zd3Jvu>+yWU{8_ZSteWY?(F(P$by3}(b@UT0$oiLE#W|Ym;X+Etci|M11L^=c%H$yw?h5)88hFjGqg=_bg*iAp=buC zk!sc>EcSoZv!+`qb+cTqc057-q&3+Y7L`+x`9O4ZvRt+wU%x>`=R&J-YC^xY%svy`1b5J-EW??0AHl#33h+RB;a1&#LqN#a_pGTMP0XcJ6NCxt?}y ztd96Vv{#QMU>02$orj9&(Z&X95f|zOUnKfmCwE!G|8%n+r6Nnh>znHmD}6e`CeOrw z$*#L*E)rdjlH)wZ&KzNbhg*?zGVk%2ZpMuCG4b?z)%Cq(|3V$v^Yl_H@#b$wm6J8e z4=i|l9j&`*MP1f5>?E12i#G)B(RpxnZ-Jq7yq?ENyPwDag7=_bp|I7sZ zyTA2SI-&h(*8YSw^VjRX)V8{1EIS^~-|ZH?BSZR$MQx$lv%<+U)~(8@28*dbjhm?W zJ9k=DI|`jkGh@zx+0LyoO~ zI~5J)=*)++EjyE%RjkKLdLM;i_`0Ig-lVz{ngy(kr>sKgWc|p=dj4I|1fFbWo*rCj z`9)v3!5vm@oGL!~uTD{O9_dD*&buj7TZ~Z?*Uz;|;oqvB6Ua(K-g^P$ zuRpC%*vXsTranGFeJs@HZy_5aeIFrv>`Q|m)_E!re+=oXEge*xD<@?E7{;Js^>LH>JV0{B}uEG9@B^n{ZIF7qx$_$8P0s`I%Yv= zd{TUMHM=^Ve`rbm+TqrR>|oXWnL5I&qk3^^U6L(MY`D|fsu$&O@8x@1X|X!P;)*>$Y1;2vtzCm2K(AdH`+NqKgh*s*mxZ2=#7R@=*3GD;BH8hMg(bsDls9tX|onJO7LC9qGzUmM`ov`!}04 zPVez~IZjvuKAWyyNH4;^xWZ%Wd=uL6ldR@SyF$yzU^aNyCFH3W`MR54w>85>))h2U zp?$*G0)o>eqOY(Xum?MPlloIt>n-Y zOkO{+qV-Dc-Ir%~PQuyOd_5z^|Ix~VN35dhNHYppnsqpO6ko%d#)`Ck0sXF^hO2f; zzb5nXRmgKW^Ers#wOQIj`Z#&#O9pJEe?_gV%>9!5zizA_ScmbX=xl`*29d60DZZws zQB`#B_iXk6G=hYNX8lm6WkonvEl0j~HJ-qX;{mI`fddjbgT#W=AHht_&xj z4@SXP(C8j(cnV1M%{*}v+zjXZ{*7}1W#e)_V6~cKp>Ee(?kqC5ywPNgVWex8k<%}A z#cI%vJ6W7kDA`sYXO*8e8c`E{xFFYE{j~!cT<-rZ>P)9b(?l@yNJv`}ai8a0FHW6_ zp4-X&GOJXo;bKlS9vQ=>#vbq(zB1E6Mlk~A>$4G^boie%o1x;!HTd}xD>Kf$hsfh3 z&pF?^`b%|=TFS`Okz5J6g3Z0f9btv|41K%E5lLpI65_jRaI9FH_8PI10@2eFr^Q zg(G1v@*-SbZ_bVI`Ad1qW!`(D{T)}ZUgt*N8EL@4m`?J`qw`yM`Lp+*72R&7RTt~V z_N!jCr#myqMhVu!`8ay=SDN?TBFkNPyI!BMIcn~~ubpbkC8Ne-|4}sN1#-PL^PlK5 zc~fzpP83NUAr~d>BY78JuP0@x_m3m5Gg5R(c_|NH+nj@@+-a6g zc(AayxGw4jOsz%M$*=UpwIn+1BM7HJt`bT7hYz~QYM-lV{3%h`y)n;NhI)Hv6q-)U zc9GRRWMTm8(ho;lk`Qd}&D-De zoKvH1=(>+omyO<_YlD3HqKaB8TAI?CT{?ViL|?t|agTcb$2c1hktTY}=FF8i@fZ6t zfsS{_+r}u~9_I_mN%Zx=K8-1FD4L#eR^yugXLH5fhm(375K`U|R+cVBrK>=e;d8I^`vp1Fiq zSV8*Nk&NwDti41}N=1eA?KM_*Cd%E-M*Jm4t4@>jIjo^st&i5{*c*3=ZMsE&qii@Q zzLhI+I+`KQd4i=XCt7+R_j`&BYDPcvm(|24mzwQ9Un|MS)BZjeX9G4;FQW`kF-LDdboeR&J(^{70c>FJ>QniZB z9V+66aZP`xT_8$BF1iO1Xx|fv6k3_`~mp?$4!WneWp~$x=v6x)fQZe|!GrEwc z?X>t0@?6auy7AKy|2^Mlzq+f4{Tg6y*V%#5fo%y@j``mEo3}kkYkx3Wr`x%z2o;Bt z>?{eMA(MK}+KRB2{2nx)O1__PPgA~PtLFx!%&SGcUF3#OvT6fSyr#O<AP_&nO}rb~TE+fi1zyXPmU^a~3x zmE3GI!f?7_aT4OxG*TV2TWxW)q17ORRW6>v&!xuryxg~r5e5FQT9hD-!B@*`;C#B&|I-@I`Iy4}p84KRYu z?89bJNe3S2E8{&UO3nX&{PyPc5aY`dFojih(Z^F!gY@o9ngEMg-A zj@5WS2Nbhu{;fBIndn~6oC9js7*F|#TpdEqRYnXGUpMV+RR6{mb8!79qxjqBdERBb z-$s(Ma0*P0t?9!PeS*qkJv*%A4EyfBcI_F_bd(F{-@SvTN5mEzSdnGMRw@cOhC}@J zvb(-z@jhc2Ynk~}^3x9eYoO7~JfpKYd9N*Gr7MX%iH!;99$%oq27H`ryl05Acl)`> z9A3f4o<1F6)K7b6q46*DeTRE~@wZoTcT*=vS6 z*y|O}fqISfwWXT@oj{$Nr#gYf*<_B3+2+-*nuA^!i2d?B=2g)M{0R7J%}K(0X0_5g zOQPy{TGbm5L$_fDnG2|kAE_FIwd;k(Ii9|)B)!dyZilZnDlB1_>Q}CvgV#y)0y+j9 ztdV5-TT*y@)RR>!6;+PrnfpeT`O@fFvDgSy+ejW~_^c}HGL@X28_ie4XlS&>q7S@t z5*e6Fmq&Q(0dl(n*8$5OgfX=C1SH z#m4a6FrYVW;Q6ZSG6m^(Z^E7{z|0xqp(WLbG^|<@gZ)e)jY) zSesyP+WYI5DBlk~Hls`MC^LDy@gzRr3YR12d7n-2jxL^)Md=L7koUxJUgov#-bUMg zG|Lja#wyR4jh7G8jy#PBc72`Men!VXMcshe{+s8v;sGud5x-BeLNriZ#JkK>2Jpsx zNkmh+v>I3`D4_Q~==b?%H-(n;@`kk}^%*o6L#Af=`)YF!C{-up z@IKeS;>u|_GtVf)e(RA&Hrq^FiRYg*vc9zYgy<)4SV^u%8q*oa@}xp`dNDiGgN}?t zm0w6vy=bfF3^t}9X|3=!;HMQBeL&a?7z`uW(_+#2B=F4W8&cJZ-F=T{O)}1EcpRuP zACF!p-|wkcJ{4^iYkuIZ0Rvc4DWtBt3w3;=)10UD(Z#_NZ%VQck9VY^I-*(cl3-|u=Zw`r%%%LCZ zl%d0USBy2v4_W;;ysMvo)4Y2>s}lC}Kjkaz4GkEbml%IQ9xXJ+M*QxpG^3iaFEzgY zt{Tsp^x>Dj!<7xV754b<5$goJp4H|&l2$)JYNxT|7m~a6W)Q4IkhHP1HF*DTjIlIS z_vc9SLQ)>^0^dQ;kWYMWmd(lHRo?Zd*kgnFHKLJ2N$fyxALajm400-}9u&!!F|wxW z>J$0UZJxXtRmPC|e)xZOG}@g0FoU`1?xY`_yv|%os-4%4rm|%njDMF|{Ep`<&APEw z@cXQkDaHb|G}5qtycXIYImV;6%xeRy`8XXqEjnT>?NP5B83^%o6*}0KzLVXchH%)hPJ-JPG^-QC@V-PqmTf*4@8Vq!OTw{UmA-{Ij=;d0K| z-HCVJnVmg0tWmY9UvH(FR%lYCOYcFM5-FvGuPjZJs=PxftrDqD?FY3#-b<;aYOI=| zZmP3tw7R5jsN*U`^;g@~9ra#$Reeb!n^jj;M4ePC)F5?KeN$!Rw(6@kt3cI3byQDO zaY-rjR9O{U>dSFeS(R76RA2Gs`@8C@TBR1Ly{e%6Q?(f>jySSVHBk!~D^zV$rJa~4SBd3=YN6(+FUpZ^YGU+QH`E%gc&%n|%|K=tz?er=TKTHZs7GoZbGo98sw55M zo4Tf6@U=rtRtNbso}5sdqE~lR?PK;ER9k*}p;oItthXiK2lDSD^-SfI6cS4cv#Q;! zd^R(C%zW0UERtHb@~mCzvwEtg@%*^V{)Fm+Y?8=n=5a}hM5y&VGmLxuReL0Lg;A%f zhphZFGM&u7H`RW=TgX*s)NA#VnH*P9DnAN&$UVdO-Be^AtcEcDHNN)q^B~sygz*x} zZf1W)T~O~BHB`lvWa5!@k`{TsQhSimNv=GPJXbN}!;G*@%~T`#d@B;%uP$@XeASy( zg{x2KE|x?w-cj`&P4`os&`csJjWkaqjorv(I)DG-`(8X_v--nTk5mjvfCd7P_B=I0 zl~T)MftG;L4|bca51^-w!i9?2!= zSjixDjAsV&w8u#AGg_X4EKjL6%8%7$lAl<>Ar-;zS26l7{LHAoXzD#H2*J+J;|p)p z05yggenQe?(8_b9x|FeekiinQl9l~M|F!t;DYLz;9x$^U@)T|KVvHzt3tfh)uWB7L z8^;x~WGEK)4liA*YN~q7K+8U^-KOqgEAzQ0s}zx|Sm!#vUx#%ZR|zC8D|^bnk?H{c z(~mW{8aTo{zOaJsTzwadJ5<1Sn0*uOe$Kjs_-%+fhm{}U{y?>n74E}6 z{^C=Ik?;mJ7@I%O$|F@i$uE0UX_ZZl=jWx&F{LCHubPE4?=X`vm0e~_McJzwvx3s- zXqIZkN(W1A(Q+7x_d#33kXiy6fc~H0fs3$=)=2UXbA80@&LjVx%sM-|3S{)Sl2KNx zx;*DHD_((4Vo3;do)22?#|Njep0jBEW;Dv&L0;)3k$hzRj?6~~;~3`-68eKKm-6g` zto9mrm1LAB_{48Mn}}SG;DNhYfiL(}72Gdu0_~xU#_fyC5_x;ozt*|xA^Kt)_s@NzKnkEcRX@A&$$FLoZy~C%>N=% zYmeL#$qsyN3~T<*+ye2#)I^VP?mNNyH*m*KK1n7U@U|#^Dxu0@p-rSU@_xW~Lzv4{ z?oQ3m6V*^GCX{)GsWehnl1dPxP9SR3#uEMzIhKOSH__ceyz(lN`H4g}W3#(>@@D?_ zNCnn62kW}U?+<2L#(faUK*vLn@SW)N3m%1NYGhcP!ubJ@b&BUo{D=6VcFxy#H0K;!eE z?jW95Mar<6JgoFI^QeLjvZAdZJn1;sY~tr2tURU!s>RGWKle9Af_bsvO*}bLrDN?4 zhz>Eaw^dkjh{{IH8;U%>s$6mgU!05OB>=&WNYHHq&-sGq>|}&DNPi1D+eCc)ge69( zRK$r-$bKl&zrg3C_&&K@z$S-B?uBkTKRE zmo>si9@79oikNGG?X z0?UT*)ftSM$2_iJ$8UM^a*$^&&nu0GWdkoABp8GQ{IS;8NHLyV2UnBIdvunc&mUkF z(~!(htY8CnxEXnkMB+E1WBVnZ@&^B03l6U&!o-r|Qc~Wq&J1XC7qj`yS}KBD>sj9( zX44Ic<&f&&bS>;GC9@m=m)oFPgZ&S%)nPo#jixz>>f4a$HEcekOeQ)Wz%t{@Sw=jI z9QLx7n|v|>w3>_DuH!*-@x3$Le=Zs^uXDvDR^Vzihx|Yj8DupY4_E1>1M)e+T5dD1 zWq9sLW*?64hhZUG`E#6EF2weyfBN@g2iA`?+IiG`f1*Nz2l&|j6JT@zFXBqdNBYF*D)El5q5Hmgl)}?^S-e*nW%=ihO7Xn@s zkngM^u2`-OKq3eEGl0mmm{}Y|DqH#99~_O~ryEH0H8S6W26i!@Z^$eWtD1$(Z=vJ* z%=bO=`^3G&qir{cC;Jj*_alqJ*u?>)l^WgUl%L41r}|H&0-(75e99F#+SqH1k z#Ev7ZV=Xg1gzsHq73Jkiv`;={?nhb0RX)2#eDA{@D?yEK{Ct>|*MaxB4DA-0xPWAW zne9tta1$1iin#>CQaWJqE=#@5lWu_lZp02@w0&s#JsJvvK_n+$4wLe-n|Z`whC|@~ zM~H@B(b#3s_q0l;zS`NUmh=HFJ4DB!Eh;ybR+w141Z%j4h3~_XH-ThDWoI;-$wx$N z1do1;Urxu1?qGf2xppI#a|LXuf%pEx3f8i+2guS_4q#bs%s+`l*R!(t=zA_}O^4*W zp&2D{c=mEMvH;}i#E3EFA6|MF4A{%62ZLp=z<`U$KLmL`WQ`%n{0;WJi}5ex!H1Yn zTnXc8hne$Fd-xKKz~_+qLB=_Njqk-HBjDgUv64`v zIfWT)$1;MDOI%iV4tY-D+9|B|9#VS%vbmmp9=q+%cS(qFAF$Jc8I6%k@iwu^|mEg%LG`*8x<@OVD~K>WRKcgcCgwb zAN3u*ozDuYjrNflVcOa-)l*k?x;jam!E(@EGoj{_No$38I8#s5Ltz~&RHPkka@q;f zOwVC{<@91AZCrcDR8}i(EZaz}(7Bz9^2ba!aU?)hz=|HIdQKLn8Vo9yjwz+>0&iNg z7(43?!$~6xVJ3H3>t#6KF_lk!vHNXbRa7>sQZh!Db^dc6>DW?1$`-ml( zl{J-3RrA@*u$8gQn373b{Y*E~WAXO6$gw24+@W6EC$=WOX0ZEEHA)VVrL0xK_N~pS z-r9vWHa6c=-l|O4WE*wd-mwqVClP&73hE;Isy@lwldA8w5cm8rx$P4bimx0aN6JiY zG#1;rp^n&kcB0K|>#E06S?AG7acAU+82ikeu_1U`N_1XL{gy&H zr5vyWk?~%nJQYuhu-9!tGR}_D2eeL2OvoYwWhT1#EXpbC7^1U3*UhqRu;__+<_rA( z2|RK&8mgd=$qMz-_?d~el{D7H^-dXtJnGsMwiHPE-KJOXWR>nA&9L{B=;EV^GEdYv zvXCm$PIqy9v}3E7II1qF(%#mvFVtAM0qz!3^K3$!#+H{6PJok8H&DLTniV!TF>RIj zIcYurISr&W5^9dkEVT1g1?eW~vHKO0P8GMm>~2uAjV*4cqU8bVJ^ETM!=<0B!WS0m z7pk8fWfy@1`@z^vQa}%qKgv(KQ3E={N^62blVvJC^vSleooqZXcPx=ATwRiRda5?^ zKuYPDI=^I82YLP)a`6;k=v`#94nOi$F+lVopv-;j;Ff)1`|(pMwaMPMLx>;s<(?R= zoYML*k>xD9F2X9>gRck1-v_8bAYTDLA`_ewl1pYky&OU<`pD&eMKZnN|bDXt)-N~$agk1 zly^4R{d}KujkV-q5%Q^z(7a7Y$G~@bOQ8^DXR)W23OiZ&FRSfLE*l^+X?%w=zP% z)5&yOvE(1Kh-wAw4X?lVn(0J75Fmf$CM&2-HgOUr6^d0nux(UBxhOI5mp*85gH+W4 zx`XZ~f9*$e$;`6@>`c?!OtbG*2^jwIymuS=DBJP*0TO zY5>-B0|{=o^N0y;?Myq!jV^SU)@!Y){(lTexy=kz1NZSH~ZVRlsx(zHa3B3T3X4ce%TCo zTwJ1Ph>fHE*!bjt%tLp?GP{yTtd+Jf)>PD=r>i!yP=C{*`We=?TAj8l%r@^_Zxd6& zp0i1qO(vq^Cz#C&{QeR07_F*;hb5)7?&jq1EYY!~ysqf^pA;||ypzm98Ew-<){Z>l zO)6pfliDR#pMcf+W7l15Df85H*L$4*^m8exOS8TScwZ_>fCWyFw7R9_vlWbESF7_9 zPCmLszjAUoSJX|@+TrL$P;pa6bEfD>>#-fBaV*&kFpYN19cUh9E@nK zF4{x3q1~nOIES3(&Hz0@3aBmiYjk|y%Q)3x-`}x?pYW>x*;h8T3?){-ga?IS5xZm( z(KG>`^AIE$i8X8it>WrG_vMKBcGV!N@BM zcRs;SFH#3g4%%)&-lZiF)W{+G)eV~)iz;Q$nN_BZ-KUO7D&pjRozzLI!@#Mjc)UL- zkw-?s6F*^Z{o!6ysonU2>SfhEJIz+HpUej9Bdg&``-tp?bbBnh5T3CNPI3jtw;Ep6 z2jnR#g}~B1wty{d&)8!&tF3KLo35$_xLpVj&xv2HV9aN%vYoy!wsG6bJ_LpJadCNUXVwzltKhA+$%I~F_f*NgNPB!3fW7KUT*z{)D& zuOo>FA#l>e(#i?ZF{CB(Kh`GTS-Q(>bU5+t+4~(oRD8Y=)b9W}o^@;8h~zHX94s14O(Hed{EaGX-8x}myU3f?j)rR_#s(twF3)NwF1V9l9kVyg2IIBK@Q%2;ymQRy ztw+gA6=0W{d){;2>fR>at#*)Z?bg&!s6KF!s>IUM z=8Ab`y?FFkwZ`^`SD#fi@zTk5vdx7rY@_N{TTcSpYBAeVWMGS>6IeXn9y7a5U+|gD>iY-E0OY3-h7=1eb?5( zD@WUZaDyXug>Ay_(Is+)QqqtJ;tSTKW*4)I{FG(-f?fzR#8Y9WBy94vt-$roVd>-5 z1M$-laPx0wJHDIRUibD9{~v3|@oSZ|iBdVy0`vSQ&gRZVl(`_}u*v?B7B zAm{sRYm)zEkb){D-jSBtz;2jO3N6AodbLyC)7%rz?m|kPl?>rLcDj|!I)v|vO+Ie@o#bZ$wc4w*6D znBKbPI7pGix#{F}vgoqp@~c3>UUD5fe?t69tcOc|6@m}>fdB!zKWsLpdI%ftZ#tWB z)5y-Y!@!H3c9&^v?%RbjQSa5m_5bu;y~au9tdX8zSuOYjd8T?oUN=id>Qy?kPA*AQ zCOa2q;&0BFNhSsP@IJMf7&Oi)>1pH{;JiV` z)|c$0BH7M934vc$Aky_BW*FF5MZF9E9fCJpgk=Si-BwU*(7-L@Z_i;NRN1Kd$J47- z8S~r5lwV{;MQuqngUZGYElwThh$oclpu1CbSp8?>M|FxyN<4T#Oirdw+9-T>7f6M&^>hqm|qfkipEw;Cz&8E*|Cg;ExvXBId60sY7qWrSY(-hLn1$TJHgbd zIUPJTefIeD@En!+c9RKaej}v^_Z6j{a?_TOqk6jIIQiklKahEOQ^@-?s<^j+*<-({ zL1aB4)R(*}yUyV;&I`${CfIdq7?QrG65Co-CSIwVSX2Nx>0#;$TaoE(_1RkRdk*XR zWZz&N17OLKGSj*19B?K%SLJ`IG1=x}qU~_wF-fhzstuP2$IGw5;nsueDQpc>()-FA zY)?oFr?KaPr>bY7lU>)RE@Hr${Wc5FEGu)=CF&`$z|q|DRbEIPxo;a8$K3XYdVhGg znUyL(^#y-;%OkxW4xS9#Pbhog)aB$K6_uuFg#AA18P`l=a^?sdO2#>xYn18dZK)Y%$KQP*>bZ?mC`=WTOC(Vq#|_D_OQuqF7w9Q)=VVMkFu%l z2vg4nDt~gH>P}myh||tF=j_C9Z`ysPjQMJU$h?xnj(X{V*j^+xmMgINUr~9YDnvE% z&N7?f(+}L0J9|8{e3JO=ajKAoT(Yf9M(^&ZE8hL~x}0*lc}_Y@K+*wHRHZZ{qUuED z_ZBoAZ8P@nd+YvGJc>DAB~n$BjaYmp{3(!XsXsYgKYTg6)PV0-fX&Xb<;+oU5wqB6 zaw0#vQr1fuBsB`lh(qpUm5(??kfhF0{YuAo&WqdAaM=p>*POaXGOF=ekWm$RZ(5i- z)>prg>BiTa)uyLb*iPqkiug#3AZINV%~oW-+Pgezy!k>kTdD1~x*cxw*s5qgiA=Tu z<}rv}kujfw`+M~X&t^|eSl)GfJuU1xGYmLC{NRqAWb)bd@`}itmHOC!Dh<5#i!CR2 zu!AU@g(w?`IPxFZ+{gJ1bMRI5ZDG3s59|Q<@?!6)^;C7q+ahXJ)Ln0w`Dg!0Z|8?| z-Sg3t*2$-Sn4;>hR3JyNx`-U30y@XIH8D%<+o0R(AX%p#dACG<`xh2j!n9E1k=acu zIbYO4nFB*Bs4K%(@;FUA4V)^n(fZl5U%Mgc$V`9P`X+^0Z!Vfh?`7|0 z)0b+&PCH1ocS`xp^-1q(q1S+X`)riyNwzcCK2oRTt^TBQQb(#xp7I!pz4Hz>o6LUV zaD4SuYCHX%g-!L6eI0=@}y>ZyS{`Ke6Y9e1v`TZQ9Rp@T3&j(b}TtX z7xJY3>Xpp|gCG*XI-aZbGKnfb0zGwGELn zx_~Wa652I3P$pyj=Y2jod9^Rqv$XoL{T=l-Dyy08onG;2ClhofPduLyP6qPzYt$NVu$wxEyyKiXW$IIJSZ1f1T4XFG+;r_pl77P8M_XZc|jrSu$UpXacXL{bpbE1Dcp^Zp%* z>|DYao-z6hYMqeD7j^C$5}R!Py?#rKO+r<;Diy?eR1r24$1hOF90+P(wC_xA)8C9C*Yl?i z6^s0`8nxtZu))^sGEgnoWj$j&;yI?z%2+DVtyL}7u^Mz*U~7Ra)v1-vBRgq@1bdhg zFpcE44;6@Tec6d{E;@;vLvV>cRFG;>{k+N^(i191{i!$Al;o<3U21mNfkfpXGdF6c z_n~P46Vych>S%7ZXOt(<)6glemYY!XTMdWrjmGP`aHlUU?y=0Z2cpVEHt|-G0?tl7 zlAVt$cvUZSS^|GPsOxyzdG>hv!0>L_80-;^m-`ZGpO|abAsbm~qf}?TR}NFDZDUVT zKS{_gMj}}!i*$8ohx1+ssIKOuDNjA>E1d;ZsC^=LX-W*+EaS*MBfNQ${Q}}t2nh4T zspk2h!>P*+P#$ouh>W84KH4-l>1}Pf;XL%Tr{)@0TG?aXAyL=8o6toM+lN|sEnP?d zP*ZGK>N9O*8hcW|RX^#bckA&w03B~)J&UMkPFJs`kdxDSPDa&_%=xgX>-`uN=>28} zBG*ompLo;Ofo(XS$R6vcWu`EzYC%M8NbO=dx%*YJ;~-sH^4fLYRZ+g)5vIKDZ138P zcwexmyl01QCs|;-aj5*o*ClkAT$T3RbDlkl$?}RSMkBM)R3gG=CmSqAPV#`Nl-up) z?pD2mn{6dmhyh>yDH)t!@Z)og7el87(ROpiMDR7gZDAIHBQ0eZXi;7HsO@H+DNck) zAuCluYAQRWq;tv{LzN?*&p%IE-H&>n#}+X&qHcJ9Qd=mBovx5)aFmTOoC+}aGIozQ zt~a?Fqo3%4?4@k*u|AnRJ~}m#^??}$+SSvUhzb)-xczL_m_#7h0!`Q$A)MRm__-CciFzr54H$vk8vmDF*$t4BM#^n5D($ITuXVGVC7?_RS*#yF3i zHo7;N%wc(>r@;Sw^)6!CAybpXjtPL(|ZEX}~4##d9>wx_23UCn2wD+=!)f&6Pw6MGXi z%nYYSor#QktuxSPpid&tKCmv0GFaYllg_rL20cSA=p}lu8f^;_nYV+GgQKf~e$=>% zQ@_qk?i--d>O@E&MYV|v_D&_^ z37`_!%Sq>RHAXd`Yf_hLS4BEqR$A*#OcZHP#s8@U>M|O;GdE2XPwj1$>aIvyq1_YC~8+!Nz+9o)~$6y?Ir&7Bwv1S=0>*qmoKui_qd6mqVONg zD862+V>v~2a~Me{oyBS8XjXlV+UGZ9KU}83l7A6h_h5g%Dy^+!8j+2>w;kC3+(%`9 z6cz7%YL2{?6;!O2I_vaGsm4BOQt?sAY)hLBUp&js#sv0FgUN$iS%lwYUhInHp3HDMp9$2>XTF_yTropV>|99>$Pj)KCkO z$J`*B+Qe>O23<}Ub*AZUaLIm(Q*xr(^TJ-qhthcy$ifPW+1x>XQ)Pf(hGEdeN4Aqy zSnt(EIZw<^Aji~VDynVprKdKRO<*z_RtzdGw~feZD-t^v5CaQSFKa-3ZZ~YDANvqP zVf5qm3$)f$jRl)W<&O^INz~x=uJ5de1%}qPil0Aj`PJYK(!T zN!ds2hYyscBcd05Bp;~@?qgpsCiS0x?5s`$lUBkS>k!rQGU|1r!g%m$4!&2I=rxo~ zxhtO)WpAb?YR4+`E_9^pMDR*Z!rh9ZBp8BJOllVt;x)CJD$^Q*KEN@cAA!r7m<9G^X~Sh2Dj! z>>pO5BHfYwl(Tl3>dY0n^bab7+voxaF@8jv12%}tb4O>clita}9zbz;3|+ufjr))n zj$n866*b+zWN?e9Y(KEIt*`9|d!K-JcA)}YUdLu9)37)6jh)eY@Z%DWNz`MHt0Fn~2<}S?r_Zkku%9y+j=6}gik9s7{3A*{ zwd>JTOk(*Fc6_M{s^9o+xP5OU=w$ef_8RKEdKn!xf8go`n0XL-9863)0miK5Su0@y zSIIN-sgbq?T}0*3-2>`nd+9YfLB+S0F2|U$*bh8SeYgX=w}s>&mNN^x$qS>%g*3<6 zk+vh*MOl@Cz50vP&bN`Rda#)}NV^P3_FXlEkzePot?ZfCV$ZfH6@-~cwTa}G*F?UN z;NCMja)kZ&`QT`LGMlC7B`4UE2w!W%42~e-J0NFUqNz~VcF!9OVJ(@cP~W0rQIW{@ zn>x22wZ4K>KN68$C8LAvCzXZscuI4u{v6r%V6<0(pG#6}t{y#NeCa_|ZWcLbd?I)} z{(S{@{>5?m)E6> z$VWO$5qxa{JyH$HrpuFsZXpttRlBhFqIlT{>inDO(tAKB$}YH!ADv`J>`*kilj>j? zm4h>~fJ|T+R@fG6KSrFs23zYOVMM@_WQo4iCBGT5iKv_$WA|=2)zh)ap%HxuJ@CNJ zMB?m>`Vb3?i$n*a@fffPKXS?kb`rb7vFK~a6@9iS4691QK6G2UN4DS-&Bn`ZugRg(3 zOTtguQ?c7E-KlAx!M0MM*TL+4+*Tck@L!NZV>Fc+4gR7Ns2-#GfyR@ut7`OOWKj+~ zdxb!a)kx6oQ4dq)*+CqNZ&&7t-RU-Li&b?+PyOi#j4Pk%tH>&`*{kh?mt>~0k_&%M zgI%sb3jMLE{#?CWCE^5^zzBb`Z*Y>oyD^&~;MH5!yA4mML)XMRcIu;$SaGDVfN^T^ zq{(<~4Lo8vp14$5_7{uN1<_VjWjALlv+sl*#U>W^q&D{l{_n8+cpX1}K#e1a`TFC% z`;oPK!k`@T^kb$i=nDCaZa3J{(WqS%wnj$+v&m1jAS)|FF)ph16p3 zQbOOL~CqH!Zoc@Nk%1wUzz-fs~P zYA~O0UDkE&GGu5#a@Vr0dmIugmGQpYO zafiE4SdX3Pn6T4H=%Ft&yg(mJJ$VaeEXBu8;>*>McXkji97$IIH{H`Qy^!AzDx33& zksGk1>|jGSZ0$J`4d>GijPM#POMrC_WA;z@xi|KlkDkYGb|7Q-N3ws&$Hp?|6=Llc z*hnX`_YzcWN^wVVqSa*VYc{$js`W zBdbc$9Yjm9&LeQ%LrBbrs_I|rS-BZ=KJ#ybKJH>m^O?~sx^LQGhl?1e4tn^-TKpMt zDNj9!xAx@U?_BMk5IBl|%%Mx&V0D39aRxjHVYK?pYZHjGftd%gqWfI=1^hpQg(pJd zDcBJmjOL%K{9ySu#(hHW?4g%z7^tv&vrW$C$mz2zTd?Ls$oaZD#l2sMHp_UJIZchCS|v`xsRh=|(d9 zJv==d*l>WIp)}Hls5FF?EMf+~sb4CY!mKwU7_{eUs%?F*{y9j1|dD)*+8+==37%`sn7*TvHtFJ;twIF^71tuE(r;DjqPOk*44mS>SRJSmS$o zf8A40AL%I?5N#T$UmCKqMWkiby=!gxx>Hw%jN_5NwY? z62FkzQ0A2x6mm~nCW3Ri=Xm$wMXmVVD{v?sXq}7^Zz0X0j5Glq-oP5%Q%x>1Zh=4e zacu-LdB7~(lN5)L<|$^VB_BM;Wh4{1suc4N=C{T1_v`#N484zx=CCWGJ%1bb976+V zSV1^4dxTZRf^oeo!V>%N+h06wHWuYD-@WLmKhN=J zT-PT1(j~MTp8kvb9}9lOmI{aB@Em_1IQos}HBL8^osm}vnW5`atDmJy-&M=_nAX@?a zdn{jFk;5e{HaoVIT`r=@MM%&+8Mg*2yn^*VLziJhwx&e7#n@tZKA(WK|H8_yBFPoV zED%ZTCQfCCZC2o(GVHq^krBx84Hi8W{&b$cwY&67b(gYeEUWaR2V|&C2ZMFb0s1ko zWN@6`)Gz<2t?>ASWSyyXYPH9d0vp|T3dAAzFRewYsenvnq zaH7MH-IjX%c88RZ|53evV*baOiZrSj^{dlzgq-7+ok1_@A9Cc$@Y2ORrwP@j&Ty}an>`**Md_nh-T&WCJL`(?2%MZJ6=$e5GMWiRsHOW%AoP6hO& zC$lv%Z9NFS*S<1o=!SX?5B(!A9p&lmtY=*-R3f_1*U)|Ynw`;J);*0Ls&>dq9oKW+ zb4AaP!nU%vzqf{IuDa{S^a?(Qz3f4w5jF;69%UE)A^U4D@f0^JxhVfRp;S`KveWUz zWU`Hs;!fE|b!NCeqzgEQbt!ghXPZ0Ty558)Hkw=n3cMko`z^`I<_%Sd(MX0JHaa6m zkR2bS;+KWpl%kqwW^b~~`^z+;ODaGeq6XcXTGM1HtOlCR-T}X4>L;Cgfk^tKd1+!&qsc)RPci2m{e4@sqy6Y+ z*<$_eWjfIg;}2b^-DcG-(Bb-`E=HGYH*BF1c})e* zC1nD6EY;pwWIl(%>)NWjonzKfRoz6LAuZn4k<4u~bqcpHy0iQuvy2DFm<+0~Lmsv0 zjjIh3WK!8}Gj>5W_WlN6oJEJ&2JVQUn`n}hf@R;p%36X~W$4N1Puz?x%kbSXAi#Vu zBZ98>G*quIQCC?(cSr`RZXV|?J8tXgS!)EM9YKdf=!A@^*HM+3ASda_Y)3tOG4=Ef z#PFC@CU$b7VJp8q2+DO}jYq(kFd}R&{4^alyqvsaJ{bO&)t%*>Q98JB53uwRC_D({ z3xJLGB7+|fg51DY-p~cv5G;GBN>a^F&%VJNc#Du{O(2(U1on0$JC6hrK2X_;!Bf(~ zmD6$WW4t*pxk^mAOI79&`DklUCm&MpihfryyAxpJemKW9`nY|`qLMO`1I+dnY_cKQ zeM2Ji2lC1ncxodK5KbO<*GQ+izHjjjBcj# zwDaWPpXq8m#})2-MCwyV7z+P)-*eIh{JY2rk8`j=_bn;4$za1--Eks+5GOl|F-|4? zwgx=GWzr-0N<<9U!-&h_ZZ3nn0m83BZWV~@?kT!9=pz^le#=a+A@6qBYcH^O5{!B) zpZ_Du??)2X7$t_}ByKh5Pj;B(eAZu*l~&~b9Yo?s(0Mhwt=_RWcY^Z<+tE`8WOEj5F3POtaP<$? z7aK{sXPwUy`5VERCK3ClagBTCU14SJ-q?S#1iNv2Q9rP9_Y{3u`HZKoCNlbyCoCdz zwxwP(3hPTN?%NsG5)q?#hMT99C$b0ASCNa=?%*2w=BOPu!G3aq{f@Zrit**#!BcyW z>RJvWR7|vS8;SSl${>8>2h!S&wBllid$>Od)_RFkQfrZVdNj5KynRGFj4XH5eV-UKDGzzTe@>MB@SR{G?JgBzddlJ;ekhwut^v8lAZ08ax|TO?OWzA{c_ zP&g)-aGolvgH<*ls;=N( zYn?=Y)&g6JeVQqBF4TqP^oDOtrK`7EwB5f0tEVxC@~kH<)$?x5sU#dMgL~c%`M&@a zTx@9_T|;<=EvKeF`b)yl@Ln)G274uEIb(U8nB>OxrQm8cZ0jGK&CNRMp_9ivGZIen zosOu2as`|}h&Ge)`^-Eo5!qB_m;2!PDP$W}*U?nuAG2Fi7rjNntd_x1Yr|4}IiwoSqq z2E^#kDv!ZbWAfCtM8s6|RS$sEr3U8%=~7?GK1c)Xx-V70Yp}ma{HQOZ?6YOq?Mw&u zx}6yLz>WZHWe%rBrtqZE_(~)zci#ozVSUXxC6EFBSd)6fcA{D-&gCVL*;Fa=;>VMS zy}iNO>Y#US@L(vbDNYP7ss9lT{^EIk>8)KuE%_ha{4Y3X@RL)Fjp3)Ak!Tlm-<;7i zs#WZiG_lvPXE!^kM#qsa9joVwP&u%Nu@XWaT@sDBXZqc&{1Ygj5`^kWbY4uiLl-LZ zW$>8*5IP;24Mta6V4i;^yPnF=dGPFUoHdBAF5@d9#DY=qz%+200 zlM4GtJ00fNf$``$!2$yC-csO2Rp1N=@(Q2G3U7Xb+$J+Z4-haD5>3rq zwj$qT_*OGkItHISL8a^xY~B}NTS|QXjc!iijoF!BQfWjrd_D7T!s*f=RTMwIr?yL3 z?as0{Kl@|p=g9=R$x!NhYdQ7mt2t3jr+zM(g6(EkvFPDS!r6&gDlJ`jMd<13qc4D> zx7kn1Y=3(znW?bA(>jbjyx&y6|0ip0Mem-d_U5r_uJ`FyvJm~9S6$hmTLVwZA`?J^ zqU4GNspf{V@6Z5QH%4naO0dzyGlIrw^{FZR` zv1cLYomdf_c4+(tC(c{z*L1u3lbOKhOu)vo-+g~IK?xMPTDL^ zQD;3}3+2ZY#y$0nCcU|dG9^A#4> zg5JX@_VTW1hZA!hv?B$nt;Io;|H$zCi45$n6P@0oWk zRh&QhK`u~L#=-qssqdyCJ8jk3uYG6}$Z?opJ31TA(f>Gr9oJu+{NYT!O=%CBN}N9F zZ!=3?`o1oLM;4^JZX28OSkVlkPZ}7`bdcu&(Y7@RmmR4kC;v*QG(Cwu>A5#1z%G}; zbbGeZQACXsTt8dogA*iScVsVqkVu_1g&1X{sz%pUYPt(HOKk2>N)J#|ti2iCLm%k; z7M)$c#WQ{(+hJf$BH7B_?i+EI!F1Z$2y>4U0rlAFSV4{&NB45#d-^$}=v5mFBb;cn z*}0q+-c3Y)LBHr|_K0gs1I|z1Xa97+>BT7q1;48&p?a0`Ro9_kqyRqF&nBX0U_Ixi z+R@!#R=Qx@JJ4P)dRku*<=h>=<=Eg>$)pR>-RP%3$QkmhleRoNkb&5+i?zF{E>xx0 z_kkQnyZh)Gr~q#$LOxeRIMsyYDxt~a>`MBBd&!A8{fP3XK$tk}j+6vtvdJ-GTLOGO zJ`wOH{#-$?(9_7WbD-Z=oDWMw?$VI`gRz{g=|F7ntkNUVeN-hj;=LEZv!ASE5w@04 zwW8xZR8?b-HYstZsBS?wN^!E}&EQsVY^V=1ze;YlpNMdsm|vfrq0f33y?w_)dU~z7 zzlteMj^qb2_CWVX2;< zw@{VIRGw2SdImboK{H$F!Ep3=HG|cxc5{4Uc02LlbGKk?MX9Wfg-_k0$D;}M7n@U7 z=c$9`CYlrm?;qK6&u5bt|9My6Rs4+RU~*@tE>IdKg3r!!%PvFUidPt59s_ugkuej+=E zoyirR6Xm?%OIqENIetVA1zG1mc3c0#bzZ~y&qVY5c;NIbx(AZM=Z=vn$0XXXC-Ph( zay$b&uCV6s?B@9Kgm=V?G5CLaeH1=YjUC#JoYOmC7qhb1bV>i?JrWPG4Ik;D(%I#v zI=iqg<6lPaQ$umzel(2e^p1?-I_y3W?Qc~Lg?9s>mnWR^bKkNugns36`XqcLGhDPN zy#brl3t6tG(@D*XBh>(6{~9{IUrR^*2%Ct)UJ9vR=94!gr&OMhA618ejfUUcp{l$D z78OgiWH2NDgq)E;!_u>03;Uw+}zkbZOF&)kaR4{K}NTF8{9ePvg_zX9!3{%@h zWrnvhQA9%}qm`fNH$h=rbMY?C(>0xBxrPVpk$%NVKWQrH?g|?g^Jq@di z3ERv|Z|yW|WsY-3=c7m1hpgx#=gXJaUBtAMT=$&Zbs>^D$eX1K!TyD)TLNwxm*}`y z4d>ihdL1F->GRAk1?(SsgOad?J1-4Tq) zf^8(1L@>Wt(Hakc*-VE+q-GXzWecmf^lACQk{)AY3+ebN1zw$Ggiy})+yzPU5;X?m z`EOvZnPH*z(PT58SDPqxn_leAwj-=y9j8kDoC`3A0a8jGFqz!S6}j17tnDu+*%;;0)3P&P^Z0ZW~HG?%JuxP`jN^Hj#$BVT0vwl?VRq#B zbEqn$mbqNj6YT4WRjyU-+4~b3NSP!ku?M@k0Tp8M@{B2 z?+kHwXz!58r67Zig?3lNT(=XO+pxa8U{y!(JS$8g1#JHbSbL7$i4y3k2eHiUBYDAY z)KR$nEHa-dctb;^d{}j%t}+H|_KCK^tgP=TEc_$<-+k|E1lP2nr@@y@eKwj;gLX>5 z0^A*&Gg66uv61XpG$-yw@*bK8YOokQYctyV3V$fV3jE11=JAe^1w^J`-r&&0HpJE@ zGmjp01kOdjm5|g$vYR?c)dN4;3is&2*r9y2fCF!!Km02;T$#AhpAM#@`1o|>7XmgH z1)XYQ=V3(Bd@urccfTf_d=&m(mD6@->9kX@I6gSbp50o*v4df;9%`YbY?ny(*k zq_}QdkkKq7qJ+S5G9jyMyhq|TyAt`Rz$W6ZYgprA*h?!;q;3R7AA=SN>CyFtR}5fQ zS;5{DV1E)Sq6@L09`yTnW|!|DIr(=w;%-V;`k4O73;731oMDa=sW1$}|Aw*pPWWjT z?mLK%!^pgf<8vdZleLg%$bB%JA_jGlJ@kycz>~9q_$^r9Bi;h@lQ*DzW*i4!Nlw1w z?pN+bdT&^}4?eMjd3{xJU}P}_u_>TwX0;k#*PSzqx6x@jswe}#< zv#H419}P6evQ~pciSSPMO~3Q#s5;Fm`eFm$=+}$KX@E!keht~l2(Dj<4hq9hj$$RT zsiuUf^_P`B<%b*`dJgR^hu z%&9MK`@UqkHK ztraiE65qh}+Q5RBlmGW6H&if`CHUa~z}5!Dw4oqk9T5CEy;T#*=?W;6?0rcZ{u0I*{M7e4{oXn*mgyigL3Um zJTnqRb8EGqSyLAFb#Jqu>`SHhDwUmZ&eZzpV36()y!tKAbl=zRkL9f)4_ZL9U61w> z!+<+Wd~9?qcAJBl?4g72HJ)0ZH!hTf$)}T4@*TaoetwAfo0PE+q2HNQcO0<5-EZj# z@9!h4k$nTa#*I+f@xfsGKQ)#8nia^5iWEKMgNOxhi2xn2!0%KP-r9F$`(vqY^#up! zQ(y0a?X)Hb-OCsOc)cc*-ztxY>&4|Fe5Wrs{soz4AvY}#)_KWGX7bqxWIc}AyKm2( zgPV&N+f+tMqQVz{~SzY0G{!HHyQnApW`(#w5ro|TjDg>_%5*B7Yd7FT148lh!yb}L_UPPnC0bbto@FE6 z#)bjR!XH9G$8MZ1NloON%PGnNwlWo?I{bD8-c^vyH-g=o!_iFm5gE@`(6FAgXT5ag z5C!Lh+#}(Yipt*%;(G@o);sJd4=4N=sy5i{QCPr6qW?!U-;X_%2%=V2>MsMau#sSm zq9Vgv@L+gFh#_s5#e1TAIP*zOe&%-V#)aE%B9ARaO>du_%3DHu>&KjG+{62IcHzmP zc<~7KddiUt#^IEmAE)3dM4!zl!uwBpkWX4F8OQ8Xd8B!lqFhE7e$;M%n7GK}BIxl4 z4)TkN$}hUR+Yn!Kk^ij2Q~IS*PCuXW#dI-R|PMsT53{GpOSd`%0tkB=-~z=IcnRp($@ zgTVJ4BRimgJLB{M?qk>i_WkVXS3? zo~#oPbsQ>%A3*1!_=vmr+#Gq&X1-_e^@H$;`S9Y*aMK6y!X|1kZ_1pY2H=xJ@sd~Y z;$K9M?(p$4Sjc#;Uk3)B1JB(Zpv^odAC=`X*xYiY>qEZl?vXyBK0FWK;BC;vCATZ- zBza0q{NNsbkSe+>x(9WE)@WlMHI}dV&qJc#9T-O}u%H~eE6VpbK#xV_G7~}aa>VZM z#Eh9#?o)$+MYuCBbKDP`X~k@dkoy(@HJf8|z3|?TM8<63elhBp-$ClRaJ*vdFaNXs z75|F`Con3=H{w((?0O?S-Iq$&Rr11oFpOc~cTsiF)K$MY!Iez1*>#-4Ji>le12v6o z^$0o0ZsOt(x~9Uh^Y+v{TS-=`{Vh2M&;;xHu7asnk7DGQyrW?xXU)3ONiakGk@Hl? zV}SIV>~z(aYVaFzJ;{B0=mO3#ou)S=F+Ti~D=SmiilFzj1+gz4QOF0`-ow&^!Sw;) z???7tv!dye`Z86hk+9iBDu}mDH3u`Zq2Ffc^(g3<3#)#G-9DujcmU4wgN~`$_}o&e zsg>E&N&-_2MRu)C4&IJ6PXBclIkofw=5v#`aL}`8R(h?s1@GhNz#9Os>d)Z)4A5|_ zs%G2q2Ayo^FO2$KGb$5vbxhtKn#l=(VGS{-y)V5TY$Os*Ob<*_P@oDiZ~&P3hP{HF z?B%@VO>?>FPZ^^^*as@$6w+(Z|793ra~Xrx#RGE^V(||pqi!yZR7c)v6~sB@TBa`j z4jw(4+5AT(EiS!4E!9Gp(tY|=0;qV#q~`q(UyMgp@B@1j^Eqc;kM5!dph6dH>oEM- zeP?zs6^-HWn-19KTyU;4T)iG$W8>Mgb$H{<5Z)Ycil{u2n%5p#$QT*zACrK}&`_dv z7*(7z>}jp`E^?BxBVVwoIY&5J#q1sDFp4j$SoaO9uxj8-7%d~CQP zyGso?!gLHF&wnX%$oRCY#@6PAOMHzLz- z2{xW1>aD=$Poa&}SbZnr5LHz6GNR~Wx0o*N7x$ zmE}1Z$;ocO1~O7{Jz@hmCx40h)Lr6$A2V5qhn0dKmLu!e@*M9U4Nn+E6iNcJx&KSc zT)4qkxIt3b(i(j6Ci!b)es_(k?_#hc8&)|HS^HtLY4uW2WENk?u*S|H+yI^)PQ34q zJ=Ww2k>G**rq>YI-wpQJ`zksJsrLmD;oSdwWg}=D2WC787MPaLUh$Nnc>h#Jn#1)S zs6pjq-8aZ^Zi3_!;7Ju(<0Q52ZY&(b zeFu115UoB~`Ha;i0+mPOe`i4V7R=p!%l0YskqG^*1uNbD(sf9z7FO|y5kF#!y|9*d zJnJg+8^P#jSi^9nH;e1~p@Beh<-?$P13tM#yf?5kw*$5c^{cx`>MrxU4W}52gqI;L zw{M?dv?P$7WGh{f&L(DXkh;V>o_GQ_wuwIniGS|9 z;kvNi-ehryxX1k;WG14+Q=sB=a+FAv z>1#6Tv?wed&a<*V|%s-C+G_xrs2&F3Rfn!}t}2lETIz3|2|(#GohyD7Hg;`JLG zru^;mq7DUW7sh=BxedV4O{^auXMU0qkI`>8o|JVJq=-Lcl7vMJs$vSJ+So@CM zgBY`#bQ%F~@$?5jUdt)8y*3KxHYmF**zknPyv_Fwqm@gda#4zTQMN3iwxnyzZApo} zgxDi!?Na~5?p3qfs^XUC_RwFkg0EGBSXjf+STVSbHNW8WP<-BFN$deN4gJ`GWrter zDC}4KLLtq-s^;ohc7MR=s43gdkLk7bsU^%`$GvW~-^p_SKp)jvK3zIf?k^4WIxgj7 zSvu6nsuS68TANBw)W?P^)yeE|`u{K;s*g`K@{!Sr^g!`oS{!ZUm(pURnvW#^03@H3 A9RL6T literal 0 HcmV?d00001 diff --git a/Common/sounds/Search Skip Search 5.wav b/Common/sounds/Search Skip Search 5.wav new file mode 100644 index 0000000000000000000000000000000000000000..e111207438f352e93e973e8e1f95a210ddf90d92 GIT binary patch literal 42994 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 AD*ylh literal 0 HcmV?d00001 diff --git a/Common/sounds/Spin Up Search 1.wav b/Common/sounds/Spin Up Search 1.wav new file mode 100644 index 0000000000000000000000000000000000000000..468f6f74fd80ff38c451523b473e3edee527590d GIT binary patch literal 79122 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