Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
9481 leency 1
inline fastcall replace_2cols(EDI, EDX, ESI, ECX, EBX, EAX)
2
{
3
    EDX += EDI; //imgsrc + imgsize;
4
    WHILE (EDI < EDX) {
5
        IF (DSDWORD[EDI]==ESI) DSDWORD[EDI] = ECX;
6
        ELSE IF (DSDWORD[EDI]==EBX) DSDWORD[EDI] = EAX;
7
        EDI += 4;
8
    }
9
}
7759 leency 10
 
8952 leency 11
:unsigned int DrawTopPanelButton(dword _button_id, _x, _y, signed int _icon_n, bool pressed)
7759 leency 12
{
13
	#define TSZE 25
9481 leency 14
	static dword lightest, i16_mem, old_work_light;
15
	dword i16_size;
16
	if (!lightest) || (old_work_light != sc.work_light) {
17
		old_work_light = sc.work_light;
18
		lightest = MixColors(sc.work_light, 0xFFFfff, skin_is_dark()*155 + 20);
19
		if (ESI = memopen("ICONS18", NULL, SHM_READ)) {
20
			i16_size = EDX;
21
			i16_mem = malloc(i16_size);
22
			memmov(i16_mem, ESI, i16_size);
23
			replace_2cols(i16_mem, i16_size, 0xffFFFfff, sc.work_light, 0xffCACBD6, sc.work_dark);
24
		}
7759 leency 25
	}
9481 leency 26
	DrawWideRectangle(_x+1, _y+1, TSZE, TSZE, 5, sc.work_light);
7759 leency 27
	DefineHiddenButton(_x, _y, TSZE+1, TSZE+1, _button_id);
28
	if (_icon_n==-1) {
9481 leency 29
		DrawBar(_x+6, _y+5, 16, 16, sc.work_light);
30
		DrawBar(_x+6, _y+7, 15, 3, sc.work_graph);
31
		$add ecx,5*65536
32
		$int 64
33
		$add ecx,5*65536
34
		$int 64
7759 leency 35
	} else {
9481 leency 36
		if (i16_mem) PutPaletteImage(18*18*4*_icon_n + i16_mem,
37
			18, 18, TSZE/2-9+2+_x, TSZE/2-9+1+_y+pressed, 32, 0);
7759 leency 38
	}
7910 leency 39
 
40
	if (!pressed) {
9481 leency 41
		DrawOvalBorder(_x, _y, TSZE, TSZE, lightest, sc.work_graph, sc.work_light, sc.work);
7910 leency 42
	} else {
9481 leency 43
		DrawOvalBorder(_x, _y, TSZE, TSZE, sc.work_graph, sc.work_light, sc.work_dark, sc.work);
7910 leency 44
		PutShadow(_x+1, _y+1, TSZE, TSZE, true, 2);
45
	}
46
 
7866 leency 47
	return _x;
7759 leency 48
}