GUIで縦横サイズ指定追加

This commit is contained in:
lltcggie 2017-03-20 21:44:57 +09:00
parent a9b91ad9f9
commit c04ba8fd6c
10 changed files with 188 additions and 8 deletions

View File

@ -26,6 +26,7 @@
"IDC_RADIO_SCALE_RATIO":"Set rate", "IDC_RADIO_SCALE_RATIO":"Set rate",
"IDC_RADIO_SCALE_WIDTH":"Set trans width", "IDC_RADIO_SCALE_WIDTH":"Set trans width",
"IDC_RADIO_SCALE_HEIGHT":"Set trans height", "IDC_RADIO_SCALE_HEIGHT":"Set trans height",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"Set trans width and height",
"IDC_STATIC_MODEL":"Model", "IDC_STATIC_MODEL":"Model",
"IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)", "IDC_RADIO_MODEL_RGB":"2-D illust (RGB Model)",
"IDC_RADIO_MODEL_PHOTO":"Photography, Anime", "IDC_RADIO_MODEL_PHOTO":"Photography, Anime",

View File

@ -26,6 +26,7 @@
"IDC_RADIO_SCALE_RATIO":"拡大率で指定", "IDC_RADIO_SCALE_RATIO":"拡大率で指定",
"IDC_RADIO_SCALE_WIDTH":"変換後の横幅で指定", "IDC_RADIO_SCALE_WIDTH":"変換後の横幅で指定",
"IDC_RADIO_SCALE_HEIGHT":"変換後の縦幅で指定", "IDC_RADIO_SCALE_HEIGHT":"変換後の縦幅で指定",
"IDC_RADIO_SCALE_WIDTH_HEIGHT":"変換後の縦横幅で指定",
"IDC_STATIC_MODEL":"モデル", "IDC_STATIC_MODEL":"モデル",
"IDC_RADIO_MODEL_RGB":"2次元イラスト (RGBモデル)", "IDC_RADIO_MODEL_RGB":"2次元イラスト (RGBモデル)",
"IDC_RADIO_MODEL_PHOTO":"写真・アニメ (Photoモデル)", "IDC_RADIO_MODEL_PHOTO":"写真・アニメ (Photoモデル)",

View File

