terminal/src/propsheet/ColorControl.cpp
Dustin Howett d4d59fa339 Initial release of the Windows Terminal source code
This commit introduces all of the Windows Terminal and Console Host source,
under the MIT license.
2019-05-02 15:29:04 -07:00

69 lines
1.8 KiB
C++

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
#include "precomp.h"
#include "ColorControl.h"
COLORREF GetColorForItem(const int itemId)
{
if (itemId >= IDD_COLOR_1 && itemId <= IDD_COLOR_16)
{
return AttrToRGB(itemId - IDD_COLOR_1);
}
else if (itemId == IDD_TERMINAL_FGCOLOR)
{
return g_fakeForegroundColor;
}
else if (itemId == IDD_TERMINAL_BGCOLOR)
{
return g_fakeBackgroundColor;
}
else if (itemId == IDD_TERMINAL_CURSOR_COLOR)
{
return g_fakeCursorColor;
}
return RGB(0xff, 0x0, 0xff);
}
void SimpleColorDoPaint(const HWND hColor, PAINTSTRUCT& ps, const int ColorId)
{
RECT rColor;
COLORREF rgbBrush;
HBRUSH hbr;
GetClientRect(hColor, &rColor);
rgbBrush = GetNearestColor(ps.hdc, GetColorForItem(ColorId));
if ((hbr = CreateSolidBrush(rgbBrush)) != NULL) {
InflateRect(&rColor, -1, -1);
FillRect(ps.hdc, &rColor, hbr);
DeleteObject(hbr);
}
}
// Routine Description:
// - Window proc for the color buttons
LRESULT SimpleColorControlProc(const HWND hColor, const UINT wMsg, const WPARAM wParam, const LPARAM lParam)
{
PAINTSTRUCT ps;
int ColorId;
HWND hDlg;
ColorId = GetWindowLong(hColor, GWL_ID);
hDlg = GetParent(hColor);
switch (wMsg) {
case WM_GETDLGCODE:
return DLGC_WANTARROWS | DLGC_WANTTAB;
break;
case WM_PAINT:
BeginPaint(hColor, &ps);
SimpleColorDoPaint(hColor, ps, ColorId);
EndPaint(hColor, &ps);
break;
default:
return DefWindowProc(hColor, wMsg, wParam, lParam);
break;
}
return TRUE;
}