Subversion Repositories Kolibri OS

Rev

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

Rev 8330 Rev 8336
Line 1... Line 1...
1
struct _img
1
struct _img
2
{
2
{
3
	collection url;
3
	collection url;
4
	collection_int xywh;
4
	collection_int x,y,w,h;
5
	int getid;
-
 
Line 6... Line 5...
6
 
5
 
7
	void clear();
6
	void clear();
8
	dword add_pos();
-
 
9
	bool set_size();
-
 
10
 
-
 
11
	dword current_url();
-
 
Line 12... Line 7...
12
	bool next_url();
7
	void add();
13
	
8
	
14
	void draw_all();
9
	void draw_all();
Line 15... Line 10...
15
	bool draw();
10
	bool draw();
16
};
11
};
17
 
12
 
18
void _img::clear()
13
void _img::clear()
19
{
-
 
20
	url.drop();
-
 
21
	xywh.drop();
-
 
22
	getid = 0;
-
 
23
}
-
 
24
 
-
 
25
dword _img::add_pos(dword _path, _x, _y)
-
 
26
{
-
 
27
	char full_path[URL_SIZE];
-
 
28
	strncpy(#full_path, _path, URL_SIZE);
-
 
29
	get_absolute_url(#full_path, history.current());
14
{
30
 
15
	url.drop();
31
	url.add(#full_path);
-
 
32
	xywh.add(_x);
-
 
33
	xywh.add(_y);
-
 
34
	xywh.add(NULL);
-
 
35
	xywh.add(NULL);
-
 
36
	return #full_path;
-
 
37
}
-
 
38
 
-
 
39
bool _img::set_size(dword _id, _buf, _size)
-
 
40
{
-
 
41
	img_decode stdcall (_buf, _size, 0);
-
 
42
	if (EAX) {
-
 
43
		EDI = EAX;
16
	x.drop();
44
		xywh.set(_id*4+2, ESDWORD[EDI+4]);
-
 
45
		xywh.set(_id*4+3, ESDWORD[EDI+8]);
-
 
46
		free(EDI);
-
 
47
		return true;
17
	y.drop();
Line 48... Line -...
48
	}	
-
 
49
	return false;
18
	w.drop();
50
}
19
	h.drop();
51
 
20
}
52
//DELTE!!!!!11111111111111111111111111111111111111
-
 
53
dword _img::current_url()
-
 
54
{
-
 
55
	return url.get(getid);
21
 
56
}
-
 
57
 
-
 
58
//DELTE!!!!!11111111111111111111111111111111111111
22
void _img::add(dword _path, _x, _y, _w, _h)
59
bool _img::next_url()
23
{
60
{
-
 
61
	if (getid < url.count-1) {
24
	url.add(_path);
62
		getid++;
25
	x.add(_x);
Line -... Line 26...
-
 
26
	y.add(_y);
63
		return 1;
27
	w.add(_w);
64
	}
28
	h.add(_h);
65
	return 0;
29
}
Line 66... Line 30...
66
}
30
 
67
 
31
/*
68
void _img::draw_all(int _x, _y, _w, _h, _start)
32
void _img::draw_all(int _x, _y, _w, _h, _start)
Line 69... Line 33...
69
{
33
{
70
	int i, img_y;
34
	int i, img_y;
71
 
35
 
72
	for (i=0; i
36
	for (i=0; i
-
 
37
	{
Line 73... Line 38...
73
	{
38
		img_y = y.get(i);
74
		img_y = xywh.get(i*4 + 1);
39
 
75
 
40
		if (img_y + h.get(i) > _start) && (img_y - _h < _start) 
76
		if (img_y > _start) && (img_y < _start + _h) 
41
		&& (cache.has(url.get(i))) draw(_x, _y, _w, _h, _start, i);
77
		&& (cache.has(url.get(i))) draw(_x, _y, _w, _h, _start, i);
42
	}
78
	}
43
}
Line 79... Line 44...
79
}
44
*/
80
 
45
 
81
bool _img::draw(int _x, _y, _w, _h, _start, i)
46
bool _img::draw(int _x, _y, _w, _h, _start, i)
82
{
47
{
Line -... Line 48...
-
 
48
	int img_x, img_y, img_w, img_h, invisible_h=0;
-
 
49
	img_decode stdcall (cache.current_buf, cache.current_size, 0);
-
 
50
	if (EAX) {
-
 
51
		EDI = EAX;
Line 83... Line 52...
83
	int img_x, img_y, img_w, img_h;
52
 
84
	img_decode stdcall (cache.current_buf, cache.current_size, 0);
53
		img_x = x.get(i);
85
	if (EAX) {
54
		img_y = y.get(i);
86
		EDI = EAX;
55
		img_w = math.min(w.set(i, ESDWORD[EDI+4]), _w - img_x);
-
 
56
		img_h = math.min(h.set(i, ESDWORD[EDI+8]), _h + _start - img_y);