@ -633,6 +633,20 @@ void stImage::Postprocess(const int input_plane, const double scale, const int d
AlphaCleanImage(mEndImage); AlphaCleanImage(mEndImage);
} }
void stImage::Postprocess(const int input_plane, const int width, const int height, const int depth)
{
DeconvertFromNetFormat(input_plane);
ShrinkImage(width, height);
// 値を01にクリッピング
cv::threshold(mEndImage, mEndImage, 1.0, 1.0, cv::THRESH_TRUNC);
cv::threshold(mEndImage, mEndImage, 0.0, 0.0, cv::THRESH_TOZERO);
mEndImage = DeconvertFromFloat(mEndImage, depth);
AlphaCleanImage(mEndImage);
}
void stImage::DeconvertFromNetFormat(const int input_plane) void stImage::DeconvertFromNetFormat(const int input_plane)
{ {
if (input_plane == 1) // Yモデル if (input_plane == 1) // Yモデル
@ -748,6 +762,19 @@ void stImage::ShrinkImage(const double scale)
} }
} }
void stImage::ShrinkImage(const int width, const int height)
{
// TODO: scale = 1.0 でも悪影響を及ぼさないか調べる
const cv::Size_<int> ns(width, height);
if (mEndImage.size().width != ns.width || mEndImage.size().height != ns.height)
{
int argo = cv::INTER_CUBIC;
cv::resize(mEndImage, mEndImage, ns, 0.0, 0.0, argo);
}
}
cv::Mat stImage::DeconvertFromFloat(const cv::Mat &im, const int depth) cv::Mat stImage::DeconvertFromFloat(const cv::Mat &im, const int depth)
{ {
const int cv_depth = DepthBitToCVDepth(depth); const int cv_depth = DepthBitToCVDepth(depth);

View File

@ -69,6 +69,7 @@ private:
void DeconvertFromNetFormat(const int input_plane); void DeconvertFromNetFormat(const int input_plane);
void ShrinkImage(const double scale); void ShrinkImage(const double scale);
void ShrinkImage(const int width, const int height);
static int DepthBitToCVDepth(const int depth_bit); static int DepthBitToCVDepth(const int depth_bit);
static double GetValumeMaxFromCVDepth(const int cv_depth); static double GetValumeMaxFromCVDepth(const int cv_depth);
@ -125,6 +126,7 @@ public:
void SetReconstructedA(cv::Mat &im, const cv::Size_<int> &size, const int inner_scale); void SetReconstructedA(cv::Mat &im, const cv::Size_<int> &size, const int inner_scale);
void Postprocess(const int input_plane, const double scale, const int depth); void Postprocess(const int input_plane, const double scale, const int depth);
void Postprocess(const int input_plane, const int width, const int height, const int depth);
cv::Mat GetEndImage() const; cv::Mat GetEndImage() const;

View File

@ -779,7 +779,10 @@ Waifu2x::eWaifu2xError Waifu2x::waifu2x(const boost::filesystem::path &input_fil
if (ret != Waifu2x::eWaifu2xError_OK) if (ret != Waifu2x::eWaifu2xError_OK)
return ret; return ret;
if(!scale_width || !scale_height)
image.Postprocess(mInputPlane, Factor, output_depth); image.Postprocess(mInputPlane, Factor, output_depth);
else
image.Postprocess(mInputPlane, *scale_width, *scale_height, output_depth);
ret = image.Save(output_file, output_quality); ret = image.Save(output_file, output_quality);
if (ret != Waifu2x::eWaifu2xError_OK) if (ret != Waifu2x::eWaifu2xError_OK)
@ -857,6 +860,14 @@ double Waifu2x::CalcScaleRatio(const boost::optional<double> scale_ratio, const
if (scale_ratio) if (scale_ratio)
return *scale_ratio; return *scale_ratio;
if (scale_width && scale_height)
{
const auto d1 = image.GetScaleFromWidth(*scale_width);
const auto d2 = image.GetScaleFromWidth(*scale_height);
return d1 >= d2 ? d1 : d2;
}
if (scale_width) if (scale_width)
return image.GetScaleFromWidth(*scale_width); return image.GetScaleFromWidth(*scale_width);

View File

@ -171,8 +171,10 @@ tstring DialogEvent::AddName() const
addstr += TEXT("(x") + to_tstring(scale_ratio) + TEXT(")"); addstr += TEXT("(x") + to_tstring(scale_ratio) + TEXT(")");
else if (scaleType == eScaleTypeWidth) else if (scaleType == eScaleTypeWidth)
addstr += TEXT("(width ") + to_tstring(scale_width) + TEXT(")"); addstr += TEXT("(width ") + to_tstring(scale_width) + TEXT(")");
else else if (scaleType == eScaleTypeHeight)
addstr += TEXT("(height ") + to_tstring(scale_height) + TEXT(")"); addstr += TEXT("(height ") + to_tstring(scale_height) + TEXT(")");
else
addstr += TEXT("(") + to_tstring(scale_width) + TEXT("x") + to_tstring(scale_height) + TEXT(")");
} }
if (output_depth != 8) if (output_depth != 8)
@ -236,8 +238,10 @@ bool DialogEvent::SyncMember(const bool NotSyncCropSize, const bool silent)
scaleType = eScaleTypeRatio; scaleType = eScaleTypeRatio;
else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), BM_GETCHECK, 0, 0)) else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), BM_GETCHECK, 0, 0))
scaleType = eScaleTypeWidth; scaleType = eScaleTypeWidth;
else else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), BM_GETCHECK, 0, 0))
scaleType = eScaleTypeHeight; scaleType = eScaleTypeHeight;
else
scaleType = eScaleTypeWidthHeight;
{ {
TCHAR buf[AR_PATH_MAX] = TEXT(""); TCHAR buf[AR_PATH_MAX] = TEXT("");
@ -295,13 +299,75 @@ bool DialogEvent::SyncMember(const bool NotSyncCropSize, const bool silent)
ret = false; ret = false;
if (!silent) if (!silent)
MessageBox(dh, langStringList.GetString(L"MessageScaleHeightCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR); MessageBox(dh, langStringList.GetString(L"MessageScaleWidthCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
} }
} }
else else
scale_height = l; scale_height = l;
} }
if (scaleType == eScaleTypeWidthHeight)
{
TCHAR buf[AR_PATH_MAX] = TEXT("");
GetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), buf, _countof(buf));
buf[_countof(buf) - 1] = TEXT('\0');
std::vector<const TCHAR *> v;
TCHAR *p = buf;
TCHAR *context= nullptr;
for (;;)
{
const auto str = _tcstok_s(p, TEXT(" x"), &context);
if (!str)
break;
p = nullptr;
v.push_back(str);
}
if (v.size() == 2)
{
TCHAR *ptr = nullptr;
long l = 0;
l = _tcstol(v[0], &ptr, 10);
if (!ptr || *ptr != TEXT('\0') || l <= 0)
{
ret = false;
if (!silent)
MessageBox(dh, langStringList.GetString(L"MessageScaleWidthCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
}
else
{
scale_width = l;
}
if (ret)
{
l = _tcstol(v[1], &ptr, 10);
if (!ptr || *ptr != TEXT('\0') || l <= 0)
{
ret = false;
if (!silent)
MessageBox(dh, langStringList.GetString(L"MessageScaleWidthCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
}
else
{
scale_height = l;
}
}
}
else
{
ret = false;
if (!silent)
MessageBox(dh, langStringList.GetString(L"MessageScaleWidthCheckError").c_str(), langStringList.GetString(L"MessageTitleError").c_str(), MB_OK | MB_ICONERROR);
}
}
{ {
const int cur = SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_GETCURSEL, 0, 0); const int cur = SendMessage(GetDlgItem(dh, IDC_COMBO_MODEL), CB_GETCURSEL, 0, 0);
switch (cur) switch (cur)
@ -743,7 +809,11 @@ void DialogEvent::ProcessWaifu2x()
case eScaleTypeWidth: case eScaleTypeWidth:
ScaleWidth = scale_width; ScaleWidth = scale_width;
break; break;
case eScaleTypeHeight:
ScaleWidth = scale_height;
break;
default: default:
ScaleWidth = scale_width;
ScaleHeight = scale_height; ScaleHeight = scale_height;
break; break;
} }
@ -972,8 +1042,10 @@ void DialogEvent::SaveIni(const bool isSyncMember)
tScaleMode = TEXT("Ratio"); tScaleMode = TEXT("Ratio");
else if (scaleType == eScaleTypeWidth) else if (scaleType == eScaleTypeWidth)
tScaleMode = TEXT("Width"); tScaleMode = TEXT("Width");
else else if (scaleType == eScaleTypeHeight)
tScaleMode = TEXT("Height"); tScaleMode = TEXT("Height");
else
tScaleMode = TEXT("WidthHeight");
WritePrivateProfileString(TEXT("Setting"), TEXT("LastScaleMode"), tScaleMode.c_str(), getTString(SettingFilePath).c_str()); WritePrivateProfileString(TEXT("Setting"), TEXT("LastScaleMode"), tScaleMode.c_str(), getTString(SettingFilePath).c_str());
@ -1481,6 +1553,7 @@ void DialogEvent::SetWindowTextLang()
SET_WINDOW_TEXT(IDC_RADIO_SCALE_RATIO); SET_WINDOW_TEXT(IDC_RADIO_SCALE_RATIO);
SET_WINDOW_TEXT(IDC_RADIO_SCALE_WIDTH); SET_WINDOW_TEXT(IDC_RADIO_SCALE_WIDTH);
SET_WINDOW_TEXT(IDC_RADIO_SCALE_HEIGHT); SET_WINDOW_TEXT(IDC_RADIO_SCALE_HEIGHT);
SET_WINDOW_TEXT(IDC_RADIO_SCALE_WIDTH_HEIGHT);
SET_WINDOW_TEXT(IDC_STATIC_MODEL); SET_WINDOW_TEXT(IDC_STATIC_MODEL);
SET_WINDOW_TEXT(IDC_CHECK_TTA); SET_WINDOW_TEXT(IDC_CHECK_TTA);
SET_WINDOW_TEXT(IDC_STATIC_PROCESS_SPEED_SETTING); SET_WINDOW_TEXT(IDC_STATIC_PROCESS_SPEED_SETTING);
@ -1720,6 +1793,7 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
tstring tScaleRatio; tstring tScaleRatio;
tstring tScaleWidth; tstring tScaleWidth;
tstring tScaleHeight; tstring tScaleHeight;
tstring tScaleWidthHeight;
tstring tScaleMode; tstring tScaleMode;
tstring tmode; tstring tmode;
@ -1823,30 +1897,48 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
else if (tScaleMode == TEXT("Width")) else if (tScaleMode == TEXT("Width"))
{ {
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
}
else if (tScaleMode == TEXT("Height"))
{
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
else else
{ {
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_CHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), TRUE);
} }
if (noise_level == 0) if (noise_level == 0)
@ -1888,9 +1980,11 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
else if (tmode == TEXT("scale")) else if (tmode == TEXT("scale"))
{ {
@ -1943,6 +2037,7 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_RATIO), tScaleRatio.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_RATIO), tScaleRatio.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_WIDTH), tScaleWidth.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_WIDTH), tScaleWidth.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_HEIGHT), tScaleHeight.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_HEIGHT), tScaleHeight.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_SCALE_WIDTH_HEIGHT), tScaleWidthHeight.c_str());
SetWindowText(GetDlgItem(hWnd, IDC_EDIT_INPUT_EXT_LIST), inputFileExt.c_str()); SetWindowText(GetDlgItem(hWnd, IDC_EDIT_INPUT_EXT_LIST), inputFileExt.c_str());
@ -2034,6 +2129,9 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
TCLAP::ValueArg<int> cmdScaleHeight(L"h", L"scale_height", TCLAP::ValueArg<int> cmdScaleHeight(L"h", L"scale_height",
L"custom scale height", false, 0, L"double", cmd); L"custom scale height", false, 0, L"double", cmd);
TCLAP::ValueArg<int> cmdScaleWidthHeight(L"", L"scale_width_height",
L"custom scale width and height", false, 0, L"double", cmd);
std::vector<std::wstring> cmdProcessConstraintV; std::vector<std::wstring> cmdProcessConstraintV;
cmdProcessConstraintV.push_back(L"cpu"); cmdProcessConstraintV.push_back(L"cpu");
cmdProcessConstraintV.push_back(L"gpu"); cmdProcessConstraintV.push_back(L"gpu");
@ -2205,10 +2303,12 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleWidth.getValue()).c_str()); SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleWidth.getValue()).c_str());
@ -2219,10 +2319,12 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), TRUE);
SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleHeight.getValue()).c_str()); SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleHeight.getValue()).c_str());
@ -2233,15 +2335,33 @@ void DialogEvent::Create(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpData)
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_CHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleRatio.getValue()).c_str()); SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), to_tstring(cmdScaleRatio.getValue()).c_str());
isSetParam = true; isSetParam = true;
} }
else if (cmdScaleWidthHeight.isSet())
{
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_RATIO), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_HEIGHT), BM_SETCHECK, BST_UNCHECKED, 0);
SendMessage(GetDlgItem(hWnd, IDC_RADIO_SCALE_WIDTH_HEIGHT), BM_SETCHECK, BST_CHECKED, 0);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), TRUE);
SetWindowText(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), to_tstring(cmdScaleWidthHeight.getValue()).c_str());
isSetParam = true;
}
if (cmdProcess.isSet()) if (cmdProcess.isSet())
{ {
@ -2436,6 +2556,7 @@ void DialogEvent::OnModeChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID l
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), TRUE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), TRUE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), TRUE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), TRUE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), TRUE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), TRUE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH_HEIGHT), TRUE);
ScaleRadio(NULL, NULL, NULL, NULL); // ±±ÅReplaceAddString()âé©çreturn ScaleRadio(NULL, NULL, NULL, NULL); // ±±ÅReplaceAddString()âé©çreturn
return; return;
@ -2445,10 +2566,12 @@ void DialogEvent::OnModeChange(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID l
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
ReplaceAddString(); ReplaceAddString();
@ -2461,18 +2584,28 @@ void DialogEvent::ScaleRadio(HWND hWnd, WPARAM wParam, LPARAM lParam, LPVOID lpD
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), BM_GETCHECK, 0, 0)) else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_WIDTH), BM_GETCHECK, 0, 0))
{ {
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
}
else if (SendMessage(GetDlgItem(dh, IDC_RADIO_SCALE_HEIGHT), BM_GETCHECK, 0, 0))
{
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), FALSE);
} }
else else
{ {
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_RATIO), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), TRUE); EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_HEIGHT), FALSE);
EnableWindow(GetDlgItem(dh, IDC_EDIT_SCALE_WIDTH_HEIGHT), TRUE);
} }
ReplaceAddString(); ReplaceAddString();

