Files
Work/cashflow/GRAPHWND.HPP
2024-08-07 09:12:07 -04:00

73 lines
2.3 KiB
C++

#ifndef _CASHFLOW_GRAPHWINDOW_HPP_
#define _CASHFLOW_GRAPHWINDOW_HPP_
#ifndef _COMMON_WINDOW_HPP_
#include <common/window.hpp>
#endif
#ifndef _COMMON_SMARTPOINTER_HPP_
#include <common/pointer.hpp>
#endif
template <class T>
class Block;
template <class T>
class Callback;
template <class T>
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<PureCashFlow> &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<PureCashFlow> &pureCashFlows,int baseMonths,PureVector<int> &vectorInt,BYTE paletteIndex,int zDepth=0);
void createWindow(GUIWindow &parentWindow,const Rect &winRect);
void clamp(PureVector<int> &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<GraphWindow> mPaintHandler;
Callback<GraphWindow> mCreateHandler;
Callback<GraphWindow> mDestroyHandler;
Callback<GraphWindow> mKeyDownHandler;
Callback<GraphWindow> mLeftButtonDownHandler;
Callback<GraphWindow> mDialogCodeHandler;
SmartPointer<Graph3D> mGraph3D;
Block<ColorRect> 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