Subversion Repositories Kolibri OS

Rev

Rev 7909 | Rev 7989 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7984 leency 1
#define MEMSIZE 1024*30
5730 pavelyakov 2
 
6805 leency 3
#include "../lib/kfont.h"
5776 leency 4
#include "../lib/gui.h"
5730 pavelyakov 5
 
7226 leency 6
#define PANELH 28
7
#define WIN_W 490
8
#define WIN_H 315
7909 leency 9
#define BASE_TAB_BUTTON_ID 97
5784 leency 10
 
7909 leency 11
_tabs tabs = { WIN_W-130, 0, NULL, BASE_TAB_BUTTON_ID };
6264 leency 12
 
7227 leency 13
block preview = { 0, PANELH, WIN_W, WIN_H - PANELH };
7244 leency 14
checkbox bold = { "Bold", false };
15
checkbox smooth = { "Smooth", true };
7647 leency 16
checkbox colored = { "Colored", true };
7226 leency 17
 
5730 pavelyakov 18
void main()
19
{
7984 leency 20
	proc_info Form;
21
	char title[1024];
6264 leency 22
	int btn;
7984 leency 23
 
5981 leency 24
	if (!param) strcpy(#param, DEFAULT_FONT);
6806 leency 25
	kfont.init(#param);
5885 pavelyakov 26
	strcpy(#title, "Font preview: ");
5776 leency 27
	strcat(#title, #param);
7909 leency 28
 
29
	tabs.add("Phrase", #DrawPreviewPhrase);
30
	tabs.add("Chars", #DrawPreviewChars);
31
 
7984 leency 32
	loop() switch(@WaitEvent())
5776 leency 33
	{
34
		case evButton:
7984 leency 35
			btn = @GetButtonID();
36
			if (btn==1) @ExitProcess();
7647 leency 37
			bold.click(btn);
38
			smooth.click(btn);
39
			colored.click(btn);
7909 leency 40
			tabs.click(btn);
7984 leency 41
			GOTO _DRAW_WINDOW_CONTENT;
42
 
5776 leency 43
		case evReDraw:
7806 leency 44
			sc.get();
7226 leency 45
			DefineAndDrawWindow(215,100,WIN_W+9,WIN_H+skin_height+5,0x74,0xFFFFFF,#title,0);
5784 leency 46
			GetProcessInfo(#Form, SelfInfo);
5987 leency 47
			if (Form.status_window>2) break;
5784 leency 48
			_DRAW_WINDOW_CONTENT:
7226 leency 49
 
7647 leency 50
			kfont.bold = bold.checked;
51
			kfont.smooth = smooth.checked;
52
 
7984 leency 53
			DrawBar(0, 0, WIN_W, PANELH-1, sc.work);
54
			DrawBar(0, PANELH-1,WIN_W,1,sc.work_graph);
7226 leency 55
 
7984 leency 56
			if (!kfont.font) {
7226 leency 57
				DrawBar(preview.x, preview.y, preview.w, preview.h, 0xFFFfff);
5981 leency 58
				WriteText(10, 50, 0x82, 0xFF00FF, "Font is not loaded.");
7984 leency 59
			} else {
60
				bold.draw(10, 8);
61
				smooth.draw(83,8);
62
				colored.draw(170,8);
63
				tabs.draw();
64
				tabs.draw_active_tab();
5784 leency 65
			}
5776 leency 66
	}
67
}
6264 leency 68
 
7647 leency 69
dword pal[] = { 0x4E4153, 0x57417C, 0x89633B, 0x819156, 0x00CCCC, 0x2AD266,
7984 leency 70
	0xE000CC, 0x0498F9, 0xC3A9F5, 0xFFC200, 0xFF5836, 0xA086BA, 0 };
7647 leency 71
 
6264 leency 72
void DrawPreviewPhrase()
73
{
74
	dword i, y;
7647 leency 75
	dword c;
6264 leency 76
	char line[256];
6806 leency 77
	kfont.raw_size = free(kfont.raw);
7647 leency 78
	for (i=10, y=12; i<22; i++, y+=kfont.height+3;) //not flexible, need to calculate font count and max line length
6264 leency 79
	{
7647 leency 80
		if (colored.checked) c = pal[i-10]; else c=0;
7984 leency 81
		strcpy(#line, "Размер шрифта/font size is ");
7768 leency 82
		strcat(#line, itoa(i));
83
		strcat(#line, " пикселей/px.");
7984 leency 84
		kfont.WriteIntoBuffer(14,y,WIN_W,WIN_H-PANELH, 0xFFFFFF, c, i, #line);
6264 leency 85
	}
6806 leency 86
	if (kfont.smooth) kfont.ApplySmooth();
7226 leency 87
	kfont.ShowBuffer(preview.x, preview.y);
6264 leency 88
}
89
 
90
void DrawPreviewChars()
91
{
92
	dword i, x=20, y=0;
7984 leency 93
	char line[2]=0;
6806 leency 94
	kfont.raw_size = free(kfont.raw);
6264 leency 95
	for (i=0; i<255; i++) //not flexible, need to calculate font count and max line length
96
	{
97
		line[0]=i;
7984 leency 98
		kfont.WriteIntoBuffer(x,y,WIN_W,WIN_H-PANELH, 0xFFFFFF, 0, 16, #line);
6806 leency 99
		x+= kfont.height+2;
7226 leency 100
		if (x>=preview.w-30) {
6264 leency 101
			x=20;
6806 leency 102
			y+=kfont.height+2;
6264 leency 103
		}
104
	}
6806 leency 105
	if (kfont.smooth) kfont.ApplySmooth();
7226 leency 106
	kfont.ShowBuffer(preview.x, preview.y);
6264 leency 107
}