247 lines
5.6 KiB
C
Raw Normal View History

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <string>
#include <thread>
#include <atomic>
#include <boost/filesystem.hpp>
#include <boost/optional.hpp>
2016-07-03 17:13:02 +09:00
#include "../common/waifu2x.h"
#include "resource.h"
#include "tstring.h"
#include "LangStringList.h"
#undef ERROR
#define WM_FAILD_CREATE_DIR (WM_APP + 5)
#define WM_ON_WAIFU2X_ERROR (WM_APP + 6)
#define WM_ON_WAIFU2X_NO_OVERWRITE (WM_APP + 8)
#define WM_END_THREAD (WM_APP + 7)
enum eModelType
{
eModelTypeUpConvRGB,
eModelTypeUpConvPhoto,
eModelTypeRGB,
eModelTypePhoto,
eModelTypeY,
eModelTypeUpResNet10,
2018-11-23 22:28:57 +09:00
eModelTypeCunet,
eModelTypeEnd,
};
const tstring ModelPathList[eModelTypeEnd] = {
TEXT("models/upconv_7_anime_style_art_rgb"),
TEXT("models/upconv_7_photo"),
TEXT("models/anime_style_art_rgb"),
TEXT("models/photo"),
TEXT("models/anime_style_art"),
TEXT("models/upresnet10"),
2018-11-23 22:28:57 +09:00
TEXT("models/cunet"),
};
const std::wstring ModelTitleLangKeyList[eModelTypeEnd] = {
L"IDC_RADIO_MODEL_UPCONV_RGB",
L"IDC_RADIO_MODEL_UPCONV_PHOTO",
L"IDC_RADIO_MODEL_RGB",
L"IDC_RADIO_MODEL_PHOTO",
L"IDC_RADIO_MODEL_Y",
L"IDC_RADIO_MODEL_UpResNet10",
2018-11-23 22:28:57 +09:00
L"IDC_RADIO_MODEL_CUNET",
};
// <20>_<EFBFBD>C<EFBFBD>A<EFBFBD><41><EFBFBD>O<EFBFBD>p
class DialogEvent
{
private:
static HWND dh;
static LangStringList langStringList;
boost::filesystem::path exeDir;
std::vector<int> CropSizeList;
tstring input_str;
std::vector<tstring> input_str_multi;
tstring output_str;
2016-07-03 17:13:02 +09:00
std::string modeStr;
Waifu2x::eWaifu2xModelType mode;
int noise_level;
double scale_ratio;
int scale_width;
int scale_height;
tstring model_dir;
std::string process;
tstring outputExt;
tstring inputFileExt;
bool use_tta;
boost::optional<int> output_quality;
int output_depth;
int crop_size;
int batch_size;
int gpu_no;
std::vector<tstring> extList;
std::thread processThread;
std::atomic_bool cancelFlag;
tstring autoSetAddName;
bool isLastError;
tstring logMessage;
tstring output_dir;
std::string usedProcess;
std::chrono::system_clock::duration cuDNNCheckTime;
std::chrono::system_clock::duration InitTime;
std::chrono::system_clock::duration ProcessTime;
enum eScaleType
{
eScaleTypeRatio,
eScaleTypeWidth,
eScaleTypeHeight,
2017-03-20 21:44:57 +09:00
eScaleTypeWidthHeight,
eScaleTypeEnd,
};
eScaleType scaleType;
eModelType modelType;
std::wstring LangName;
std::atomic<int64_t> TimeLeftThread;
std::atomic<DWORD> TimeLeftGetTimeThread;
bool isCommandLineStart;
tstring tAutoMode;
bool isArgStartAuto;
bool isArgStartSuccessFinish;
bool isOutputNoOverwrite;
tstring tInputDirFix;
tstring tOutputDirFix;
bool isNotSaveParam;
bool isSetInitCrop;
private:
tstring AddName() const;
bool SyncMember(const bool NotSyncCropSize, const bool silent = false);
void SetCropSizeList(const boost::filesystem::path &input_path);
static boost::filesystem::path GetFileName(const boost::filesystem::path &input_path)
{
if (boost::filesystem::is_directory(input_path))
return input_path.stem();
else
return input_path.filename();
}
void ProcessWaifu2x();
void ReplaceAddString();
void AddLogMessage(const TCHAR *msg);
void Waifu2xTime();
void SaveIni(const bool isSyncMember = true);
// <20><><EFBFBD>̓p<CD83>X<EFBFBD><58><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static UINT_PTR CALLBACK OFNHookProcIn(
_In_ HWND hdlg,
_In_ UINT uiMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
// <20>o<EFBFBD>̓p<CD83>X<EFBFBD><58><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static UINT_PTR CALLBACK OFNHookProcOut(
_In_ HWND hdlg,
_In_ UINT uiMsg,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
static void LogFatalFunc();
public:
DialogEvent();
void Exec(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void WaitThreadExit(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void Timer(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnDialogEnd(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnFaildCreateDir(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnWaifu2xError(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnWaifu2xNoOverwrite(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void SetWindowTextLang();
void SetDepthAndQuality(const bool SetDefaultQuality = true);
void Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void Cancel(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void UpdateAddString(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnModeChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void ScaleRadio(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void CheckCUDNN(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OnModelChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
LRESULT OnSetInputFilePath(const TCHAR *tPath);
LRESULT OnSetInputFilePath();
LRESULT OnSetOutputFilePath(const TCHAR *tPath);
// <20><><EFBFBD><EFBFBD><EFBFBD>œn<C593><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hWnd<6E><64>IDC_EDIT<49><54>HWND(<28>R<EFBFBD><52><EFBFBD>g<EFBFBD><67><EFBFBD>[<5B><><EFBFBD>̃C<CC83>x<EFBFBD><78><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
LRESULT DropInput(HWND hWnd, WPARAM wParam, LPARAM lParam, WNDPROC OrgSubWnd, LPVOID lpData);
// <20><><EFBFBD><EFBFBD><EFBFBD>œn<C593><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hWnd<6E><64>IDC_EDIT<49><54>HWND(<28>R<EFBFBD><52><EFBFBD>g<EFBFBD><67><EFBFBD>[<5B><><EFBFBD>̃C<CC83>x<EFBFBD><78><EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
LRESULT DropOutput(HWND hWnd, WPARAM wParam, LPARAM lParam, WNDPROC OrgSubWnd, LPVOID lpData);
LRESULT TextInput(HWND hWnd, WPARAM wParam, LPARAM lParam, WNDPROC OrgSubWnd, LPVOID lpData);
void InputRef(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OutputRef(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void LangChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void OutExtChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void ClearOutputDir(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
void AppSetting(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData);
};