Files
FC1/Editor/CurveWnd.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

103 lines
3.0 KiB
C++

// CCurveWnd : header file
//
// CurveWnd Class, visual representaion of the curve.
// Functionality :
// 1. Draw Knots, Curve
// 2. Handle mouse and keyboard input
//
// Copyright Johan Janssens, 2001 (jjanssens@mail.ru)
// Feel free to use and distribute. May not be sold for profit.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is
// not sold for profit without the authors written consent, and
// providing that this notice and the authors name is included.
// If the source code in this file is used in any commercial application
// then acknowledgement must be made to the author of this file
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage of buiness that this
// product may cause
//
// Please use and enjoy. Please let me know of any bugs/mods/improvements
// that you have found/implemented and I will fix/incorporate them into
// this file
#ifndef _JANSSENS_JOHAN_CURVEWND_H_
#define _JANSSENS_JOHAN_CURVEWND_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "CurveObject.h"
class CCurveWnd : public CWnd
{
public:
CCurveWnd();
virtual ~CCurveWnd();
//Create Window
BOOL Create(LPCTSTR strName, const RECT &rect, CWnd* pWndParent, UINT nID, BOOL CreateCurveObj = true);
//Knot functions
UINT GetActiveKnot();
void SetActiveKnot(UINT nIndex);
//Inline CurveObject Access function
CCurveObject* GetCurveObject();
void SetCurveObject(CCurveObject* pObject, BOOL bRedraw = FALSE);
protected:
HITINFO* m_pHitInfo; //Hit Info Structure
UINT m_nActiveKnot; //Index of active knot object;
int m_iKnotRadius;
BOOL m_bTracking; //Tracking Knots
//Creation helper functions
void CreateCurveObject(CString strCurve);
//Drawing helper functions
void DrawWindow(CDC* pDC);
void DrawGrid (CDC* pDC);
void DrawCurve (CDC* pDC);
void DrawKnots (CDC* pDC);
//Hit Testing helper functions
WORD HitTest (CPoint ptHit);
//Tracking support helper functions
void StartTracking();
void TrackKnot(CPoint point);
void StopTracking();
//{{AFX_MSG(CCurveWnd)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnDestroy();
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
afx_msg void OnPaint();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private :
CCurveObject* m_pCurve; //CurveObject associate with this window
};
//////////////////////////////////////////////////////////////////////////////
#endif // _JANSSENS_JOHAN_CURVEWND_H_