131 lines
2.9 KiB
C
131 lines
2.9 KiB
C
|
//========= Copyright <20> 1996-2005, 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
|