summaryrefslogtreecommitdiff
path: root/plugins/NewStory/src/fonts.cpp
blob: 0db756187bb3c21cb1d9fad9bdae32c00a1dc230 (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
#include "stdafx.h"

MyColourID colors[] = 
{
	{0, {MODULETITLE, "Incoming Messages",     MODULENAME, "ColorMsgIn", 0,   RGB(0xff, 0xff, 0xff),  0}},
	{0, {MODULETITLE, "Outgoing Messages",     MODULENAME, "ColorMsgOut", 0,  RGB(0xff, 0xff, 0xff),  1}},

	{0, {MODULETITLE, "Incoming Files",        MODULENAME, "ColorFileIn", 0,  RGB(0xff, 0xff, 0xff),  2}},
	{0, {MODULETITLE, "Outgoing Files",        MODULENAME, "ColorFileOut", 0, RGB(0xff, 0xff, 0xff),  3}},

	{0, {MODULETITLE, "Incoming URLs",         MODULENAME, "ColorURLIn", 0,   RGB(0xff, 0xff, 0xff),  4}},
	{0, {MODULETITLE, "Outgoing URLs",         MODULENAME, "ColorURLOut", 0,  RGB(0xff, 0xff, 0xff),  5}},

	{0, {MODULETITLE, "Status changes",        MODULENAME, "ColorStatus", 0,  RGB(0xff, 0xff, 0xff),  6}},

	{0, {MODULETITLE, "Other Outgoing Events", MODULENAME, "ColorOut", 0,     RGB(0xff, 0xff, 0xff),  7}},
	{0, {MODULETITLE, "Other Incoming Events", MODULENAME, "ColorIn", 0,      RGB(0xff, 0xff, 0xff),  8}},

	{0, {MODULETITLE, "Selected Items",        MODULENAME, "ColorSel", 0,     RGB(0x60, 0x60, 0x60),  9}},
	{0, {MODULETITLE, "Selected Items (Text)", MODULENAME, "ColorSelTxt", 0,  RGB(0xff, 0xff, 0xff), 10}}
};

MyFontID fonts[] = 
{
	{0, 0, 0, {MODULETITLE, "Incoming Messages",     MODULENAME, "FontMsgIn", 0,   {0}, 0}},
	{0, 0, 0, {MODULETITLE, "Outgoing Messages",     MODULENAME, "FontMsgOut", 0,  {0}, 1}},

	{0, 0, 0, {MODULETITLE, "Incoming Files",        MODULENAME, "FontFileIn", 0,  {0}, 2}},
	{0, 0, 0, {MODULETITLE, "Outgoing Files",        MODULENAME, "FontFileOut", 0, {0}, 3}},

	{0, 0, 0, {MODULETITLE, "Incoming URLs",         MODULENAME, "FontURLIn", 0,   {0}, 4}},
	{0, 0, 0, {MODULETITLE, "Outgoing URLs",         MODULENAME, "FontURLOut", 0,  {0}, 5}},

	{0, 0, 0, {MODULETITLE, "Status changes",        MODULENAME, "FontStatus", 0,  {0}, 6}},

	{0, 0, 0, {MODULETITLE, "Other Outgoing Events", MODULENAME, "FontOut", 0,     {0}, 7}},
	{0, 0, 0, {MODULETITLE, "Other Incoming Events", MODULENAME, "FontIn", 0,      {0}, 8}}

//	{sizeof(FontID), MODULETITLE, "Default Text",  MODULENAME, "FontDef", FIDF_SAVEPOINTSIZE, {0}, 0},
//	{sizeof(FontID), MODULETITLE, "Selected Item", MODULENAME, "FontSel", FIDF_SAVEPOINTSIZE, {0}, 1}
};

int evtFontsChanged(WPARAM, LPARAM)
{
	int i;
	for (i = 0; i < COLOR_COUNT; i++)
		colors[i].cl = Colour_Get(colors[i].info.group, colors[i].info.name);

	for (i = 0; i < FONT_COUNT; i++) {
		fonts[i].cl = (COLORREF)Font_Get(fonts[i].info, fonts[i].lf);
		DeleteObject(fonts[i].hfnt);
		fonts[i].hfnt = CreateFontIndirectA(fonts[i].lf);
	}
//	WindowList_Broadcast(hNewstoryWindows, UM_REDRAWLISTH, 0, 0);
	return 0;
}

void InitFonts()
{
	bool isFSInstalled = /*ServiceExists(MS_FONT_GET) ? */true/* : false*/;

	int i; // damn msvc can't handle for(int i...) correctly! =(

	HookEvent(ME_FONT_RELOAD, evtFontsChanged);
	HookEvent(ME_COLOUR_RELOAD, evtFontsChanged);

	if (isFSInstalled)
	{
		for (i = 0; i < COLOR_COUNT; i++)
		{
			g_plugin.addColor(&colors[i].info);
			colors[i].cl = Colour_Get(colors[i].info.group, colors[i].info.name);
		}
		for (i = 0; i < FONT_COUNT; i++)
		{
			//CallService(MS_FONT_REGISTER, (WPARAM)&fonts[i].info, 0);
			g_plugin.addFont(&fonts[i].info);
			fonts[i].lf = (LOGFONTA *)malloc(sizeof(LOGFONTA));
			fonts[i].cl = (COLORREF)Font_Get(fonts[i].info, fonts[i].lf);
			fonts[i].hfnt = CreateFontIndirectA(fonts[i].lf);
			//MessageBox(0, fonts[i].lf->lfFaceName, _T(""), MB_OK);
		}
	} else
	{
		LOGFONTA lfText = {0};
		lfText.lfHeight = -11;
		lfText.lfWidth = lfText.lfEscapement = lfText.lfOrientation = 0;
		lfText.lfItalic = lfText.lfUnderline = lfText.lfStrikeOut = FALSE;
		lfText.lfCharSet = DEFAULT_CHARSET;
		lfText.lfOutPrecision = OUT_DEFAULT_PRECIS;
		lfText.lfClipPrecision = CLIP_DEFAULT_PRECIS;
		lfText.lfQuality = DEFAULT_QUALITY;
		lfText.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS; 
		lstrcpyA(lfText.lfFaceName, "MS Shell Dlg");
		lfText.lfWeight = FW_REGULAR;

		for (i = 0; i < COLOR_COUNT; i++)
		{
			colors[i].cl = colors[i].info.defcolour;
		}
		for (i = 0; i < FONT_COUNT; i++)
		{
			fonts[i].lf = (LOGFONTA *)malloc(sizeof(LOGFONTA));
			*fonts[i].lf = lfText;
			fonts[i].cl = RGB(0,0,0);
			fonts[i].hfnt = CreateFontIndirectA(fonts[i].lf);
		}
	}
}

void DestroyFonts()
{
	int i;
	for (i = 0; i < FONT_COUNT; i++)
	{
		DeleteObject(fonts[i].hfnt);
		free(fonts[i].lf);
	}
}