commit c5f0d57a7dfa4090175a5dc974ee4c0bc2c0c021 Author: Pyo Date: Fri Mar 6 13:24:18 2026 +0900 카피 버전 diff --git a/.vs/ofx_scanview/FileContentIndex/e665ea3f-f429-4c8e-b381-ae265249b47e.vsidx b/.vs/ofx_scanview/FileContentIndex/e665ea3f-f429-4c8e-b381-ae265249b47e.vsidx new file mode 100644 index 0000000..073aab7 Binary files /dev/null and b/.vs/ofx_scanview/FileContentIndex/e665ea3f-f429-4c8e-b381-ae265249b47e.vsidx differ diff --git a/.vs/ofx_scanview/v17/.suo b/.vs/ofx_scanview/v17/.suo new file mode 100644 index 0000000..8bf7a12 Binary files /dev/null and b/.vs/ofx_scanview/v17/.suo differ diff --git a/.vs/ofx_scanview/v17/Browse.VC.db b/.vs/ofx_scanview/v17/Browse.VC.db new file mode 100644 index 0000000..03622e2 Binary files /dev/null and b/.vs/ofx_scanview/v17/Browse.VC.db differ diff --git a/.vs/ofx_scanview/v17/Browse.VC.db-shm b/.vs/ofx_scanview/v17/Browse.VC.db-shm new file mode 100644 index 0000000..8326106 Binary files /dev/null and b/.vs/ofx_scanview/v17/Browse.VC.db-shm differ diff --git a/.vs/ofx_scanview/v17/Browse.VC.db-wal b/.vs/ofx_scanview/v17/Browse.VC.db-wal new file mode 100644 index 0000000..e69de29 diff --git a/.vs/ofx_scanview/v17/Browse.VC.opendb b/.vs/ofx_scanview/v17/Browse.VC.opendb new file mode 100644 index 0000000..7ae4e93 Binary files /dev/null and b/.vs/ofx_scanview/v17/Browse.VC.opendb differ diff --git a/.vs/ofx_scanview/v17/DocumentLayout.backup.json b/.vs/ofx_scanview/v17/DocumentLayout.backup.json new file mode 100644 index 0000000..8685b53 --- /dev/null +++ b/.vs/ofx_scanview/v17/DocumentLayout.backup.json @@ -0,0 +1,41 @@ +{ + "Version": 1, + "WorkspaceRootPath": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{7FD42DF7-442E-479A-BA76-D0022F99702A}|ofx_scanview.vcxproj|E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{7FD42DF7-442E-479A-BA76-D0022F99702A}|ofx_scanview.vcxproj|solutionrelative:src\\main.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{6324226f-61b6-4f28-92ee-18d4b5fe1e48}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "main.cpp", + "DocumentMoniker": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp", + "RelativeDocumentMoniker": "src\\main.cpp", + "ToolTip": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp", + "RelativeToolTip": "src\\main.cpp", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", + "WhenOpened": "2026-03-06T01:04:05.856Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/ofx_scanview/v17/DocumentLayout.json b/.vs/ofx_scanview/v17/DocumentLayout.json new file mode 100644 index 0000000..8685b53 --- /dev/null +++ b/.vs/ofx_scanview/v17/DocumentLayout.json @@ -0,0 +1,41 @@ +{ + "Version": 1, + "WorkspaceRootPath": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{7FD42DF7-442E-479A-BA76-D0022F99702A}|ofx_scanview.vcxproj|E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{7FD42DF7-442E-479A-BA76-D0022F99702A}|ofx_scanview.vcxproj|solutionrelative:src\\main.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{6324226f-61b6-4f28-92ee-18d4b5fe1e48}" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "main.cpp", + "DocumentMoniker": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp", + "RelativeDocumentMoniker": "src\\main.cpp", + "ToolTip": "E:\\Work\\OpenFrameWorks\\of_v0.12.0_vs_release\\apps\\myApps\\ofx_scanview\\src\\main.cpp", + "RelativeToolTip": "src\\main.cpp", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", + "WhenOpened": "2026-03-06T01:04:05.856Z", + "EditorCaption": "" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/ofx_scanview/v17/Solution.VC.db b/.vs/ofx_scanview/v17/Solution.VC.db new file mode 100644 index 0000000..4da282a Binary files /dev/null and b/.vs/ofx_scanview/v17/Solution.VC.db differ diff --git a/.vs/ofx_scanview/v17/Solution.VC.db-shm b/.vs/ofx_scanview/v17/Solution.VC.db-shm new file mode 100644 index 0000000..fe9ac28 Binary files /dev/null and b/.vs/ofx_scanview/v17/Solution.VC.db-shm differ diff --git a/.vs/ofx_scanview/v17/Solution.VC.db-wal b/.vs/ofx_scanview/v17/Solution.VC.db-wal new file mode 100644 index 0000000..e69de29 diff --git a/.vs/ofx_scanview/v17/fileList.bin b/.vs/ofx_scanview/v17/fileList.bin new file mode 100644 index 0000000..d99d3e3 Binary files /dev/null and b/.vs/ofx_scanview/v17/fileList.bin differ diff --git a/.vs/ofx_scanview/v17/ipch/AutoPCH/c2327fd715b4c216/MAIN.ipch b/.vs/ofx_scanview/v17/ipch/AutoPCH/c2327fd715b4c216/MAIN.ipch new file mode 100644 index 0000000..a3a637d Binary files /dev/null and b/.vs/ofx_scanview/v17/ipch/AutoPCH/c2327fd715b4c216/MAIN.ipch differ diff --git a/addons.make b/addons.make new file mode 100644 index 0000000..d291b34 --- /dev/null +++ b/addons.make @@ -0,0 +1 @@ +ofxJSON-master diff --git a/bin/FreeImage.dll b/bin/FreeImage.dll new file mode 100644 index 0000000..ddf9120 Binary files /dev/null and b/bin/FreeImage.dll differ diff --git a/bin/data/settings.json b/bin/data/settings.json new file mode 100644 index 0000000..b8428e5 --- /dev/null +++ b/bin/data/settings.json @@ -0,0 +1,8 @@ +{ + "scanDirPath": "C:/Users/Indigo/Documents/scan", + "scanDirCheckDurationSecf": 1.0, + "numScanFilesToKeep": 5, + "numWarpFilesToKeep": 10, + "fadeDurationSec": 5.0, + "transitionDelaySec": 5.0 +} diff --git a/bin/fmod.dll b/bin/fmod.dll new file mode 100644 index 0000000..f14da27 Binary files /dev/null and b/bin/fmod.dll differ diff --git a/bin/fmodL.dll b/bin/fmodL.dll new file mode 100644 index 0000000..4aa0811 Binary files /dev/null and b/bin/fmodL.dll differ diff --git a/bin/ofx_scanview_debug.exe b/bin/ofx_scanview_debug.exe new file mode 100644 index 0000000..2859ba6 Binary files /dev/null and b/bin/ofx_scanview_debug.exe differ diff --git a/bin/ofx_scanview_debug.pdb b/bin/ofx_scanview_debug.pdb new file mode 100644 index 0000000..5aef460 Binary files /dev/null and b/bin/ofx_scanview_debug.pdb differ diff --git a/config.make b/config.make new file mode 100644 index 0000000..e69de29 diff --git a/icon.rc b/icon.rc new file mode 100644 index 0000000..7e26eb3 --- /dev/null +++ b/icon.rc @@ -0,0 +1,8 @@ +// Icon Resource Definition +#define MAIN_ICON 102 + +#if defined(_DEBUG) +MAIN_ICON ICON "icon_debug.ico" +#else +MAIN_ICON ICON "icon.ico" +#endif diff --git a/obj/addons/ofxJSON-master/libs/jsoncpp/src/Debug/jsoncpp.obj b/obj/addons/ofxJSON-master/libs/jsoncpp/src/Debug/jsoncpp.obj new file mode 100644 index 0000000..104259e Binary files /dev/null and b/obj/addons/ofxJSON-master/libs/jsoncpp/src/Debug/jsoncpp.obj differ diff --git a/obj/addons/ofxJSON-master/src/Debug/ofxJSONElement.obj b/obj/addons/ofxJSON-master/src/Debug/ofxJSONElement.obj new file mode 100644 index 0000000..8094a8f Binary files /dev/null and b/obj/addons/ofxJSON-master/src/Debug/ofxJSONElement.obj differ diff --git a/obj/x64/Debug/Build/src/Debug/main.obj b/obj/x64/Debug/Build/src/Debug/main.obj new file mode 100644 index 0000000..4e33a3e Binary files /dev/null and b/obj/x64/Debug/Build/src/Debug/main.obj differ diff --git a/obj/x64/Debug/Build/src/Debug/ofApp.obj b/obj/x64/Debug/Build/src/Debug/ofApp.obj new file mode 100644 index 0000000..c44b268 Binary files /dev/null and b/obj/x64/Debug/Build/src/Debug/ofApp.obj differ diff --git a/obj/x64/Debug/icon.res b/obj/x64/Debug/icon.res new file mode 100644 index 0000000..1c17250 Binary files /dev/null and b/obj/x64/Debug/icon.res differ diff --git a/obj/x64/Debug/ofx_scanview.log b/obj/x64/Debug/ofx_scanview.log new file mode 100644 index 0000000..e0ffe88 --- /dev/null +++ b/obj/x64/Debug/ofx_scanview.log @@ -0,0 +1,19 @@ + ofApp.cpp +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\utils\ofUtils.h(1,1): warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofVec3f.h(1,1): warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofVec2f.h(1,1): warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(326,1): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(331,1): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(912,12): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(913,12): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(914,12): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\openFrameworks\math\ofMatrix4x4.h(915,12): warning C4267: '인수': 'size_t'에서 'int'(으)로 변환하면서 데이터가 손실될 수 있습니다. +LINK : warning LNK4075: '/INCREMENTAL'이(가) '/FORCE' 사양으로 인해 무시됩니다. + ofx_scanview.vcxproj -> E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\bin\ofx_scanview_debug.exe + + 2 E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\fmod\lib\vs\x64\ + *추가 파일 6942208 E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\bin\FreeImage.dll + + 1 E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\libs\FreeImage\lib\vs\x64\ + *추가 파일 1826304 E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\bin\fmod.dll + *추가 파일 2041856 E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\bin\fmodL.dll diff --git a/obj/x64/Debug/ofx_scanview.tlog/CL.command.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/CL.command.1.tlog new file mode 100644 index 0000000..3e4c313 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/CL.command.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/CL.read.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/CL.read.1.tlog new file mode 100644 index 0000000..9f8a03a Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/CL.read.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/CL.write.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/CL.write.1.tlog new file mode 100644 index 0000000..78bbeea Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/CL.write.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/link.command.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/link.command.1.tlog new file mode 100644 index 0000000..c76f346 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/link.command.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/link.read.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/link.read.1.tlog new file mode 100644 index 0000000..14f3799 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/link.read.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/link.write.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/link.write.1.tlog new file mode 100644 index 0000000..796aa26 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/link.write.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/ofx_scanview.lastbuildstate b/obj/x64/Debug/ofx_scanview.tlog/ofx_scanview.lastbuildstate new file mode 100644 index 0000000..1c4c4de --- /dev/null +++ b/obj/x64/Debug/ofx_scanview.tlog/ofx_scanview.lastbuildstate @@ -0,0 +1,2 @@ +PlatformToolSet=v142:VCToolArchitecture=Native64Bit:VCToolsVersion=14.29.30133:TargetPlatformVersion=10.0.26100.0: +Debug|x64|E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\| diff --git a/obj/x64/Debug/ofx_scanview.tlog/rc.command.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/rc.command.1.tlog new file mode 100644 index 0000000..03ec7d4 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/rc.command.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/rc.read.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/rc.read.1.tlog new file mode 100644 index 0000000..0b27261 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/rc.read.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview.tlog/rc.write.1.tlog b/obj/x64/Debug/ofx_scanview.tlog/rc.write.1.tlog new file mode 100644 index 0000000..d747be6 Binary files /dev/null and b/obj/x64/Debug/ofx_scanview.tlog/rc.write.1.tlog differ diff --git a/obj/x64/Debug/ofx_scanview_debug.exe.recipe b/obj/x64/Debug/ofx_scanview_debug.exe.recipe new file mode 100644 index 0000000..adfbb38 --- /dev/null +++ b/obj/x64/Debug/ofx_scanview_debug.exe.recipe @@ -0,0 +1,11 @@ + + + + + E:\Work\OpenFrameWorks\of_v0.12.0_vs_release\apps\myApps\ofx_scanview\bin\ofx_scanview_debug.exe + + + + + + \ No newline at end of file diff --git a/obj/x64/Debug/vc142.pdb b/obj/x64/Debug/vc142.pdb new file mode 100644 index 0000000..ca07c44 Binary files /dev/null and b/obj/x64/Debug/vc142.pdb differ diff --git a/ofx_scanview.sln b/ofx_scanview.sln new file mode 100644 index 0000000..8ccef9b --- /dev/null +++ b/ofx_scanview.sln @@ -0,0 +1,25 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofx_scanview", "ofx_scanview.vcxproj", "{7FD42DF7-442E-479A-BA76-D0022F99702A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.ActiveCfg = Debug|x64 + {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.Build.0 = Debug|x64 + {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.ActiveCfg = Release|x64 + {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.Build.0 = Release|x64 + {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.ActiveCfg = Debug|x64 + {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.Build.0 = Debug|x64 + {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.ActiveCfg = Release|x64 + {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ofx_scanview.vcxproj b/ofx_scanview.vcxproj new file mode 100644 index 0000000..90b71f3 --- /dev/null +++ b/ofx_scanview.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + x64 + + + Release + x64 + + + + $([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0')) + $(LatestTargetPlatformVersion) + $(WindowsTargetPlatformVersion) + + + {7FD42DF7-442E-479A-BA76-D0022F99702A} + Win32Proj + ofx_scanview + + + + Application + Unicode + v142 + + + Application + Unicode + true + v142 + + + + + + + + + + + + + bin\ + obj\$(Platform)\$(Configuration)\ + $(ProjectName)_debug + true + true + + + bin\ + obj\$(Platform)\$(Configuration)\ + false + + + + Disabled + EnableFastChecks + %(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + %(AdditionalIncludeDirectories);src;..\..\..\addons\ofxJSON-master\libs;..\..\..\addons\ofxJSON-master\libs\jsoncpp;..\..\..\addons\ofxJSON-master\libs\jsoncpp\include;..\..\..\addons\ofxJSON-master\libs\jsoncpp\include\json;..\..\..\addons\ofxJSON-master\libs\jsoncpp\src;..\..\..\addons\ofxJSON-master\src + CompileAsCpp + true + $(IntDir)\Build\%(RelativeDir)\$(Configuration)\ + stdcpp17 + /Zc:__cplusplus %(AdditionalOptions) + + + true + Console + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + MultiplyDefinedSymbolOnly + + + + + + false + %(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + %(AdditionalIncludeDirectories);src;..\..\..\addons\ofxJSON-master\libs;..\..\..\addons\ofxJSON-master\libs\jsoncpp;..\..\..\addons\ofxJSON-master\libs\jsoncpp\include;..\..\..\addons\ofxJSON-master\libs\jsoncpp\include\json;..\..\..\addons\ofxJSON-master\libs\jsoncpp\src;..\..\..\addons\ofxJSON-master\src + CompileAsCpp + $(IntDir)\Build\%(RelativeDir)\$(Configuration)\ + stdcpp17 + /Zc:__cplusplus %(AdditionalOptions) + + + false + false + Console + true + true + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + MultiplyDefinedSymbolOnly + + + + + + + + + + + + + + + + + + + {5837595d-aca9-485c-8e76-729040ce4b0b} + + + + + /D_DEBUG %(AdditionalOptions) + $(OF_ROOT)\libs\openFrameworksCompiled\project\vs + + + + + + + + + diff --git a/ofx_scanview.vcxproj.filters b/ofx_scanview.vcxproj.filters new file mode 100644 index 0000000..5983702 --- /dev/null +++ b/ofx_scanview.vcxproj.filters @@ -0,0 +1,75 @@ + + + + + src + + + src + + + src + + + src + + + addons\ofxJSON-master\src + + + addons\ofxJSON-master\libs\jsoncpp\src + + + + + {d8376475-7454-4a24-b08a-aac121d3ad6f} + + + {4EC14D22--CE7-E-49-27-B-932-B4FAB3FFF5E5} + + + {ADCCFEFE--0CF-E-4C-A3-8-2DB-A4931D49920D} + + + {2C274A7D--153-2-48-FD-8-3E0-F227E5A7C233} + + + {E70EF5EC--3DE-8-44-9E-8-2AC-BE2A495023F9} + + + {9CDDD1CF--F49-F-40-7A-8-67A-DAC66879FD23} + + + {F11E7225--17F-5-4B-08-8-346-1A65CBCEB04A} + + + {41F436D1--33F-1-43-89-A-21C-175964D96835} + + + {5F0FCF9F--253-2-4B-2E-8-05A-9B9A82A90697} + + + + + src + + + src + + + addons\ofxJSON-master\src + + + addons\ofxJSON-master\src + + + addons\ofxJSON-master\libs\jsoncpp\include\json + + + addons\ofxJSON-master\libs\jsoncpp\include\json + + + + + + diff --git a/ofx_scanview.vcxproj.user b/ofx_scanview.vcxproj.user new file mode 100644 index 0000000..8697fd9 --- /dev/null +++ b/ofx_scanview.vcxproj.user @@ -0,0 +1,11 @@ + + + + $(ProjectDir)/bin + WindowsLocalDebugger + + + $(ProjectDir)/bin + WindowsLocalDebugger + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..bef4970 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,10 @@ +#include "ofMain.h" +#include "ofApp.h" + +int main(){ + ofGLWindowSettings settings; + settings.setSize(1920, 1080); + settings.windowMode = OF_FULLSCREEN; + ofCreateWindow(settings); + ofRunApp(new ofApp()); +} diff --git a/src/ofApp.cpp b/src/ofApp.cpp new file mode 100644 index 0000000..ba9a1f4 --- /dev/null +++ b/src/ofApp.cpp @@ -0,0 +1,203 @@ +#include "ofApp.h" + +//-------------------------------------------------------------- +void ofApp::setup(){ + ofSetFrameRate(60); + ofSetBackgroundColor(0); + ofHideCursor(); + + hasCurrentImage = false; + isFading = false; + isWaitingToFade = false; + waitStartTime = 0.0; + fadeAlpha = 255.0; + nextFadeAlpha = 0.0; + lastCheckTime = 0.0; + + loadSettings(); + + // Startup: show the most recently created file + vector files = getImageFiles(); + if (!files.empty()) { + currentFilePath = files.back().getAbsolutePath(); + currentImage.load(currentFilePath); + hasCurrentImage = true; + fadeAlpha = 255.0; + ofLogNotice("ofApp") << "Startup image: " << currentFilePath; + } +} + +//-------------------------------------------------------------- +void ofApp::loadSettings(){ + ofxJSONElement json; + if (json.open("settings.json")) { + scanDirPath = json["scanDirPath"].asString(); + scanDirCheckDurationSecf = json["scanDirCheckDurationSecf"].asFloat(); + numScanFilesToKeep = json["numScanFilesToKeep"].asInt(); + numWarpFilesToKeep = json["numWarpFilesToKeep"].asInt(); + fadeDurationSec = json["fadeDurationSec"].asFloat(); + transitionDelaySec = json["transitionDelaySec"].asFloat(); + ofLogNotice("ofApp") << "Settings loaded - scanDir: " << scanDirPath; + } else { + ofLogError("ofApp") << "Failed to load settings.json, using defaults"; + scanDirPath = ""; + scanDirCheckDurationSecf = 1.0; + numScanFilesToKeep = 5; + numWarpFilesToKeep = 10; + fadeDurationSec = 2.0; + transitionDelaySec = 2.0; + } +} + +//-------------------------------------------------------------- +vector ofApp::getImageFiles(){ + vector imageFiles; + ofDirectory dir(scanDirPath); + if (!dir.exists()) { + ofLogWarning("ofApp") << "Scan directory does not exist: " << scanDirPath; + return imageFiles; + } + + dir.allowExt("jpg"); + dir.allowExt("jpeg"); + dir.allowExt("png"); + dir.allowExt("bmp"); + dir.allowExt("tif"); + dir.allowExt("tiff"); + dir.allowExt("gif"); + dir.listDir(); + + // Sort by filename (yyyy-mm-dd-HH-mm-ss format, oldest first) + for (int i = 0; i < dir.size(); i++) { + imageFiles.push_back(dir.getFile(i)); + } + std::sort(imageFiles.begin(), imageFiles.end(), [](const ofFile& a, const ofFile& b){ + return a.getBaseName() < b.getBaseName(); + }); + + return imageFiles; +} + +//-------------------------------------------------------------- +void ofApp::checkForNewImages(){ + vector files = getImageFiles(); + if (files.empty()) return; + + string newestFile = files.back().getAbsolutePath(); + + // New image detected + if (newestFile != currentFilePath && !isFading && !isWaitingToFade) { + pendingFilePath = newestFile; + isWaitingToFade = true; + waitStartTime = ofGetElapsedTimef(); + ofLogNotice("ofApp") << "New image detected, waiting " << transitionDelaySec << "s: " << newestFile; + } + + cleanupOldFiles(); +} + +//-------------------------------------------------------------- +void ofApp::cleanupOldFiles(){ + vector files = getImageFiles(); + int numToDelete = (int)files.size() - numScanFilesToKeep; + + for (int i = 0; i < numToDelete; i++) { + string path = files[i].getAbsolutePath(); + ofFile f(path); + if (f.remove()) { + ofLogNotice("ofApp") << "Deleted old file: " << path; + } + } +} + +//-------------------------------------------------------------- +void ofApp::update(){ + // Check folder at interval + float now = ofGetElapsedTimef(); + if (now - lastCheckTime >= scanDirCheckDurationSecf) { + lastCheckTime = now; + checkForNewImages(); + } + + // Transition delay + if (isWaitingToFade) { + float elapsed = ofGetElapsedTimef() - waitStartTime; + if (elapsed >= transitionDelaySec) { + if (nextImage.load(pendingFilePath)) { + isFading = true; + nextFadeAlpha = 0.0; + } + currentFilePath = pendingFilePath; + isWaitingToFade = false; + } + } + + // Fade transition: fade out to black, then fade in + if (isFading) { + float halfDuration = (fadeDurationSec > 0.0f) ? fadeDurationSec * 0.5f : 0.001f; + float fadeAmount = (255.0f / halfDuration) * ofGetLastFrameTime(); + + if (fadeAlpha > 0.0) { + // Phase 1: Fade out current image to black + fadeAlpha -= fadeAmount; + if (fadeAlpha < 0.0) fadeAlpha = 0.0; + } else { + // Phase 2: Fade in next image from black + nextFadeAlpha += fadeAmount; + if (nextFadeAlpha > 255.0) nextFadeAlpha = 255.0; + } + + // Transition complete + if (fadeAlpha <= 0.0 && nextFadeAlpha >= 255.0) { + currentImage = nextImage; + fadeAlpha = 255.0; + nextFadeAlpha = 0.0; + isFading = false; + hasCurrentImage = true; + } + } +} + +//-------------------------------------------------------------- +void ofApp::fitImageToScreen(ofImage& img, float x, float y, float w, float h){ + if (!img.isAllocated()) return; + + float imgW = img.getWidth(); + float imgH = img.getHeight(); + float scale = min(w / imgW, h / imgH); + float drawW = imgW * scale; + float drawH = imgH * scale; + float drawX = x + (w - drawW) * 0.5; + float drawY = y + (h - drawH) * 0.5; + + img.draw(drawX, drawY, drawW, drawH); +} + +//-------------------------------------------------------------- +void ofApp::draw(){ + ofSetBackgroundColor(0); + + float screenW = ofGetWidth(); + float screenH = ofGetHeight(); + + // Draw current image + if (hasCurrentImage && currentImage.isAllocated()) { + ofSetColor(255, 255, 255, (int)fadeAlpha); + fitImageToScreen(currentImage, 0, 0, screenW, screenH); + } + + // Draw next image (during fade) + if (isFading && nextImage.isAllocated()) { + ofSetColor(255, 255, 255, (int)nextFadeAlpha); + fitImageToScreen(nextImage, 0, 0, screenW, screenH); + } + + ofSetColor(255); +} + +//-------------------------------------------------------------- +void ofApp::keyPressed(int key){ + if (key == OF_KEY_ESC) { + ofExit(); + } +} diff --git a/src/ofApp.h b/src/ofApp.h new file mode 100644 index 0000000..639a6d3 --- /dev/null +++ b/src/ofApp.h @@ -0,0 +1,47 @@ +#pragma once + +#include "ofMain.h" +#include "ofxJSON.h" + +class ofApp : public ofBaseApp { +public: + void setup(); + void update(); + void draw(); + void keyPressed(int key); + +private: + // Settings + string scanDirPath; + float scanDirCheckDurationSecf; + int numScanFilesToKeep; + int numWarpFilesToKeep; + float fadeDurationSec; + float transitionDelaySec; + + void loadSettings(); + + // Folder monitoring + float lastCheckTime; + vector getImageFiles(); + string currentFilePath; + void checkForNewImages(); + + // Transition delay + bool isWaitingToFade; + float waitStartTime; + string pendingFilePath; + + // File management + void cleanupOldFiles(); + + // Image display + ofImage currentImage; + ofImage nextImage; + bool hasCurrentImage; + bool isFading; + float fadeAlpha; // 0.0 ~ 255.0, current image alpha + float nextFadeAlpha; // 0.0 ~ 255.0, next image alpha + + void fitImageToScreen(ofImage& img, float x, float y, float w, float h); +};