View File

@ -79,6 +79,7 @@ private:
eScaleTypeRatio, eScaleTypeRatio,
eScaleTypeWidth, eScaleTypeWidth,
eScaleTypeHeight, eScaleTypeHeight,
eScaleTypeWidthHeight,
eScaleTypeEnd, eScaleTypeEnd,
}; };

Binary file not shown.

View File

@ -37,6 +37,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
CControl cControlScaleRatio(IDC_EDIT_SCALE_RATIO); CControl cControlScaleRatio(IDC_EDIT_SCALE_RATIO);
CControl cControlScaleWidth(IDC_EDIT_SCALE_WIDTH); CControl cControlScaleWidth(IDC_EDIT_SCALE_WIDTH);
CControl cControlScaleHeight(IDC_EDIT_SCALE_HEIGHT); CControl cControlScaleHeight(IDC_EDIT_SCALE_HEIGHT);
CControl cControlScaleWidthHeight(IDC_EDIT_SCALE_WIDTH_HEIGHT);
// 登録する関数がまとめられたクラス // 登録する関数がまとめられたクラス
// グローバル関数を使えばクラスにまとめる必要はないがこの方法が役立つこともあるはず // グローバル関数を使えばクラスにまとめる必要はないがこの方法が役立つこともあるはず
@ -51,6 +52,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
cControlScaleRatio.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR); cControlScaleRatio.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR);
cControlScaleWidth.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR); cControlScaleWidth.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR);
cControlScaleHeight.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR); cControlScaleHeight.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR);
cControlScaleWidthHeight.SetEventCallBack(SetClassCustomFunc(DialogEvent::TextInput, &cDialogEvent), NULL, WM_CHAR);
// コントロールのサブクラスを登録 // コントロールのサブクラスを登録
cDialog.AddControl(&cControlInput); cDialog.AddControl(&cControlInput);
@ -58,6 +60,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
cDialog.AddControl(&cControlScaleRatio); cDialog.AddControl(&cControlScaleRatio);
cDialog.AddControl(&cControlScaleWidth); cDialog.AddControl(&cControlScaleWidth);
cDialog.AddControl(&cControlScaleHeight); cDialog.AddControl(&cControlScaleHeight);
cDialog.AddControl(&cControlScaleWidthHeight);
// 各コントロールのイベントで実行する関数の登録 // 各コントロールのイベントで実行する関数の登録
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::Exec, &cDialogEvent), NULL, IDC_BUTTON_EXEC); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::Exec, &cDialogEvent), NULL, IDC_BUTTON_EXEC);
@ -71,6 +74,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_SCALE); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_SCALE);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE_SCALE); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_MODE_NOISE_SCALE);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_AUTO_SCALE); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_AUTO_SCALE);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::OnModeChange, &cDialogEvent), NULL, IDC_RADIO_SCALE_WIDTH_HEIGHT);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL0); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL0);
cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL1); cDialog.SetCommandCallBack(SetClassFunc(DialogEvent::UpdateAddString, &cDialogEvent), NULL, IDC_RADIONOISE_LEVEL1);

Binary file not shown.