mirror of
https://github.com/reactos/reactos.git
synced 2024-08-28 14:18:41 +00:00
![Benedikt Freisen](/assets/img/avatar_default.png)
- Wrap implementation of Mirror/Rotate, Stretch/Skew and Attributes dialog in subclasses of CDialogImpl - Turn global variables from code that was moved into member functions into member variables - Add global instances of all three dialog classes - Use <global instance>.DoModal(...) instead of one-line wrappers - Replace some TCHAR arrays with CStrings
261 lines
8.2 KiB
C++
261 lines
8.2 KiB
C++
/*
|
|
* PROJECT: PAINT for ReactOS
|
|
* LICENSE: LGPL
|
|
* FILE: base/applications/mspaint/dialogs.cpp
|
|
* PURPOSE: Window procedures of the dialog windows plus launching functions
|
|
* PROGRAMMERS: Benedikt Freisen
|
|
*/
|
|
|
|
/* INCLUDES *********************************************************/
|
|
|
|
#include "precomp.h"
|
|
|
|
#include "dialogs.h"
|
|
|
|
#include <winnls.h>
|
|
|
|
/* GLOBALS **********************************************************/
|
|
|
|
CMirrorRotateDialog mirrorRotateDialog;
|
|
CAttributesDialog attributesDialog;
|
|
CStretchSkewDialog stretchSkewDialog;
|
|
|
|
/* FUNCTIONS ********************************************************/
|
|
|
|
LRESULT CMirrorRotateDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
CheckDlgButton(IDD_MIRRORROTATERB1, BST_CHECKED);
|
|
CheckDlgButton(IDD_MIRRORROTATERB4, BST_CHECKED);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMirrorRotateDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMirrorRotateDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
if (IsDlgButtonChecked(IDD_MIRRORROTATERB1))
|
|
EndDialog(1);
|
|
else if (IsDlgButtonChecked(IDD_MIRRORROTATERB2))
|
|
EndDialog(2);
|
|
else if (IsDlgButtonChecked(IDD_MIRRORROTATERB4))
|
|
EndDialog(3);
|
|
else if (IsDlgButtonChecked(IDD_MIRRORROTATERB5))
|
|
EndDialog(4);
|
|
else if (IsDlgButtonChecked(IDD_MIRRORROTATERB6))
|
|
EndDialog(5);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMirrorRotateDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMirrorRotateDialog::OnRadioButton3(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB4), TRUE);
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB5), TRUE);
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB6), TRUE);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CMirrorRotateDialog::OnRadioButton12(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB4), FALSE);
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB5), FALSE);
|
|
::EnableWindow(GetDlgItem(IDD_MIRRORROTATERB6), FALSE);
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
newWidth = imageModel.GetWidth();
|
|
newHeight = imageModel.GetHeight();
|
|
|
|
CheckDlgButton(IDD_ATTRIBUTESRB3, BST_CHECKED);
|
|
CheckDlgButton(IDD_ATTRIBUTESRB5, BST_CHECKED);
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE);
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE);
|
|
|
|
if (isAFile)
|
|
{
|
|
TCHAR date[100];
|
|
TCHAR temp[100];
|
|
GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, SIZEOF(date));
|
|
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, SIZEOF(temp));
|
|
_tcscat(date, _T(" "));
|
|
_tcscat(date, temp);
|
|
CString strSize;
|
|
strSize.Format(IDS_FILESIZE, fileSize);
|
|
SetDlgItemText(IDD_ATTRIBUTESTEXT6, date);
|
|
SetDlgItemText(IDD_ATTRIBUTESTEXT7, strSize);
|
|
}
|
|
CString strRes;
|
|
strRes.Format(IDS_PRINTRES, fileHPPM, fileVPPM);
|
|
SetDlgItemText(IDD_ATTRIBUTESTEXT8, strRes);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(1);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnDefault(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
newWidth = imageModel.GetWidth();
|
|
newHeight = imageModel.GetHeight();
|
|
CheckDlgButton(IDD_ATTRIBUTESRB3, BST_CHECKED);
|
|
CheckDlgButton(IDD_ATTRIBUTESRB5, BST_CHECKED);
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE);
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnRadioButton1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
CString strNum;
|
|
strNum.Format(_T("%.3lf"), newWidth / (0.0254 * fileHPPM));
|
|
SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum);
|
|
strNum.Format(_T("%.3lf"), newHeight / (0.0254 * fileVPPM));
|
|
SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnRadioButton2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
CString strNum;
|
|
strNum.Format(_T("%.3lf"), newWidth * 100.0 / fileHPPM);
|
|
SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum);
|
|
strNum.Format(_T("%.3lf"), newHeight * 100.0 / fileVPPM);
|
|
SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnRadioButton3(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE);
|
|
SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnEdit1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
if (Edit_GetModify(hWndCtl))
|
|
{
|
|
TCHAR tempS[100];
|
|
if (IsDlgButtonChecked(IDD_ATTRIBUTESRB1))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
|
|
newWidth = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM * 0.0254));
|
|
}
|
|
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
|
|
newWidth = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM / 100));
|
|
}
|
|
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
|
|
newWidth = max(1, _tstoi(tempS));
|
|
}
|
|
Edit_SetModify(hWndCtl, FALSE);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CAttributesDialog::OnEdit2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
if (Edit_GetModify(hWndCtl))
|
|
{
|
|
TCHAR tempS[100];
|
|
if (IsDlgButtonChecked(IDD_ATTRIBUTESRB1))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
|
|
newHeight = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM * 0.0254));
|
|
}
|
|
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
|
|
newHeight = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM / 100));
|
|
}
|
|
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
|
{
|
|
GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
|
|
newHeight = max(1, _tstoi(tempS));
|
|
}
|
|
Edit_SetModify(hWndCtl, FALSE);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
LRESULT CStretchSkewDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
SetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, 100, FALSE);
|
|
SetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, 100, FALSE);
|
|
SetDlgItemInt(IDD_STRETCHSKEWEDITHSKEW, 0, FALSE);
|
|
SetDlgItemInt(IDD_STRETCHSKEWEDITVSKEW, 0, FALSE);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CStretchSkewDialog::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CStretchSkewDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
CString strrcIntNumbers;
|
|
CString strrcPercentage;
|
|
CString strrcAngle;
|
|
BOOL tr1, tr2, tr3, tr4;
|
|
|
|
strrcIntNumbers.LoadString(hProgInstance, IDS_INTNUMBERS);
|
|
strrcPercentage.LoadString(hProgInstance, IDS_PERCENTAGE);
|
|
strrcAngle.LoadString(hProgInstance, IDS_ANGLE);
|
|
|
|
percentage.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE);
|
|
percentage.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE);
|
|
angle.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSKEW, &tr3, TRUE);
|
|
angle.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSKEW, &tr4, TRUE);
|
|
|
|
if (!(tr1 && tr2 && tr3 && tr4))
|
|
MessageBox(strrcIntNumbers, NULL, MB_ICONEXCLAMATION);
|
|
else if (percentage.x < 1 || percentage.x > 500 || percentage.y < 1 || percentage.y > 500)
|
|
MessageBox(strrcPercentage, NULL, MB_ICONEXCLAMATION);
|
|
else if (angle.x < -89 || angle.x > 89 || angle.y < -89 || angle.y > 89)
|
|
MessageBox(strrcAngle, NULL, MB_ICONEXCLAMATION);
|
|
else
|
|
EndDialog(1);
|
|
return 0;
|
|
}
|
|
|
|
LRESULT CStretchSkewDialog::OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
|
{
|
|
EndDialog(0);
|
|
return 0;
|
|
}
|