You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
2.8 KiB
130 lines
2.8 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#ifndef ANGLEBOX_H |
|
#define ANGLEBOX_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "mathlib/vector.h" |
|
|
|
|
|
class CAngleCombo; |
|
|
|
|
|
class CAngleBox : public CWnd |
|
{ |
|
public: |
|
CAngleBox(); |
|
virtual ~CAngleBox(); |
|
|
|
bool GetAngles(QAngle &vecAngles); |
|
char *GetAngles(char *szAngles); |
|
|
|
void SetAngles(const QAngle &vecAngles, bool bRedraw = true); |
|
void SetAngles(const char *szAngles, bool bRedraw = true); |
|
|
|
void SetDifferent(bool bDifferent, bool bRedraw = true); |
|
inline void SetEditControl(CAngleCombo *pEdit); |
|
|
|
char *GetAngleEditText(char *szBuf); |
|
|
|
void Enable(bool bEnable); |
|
void Show(bool bShow); |
|
|
|
// ClassWizard generated virtual function overrides |
|
//{{AFX_VIRTUAL(CAngleBox) |
|
public: |
|
//}}AFX_VIRTUAL |
|
|
|
protected: |
|
|
|
void UpdateAngleEditText(void); |
|
void UpdateLine(void); |
|
void DrawAngleLine(CDC *pDC); |
|
|
|
bool m_bDifferent; // Set to true when we have multiselected objects with different angles. |
|
|
|
CDC m_DragDC; // When dragging w/mouse. |
|
CPoint m_ptClientCenter; |
|
bool m_bDragging; |
|
|
|
QAngle m_vecAngles; |
|
|
|
CAngleCombo *m_pEdit; // The linked angle edit box, NULL if none. |
|
|
|
// Generated message map functions |
|
//{{AFX_MSG(CAngleBox) |
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point); |
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point); |
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point); |
|
afx_msg void OnPaint(); |
|
//}}AFX_MSG |
|
|
|
DECLARE_MESSAGE_MAP() |
|
|
|
private: |
|
|
|
friend class CAngleCombo; |
|
|
|
// Functions called by the angle combo to set our state without notification |
|
// back to the angle combo. |
|
void SetAnglesInternal(const QAngle &vecAngles, bool bRedraw = true); |
|
void SetDifferentInternal(bool bDifferent, bool bRedraw = true); |
|
}; |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CAngleBox::SetEditControl(CAngleCombo *pEdit) |
|
{ |
|
m_pEdit = pEdit; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CAngleCombo : public CComboBox |
|
{ |
|
public: |
|
|
|
CAngleCombo(); |
|
|
|
inline void SetAngleBox(CAngleBox *pBox); |
|
|
|
protected: |
|
|
|
void UpdateAngleBox(char *szText); |
|
|
|
// Generated message map functions |
|
//{{AFX_MSG(CAngleBox) |
|
afx_msg void OnChangeAngleEdit(); |
|
afx_msg void OnSelChangeAngleEdit(); |
|
//}}AFX_MSG |
|
|
|
DECLARE_MESSAGE_MAP() |
|
|
|
private: |
|
|
|
friend class CAngleBox; |
|
|
|
void SetAnglesInternal(const char *szAngles); |
|
|
|
CAngleBox *m_pBox; // The linked angle box control. |
|
bool m_bEnableUpdate; // Whether we forward update notifications to the linked angle box control. |
|
}; |
|
|
|
|
|
void CAngleCombo::SetAngleBox(CAngleBox *pBox) |
|
{ |
|
m_pBox = pBox; |
|
} |
|
|
|
|
|
#endif // ANGLEBOX_H
|
|
|