Subversion Repositories Kolibri OS

Rev

Rev 9893 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9893 Rev 9902
Line 24... Line 24...
24
 
24
 
25
CONST
25
CONST
26
        fileName = "/sys/Icons16.png";
26
	fileName = "/sys/Icons16.png";
Line -... Line 27...
-
 
27
	SIZE* = 18;
-
 
28
 
-
 
29
	icoNew    *=  0;
-
 
30
	icoOpen   *=  1;
-
 
31
	icoSave   *=  2;
-
 
32
	icoSearch *=  3;
-
 
33
	icoUndo   *=  4;
-
 
34
	icoRedo   *=  5;
27
        SIZE* = 18;
35
	icoBuild  *=  6;
28
 
36
	icoRun    *=  7;
Line 29... Line -...
29
VAR
-
 
30
        source: INTEGER;
-
 
31
 
-
 
32
(*
-
 
33
PROCEDURE copy (src, dst: INTEGER);
-
 
34
VAR
-
 
35
        src_width, src_height,
-
 
36
        dst_width, dst_height,
-
 
37
        src_data, dst_data: INTEGER;
-
 
38
BEGIN
-
 
39
        LibImg.GetInf(src, src_width, src_height, src_data);
-
 
40
        LibImg.GetInf(dst, dst_width, dst_height, dst_data);
-
 
41
        ASSERT(src_width = dst_width);
-
 
42
        ASSERT(src_height = dst_height);
-
 
Line 43... Line 37...
43
        SYSTEM.MOVE(src_data, dst_data, src_width*src_height*4)
37
 
44
END copy;
38
	NumberOfIcons = 8;
45
*)
39
 
Line 46... Line -...
46
 
-
 
47
PROCEDURE [stdcall, "libimg.obj", ""] img_decode (data, size, options: INTEGER): INTEGER; END;
-
 
48
PROCEDURE [stdcall, "Libimg.obj", ""] img_convert (src, dst, dst_type, flags, param: INTEGER): INTEGER; END;
-
 
49
PROCEDURE [stdcall, "Libimg.obj", ""] img_destroy (img: INTEGER); END;
-
 
50
 
-
 
51
PROCEDURE GetInf (img: INTEGER; VAR width, height, data: INTEGER);
-
 
52
BEGIN
-
 
Line 53... Line 40...
53
        SYSTEM.GET(img +  4, width);
40
 
54
        SYSTEM.GET(img +  8, height);
41
PROCEDURE [stdcall, "libimg.obj", ""] img_decode (data, size, options: INTEGER): INTEGER; END;
55
        SYSTEM.GET(img + 24, data);
42
PROCEDURE [stdcall, "Libimg.obj", ""] img_convert (src, dst, dst_type, flags, param: INTEGER): INTEGER; END;
56
END GetInf;
43
PROCEDURE [stdcall, "Libimg.obj", ""] img_destroy (img: INTEGER); END;
Line 88... Line 75...
88
        RETURN res
75
	RETURN res
89
END load;
76
END load;
Line 90... Line 77...
90
 
77
 
91
 
-
 
92
PROCEDURE draw* (icons, n, x, y: INTEGER);
-
 
93
VAR
78
 
94
        width, height, data: INTEGER;
-
 
95
BEGIN
79
PROCEDURE draw* (icons, n, x, y: INTEGER);
96
        GetInf(icons, width, height, data);
80
BEGIN
Line -... Line 81...
-
 
81
	KOSAPI.sysfunc7(65, icons + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0)
-
 
82
END draw;
-
 
83
 
-
 
84
 
-
 
85
PROCEDURE copy (img: INTEGER; n: INTEGER; dst: INTEGER; m: INTEGER);
-
 
86
VAR
-
 
87
	data: INTEGER;
-
 
88
BEGIN
-
 
89
	SYSTEM.GET(img + 24, data);
97
        KOSAPI.sysfunc7(65, data + SIZE*SIZE*4*n, SIZE*65536 + SIZE, x*65536 + y, 32, 0, 0)
90
	SYSTEM.MOVE(data + SIZE*SIZE*4*n, dst + SIZE*SIZE*4*m, SIZE*SIZE*4)
98
END draw;
91
END copy;
99
 
92
 
100
 
93
 
101
PROCEDURE iconsBackColor (icons: INTEGER; BackColor: INTEGER);
94
PROCEDURE iconsBackColor (icons: INTEGER; BackColor: INTEGER);
102
VAR
95
VAR
103
        width, height, data, x, y, pix: INTEGER;
96
	data, x, y, pix: INTEGER;
104
        b, g, r, gr: BYTE;
97
	b, g, r, gr: BYTE;
105
BEGIN
98
BEGIN
106
        GetInf(icons, width, height, data);
99
	data := icons;
107
        FOR y := 0 TO height - 1 DO
100
	FOR y := 0 TO SIZE*NumberOfIcons - 1 DO
108
                FOR x := 0 TO width - 1 DO
101
		FOR x := 0 TO SIZE - 1 DO
109
                        SYSTEM.GET32(data, pix);
102
			SYSTEM.GET32(data, pix);
Line 120... Line 113...
120
        END
113
	END
121
END iconsBackColor;
114
END iconsBackColor;
Line 122... Line 115...
122
 
115
 
-
 
116
 
-
 
117
PROCEDURE get* (VAR icons, grayIcons: INTEGER; BackColor: INTEGER);
123
 
118
VAR
124
PROCEDURE get* (VAR icons, grayIcons: INTEGER; BackColor: INTEGER);
-
 
125
BEGIN
119
	source: INTEGER;
-
 
120
BEGIN
-
 
121
	source := load();
-
 
122
	IF source # 0 THEN
-
 
123
		icons := KOSAPI.malloc(SIZE*SIZE*4*NumberOfIcons*2);
126
        IF source = 0 THEN
124
		grayIcons := icons + SIZE*SIZE*4*NumberOfIcons;
-
 
125
 
127
                source := load();
126
		copy(source,  2, icons, icoNew);
-
 
127
		copy(source,  0, icons, icoOpen);
-
 
128
		copy(source,  5, icons, icoSave);
-
 
129
		copy(source, 49, icons, icoSearch);
-
 
130
		copy(source, 37, icons, icoUndo);
-
 
131
		copy(source, 36, icons, icoRedo);
-
 
132
		copy(source, 54, icons, icoBuild);
-
 
133
		copy(source, 53, icons, icoRun);
-
 
134
		img_destroy(source);
-
 
135
		source := 0;
128
                icons := load();
136
		SYSTEM.MOVE(icons, grayIcons, SIZE*SIZE*4*NumberOfIcons);
129
                grayIcons := load();
137
 
130
                iconsBackColor(grayIcons, -1);
138
		iconsBackColor(grayIcons, -1);
131
                iconsBackColor(grayIcons, BackColor);
-
 
132
                iconsBackColor(icons, BackColor)
-
 
133
        (*ELSE
-
 
134
                copy(source, icons);
139
		iconsBackColor(grayIcons, BackColor);
135
                copy(source, grayIcons)*)
140
		iconsBackColor(icons, BackColor)
Line 136... Line -...
136
        END
-
 
137
END get;
-
 
138
 
-
 
139
 
141
	END
140
BEGIN
142
END get;