#ifndef _HISTOGRAM_GRAPHWINDOW_HPP_ #define _HISTOGRAM_GRAPHWINDOW_HPP_ #ifndef _COMMON_WINDOW_HPP_ #include #endif #ifndef _COMMON_SMARTPOINTER_HPP_ #include #endif #ifndef _COMMON_PUREPALETTE_HPP_ #include #endif //#ifndef _HISTOGRAM_GRAPH3D_HPP_ //#include //#endif //#ifndef _MUSIC_NOTE_HPP_ //#include //#endif #ifndef _GUITAR_TABENTRY_HPP_ #include #endif template class Block; template class Callback; //template //class PureCheck; class Graph3D; class Rect3D; class ColorRect; class FloatPairs; class GraphWindow : public Window { public: GraphWindow(GUIWindow &parentWindow,const Rect &winRect); virtual ~GraphWindow(); void showHistogram(TabEntries &entries); // void showHistogram(Array ¬es); // void showBalance(Block &pureChecks); 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 initializePalette(void); void createWindow(GUIWindow &parentWindow,const Rect &winRect); void clamp(Array &vector); // void clamp(PureVector &vector); void showHistogram(Array &vectorInt,BYTE paletteIndex,int zDepth=0); // void showBalance(int baseMonths,PureVector &vectorInt,BYTE paletteIndex,int zDepth=0); bool handleLeftArrow(void); bool handleRightArrow(void); bool handleUpArrow(void); bool 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; PurePalette mGraphPalette; 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