Subversion Repositories Kolibri OS

Rev

Rev 9601 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9601 Rev 9602
1
#define MEMSIZE 1024*30
1
#define MEMSIZE 1024*30
2
#define ENTRY_POINT #main
2
#define ENTRY_POINT #main
3
 
3
 
4
#include "../lib/kfont.h"
4
#include "../lib/kfont.h"
5
#include "../lib/gui.h"
5
#include "../lib/gui.h"
6
 
6
 
7
#define BARH 28
7
#define BARH 28
8
#define WINW 528
8
#define WINW 528
9
#define WINH 315
9
#define WINH 315
10
 
10
 
11
char active_tab = 0;
11
char active_tab = 0;
12
char colored = true;
12
char colored = true;
13
dword checkbox_flag;
13
dword checkbox_flag;
14
 
14
 
15
void main()
15
void main()
16
{   
16
{   
17
	proc_info Form;
17
	proc_info Form;
18
 
18
 
19
	mem_init();
19
	mem_init();
20
	checkbox_flag = memopen("CHECKBOX", NULL, SHM_READ);
20
	checkbox_flag = memopen("CHECKBOX", NULL, SHM_READ);
21
 
21
 
22
	if (!param) strcpy(#param, DEFAULT_FONT);
22
	if (!param) strcpy(#param, DEFAULT_FONT);
23
	kfont.init(#param);
23
	kfont.init(#param);
24
	strcpy(#title, "Font preview: ");
24
	strcpy(#title, "Font preview: ");
25
	strcat(#title, #param);
25
	strcat(#title, #param);
26
 
26
 
27
	loop() switch(@WaitEvent())
27
	loop() switch(@WaitEvent())
28
	{
28
	{
29
		case evKey:
29
		case evKey:
30
			@GetKey();
30
			@GetKey();
31
			EAX >>= 16;
31
			EAX >>= 16;
32
			if (AL == SCAN_CODE_ESC) ExitProcess();
32
			if (AL == SCAN_CODE_ESC) ExitProcess();
33
			if (AL == SCAN_CODE_TAB) {
33
			if (AL == SCAN_CODE_TAB) {
34
				active_tab^=1;
34
				active_tab^=1;
35
				goto _DRAW_WINDOW_CONTENT;
35
				goto _DRAW_WINDOW_CONTENT;
36
			}
36
			}
37
			break;
37
			break;
38
 
38
 
39
		case evButton:
39
		case evButton:
40
			@GetButtonID();
40
			@GetButtonID();
41
			if (EAX==1) ExitProcess();
41
			if (EAX==1) ExitProcess();
42
			if (EAX==2) kfont.bold^=1;
42
			if (EAX==2) kfont.bold^=1;
43
			if (EAX==3) kfont.smooth^=1;
43
			if (EAX==3) kfont.smooth^=1;
44
			if (EAX==4) colored^=1;
44
			if (EAX==4) colored^=1;
45
			if (EAX==5) active_tab=0;
45
			if (EAX==5) active_tab=0;
46
			if (EAX==6) active_tab=1;
46
			if (EAX==6) active_tab=1;
47
			GOTO _DRAW_WINDOW_CONTENT;
47
			GOTO _DRAW_WINDOW_CONTENT;
48
 
48
 
49
		case evReDraw:
49
		case evReDraw:
50
			sc.get();
50
			sc.get();
51
			DefineAndDrawWindow(215,100,WINW+9,WINH+GetSkinHeight()+4,0x74,0xFFFFFF,#title,0);
51
			DefineAndDrawWindow(215,100,WINW+9,WINH+GetSkinHeight()+4,0x74,0xFFFFFF,#title,0);
52
			GetProcessInfo(#Form, SelfInfo);
52
			GetProcessInfo(#Form, SelfInfo);
53
			if (Form.status_window&ROLLED_UP) break;
53
			if (Form.status_window&ROLLED_UP) break;
54
			_DRAW_WINDOW_CONTENT:
54
			_DRAW_WINDOW_CONTENT:
55
 
55
 
56
			DrawBar(0, 0, WINW, BARH-1, sc.work);
56
			DrawBar(0, 0, WINW, BARH-1, sc.work);
57
			DrawBar(0, BARH-1,WINW,1,sc.work_graph);
57
			DrawBar(0, BARH-1,WINW,1,sc.line);
58
 
58
 
59
			if (!kfont.font) {
59
			if (!kfont.font) {
60
				DrawBar(0, BARH, WINW, WINH - BARH, 0xFFFfff);
60
				DrawBar(0, BARH, WINW, WINH - BARH, 0xFFFfff);
61
				WriteText(10, 50, 0x82, 0xFF00FF, "Font is not loaded.");
61
				WriteText(10, 50, 0x82, 0xFF00FF, "Font is not loaded.");
62
			} else {
62
			} else {
63
				draw_checkbox(9, kfont.bold);
63
				draw_checkbox(9, kfont.bold);
64
				draw_checkbox(81, kfont.smooth);
64
				draw_checkbox(81, kfont.smooth);
65
				draw_checkbox(169, colored);
65
				draw_checkbox(169, colored);
66
				WriteText(30, 8, 0x90, sc.work_text, "Bold     Smooth     Colored            Phrase   Chars");
66
				WriteText(30, 8, 0x90, sc.work_text, "Bold     Smooth     Colored            Phrase   Chars");
67
				UnsafeDefineButton(0, 3, 70, 24, 2+BT_HIDE+BT_NOFRAME, ESI);
67
				UnsafeDefineButton(0, 3, 70, 24, 2+BT_HIDE+BT_NOFRAME, ESI);
68
				$inc edx //11
68
				$inc edx //11
69
				$add ebx, 80 << 16
69
				$add ebx, 80 << 16
70
				$int 64
70
				$int 64
71
				$inc edx //12
71
				$inc edx //12
72
				$add ebx, 88 << 16
72
				$add ebx, 88 << 16
73
				$int 64
73
				$int 64
74
				$inc edx //13
74
				$inc edx //13
75
				$add ebx, 162 << 16
75
				$add ebx, 162 << 16
76
				$int 64
76
				$int 64
77
				$inc edx //14
77
				$inc edx //14
78
				$add ebx, 70 << 16
78
				$add ebx, 70 << 16
79
				$int 64
79
				$int 64
80
				DrawBar(active_tab*70+335, BARH-4, 60, 4, 0xE44C9C);
80
				DrawBar(active_tab*70+335, BARH-4, 60, 4, 0xE44C9C);
81
				if (!active_tab) DrawPreviewPhrase(); else DrawPreviewChars();
81
				if (!active_tab) DrawPreviewPhrase(); else DrawPreviewChars();
82
			}
82
			}
83
	}
83
	}
84
}
84
}
85
 
85
 
86
dword pal[] = { 0x4E4153, 0x57417C, 0x89633B, 0x819156, 0x00CCCC, 0x2AD266, 
86
dword pal[] = { 0x4E4153, 0x57417C, 0x89633B, 0x819156, 0x00CCCC, 0x2AD266, 
87
	0xE000CC, 0x0498F9, 0xC3A9F5, 0xFFC200, 0xFF5836, 0xA086BA, 0 };
87
	0xE000CC, 0x0498F9, 0xC3A9F5, 0xFFC200, 0xFF5836, 0xA086BA, 0 };
88
 
88
 
89
void DrawPreviewPhrase()
89
void DrawPreviewPhrase()
90
{
90
{
91
	dword i, y=12;
91
	dword i, y=12;
92
	dword line[64];
92
	dword line[64];
93
	kfont.raw_size = free(kfont.raw);
93
	kfont.raw_size = free(kfont.raw);
94
	for (i=10; i<22; i++) //not flexible, need to calculate font count and max line length
94
	for (i=10; i<22; i++) //not flexible, need to calculate font count and max line length
95
	{
95
	{
96
		strcpy(#line, " §¬¥à èà¨äâ /font size is ");
96
		strcpy(#line, " §¬¥à èà¨äâ /font size is ");
97
		itoa_(#line+27, i);
97
		itoa_(#line+27, i);
98
		strcat(#line, " ¯¨ªá¥«¥©/px.");
98
		strcat(#line, " ¯¨ªá¥«¥©/px.");
99
		kfont.WriteIntoBuffer(14,y,WINW,WINH-BARH, 0xFFFFFF, pal[i-10]*colored, i, #line);
99
		kfont.WriteIntoBuffer(14,y,WINW,WINH-BARH, 0xFFFFFF, pal[i-10]*colored, i, #line);
100
		y+=kfont.height+3;
100
		y+=kfont.height+3;
101
	}
101
	}
102
	DrawBuf();
102
	DrawBuf();
103
}
103
}
104
 
104
 
105
void DrawPreviewChars()
105
void DrawPreviewChars()
106
{
106
{
107
	dword i, x=20, y=0;
107
	dword i, x=20, y=0;
108
	char line[2];
108
	char line[2];
109
	kfont.raw_size = free(kfont.raw);
109
	kfont.raw_size = free(kfont.raw);
110
	for (i=0; i<255; i++)
110
	for (i=0; i<255; i++)
111
	{
111
	{
112
		line[0]=i;
112
		line[0]=i;
113
		kfont.WriteIntoBuffer(x,y,WINW,WINH-BARH, 0xFFFFFF, 0, 16, #line);
113
		kfont.WriteIntoBuffer(x,y,WINW,WINH-BARH, 0xFFFFFF, 0, 16, #line);
114
		x+= kfont.height+2;
114
		x+= kfont.height+2;
115
		if (x>=WINW-30) { 
115
		if (x>=WINW-30) { 
116
			x=20;
116
			x=20;
117
			y+=kfont.height+2;
117
			y+=kfont.height+2;
118
		}
118
		}
119
	}
119
	}
120
	DrawBuf();
120
	DrawBuf();
121
}
121
}
122
 
122
 
123
void DrawBuf()
123
void DrawBuf()
124
{
124
{
125
	if (kfont.smooth) kfont.ApplySmooth();
125
	if (kfont.smooth) kfont.ApplySmooth();
126
	kfont.ShowBuffer(0, BARH);
126
	kfont.ShowBuffer(0, BARH);
127
}
127
}
128
 
128
 
129
void draw_checkbox(dword _x, _checked)
129
void draw_checkbox(dword _x, _checked)
130
{
130
{
131
	#define SIZE 14
131
	#define SIZE 14
132
	#define CHBOXY 7
132
	#define CHBOXY 7
133
	DrawRectangle3D(_x, CHBOXY, SIZE, SIZE, sc.work_graph, sc.work_graph);
133
	DrawRectangle3D(_x, CHBOXY, SIZE, SIZE, sc.line, sc.line);
134
	if (_checked == false)
134
	if (_checked == false)
135
	{
135
	{
136
		DrawRectangle3D(_x+1, CHBOXY+1, SIZE-2, SIZE-2, 0xDDDddd, 0xffffff);
136
		DrawRectangle3D(_x+1, CHBOXY+1, SIZE-2, SIZE-2, 0xDDDddd, 0xffffff);
137
		DrawBar(_x+2, CHBOXY+2, SIZE-3, SIZE-3, 0xffffff);
137
		DrawBar(_x+2, CHBOXY+2, SIZE-3, SIZE-3, 0xffffff);
138
	} else {
138
	} else {
139
		if (checkbox_flag) _PutImage(_x+1, CHBOXY+1, 13, 13, checkbox_flag);
139
		if (checkbox_flag) PutImage(_x+1, CHBOXY+1, 13, 13, checkbox_flag);
140
	}
140
	}
141
	DrawRectangle3D(_x-1,CHBOXY-1,SIZE+2,SIZE+2,sc.work_dark,sc.work_light);
141
	DrawRectangle3D(_x-1,CHBOXY-1,SIZE+2,SIZE+2,sc.dark,sc.light);
142
}
142
}
143
 
143
 
144
char title[PATHLEN];
144
char title[PATHLEN];