Subversion Repositories Kolibri OS

Rev

Rev 8236 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2230 IgorA 1
use32
8236 IgorA 2
	org 0
3
	db 'MENUET01'
4
	dd 1,start,i_end,mem,stacktop,0,cur_dir_path
2230 IgorA 5
 
8236 IgorA 6
include '../../../../../KOSfuncs.inc'
2230 IgorA 7
include '../../../../../macros.inc'
8
include '../../../../../proc32.inc'
8236 IgorA 9
include '../../../../../load_lib.mac'
3105 IgorA 10
include '../../../../../dll.inc'
2230 IgorA 11
 
8236 IgorA 12
@use_library mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load
2230 IgorA 13
 
14
buf2d_l equ word[edi+4] ;отступ слева
15
buf2d_t equ word[edi+6] ;отступ сверху
9520 IgorA 16
buf2d_w equ dword[edi+8]
17
buf2d_h equ dword[edi+12]
2230 IgorA 18
buf2d_color equ dword[edi+16] ;цвет фона буфера
19
 
20
align 4
21
start:
8236 IgorA 22
	load_library lib0_name, library_path, system_path, import_buf2d_lib
2230 IgorA 23
	cmp eax,-1
24
	jz button.exit
25
 
9520 IgorA 26
	mcall SF_SET_EVENTS_MASK,0xC0000027
2230 IgorA 27
	stdcall [buf2d_create], buf_0 ;создаем буфер
28
	;рисуем первоначальный кадр
29
	stdcall [buf2d_filled_rect_by_size], buf_0, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
30
	stdcall [buf2d_line], buf_0, 10,10, 100,75, 0xff0000 ;рисуем простую линию
31
	stdcall [buf2d_line_sm], buf_0, 100,75, 190,140, 0xff0000 ;рисуем сглаженную линию
32
 
33
align 4
34
red_win:
35
	call draw_window
36
 
37
align 4
38
still:
9520 IgorA 39
	mcall SF_WAIT_EVENT
2230 IgorA 40
	cmp al,1 ;изменилось положение окна
41
	jz red_win
42
	cmp al,2
43
	jz key
44
	cmp al,3
45
	jz button
46
	cmp al,6
47
	jz mouse
48
	jmp still
49
 
50
align 4
51
draw_window:
52
	pushad
9520 IgorA 53
	mcall SF_REDRAW,SSF_BEGIN_DRAW
2230 IgorA 54
 
55
	;mov edx,0x32000000
56
	mov edx,0x33000000
9520 IgorA 57
	mcall SF_CREATE_WINDOW,(50 shl 16)+330,(30 shl 16)+275,,,caption
2230 IgorA 58
 
59
	stdcall [buf2d_draw], buf_0
60
 
9520 IgorA 61
	mcall SF_REDRAW,SSF_END_DRAW
2230 IgorA 62
	popad
63
	ret
64
 
65
align 4
66
key:
9520 IgorA 67
	mcall SF_GET_KEY
2230 IgorA 68
 
69
	cmp ah,27 ;Esc
70
	je button.exit
71
 
72
	jmp still
73
 
74
align 4
75
button:
9520 IgorA 76
	mcall SF_GET_BUTTON
2230 IgorA 77
	cmp ah,1
78
	jne still
79
.exit:
80
	stdcall [buf2d_delete],buf_0 ;удаляем буфер
9520 IgorA 81
	mcall SF_TERMINATE_PROCESS
2230 IgorA 82
 
83
align 4
84
mouse:
85
	;обрабатываем окно редактора
9520 IgorA 86
	mcall SF_MOUSE_GET,SSF_BUTTON
2230 IgorA 87
	cmp al,1
88
	jne @f
9520 IgorA 89
		mcall SF_MOUSE_GET,SSF_WINDOW_POSITION
2230 IgorA 90
		mov ebx,eax
91
		shr ebx,16 ;в eax координата миши по оси 'x'
92
		and eax,0xffff ;в eax координата миши по оси 'y'
93
		mov edi,buf_0
94
		sub ax,buf2d_t ;сдвигаем координаты учитывая смещение буфера
9520 IgorA 95
		cmp eax,buf2d_h
96
		jge @f
2230 IgorA 97
		sub bx,buf2d_l
9520 IgorA 98
		cmp ebx,buf2d_w
99
		jge @f
2230 IgorA 100
 
101
		;рисование при нажатии
102
		stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран от предыдущих рисований
103
		stdcall [buf2d_filled_rect_by_size], edi, 100-50,70-25, 100,50, 0xffffff ;рисуем прямоугольник
104
 
105
		stdcall [buf2d_line], edi, 10,10, ebx,eax, 0xff0000 ;рисуем простую линию
106
		stdcall [buf2d_line_sm], edi, 190,140, ebx,eax, 0xff0000 ;рисуем сглаженную линию
107
		stdcall [buf2d_draw], edi ;обновляем экран
108
	@@:
109
	jmp still
110
 
111
caption db 'Press left mouse button, [Esc] - exit',0
112
 
113
;--------------------------------------------------
114
align 4
115
import_buf2d_lib:
116
	dd sz_lib_init
117
	buf2d_create dd sz_buf2d_create
118
	buf2d_create_f_img dd sz_buf2d_create_f_img
119
	buf2d_clear dd sz_buf2d_clear
120
	buf2d_draw dd sz_buf2d_draw
121
	buf2d_delete dd sz_buf2d_delete
122
	buf2d_line dd sz_buf2d_line
123
	buf2d_line_sm dd sz_buf2d_line_sm
124
	buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
125
	buf2d_circle dd sz_buf2d_circle
126
	buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
127
	buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
128
	buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
129
	buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
130
	buf2d_bit_blt dd sz_buf2d_bit_blt
131
	buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
132
	buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
133
	buf2d_curve_bezier dd sz_buf2d_curve_bezier
134
	buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
135
	buf2d_draw_text dd sz_buf2d_draw_text
136
	dd 0,0
137
	sz_lib_init db 'lib_init',0
138
	sz_buf2d_create db 'buf2d_create',0
139
	sz_buf2d_create_f_img db 'buf2d_create_f_img',0
140
	sz_buf2d_clear db 'buf2d_clear',0
141
	sz_buf2d_draw db 'buf2d_draw',0
142
	sz_buf2d_delete db 'buf2d_delete',0
143
	sz_buf2d_line db 'buf2d_line',0
144
	sz_buf2d_line_sm db 'buf2d_line_sm',0
145
	sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
146
	sz_buf2d_circle db 'buf2d_circle',0 ;рисование окружности
147
	sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
148
	sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
149
	sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
150
	sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
151
	sz_buf2d_bit_blt db 'buf2d_bit_blt',0
152
	sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
153
	sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
154
	sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
155
	sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
156
	sz_buf2d_draw_text db 'buf2d_draw_text',0
157
 
158
align 4
159
buf_0:
160
	dd 0 ;указатель на буфер изображения
161
	dw 20 ;+4 left
162
	dw 10 ;+6 top
163
	dd 200 ;+8 w
164
	dd 150 ;+12 h
165
	dd 0x80 ;+16 color
166
	db 24 ;+20 bit in pixel
167
 
168
;--------------------------------------------------
169
system_path db '/sys/lib/'
8236 IgorA 170
lib0_name db 'buf2d.obj',0
2230 IgorA 171
;--------------------------------------------------
172
 
9520 IgorA 173
align 16
2230 IgorA 174
i_end: ;конец кода
175
	rb 1024
176
stacktop:
177
cur_dir_path:
178
	rb 4096
179
library_path:
180
	rb 4096
181
mem:
182