#ifndef _CASHFLOW_GRAPHWINDOW_HPP_ #define _CASHFLOW_GRAPHWINDOW_HPP_ #ifndef _COMMON_WINDOW_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif template class Block; template class Callback; template class PureVector; class PureCashFlow; class Graph3D; class Rect3D; class ColorRect; class GraphWindow : public Window { public: GraphWindow(GUIWindow &parentWindow,const Rect &winRect); virtual ~GraphWindow(); void showFlows(Block &pureCashFlows,int baseMonths); private: enum {MaxRotate=360,MinRotate=-360}; enum {ThetaDelta=10,ViewDelta=5,TurnDelta=20}; enum {LeftArrow=0x25,RightArrow=0x27,UpArrow=0x26,DownArrow=0x28,inKey=0x49,outKey=0x4F}; GraphWindow(const GraphWindow &someGraphWindow); GraphWindow &operator=(const GraphWindow &someGraphWindow); void registerClass(void)const; void showFlows(Block &pureCashFlows,int baseMonths,PureVector &vectorInt,BYTE paletteIndex,int zDepth=0); void createWindow(GUIWindow &parentWindow,const Rect &winRect); void clamp(PureVector &vectorInt); WORD handleLeftArrow(void); WORD handleRightArrow(void); WORD handleUpArrow(void); WORD handleDownArrow(void); void setPerspective(void); BOOL shiftKeyPressed(void)const; CallbackData::ReturnType paintHandler(CallbackData &someCallbackData); CallbackData::ReturnType createHandler(CallbackData &someCallbackData); CallbackData::ReturnType destroyHandler(CallbackData &someCallbackData); CallbackData::ReturnType keyDownHandler(CallbackData &someCallbackData); CallbackData::ReturnType leftButtonDownHandler(CallbackData &someCallbackData); CallbackData::ReturnType dialogCodeHandler(CallbackData &someCallbackData); Callback mPaintHandler; Callback mCreateHandler; Callback mDestroyHandler; Callback mKeyDownHandler; Callback mLeftButtonDownHandler; Callback mDialogCodeHandler; SmartPointer mGraph3D; Block mGraphRects; static char smszClassName[]; static char smszMenuName[]; }; inline GraphWindow &GraphWindow::operator=(const GraphWindow &/*someGraphWindow*/) { // private implementation return *this; } inline BOOL GraphWindow::shiftKeyPressed(void)const { return ::GetKeyState(VK_SHIFT)&0x8000; } #endif