Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
3055 dunkaist 1
use32
2
org 0x0
3
	db 'MENUET01'
4
	dd 0x01, START, I_END, E_END, E_END, 0, 0
5
 
6
;-----------------------------------------------------------------------------
7
 
8
include '../../../../../proc32.inc'
9
include '../../../../../macros.inc'
10
include '../../../../../dll.inc'
11
;include '../../../../../debug.inc'
12
 
13
include '../../libio/libio.inc'
14
include '../../libimg/libimg.inc'
15
 
16
;-----------------------------------------------------------------------------
17
 
18
START:
19
	mcall	68, 11
20
 
21
	stdcall dll.Load, @IMPORT
22
	or	eax, eax
23
	jnz	exit
24
 
25
	invoke	file.open, input_file, O_READ
26
	or	eax, eax
27
	jz	exit
28
	mov	[fh], eax
29
 
30
	invoke	file.size, input_file
31
	mov	[img_data_len], ebx
32
 
33
	stdcall mem.Alloc, ebx
34
	or	eax, eax
35
	jz	exit
36
	mov	[img_data], eax
37
 
38
	invoke	file.read, [fh], eax, [img_data_len]
39
	cmp	eax, -1
40
	je	exit
41
	cmp	eax, [img_data_len]
42
	jne	exit
43
 
44
	invoke	file.close, [fh]
45
	inc	eax
46
	jz	exit
47
 
48
	invoke	img.decode, [img_data], [img_data_len], 0
49
	or	eax, eax
50
	jz	exit
51
	mov	[image_initial], eax
52
 
53
;pushfd
54
;pushad
55
;mov ebx, [image_initial]
56
;debug_print_dec dword[ebx + Image.Type]
57
;newline
58
;popad
59
;popfd
60
	stdcall	mem.Free, [img_data]
61
	test	eax, eax
62
	jz	exit
63
 
64
	invoke	img.convert, [image_initial], 0, Image.bpp8g, 0, 0
65
	test	eax, eax
66
	jz	exit
67
	mov	[image_converted], eax
68
 
69
	invoke	img.destroy, [image_initial]
70
 
71
	mov	ebx, [image_converted]
72
	mov	eax, [ebx + Image.Width]
73
	add	eax, 200*0x10000 + 5*2 - 1	; window x position + 10 pixels width for skin borders
74
	mov	[window_width], eax
75
 
76
	mcall	48, 4	; get skin height
77
	mov	ebx, [image_converted]
78
	add	eax, [ebx + Image.Height]
79
	add	eax, 100*0x10000 + 5 - 1	; window y position + 5 pixels height for skin bottom border
80
	mov	[window_height], eax
81
;-----------------------------------------------------------------------------
82
 
83
still:
84
	mcall	10
85
	cmp	eax, 1
86
	je	.draw_window
87
	cmp	eax, 2
88
	je	.key
89
	cmp	eax, 3
90
	je	.button
91
	jmp	still
92
 
93
 
94
  .draw_window:
95
	mcall	12, 1
96
	mcall	0, [window_width], [window_height], 0x74FFFFFF, 0x00000000, window_title
97
	call	draw_image
98
	mcall	12, 2
99
	jmp	still
100
 
101
  .key:
102
	mcall	2
103
	jmp	still
104
 
105
  .button:
106
	mcall	17
107
	shr	eax, 8
108
	cmp	eax, 1
109
	jne	still
110
 
111
exit:
112
	invoke	img.destroy, [image_converted]
113
	mcall	-1
114
 
115
 
116
proc	draw_image
117
 
118
	mov	ebx, [image_converted]
119
	invoke	img.draw, ebx, 0, 0, [ebx + Image.Width], [ebx + Image.Height], 0, 0
120
 
121
	ret
122
endp
123
 
124
;-----------------------------------------------------------------------------
125
 
126
window_title	db 'img.convert example',0
127
input_file:
128
	db '/hd0/1/kolibri_logo.jpg',0
129
;	db '/hd0/1/tga/CTC16.TGA',0
130
;	db '/hd0/1/indexed_packbits_le_test_00.tiff',0
131
;	db '/hd0/1/graya_123x123.tiff',0
132
;	db '/hd0/1/bilevel_00.wbmp',0
133
;	db '/hd0/1/rgb_af.jpg',0
134
;	db '/hd0/1/gray_5x7.tiff',0
135
;	db '/hd0/1/rgb_lzw_le_2x2.tiff',0
136
;	db '/hd0/1/grayscale_123x123.tiff',0
137
;	db '/hd0/1/grayscale_357x357.tiff',0
138
;	db '/hd0/1/grayscale_620x620.tiff',0
139
;	db '/hd0/1/rgb_220.jpg',0
140
;	db '/hd0/1/rgba_217.tiff',0
141
;	db '/hd0/1/rgb_7x9.tiff',0
142
;	db '/hd0/1/rgba_7x9.tiff',0
143
;	db '/hd0/1/gray_7x9.tiff',0
144
;	db '/hd0/1/rgb_70x90.png',0
145
;-----------------------------------------------------------------------------
146
 
147
align 4
148
@IMPORT:
149
 
150
library				  \
151
	libio	, 'libio.obj'	, \
152
	libimg	, 'libimg.obj'
153
 
154
import	libio				, \
155
	libio.init	, 'lib_init'	, \
156
	file.size	, 'file_size'	, \
157
	file.open	, 'file_open'	, \
158
	file.read	, 'file_read'	, \
159
	file.close	, 'file_close'
160
 
161
import	libimg				, \
162
	libimg.init	, 'lib_init'	, \
163
	img.decode	, 'img_decode'	, \
164
	img.destroy	, 'img_destroy'	, \
165
	img.draw	, 'img_draw'	, \
166
	img.convert	, 'img_convert'	, \
167
	img.types_table , 'img_types_table'
168
 
169
;-----------------------------------------------------------------------------
170
 
171
I_END:
172
 
173
fh		dd ?
174
img_data_len	dd ?
175
img_data	dd ?
176
 
177
image_initial	dd ?
178
image_converted	dd ?
179
 
180
window_width	dd ?
181
window_height	dd ?
182
 
183
rd 0x1000	; stack
184
E_END: