summaryrefslogtreecommitdiff
path: root/skinengine/src/main.cpp
blob: 0f27f1e3c703ba2c343c8aa95d3352635d1cf732 (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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "headers.h"

PLUGINLINK* pluginLink;
HINSTANCE   g_hInst;

LIST_INTERFACE li;
MM_INTERFACE mmi;
XML_API xi;

// {AC8B66B3-AFE1-4475-BABA-49783BA39A66}
#define MIID_SKINENGINE { 0xac8b66b3, 0xafe1, 0x4475, { 0xba, 0xba, 0x49, 0x78, 0x3b, 0xa3, 0x9a, 0x66 } }

PLUGININFOEX pluginInfo = {
	sizeof(PLUGININFOEX),
	"ske",
	PLUGIN_MAKE_VERSION(0, 0, 0, 3),
	"ske",
	"",
	"nullbie@gmail.com",
	"(c)",
	"http://miranda-im.org/",
	UNICODE_AWARE,
	0,	           // replace internal version (if any)
#ifdef _UNICODE
	// {CE2C0401-F9E0-40d7-8E95-1A4197D7AB04}
	{ 0xce2c0401, 0xf9e0, 0x40d7, { 0x8e, 0x95, 0x1a, 0x41, 0x97, 0xd7, 0xab, 0x4 } }
#else
	// {DE1D765C-9DC2-4679-8633-EDAD492C8479}
	{ 0xde1d765c, 0x9dc2, 0x4679, { 0x86, 0x33, 0xed, 0xad, 0x49, 0x2c, 0x84, 0x79 } }
#endif
};

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
	g_hInst = hinstDLL;
	return TRUE;
}

extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfoEx(DWORD mirandaVersion)
{
	return &pluginInfo;
}

extern "C" __declspec(dllexport) const MUUID *MirandaPluginInterfaces(void)
{
	static const MUUID interfaces[] = { MIID_SKINENGINE, MIID_LAST };
	return interfaces;
}

#ifdef _DEBUG
const TCHAR *xml =_T(
"<layout type='vertical'>\
	<layout type='horizontal'>\
		<image src='e:\\!!!\\title_lt.png' />\
		<image src='e:\\!!!\\title_ct.png' width='auto' />\
		<image src='e:\\!!!\\title_rt.png' />\
	</layout>\
	<layout type='horizontal'>\
		<image src='e:\\!!!\\title_lc.png' height='auto' />\
		<layout type='layered'>\
			<image src='e:\\!!!\\title_cc.png' />\
			<layout type='horizontal'>\
				<text text='this is a sample text'/>\
				<icon />\
			</layout>\
		</layout>\
		<image src='e:\\!!!\\title_rc.png' height='auto' />\
	</layout>\
	<layout type='horizontal'>\
		<image src='e:\\!!!\\title_lb.png' />\
		<image src='e:\\!!!\\title_cb.png' width='auto' />\
		<image src='e:\\!!!\\title_rb.png' />\
	</layout>\
</layout>");

int svcTest(WPARAM, LPARAM)
{
	ISkinDataSource *ds = new CSkinDataSource;

	SkinRenderParams params = { GetDC(0) };
	int bytesProcessed = 0;
	HXML hXml = xi.parseString(xml, &bytesProcessed, NULL);
	ISkinElement *obj = SkinCreateObjectFromXml(hXml, ds);
	obj->Measure(&params);
	obj->Layout(&params);
	obj->Paint(&params);
	obj->Destroy();
	xi.destroyNode(hXml);

	delete ds;
	return 0;
}
#endif

extern "C" __declspec(dllexport) int Load(PLUGINLINK * link)
{
	pluginLink = link;
	mir_getLI(&li);
	mir_getMMI(&mmi);
	mir_getXI(&xi);

#ifdef _DEBUG
	CreateServiceFunction("SkinEngine/Test", svcTest);

	CLISTMENUITEM mi = { 0 };
	mi.cbSize = sizeof(mi);
	mi.flags = CMIF_ICONFROMICOLIB;
	mi.icolibItem = LoadSkinnedIconHandle(SKINICON_OTHER_MIRANDA);
	mi.position = 1900000000;
	mi.pszName = LPGEN("Skin engine test");
	mi.pszService = "SkinEngine/Test";
	CallService( MS_CLIST_ADDMAINMENUITEM, 0, ( LPARAM )&mi );
#endif

	return 0;
}

extern "C" __declspec(dllexport) int Unload(void)
{
	return 0;
}