mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 19:45:39 +00:00
- continue "marletting"
- use marlett font for checkbox svn path=/trunk/; revision=39908
This commit is contained in:
parent
2babefdc42
commit
f467c0a203
1 changed files with 50 additions and 33 deletions
|
@ -690,52 +690,69 @@ static BOOL UITOOLS95_DFC_ButtonPush(HDC dc, LPRECT r, UINT uFlags)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ported from WINE20020904 */
|
|
||||||
/* Draw a check/3state button coming from DrawFrameControl()
|
|
||||||
*
|
|
||||||
* Does a pretty good job in emulating MS behavior. Some quirks are
|
|
||||||
* however there because MS uses a TrueType font (Marlett) to draw
|
|
||||||
* the buttons.
|
|
||||||
*/
|
|
||||||
static BOOL UITOOLS95_DFC_ButtonCheck(HDC dc, LPRECT r, UINT uFlags)
|
static BOOL UITOOLS95_DFC_ButtonCheck(HDC dc, LPRECT r, UINT uFlags)
|
||||||
{
|
{
|
||||||
RECT myr, bar;
|
RECT rc;
|
||||||
UINT flags = BF_RECT | BF_ADJUST;
|
LOGFONT lf;
|
||||||
UITOOLS_MakeSquareRect(r, &myr);
|
HFONT hFont, hOldFont;
|
||||||
|
int SmallDiam, i;
|
||||||
|
|
||||||
if(uFlags & DFCS_FLAT)
|
LPCTSTR OutRight = TEXT("c"); // Outer right
|
||||||
flags |= BF_FLAT;
|
LPCTSTR OutLeft = TEXT("d"); // Outer left
|
||||||
else if(uFlags & DFCS_MONO)
|
LPCTSTR InRight = TEXT("e"); // inner left
|
||||||
flags |= BF_MONO;
|
LPCTSTR InLeft = TEXT("f"); // inner right
|
||||||
|
LPCTSTR Center = TEXT("g"); // center
|
||||||
|
|
||||||
IntDrawRectEdge( dc, &myr, EDGE_SUNKEN, flags );
|
SmallDiam = UITOOLS_MakeSquareRect(r, &rc);
|
||||||
|
|
||||||
if(uFlags & (DFCS_INACTIVE|DFCS_PUSHED))
|
ZeroMemory(&lf, sizeof(LOGFONT));
|
||||||
FillRect(dc, &myr, GetSysColorBrush(COLOR_BTNFACE));
|
lf.lfHeight = SmallDiam;
|
||||||
else if( (uFlags & DFCS_BUTTON3STATE) && (uFlags & DFCS_CHECKED) )
|
lf.lfWidth = 0;
|
||||||
UITOOLS_DrawCheckedRect( dc, &myr );
|
lf.lfWeight = FW_NORMAL;
|
||||||
|
lf.lfCharSet = DEFAULT_CHARSET;
|
||||||
|
lstrcpy(lf.lfFaceName, TEXT("Marlett"));
|
||||||
|
hFont = CreateFontIndirect(&lf);
|
||||||
|
hOldFont = SelectObject(dc, hFont);
|
||||||
|
|
||||||
|
SetBkMode(dc, TRANSPARENT);
|
||||||
|
|
||||||
|
/* Center section, white for active, grey for inactive */
|
||||||
|
i= !(uFlags & (DFCS_INACTIVE|DFCS_PUSHED)) ? COLOR_WINDOW : COLOR_BTNFACE;
|
||||||
|
SetTextColor(dc, GetSysColor(i));
|
||||||
|
TextOut(dc, rc.left, rc.top, Center, 1);
|
||||||
|
|
||||||
|
if(uFlags & (DFCS_FLAT | DFCS_MONO))
|
||||||
|
{
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_WINDOWFRAME));
|
||||||
|
TextOut(dc, rc.left, rc.top, OutRight, 1);
|
||||||
|
TextOut(dc, rc.left, rc.top, OutLeft, 1);
|
||||||
|
TextOut(dc, rc.left, rc.top, InRight, 1);
|
||||||
|
TextOut(dc, rc.left, rc.top, InLeft, 1);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FillRect(dc, &myr, GetSysColorBrush(COLOR_WINDOW));
|
SetTextColor(dc, GetSysColor(COLOR_BTNSHADOW));
|
||||||
|
TextOut(dc, rc.left, rc.top, OutRight, 1);
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_BTNHIGHLIGHT));
|
||||||
|
TextOut(dc, rc.left, rc.top, OutLeft, 1);
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_3DDKSHADOW));
|
||||||
|
TextOut(dc, rc.left, rc.top, InRight, 1);
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_3DLIGHT));
|
||||||
|
TextOut(dc, rc.left, rc.top, InLeft, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uFlags & DFCS_CHECKED)
|
if(uFlags & DFCS_CHECKED)
|
||||||
{
|
{
|
||||||
int i, k;
|
LPCTSTR Check = TEXT("b");
|
||||||
i = (uFlags & DFCS_INACTIVE) || (uFlags & 0xff) == DFCS_BUTTON3STATE ?
|
|
||||||
COLOR_BTNSHADOW : COLOR_WINDOWTEXT;
|
|
||||||
|
|
||||||
/* draw 7 bars, with h=3w to form the check */
|
SetTextColor(dc, GetSysColor(COLOR_WINDOWTEXT));
|
||||||
bar.left = myr.left;
|
TextOut(dc, rc.left, rc.top, Check, 1);
|
||||||
bar.top = myr.top + 2;
|
|
||||||
for (k = 0; k < 7; k++) {
|
|
||||||
bar.left = bar.left + 1;
|
|
||||||
bar.top = (k < 3) ? bar.top + 1 : bar.top - 1;
|
|
||||||
bar.bottom = bar.top + 3;
|
|
||||||
bar.right = bar.left + 1;
|
|
||||||
FillRect(dc, &bar, GetSysColorBrush(i));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetTextColor(dc, GetSysColor(COLOR_WINDOWTEXT));
|
||||||
|
SelectObject(dc, hOldFont);
|
||||||
|
DeleteObject(hFont);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue