#ifndef __VIEW_H #define __VIEW_H #include "string" #include "map" #include "../libcore/pixmapcontainer.h" #include "../libtemplate/template.h" using namespace std; class cView : public cPixmapContainer { private: void Init(void); void DoFill(int num, cTemplateFunction *func); void DoDrawText(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawTextVertical(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawTextBox(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawFloatingTextBox(int num, cTemplateFunction *func); void DoDrawRectangle(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawEllipse(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawSlope(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void DoDrawImage(int num, cTemplateFunction *func, int x0 = 0, int y0 = 0); void ActivateScrolling(void); protected: cTemplateView *tmplView; cTemplateViewElement *tmplItem; cTemplateViewTab *tmplTab; //scaling window cRect scalingWindow; bool tvScaled; bool viewInit; //true if view is scrollable in general bool scrolling; //true if view is actually starting scrolling bool currentlyScrolling; eViewElement veScroll; int scrollingPix; int scrollOrientation; int scrollDelay; int scrollMode; int scrollSpeed; void DrawViewElement(eViewElement ve, map *stringTokens = NULL, map *intTokens = NULL, map < string, vector< map< string, string > > > *loopTokens = NULL); void ClearViewElement(eViewElement ve); void DestroyViewElement(eViewElement ve); bool ExecuteViewElement(eViewElement ve); bool ViewElementScrolls(eViewElement ve); void CreateViewPixmap(int num, cTemplatePixmap *pix, cRect *size = NULL); void CreateScrollingPixmap(int num, cTemplatePixmap *pix, cSize &drawportSize); void DrawPixmap(int num, cTemplatePixmap *pix, map < string, vector< map< string, string > > > *loopTokens = NULL, bool flushPerLoop = false); void DrawLoop(int numPixmap, cTemplateFunction *func, map < string, vector< map< string, string > > > *loopTokens); void DebugTokens(string viewElement, map *stringTokens, map *intTokens, map < string, vector< map< string, string > > > *loopTokens = NULL); virtual void Action(void); public: cView(cTemplateView *tmplView); cView(cTemplateViewElement *tmplItem); cView(cTemplateViewTab *tmplTab); virtual ~cView(); virtual void Stop(void); }; class cViewListItem : public cView { protected: int pos; int numTotal; cRect container; int align; int listOrientation; void SetListElementPosition(cTemplatePixmap *pix); public: cViewListItem(cTemplateViewElement *tmplItem); virtual ~cViewListItem(); cRect DrawListItem(map *stringTokens, map *intTokens); void ClearListItem(void); }; class cGrid : public cView { protected: bool dirty; bool moved; bool resized; bool current; double x; double y; double width; double height; map stringTokens; map intTokens; void PositionPixmap(cTemplatePixmap *pix); public: cGrid(cTemplateViewElement *tmplGrid); virtual ~cGrid(); bool Dirty(void) { return dirty; }; bool Moved(void) { return moved; }; bool Resized(void) { return resized; }; void Set(double x, double y, double width, double height, map *intTokens, map *stringTokens); void SetCurrent(bool current); void Move(void); void Draw(void); void Clear(void); void DeletePixmaps(void); }; #endif //__VIEW_H