[CONSOLE.CPL]: Simplify the color selection code by factorizing common parts.

svn path=/trunk/; revision=74502
This commit is contained in:
Hermès Bélusca-Maïto 2017-05-08 17:19:07 +00:00
parent e8476bec2a
commit c24fbddd42

View file

@ -133,12 +133,34 @@ ColorsProc(HWND hDlg,
/* NOTE: both BN_CLICKED and STN_CLICKED == 0 */ /* NOTE: both BN_CLICKED and STN_CLICKED == 0 */
if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == STN_CLICKED) if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == STN_CLICKED)
{ {
switch (LOWORD(wParam)) if (LOWORD(wParam) == IDC_RADIO_SCREEN_TEXT ||
LOWORD(wParam) == IDC_RADIO_SCREEN_BACKGROUND ||
LOWORD(wParam) == IDC_RADIO_POPUP_TEXT ||
LOWORD(wParam) == IDC_RADIO_POPUP_BACKGROUND)
{ {
case IDC_RADIO_SCREEN_TEXT: switch (LOWORD(wParam))
{ {
/* Get the color of the screen foreground */ case IDC_RADIO_SCREEN_TEXT:
colorIndex = TextAttribFromAttrib(ConInfo->ScreenAttributes); /* Get the colour of the screen foreground */
colorIndex = TextAttribFromAttrib(ConInfo->ScreenAttributes);
break;
case IDC_RADIO_SCREEN_BACKGROUND:
/* Get the colour of the screen background */
colorIndex = BkgdAttribFromAttrib(ConInfo->ScreenAttributes);
break;
case IDC_RADIO_POPUP_TEXT:
/* Get the colour of the popup foreground */
colorIndex = TextAttribFromAttrib(ConInfo->PopupAttributes);
break;
case IDC_RADIO_POPUP_BACKGROUND:
/* Get the colour of the popup background */
colorIndex = BkgdAttribFromAttrib(ConInfo->PopupAttributes);
break;
}
color = ConInfo->ColorTable[colorIndex]; color = ConInfo->ColorTable[colorIndex];
/* Set the values of the colour indicators */ /* Set the values of the colour indicators */
@ -149,69 +171,9 @@ ColorsProc(HWND hDlg,
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE); InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
ActiveStaticControl = colorIndex; ActiveStaticControl = colorIndex;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE); InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
break; break;
} }
else
case IDC_RADIO_SCREEN_BACKGROUND:
{
/* Get the color of the screen background */
colorIndex = BkgdAttribFromAttrib(ConInfo->ScreenAttributes);
color = ConInfo->ColorTable[colorIndex];
/* Set the values of the colour indicators */
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED , GetRValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE , GetBValue(color), FALSE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
ActiveStaticControl = colorIndex;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
break;
}
case IDC_RADIO_POPUP_TEXT:
{
/* Get the color of the popup foreground */
colorIndex = TextAttribFromAttrib(ConInfo->PopupAttributes);
color = ConInfo->ColorTable[colorIndex];
/* Set the values of the colour indicators */
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED , GetRValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE , GetBValue(color), FALSE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
ActiveStaticControl = colorIndex;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
break;
}
case IDC_RADIO_POPUP_BACKGROUND:
{
/* Get the color of the popup background */
colorIndex = BkgdAttribFromAttrib(ConInfo->PopupAttributes);
color = ConInfo->ColorTable[colorIndex];
/* Set the values of the colour indicators */
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED , GetRValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE , GetBValue(color), FALSE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
ActiveStaticControl = colorIndex;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + ActiveStaticControl), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
break;
}
}
if (IDC_STATIC_COLOR1 <= LOWORD(wParam) && LOWORD(wParam) <= IDC_STATIC_COLOR16) if (IDC_STATIC_COLOR1 <= LOWORD(wParam) && LOWORD(wParam) <= IDC_STATIC_COLOR16)
{ {
colorIndex = LOWORD(wParam) - IDC_STATIC_COLOR1; colorIndex = LOWORD(wParam) - IDC_STATIC_COLOR1;
@ -222,6 +184,7 @@ ColorsProc(HWND hDlg,
color = ConInfo->ColorTable[colorIndex]; color = ConInfo->ColorTable[colorIndex];
/* Set the values of the colour indicators */
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED , GetRValue(color), FALSE); SetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED , GetRValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE); SetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, GetGValue(color), FALSE);
SetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE , GetBValue(color), FALSE); SetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE , GetBValue(color), FALSE);
@ -255,20 +218,37 @@ ColorsProc(HWND hDlg,
} }
else if (HIWORD(wParam) == EN_KILLFOCUS) else if (HIWORD(wParam) == EN_KILLFOCUS)
{ {
switch (LOWORD(wParam)) if (LOWORD(wParam) == IDC_EDIT_COLOR_RED ||
LOWORD(wParam) == IDC_EDIT_COLOR_GREEN ||
LOWORD(wParam) == IDC_EDIT_COLOR_BLUE)
{ {
case IDC_EDIT_COLOR_RED: DWORD value;
{
DWORD red;
/* Get the current color */ /* Get the current colour */
colorIndex = ActiveStaticControl; colorIndex = ActiveStaticControl;
color = ConInfo->ColorTable[colorIndex]; color = ConInfo->ColorTable[colorIndex];
red = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED, NULL, FALSE); /* Modify the colour component */
red = min(max(red, 0), 255); switch (LOWORD(wParam))
{
case IDC_EDIT_COLOR_RED:
value = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_RED, NULL, FALSE);
value = min(max(value, 0), 255);
color = RGB(value, GetGValue(color), GetBValue(color));
break;
color = RGB(red, GetGValue(color), GetBValue(color)); case IDC_EDIT_COLOR_GREEN:
value = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, NULL, FALSE);
value = min(max(value, 0), 255);
color = RGB(GetRValue(color), value, GetBValue(color));
break;
case IDC_EDIT_COLOR_BLUE:
value = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE, NULL, FALSE);
value = min(max(value, 0), 255);
color = RGB(GetRValue(color), GetGValue(color), value);
break;
}
ConInfo->ColorTable[colorIndex] = color; ConInfo->ColorTable[colorIndex] = color;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + colorIndex), NULL, TRUE); InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + colorIndex), NULL, TRUE);
@ -278,51 +258,6 @@ ColorsProc(HWND hDlg,
PropSheet_Changed(GetParent(hDlg), hDlg); PropSheet_Changed(GetParent(hDlg), hDlg);
break; break;
} }
case IDC_EDIT_COLOR_GREEN:
{
DWORD green;
/* Get the current color */
colorIndex = ActiveStaticControl;
color = ConInfo->ColorTable[colorIndex];
green = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_GREEN, NULL, FALSE);
green = min(max(green, 0), 255);
color = RGB(GetRValue(color), green, GetBValue(color));
ConInfo->ColorTable[colorIndex] = color;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + colorIndex), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
PropSheet_Changed(GetParent(hDlg), hDlg);
break;
}
case IDC_EDIT_COLOR_BLUE:
{
DWORD blue;
/* Get the current color */
colorIndex = ActiveStaticControl;
color = ConInfo->ColorTable[colorIndex];
blue = GetDlgItemInt(hDlg, IDC_EDIT_COLOR_BLUE, NULL, FALSE);
blue = min(max(blue, 0), 255);
color = RGB(GetRValue(color), GetGValue(color), blue);
ConInfo->ColorTable[colorIndex] = color;
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_COLOR1 + colorIndex), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_SCREEN_COLOR), NULL, TRUE);
InvalidateRect(GetDlgItem(hDlg, IDC_STATIC_POPUP_COLOR) , NULL, TRUE);
PropSheet_Changed(GetParent(hDlg), hDlg);
break;
}
}
} }
break; break;