aboutsummaryrefslogtreecommitdiff
path: root/Src/Wasabi/api/skin/widgets/textbase.h
blob: e143cf37b321fb8fd29bc11a42dc6be42aa78ee9 (plain) (blame)
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
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef NULLSOFT_WASABI_TEXTBASE_H
#define NULLSOFT_WASABI_TEXTBASE_H

#include <api/wnd/wndclass/bufferpaintwnd.h>
#include <tataki/color/filteredcolor.h>
#include <tataki/color/skinclr.h>
#include <bfc/string/StringW.h>

#define TEXTBASE_PARENT BufferPaintWnd

class TextBase : public TEXTBASE_PARENT, public SkinCallbackI
{
public:
	TextBase();
	virtual ~TextBase();

	ARGB32 GetColor(int alt=0);
	void GetFontInfo(Wasabi::FontInfo *_font, int alt=0);

	void SetTextColor(ARGB32 c, int alt=0);
	void SetFontSize(const wchar_t *strvalue, int alt=0);
	void SetFont(const wchar_t *name, int alt=0);
	void SetAntialias(int a, int alt=0);
	void SetFontAlign(int al);
	virtual void setDblClickParam(const wchar_t *p);
	virtual const wchar_t *getDblClickParam();
	virtual void setRClickParam(const wchar_t *p);
	virtual const wchar_t *getRClickParam();
protected:
	/* Virtual methods to override */
	virtual void invalidateTextBuffer()=0;
	
	
/*static */void CreateXMLParameters(int master_handle);
private:
	StringW dblClickAction;
	StringW rClickAction;

	/* Font Info */
	FilteredColor color[2];
	SkinColor scolor[2];
	int color_mode[2];
	StringW font[2];
	int bold[2];
	int italic[2];
	int antialias[2];
	int align;

protected:
	int fontsize[2];
	int lpadding, rpadding;
	int grab;

private:
	/* XML Parameters */
	enum
	{
		TEXTBASE_SETCOLOR,
		TEXTBASE_SETALTCOLOR,
		TEXTBASE_SETFONTSIZE,
    TEXTBASE_SETFONT,
		TEXTBASE_SETALTFONT,
		    TEXTBASE_SETALTFONTSIZE,
				    TEXTBASE_SETBOLD,
    TEXTBASE_SETITALIC,
    TEXTBASE_SETALTBOLD,
    TEXTBASE_SETALTITALIC,
		TEXTBASE_SETANTIALIAS,
    TEXTBASE_SETALTANTIALIAS,
		TEXTBASE_SETDBLCLKACTION,
		TEXTBASE_SETRCLKACTION,
    TEXTBASE_SETALIGN,
		    TEXTBASE_SETLPADDING,
    TEXTBASE_SETRPADDING,
	TEXTBASE_RCLICKPARAM,
	TEXTBASE_DBLCLICKPARAM,


	};
	static XMLParamPair params[];
	int xuihandle;
	StringW dblclickparam;
	StringW rclickparam;
protected:
	/* Methods that TextBase overrides */
	int setXuiParam(int _xuihandle, int attrid, const wchar_t *name, const wchar_t *strval);
	int onInit();
	int skincb_onColorThemeChanged(const wchar_t *newcolortheme);
	int onLeftButtonDblClk(int x, int y);
	int onRightButtonDown(int x, int y);
	virtual int wantAutoContextMenu() { return rClickAction.isempty(); }

};

#endif