#ifndef __ATTRIBUTE_H #define __ATTRIBUTE_H #include #include #include #include #include #include #include "globals.h" #include "../libskindesignerapi/tokencontainer.h" #include "definitions.h" #include "complextypes.h" class cArea; /****************************************************************** * cAttributes ******************************************************************/ class cAttributes { private: map commonAttribIDs; map commonAttribNames; void SetCommonAttributesDefs(void); protected: cGlobals *globals; skindesignerapi::cTokenContainer *tokenContainer; cRect container; int numAttribs; int *attribs; cNumericExpr **attribCtors; cCondition *cond; map attribIDs; map attribNames; int CommonAttributeId(const char *att); const char *CommonAttributeName(int id); int AttributeId(const char *att); const char *AttributeName(int id); bool SetCommon(int id, const char *val); virtual bool IdEqual(int id, int compId); void SetBool(int id, const char *val); void SetViewElementMode(int id, const char *val); void SetShiftType(int id, const char *val); void SetShiftMode(int id, const char *val); void SetScrollMode(int id, const char *val); void SetScrollSpeed(int id, const char *val); void SetOrientation(int id, const char *val); void SetDirection(int id, const char *val); void SetAlign(int id, const char *val); void SetButton(int id, const char *val); public: cAttributes(int numAttributes); cAttributes(const cAttributes &other); virtual ~cAttributes(void); void SetGlobals(cGlobals *globals) { this->globals = globals; }; void SetTokenContainer(skindesignerapi::cTokenContainer *tokenContainer); virtual void SetTokenContainerDeep(skindesignerapi::cTokenContainer *tokenContainer); virtual void SetContainer(int x, int y, int width, int height); virtual void Set(vector &attributes) {}; void SetX(int width); void SetY(int height); void SetWidth(int width); void SetHeight(int height); virtual void Cache(void); int GetValue(int id); int X(void); int Y(void); int Width(void); int Height(void); int DoDebug(void) { return attribs[(int)eCommonAttribs::debug] == 1 ? true : false; }; bool DoExecute(void); virtual void Debug(void); }; /****************************************************************** * cLoopInfo ******************************************************************/ class cLoopInfo { public: int colWidth; int rowHeight; int index; int row; cLoopInfo(void) { colWidth = 0; rowHeight = 0; index = 0; row = 0; }; }; /****************************************************************** * cFunction ******************************************************************/ class cFunction : public cAttributes, public cListObject { private: cArea *owningArea; protected: const char *funcType; cColor *color; char *name; bool scrolling; void SetColor(const char *val); void SetAnimType(int id, const char *val); void SetOverflow(int id, const char *val); public: cFunction(cArea *owner, int numAttributes); cFunction(const cFunction &other); virtual ~cFunction(void); virtual void SetLoopInfo(cLoopInfo *loopInfo); void SetOwner(cArea *owner) { owningArea = owner; }; const char *Name(void) { return name; }; virtual void Cache(void); void CacheFuncReferences(void); void Scrolling(bool scrolling) { this->scrolling = scrolling; }; virtual void Render(cPixmap *p, int x0 = 0, int y0 = 0, int colWidth = 0, int rowHeight = 0) {}; virtual int FuncX(void) { return X(); }; virtual int FuncY(void) { return Y(); }; virtual int FuncWidth(void) { return Width(); }; virtual int FuncHeight(void) { return Height(); }; virtual int Align(void) { return (int)eAlign::left; }; virtual int Valign(void) { return (int)eAlign::top; }; int GetX(eAlign align, int x0, int colWidth); int GetY(eAlign valign, int y0, int rowHeight); virtual bool Blinking(void) { return false; }; virtual int BlinkFreq(void) { return -1; }; virtual void Debug(void); }; #endif //__ATTRIBUTE_H