forked from gabrielcuvillier/d3wasm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPropTreeItemButton.cpp
More file actions
108 lines (81 loc) · 2.83 KB
/
PropTreeItemButton.cpp
File metadata and controls
108 lines (81 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// PropTreeItemButton.cpp : implementation file
//
// Copyright (C) 1998-2001 Scott Ramsay
// sramsay@gonavi.com
// http://www.gonavi.com
//
// This material is provided "as is", with absolutely no warranty expressed
// or implied. Any use is at your own risk.
//
// Permission to use or copy this software for any purpose is hereby granted
// without fee, provided the above notices are retained on all copies.
// Permission to modify the code and to distribute modified code is granted,
// provided the above notices are retained, and a notice that the code was
// modified is included with the above copyright notice.
//
// If you use this code, drop me an email. I'd like to know if you find the code
// useful.
//#include "stdafx.h"
#include "tools/edit_gui_common.h"
#include "proptree.h"
#include "PropTreeItemButton.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define BUTTON_SIZE 17
/////////////////////////////////////////////////////////////////////////////
// CPropTreeItemButton
CPropTreeItemButton::CPropTreeItemButton() {
mouseDown = false;
}
CPropTreeItemButton::~CPropTreeItemButton() {
}
/////////////////////////////////////////////////////////////////////////////
// CPropTreeItemButton message handlers
LONG CPropTreeItemButton::DrawItem( CDC* pDC, const RECT& rc, LONG x, LONG y )
{
CSize textSize;
CRect textRect;
LONG nTotal = 0;
nTotal = CPropTreeItem::DrawItem( pDC, rc, x, y );
textSize = pDC->GetOutputTextExtent( buttonText );
UINT dpi = GetDpiForWindow(m_pProp->GetSafeHwnd());
float scaling_factor = static_cast<float>(dpi) / 96.0f;
int s2 = int(2 * scaling_factor);
int s4 = int(4 * scaling_factor);
int s12 = int(12 * scaling_factor);
buttonRect.left = m_rc.right - ( textSize.cx + s12 + s4);
buttonRect.top = m_rc.top + ((m_rc.bottom - m_rc.top)/2)- (textSize.cy + s4) /2;
buttonRect.right = buttonRect.left + textSize.cx + s12;
buttonRect.bottom = buttonRect.top + (textSize.cy + s4);
UINT buttonStyle;
if ( (m_dwState & TreeItemChecked) ) {
buttonStyle = DFCS_BUTTONPUSH | DFCS_PUSHED;
} else {
buttonStyle = DFCS_BUTTONPUSH;
}
pDC->DrawFrameControl(&buttonRect, DFC_BUTTON, buttonStyle );
textRect = buttonRect;
textRect.left += s4;
textRect.right -= s4-s4;
pDC->DrawText( buttonText, textRect, DT_SINGLELINE|DT_VCENTER );
//Adjust hit test rect to acount for window scrolling
hitTestRect = buttonRect;
hitTestRect.OffsetRect(0, m_pProp->GetOrigin().y);
return nTotal;
}
void CPropTreeItemButton::DrawAttribute(CDC* pDC, const RECT& rc) {
}
LPARAM CPropTreeItemButton::GetItemValue() {
return (LPARAM)0;
}
void CPropTreeItemButton::SetItemValue(LPARAM lParam) {
}
BOOL CPropTreeItemButton::HitButton( const POINT& pt ) {
return hitTestRect.PtInRect( pt );
}
void CPropTreeItemButton::SetButtonText( LPCSTR text ) {
buttonText = text;
}