summaryrefslogtreecommitdiff
path: root/libtemplate/templatepixmap.h
blob: 6cf3bd506c4d0d96e782142be84c37febb36cd36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#ifndef __TEMPLATEPIXMAP_H
#define __TEMPLATEPIXMAP_H

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <sstream>

#include "globals.h"
#include "templateloopfunction.h"

using namespace std;

// --- cTemplatePixmap -------------------------------------------------------------

class cTemplatePixmap {
protected:
    bool scrolling;
    cTemplateFunction *parameters;
    vector<cTemplateFunction*> functions;
    vector<cTemplateFunction*>::iterator funcIt;
    int containerX;
    int containerY;
    int containerWidth;
    int containerHeight;
    cGlobals *globals;
    //functions replacing {width(label)} and {height(label)} tokens
    void ReplaceWidthFunctions(void);
    void ReplaceHeightFunctions(void);
    //functions replacing {posx(label)} and {posy(label)} tokens
    void ReplacePosXFunctions(void);
    void ReplacePosYFunctions(void);
    //Get Scrolling Function
    cTemplateFunction *GetScrollFunction(void);
public:
    cTemplatePixmap(void);
    virtual ~cTemplatePixmap(void);
    //Setter Functions
    void SetScrolling(void) { scrolling = true; };
    void SetParameters(vector<pair<string, string> > &params);
    void SetWidth(int width);
    void SetHeight(int height);
    void SetX(int x);
    void SetY(int y);
    void SetContainer(int x, int y, int w, int h);
    void SetGlobals(cGlobals *globals) { this->globals = globals; };
    void AddFunction(string name, vector<pair<string, string> > &params);
    void AddLoopFunction(cTemplateLoopFunction *lf);
    //PreCache Parameters
    bool CalculateParameters(void);
    //clear dynamically set function parameters
    void ClearDynamicFunctionParameters(void);
    //Clear dynamically set pixmap parameters
    void ClearDynamicParameters(void);
    //Parse pixmap parameters with dynamically set Tokens
    void ParseDynamicParameters(map <string,int> *intTokens, bool initFuncs);
    //Parse all function parameters with dynamically set Tokens
    void ParseDynamicFunctionParameters(map <string,string> *stringTokens, map <string,int> *intTokens);
    //Calculate size of drawport in case area scrolls
    bool CalculateDrawPortSize(cSize &size, map < string, vector< map< string, string > > > *loopTokens = NULL);
    //Set max width for text in scrollarea
    void SetScrollingTextWidth(void);
    //Getter Functions
    cRect GetPixmapSize(void);
    int GetNumericParameter(eParamType type);
    bool Scrolling(void) { return scrolling; };
    bool DoExecute(void) { return parameters->DoExecute(); };
    bool DoDebug(void) { return parameters->DoDebug(); };
    bool Ready(void);
    //Traverse Functions
    void InitIterator(void);
    cTemplateFunction *GetNextFunction(void);
    //Debug
    void Debug(void);
};

#endif //__TEMPLATEPIXMAP_H