Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
110 lines
3.3 KiB
C++
110 lines
3.3 KiB
C++
#if !defined(AFX_CURVEEDITOR_H__C1749ED7_BBE2_445B_9862_5F21486104CE__INCLUDED_)
|
|
#define AFX_CURVEEDITOR_H__C1749ED7_BBE2_445B_9862_5F21486104CE__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
// CurveEditor.h : header file
|
|
//
|
|
#include <Stuff\Stuff.hpp>
|
|
#include <gosFX\gosFX.hpp>
|
|
#define MAXCURVES 128
|
|
|
|
|
|
class CurveSet;
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CCurveEditor frame
|
|
|
|
class CCurveEditor : public CWnd
|
|
{
|
|
// DECLARE_DYNCREATE(CCurveEditor)
|
|
protected:
|
|
|
|
// Attributes
|
|
public:
|
|
CCurveEditor(); // protected constructor used by dynamic creation
|
|
virtual ~CCurveEditor();
|
|
// Operations
|
|
public:
|
|
void ReDraw() {InvalidateRect(NULL);}
|
|
void ReDrawInternal();
|
|
void DrawTicks(CDC *dc);
|
|
void FixCurve(gosFX::Curve *Curve);
|
|
void UpdateCurveList(HTREEITEM itm=TVI_ROOT);
|
|
void DrawCurve(CDC *dc,gosFX::Curve *curve,bool DrawKeys=false);
|
|
void DrawHandles(CDC *dc,gosFX::Curve *curve);
|
|
void Refresh();
|
|
int GetClosestKey(CPoint &pnt);
|
|
CPen InactivePen,EditablePen,VarPen,SelVertPen,TickPen,BlackPen,HandlePen,ZeroPen;
|
|
CBrush BGBrush;
|
|
|
|
gosFX::Curve *Curves[MAXCURVES],*DCurve,*VCurve;
|
|
CurveSet *CurrentCSet;
|
|
|
|
int NumCurves,SelectedKey;
|
|
float StartY,EndY;
|
|
CPoint OldPoint;
|
|
|
|
int CurveToClient(float h,int whgt)
|
|
{
|
|
return whgt-(int)(((h-StartY)/(EndY-StartY))*whgt);
|
|
}
|
|
|
|
float ClientToCurve(int h,int w)
|
|
{
|
|
return (EndY-StartY)*(1.0f-(float)h/w)+StartY;
|
|
}
|
|
|
|
enum EditMode {MOVE,INSERT,ZOOM,PAN,SCALE};
|
|
|
|
EditMode CurrentEditMode;
|
|
bool EditVar,EditHan;
|
|
CPoint H1Pos,H2Pos;
|
|
CBitmap BackBuffer;
|
|
|
|
void BuildBackBuffer();
|
|
// Overrides
|
|
// ClassWizard generated virtual function overrides
|
|
//{{AFX_VIRTUAL(CCurveEditor)
|
|
public:
|
|
virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
|
|
//}}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
|
|
// Generated message map functions
|
|
//{{AFX_MSG(CCurveEditor)
|
|
afx_msg void OnClose();
|
|
afx_msg void OnPaint();
|
|
afx_msg void OnEditInsertmode();
|
|
afx_msg void OnEditMovemode();
|
|
afx_msg void OnEditPanmode();
|
|
afx_msg void OnEditScalemode();
|
|
afx_msg void OnEditZoommode();
|
|
afx_msg void OnUpdateEditInsertmode(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateEditMovemode(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateEditPanmode(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateEditScalemode(CCmdUI* pCmdUI);
|
|
afx_msg void OnUpdateEditZoommode(CCmdUI* pCmdUI);
|
|
afx_msg void OnEditEditvaraincecurve();
|
|
afx_msg void OnUpdateEditEditvaraincecurve(CCmdUI* pCmdUI);
|
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|
afx_msg void OnEditDeletevertex();
|
|
afx_msg void OnViewZoomtocurve();
|
|
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
|
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
|
|
afx_msg void OnSize(UINT nType, int cx, int cy);
|
|
//}}AFX_MSG
|
|
DECLARE_MESSAGE_MAP()
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//{{AFX_INSERT_LOCATION}}
|
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
|
|
#endif // !defined(AFX_CURVEEDITOR_H__C1749ED7_BBE2_445B_9862_5F21486104CE__INCLUDED_)
|