Subversion Repositories Kolibri OS

Rev

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

Rev 8271 Rev 8288
Line 66... Line 66...
66
; rd 10
66
; rd 10
67
;
67
;
68
; Free area ; +68
68
; Free area ; +68
69
;---------------------------------------------------------------------
69
;---------------------------------------------------------------------
70
  use32
70
  use32
71
  org	 0x0
71
  org	 0
72
 
-
 
73
  db	 'MENUET01'
72
  db	 'MENUET01'
74
  dd	 0x01
-
 
75
  dd	 START
-
 
76
  dd	 IM_END
-
 
77
  dd	 I_END
-
 
78
  dd	 stacktop
73
  dd	 1, START, IM_END, I_END, stacktop, param, path
79
  dd	 param
-
 
80
  dd	 path
-
 
81
;---------------------------------------------------------------------
74
;---------------------------------------------------------------------
82
include '../../macros.inc'
75
include '../../macros.inc'
-
 
76
include '../../proc32.inc'
83
include '../../KOSfuncs.inc'
77
include '../../KOSfuncs.inc'
84
include '../../load_lib.mac'
78
include '../../load_lib.mac'
85
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
79
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
86
;include 'lang.inc'
80
;include 'lang.inc'
87
;include '../../debug.inc'
81
;include '../../debug.inc'
Line 103... Line 97...
103
w_size_y = 350
97
w_size_y = 350
104
;--------------------------------------
98
;--------------------------------------
105
c_start_x = t_start_x + p_size_y + 10
99
c_start_x = t_start_x + p_size_y + 10
106
c_start_y = 10
100
c_start_y = 10
Line 107... Line 101...
107
 
101
 
108
c_size_x = 40
102
c_size_x = 27
-
 
103
c_size_y = 20
109
c_size_y = 20
104
ed_size_x = 53
110
;---------------------------------------------------------------------
105
;---------------------------------------------------------------------
111
x_minimal_size equ 350
106
x_minimal_size equ 350
112
y_minimal_size equ 250
107
y_minimal_size equ 250
113
;---------------------------------------------------------------------
108
;---------------------------------------------------------------------
114
START:
-
 
115
	mcall	68,11
-
 
116
	mcall	66,1,1
-
 
117
	mcall	40,0x27
-
 
118
;	mcall	40,0x7
109
START:
119
	call	get_communication_area
110
	mcall	SF_SYS_MISC,SSF_HEAP_INIT
120
	call	get_active_pocess
111
	;mcall	SF_KEYBOARD,SSF_SET_INPUT_MODE,1
121
	call	clear_colors_history
112
	mcall	SF_SET_EVENTS_MASK,0x27
122
;--------------------------------------
113
;--------------------------------------
123
load_libraries	l_libs_start,end_l_libs
114
load_libraries	l_libs_start,end_l_libs
124
	test	eax,eax
115
	test	eax,eax
125
	jnz	button.exit_2
116
	jnz	button.exit_2
-
 
117
;--------------------------------------
-
 
118
	call	get_communication_area
-
 
119
	call	get_active_pocess
126
;--------------------------------------
120
	call	clear_colors_history
127
	xor	eax,eax
121
	xor	eax,eax
128
	mov	al,p_size_x
122
	mov	al,p_size_x
129
	mov	[palette_SIZE_X],eax
123
	mov	[palette_SIZE_X],eax
130
	mov	ax,p_size_y
124
	mov	ax,p_size_y
Line 138... Line 132...
138
;--------------------------------------
132
;--------------------------------------
139
	mov	ecx,[palette_SIZE_Y]
133
	mov	ecx,[palette_SIZE_Y]
140
	imul	ecx,[palette_SIZE_X]
134
	imul	ecx,[palette_SIZE_X]
141
	lea	ecx,[ecx*3]
135
	lea	ecx,[ecx*3]
142
	inc	ecx	;reserve for stosd
136
	inc	ecx	;reserve for stosd
143
	mcall	68,12
137
	mcall	SF_SYS_MISC,SSF_MEM_ALLOC
144
	mov	[palette_area],eax
138
	mov	[palette_area],eax
145
;--------------------------------------
139
;--------------------------------------
146
	call	create_palette
140
	call	create_palette
147
;--------------------------------------
141
;--------------------------------------
148
	mov	ecx,[tone_SIZE_Y]
142
	mov	ecx,[tone_SIZE_Y]
149
	imul	ecx,[tone_SIZE_X]
143
	imul	ecx,[tone_SIZE_X]
150
	lea	ecx,[ecx*3]
144
	lea	ecx,[ecx*3]
151
	inc	ecx	;reserve for stosd
145
	inc	ecx	;reserve for stosd
152
	mcall	68,12
146
	mcall	SF_SYS_MISC,SSF_MEM_ALLOC
153
	mov	[tone_area],eax
147
	mov	[tone_area],eax
154
;--------------------------------------
148
;--------------------------------------
155
	call    create_tone
149
	call    create_tone
156
;---------------------------------------------------------------------
150
;---------------------------------------------------------------------
157
align 4
151
align 4
158
red:
152
red:
159
	call	draw_window
153
	call	draw_window
160
;---------------------------------------------------------------------
154
;---------------------------------------------------------------------
161
align 4
155
align 4
162
still:
156
still:
163
	mcall	10
157
	mcall	SF_WAIT_EVENT
Line 164... Line 158...
164
 
158
 
165
	cmp	eax,1
159
	cmp	eax,1
Line 166... Line 160...
166
	je	red
160
	je	red
Line 176... Line 170...
176
 
170
 
177
	jmp	still
171
	jmp	still
178
;---------------------------------------------------------------------
172
;---------------------------------------------------------------------
179
align 4
173
align 4
180
button:
174
button:
Line 181... Line 175...
181
	mcall	17
175
	mcall	SF_GET_BUTTON
182
 
176
 
Line 183... Line 177...
183
	cmp	ah, 2
177
	cmp	ah, 2
Line 234... Line 228...
234
 
228
 
235
	call	get_window_param
229
	call	get_window_param
236
	mov	ebx,[communication_area]
230
	mov	ebx,[communication_area]
237
	mov	ecx,procinfo
231
	mov	ecx,procinfo
238
;	mov	eax,[window_x]
232
;	mov	eax,[window_x]
239
	mov	eax,[ecx+34]
233
	mov	eax,[ecx+process_information.box.left]
240
	shl	eax,16
234
	shl	eax,16
241
	add	eax,[ecx+42]
235
	add	eax,[ecx+process_information.box.width]
242
	mov	[ebx+4],eax
236
	mov	[ebx+4],eax
243
;	mov	eax,[window_y]
237
;	mov	eax,[window_y]
244
	mov	eax,[ecx+38]
238
	mov	eax,[ecx+process_information.box.top]
245
	shl	eax,16
239
	shl	eax,16
246
	add	eax,[ecx+46]
240
	add	eax,[ecx+process_information.box.height]
247
	mov	[ebx+8],eax
241
	mov	[ebx+8],eax
248
;--------------------------------------
242
;--------------------------------------
249
align 4
243
align 4
250
.exit_2:
244
.exit_2:
251
	mcall	-1
245
	mcall	SF_TERMINATE_PROCESS
252
;---------------------------------------------------------------------
246
;---------------------------------------------------------------------
253
align 4
247
align 4
254
get_window_param:
248
get_window_param:
255
	mcall	9,procinfo,-1
249
	mcall	SF_THREAD_INFO,procinfo,-1
256
	mov	eax,[ebx+66]
250
	mov	eax,[ebx+process_information.client_box.height]
257
	inc	eax
251
	inc	eax
258
;	mov	[window_high],eax
252
;	mov	[window_high],eax
259
	mov	eax,[ebx+62]
253
	mov	eax,[ebx+process_information.client_box.width]
260
	inc	eax
254
	inc	eax
261
;	mov	[window_width],eax
255
;	mov	[window_width],eax
262
	mov	eax,[ebx+70]
256
	mov	eax,dword[ebx+process_information.wnd_state]
263
;	mov	[window_status],eax
257
;	mov	[window_status],eax
264
	ret
258
	ret
265
;---------------------------------------------------------------------
259
;---------------------------------------------------------------------
266
align 4
260
align 4
267
get_communication_area:
-
 
268
	xor	eax,eax
261
get_communication_area:
269
	mov	al,[param]
262
	movzx	eax,byte[param]
270
	test	eax,eax
263
	test	eax,eax
271
	jz	@f
264
	jz	@f
272
	mcall	68,22,param,,0x01
265
	mcall	SF_SYS_MISC,SSF_MEM_OPEN,param,,0x01
273
	mov	[communication_area],eax
266
	mov	[communication_area],eax
274
;	movzx	ebx,word [eax+2]
267
;	movzx	ebx,word [eax+2]
Line 275... Line 268...
275
;	mov	[color_dialog_type],ebx
268
;	mov	[color_dialog_type],ebx
Line 287... Line 280...
287
@@:
280
@@:
288
	ret
281
	ret
289
;---------------------------------------------------------------------
282
;---------------------------------------------------------------------
290
align 4
283
align 4
291
get_active_pocess:
284
get_active_pocess:
292
	mcall	9,procinfo,-1
285
	mcall	SF_THREAD_INFO,procinfo,-1
293
	mov	ecx,[ebx+30]	; PID
286
	mov	ecx,[ebx+process_information.PID]
294
	mcall	18,21
287
	mcall	SF_SYSTEM,SSF_GET_THREAD_SLOT
295
	mov	[active_process],eax	; WINDOW SLOT
288
	mov	[active_process],eax	; WINDOW SLOT
296
	mov	ebx,[communication_area]
289
	mov	ebx,[communication_area]
297
	test	ebx,ebx
290
	test	ebx,ebx
298
	jz	.1
291
	jz	.1
299
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
292
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
Line 332... Line 325...
332
@@:
325
@@:
333
	ret
326
	ret
334
;---------------------------------------------------------------------
327
;---------------------------------------------------------------------
335
align 4
328
align 4
336
palette_button:
329
palette_button:
337
	mcall	37,1
330
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
338
	and	eax,0xffff
331
	and	eax,0xffff
339
	sub	eax,p_start_y
332
	sub	eax,p_start_y
340
	imul	eax,p_size_x
333
	imul	eax,p_size_x
341
	lea	eax,[eax+eax*2]
334
	lea	eax,[eax+eax*2]
342
	add	eax,[palette_area]
335
	add	eax,[palette_area]
Line 349... Line 342...
349
	call	draw_scrollbars
342
	call	draw_scrollbars
350
	jmp	still
343
	jmp	still
351
;---------------------------------------------------------------------
344
;---------------------------------------------------------------------
352
align 4
345
align 4
353
tone_button:
346
tone_button:
354
	mcall	37,1
347
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
355
	mov	ebx,eax
348
	mov	ebx,eax
356
	and	eax,0xffff
349
	and	eax,0xffff
357
	shr	ebx,16
350
	shr	ebx,16
358
	sub	eax,t_start_y
351
	sub	eax,t_start_y
359
	imul	eax,p_size_y
352
	imul	eax,p_size_y
Line 380... Line 373...
380
;---------------------------------------------------------------------
373
;---------------------------------------------------------------------
381
align 4
374
align 4
382
prepare_scrollbars_position_from_color:
375
prepare_scrollbars_position_from_color:
383
; in: eax = selected color
376
; in: eax = selected color
384
	movzx	ebx,al
377
	movzx	ebx,al
-
 
378
	inc bl
-
 
379
	neg bl
385
	mov	[scroll_bar_data_blue.position],ebx
380
	mov	[scroll_bar_data_blue.position],ebx
386
	shr	eax,8
381
	shr	eax,8
387
	mov	bl,al
382
	mov	bl,al
-
 
383
	inc bl
-
 
384
	neg bl
388
	mov	[scroll_bar_data_green.position],ebx
385
	mov	[scroll_bar_data_green.position],ebx
389
	shr	eax,8
386
	shr	eax,8
390
	mov	bl,al
387
	mov	bl,al
-
 
388
	inc bl
-
 
389
	neg bl
391
	mov	[scroll_bar_data_red.position],ebx
390
	mov	[scroll_bar_data_red.position],ebx
392
	ret
391
	ret
393
;---------------------------------------------------------------------
392
;---------------------------------------------------------------------
394
align 4
393
align 4
395
prepare_color_from_scrollbars_position:
394
prepare_color_from_scrollbars_position:
396
; out: ebx = selected color
395
; out: ebx = selected color
397
	mov	eax,[scroll_bar_data_red.position]
396
	mov	eax,[scroll_bar_data_red.position]
-
 
397
	inc al
-
 
398
	neg al
398
	movzx	ebx,al
399
	movzx	ebx,al
399
	shl	ebx,8
400
	shl	ebx,8
400
	mov	eax,[scroll_bar_data_green.position]
401
	mov	eax,[scroll_bar_data_green.position]
-
 
402
	inc al
-
 
403
	neg al
401
	mov	bl,al
404
	mov	bl,al
402
	shl	ebx,8
405
	shl	ebx,8
403
	mov	eax,[scroll_bar_data_blue.position]
406
	mov	eax,[scroll_bar_data_blue.position]
-
 
407
	inc al
-
 
408
	neg al
404
	mov	bl,al
409
	mov	bl,al
405
	ret
410
	ret
406
;---------------------------------------------------------------------
411
;---------------------------------------------------------------------
407
align 4
412
align 4
408
key:
413
key:
409
	mcall	2
414
	mcall	SF_GET_KEY
-
 
415
	test word[edit1.flags],10b ;ed_focus
-
 
416
	je still
-
 
417
	stdcall [edit_box_key], edit1
-
 
418
	stdcall conv_str_to_int, [edit1.text]
-
 
419
	cmp [selected_color],eax
-
 
420
	je still
-
 
421
	mov	[selected_color],eax
-
 
422
	call	prepare_scrollbars_position_from_color
-
 
423
	;call	draw_selected_color
-
 
424
	mcall	SF_DRAW_RECT,,,[selected_color]
-
 
425
	call	draw_scrollbars
410
	jmp	still
426
	jmp	still
411
;---------------------------------------------------------------------
427
;---------------------------------------------------------------------
412
align 4
428
align 4
413
mouse:
429
mouse:
414
	cmp	[scroll_bar_data_red.delta2],0
430
	cmp	[scroll_bar_data_red.delta2],0
Line 418... Line 434...
418
	cmp	[scroll_bar_data_blue.delta2],0
434
	cmp	[scroll_bar_data_blue.delta2],0
419
	jne	.blue
435
	jne	.blue
420
;--------------------------------------
436
;--------------------------------------
421
align 4
437
align 4
422
.red:
438
.red:
423
	push	dword scroll_bar_data_red
-
 
424
	call	[scrollbar_ver_mouse]
439
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_red
425
	cmp	[scroll_bar_data_red.delta2],0
440
	cmp	[scroll_bar_data_red.delta2],0
426
	jne	@f
441
	jne	@f
427
;--------------------------------------
442
;--------------------------------------
428
align 4
443
align 4
429
.green:
444
.green:
430
	push	dword scroll_bar_data_green
445
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_green
431
	call	[scrollbar_ver_mouse]
-
 
432
	cmp	[scroll_bar_data_green.delta2],0
446
	cmp	[scroll_bar_data_green.delta2],0
433
	jne	@f
447
	jne	@f
434
;--------------------------------------
448
;--------------------------------------
435
align 4
449
align 4
436
.blue:
450
.blue:
437
	push	dword scroll_bar_data_blue
-
 
438
	call	[scrollbar_ver_mouse]
451
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_blue
439
;	cmp	[scroll_bar_data_blue.delta2],0
452
	cmp	[scroll_bar_data_blue.delta2],0
440
;	jne	@f
453
	jne	@f
441
;--------------------------------------
454
;--------------------------------------
442
align 4
455
align 4
443
@@:
456
@@:
-
 
457
	stdcall [edit_box_mouse], edit1
444
	call	prepare_color_from_scrollbars_position
458
	call	prepare_color_from_scrollbars_position
445
	cmp	[selected_color],ebx
459
	cmp	[selected_color],ebx
446
	je	still
460
	je	still
447
	mov	[selected_color],ebx
461
	mov	[selected_color],ebx
448
	call	draw_selected_color
462
	call	draw_selected_color
449
	jmp	still
463
	jmp	still
450
;---------------------------------------------------------------------
464
;---------------------------------------------------------------------
451
align 4
465
align 4
452
draw_selected_color:
466
draw_selected_color:
453
	mcall	13,,,[selected_color]
467
	mcall	SF_DRAW_RECT,,,[selected_color]
454
	mcall	13,,,0xffffff
468
	stdcall hex_in_str, sz_0x+2,[selected_color],6
455
	mov	ecx,[selected_color]
469
	mov byte[sz_0x+8],0
456
	and	ecx,0xffffff
470
	stdcall [edit_box_set_text],edit1,sz_0x
457
	mcall	47,0x00060100,,,0
471
	stdcall [edit_box_draw],edit1
458
	ret
472
	ret
459
;---------------------------------------------------------------------
473
;---------------------------------------------------------------------
460
align 4
474
align 4
461
create_and_draw_tone:
475
create_and_draw_tone:
462
	call    create_tone
476
	call    create_tone
463
	call    draw_tone
477
	call    draw_tone
464
	ret
478
	ret
465
;---------------------------------------------------------------------
479
;---------------------------------------------------------------------
466
align 4
480
align 4
467
draw_tone:
481
draw_tone:
468
	mcall	65,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,,24
482
	mcall	SF_PUT_IMAGE_EXT,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,,24
469
	ret
483
	ret
470
;---------------------------------------------------------------------
484
;---------------------------------------------------------------------
-
 
485
align 4
471
draw_scrollbars:
486
draw_scrollbars:
472
	push	dword scroll_bar_data_red
487
	stdcall	[scrollbar_ver_draw], scroll_bar_data_red
473
	call	[scrollbar_ver_draw]
-
 
474
	push	dword scroll_bar_data_green
488
	stdcall	[scrollbar_ver_draw], scroll_bar_data_green
475
	call	[scrollbar_ver_draw]
-
 
476
	push	dword scroll_bar_data_blue
489
	stdcall	[scrollbar_ver_draw], scroll_bar_data_blue
477
	call	[scrollbar_ver_draw]
-
 
478
	ret
490
	ret
479
;---------------------------------------------------------------------
491
;---------------------------------------------------------------------
480
align 4
492
align 4
481
draw_history_frame:
493
draw_history_frame:
482
	mov	[frame_data.x],dword (c_start_x+c_size_x*2+10*2)*65536+80
494
	mov	[frame_data.x],dword (c_start_x+c_size_x+ed_size_x+10*2)*65536+80
483
	mov	[frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5)
495
	mov	[frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5)
Line 484... Line 496...
484
 
496
 
Line 485... Line 497...
485
	mov	[frame_data.draw_text_flag],dword 1
497
	mov	[frame_data.draw_text_flag],dword 1
486
 
-
 
487
	mov	[frame_data.text_pointer],dword history_text
498
 
488
	push	dword frame_data
499
	mov	[frame_data.text_pointer],dword history_text
489
	call	[Frame_draw]
500
	stdcall	[Frame_draw], frame_data
490
	ret
501
	ret
491
;---------------------------------------------------------------------
502
;---------------------------------------------------------------------
492
align 4
503
align 4
493
draw_button_row:
504
draw_button_row:
494
	mov	edx,0x60000000 + 30		; BUTTON ROW
505
	mov	edx,0x60000000 + 30		; BUTTON ROW
495
;	mov	ebx,220*65536+14
506
;	mov	ebx,220*65536+14
496
	mov	ebx,(c_start_x+c_size_x*2+10*3)*65536+14
507
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
497
	mov	ecx,25*65536+14
508
	mov	ecx,25*65536+14
498
	mov	eax,8
509
	mov	eax,SF_DEFINE_BUTTON
499
;-----------------------------------
510
;-----------------------------------
500
align 4
511
align 4
501
.newb:
512
.newb:
Line 506... Line 517...
506
	jbe	.newb
517
	jbe	.newb
507
	ret
518
	ret
508
;---------------------------------------------------------------------
519
;---------------------------------------------------------------------
509
align 4
520
align 4
510
draw_color_value:
521
draw_color_value:
511
	mov	ebx,(c_start_x+c_size_x*3+10)*65536+(c_size_x-1)
522
	movzx ebx,word[frame_data.x_start]
-
 
523
	shl ebx,16
-
 
524
	add ebx,(22 shl 16)+39
512
	mov	ecx,28*65536+11
525
	mov	ecx,28*65536+11
513
	mov	edx,0xffffff
526
	mov	edx,0xffffff
514
	mov	eax,13
527
	mov	eax,SF_DRAW_RECT
515
	mov	edi,10
528
	mov	edi,10
516
	mov	esi,[communication_area]
529
	mov	esi,[communication_area]
517
	add	esi,28
530
	add	esi,28
518
;-----------------------------------
531
;-----------------------------------
519
align 4
532
align 4
520
@@:
533
@@:
521
	mcall
534
	mcall
522
	pusha
535
	pusha
523
	mov	edx,ebx
-
 
524
	add	edx,2 shl 16
536
	lea	edx,[ebx+(2 shl 16)]
525
	shr	ecx,16
537
	shr	ecx,16
526
	mov	dx,cx
538
	mov	dx,cx
527
	add	dx,2
539
	add	dx,2
528
	mov	ecx,[esi]
540
	mov	ecx,[esi]
529
	and	ecx,0xffffff
541
	and	ecx,0xffffff
530
	mcall	47,0x00060100,,,0
542
	mcall	SF_DRAW_NUMBER,0x00060100,,,0
531
	popa
543
	popa
Line 532... Line 544...
532
 
544
 
533
	add	ecx,24*65536
545
	add	ecx,24*65536
534
	add	esi,4
546
	add	esi,4
Line 541... Line 553...
541
draw_colours:
553
draw_colours:
542
	mov	edi,10
554
	mov	edi,10
543
	mov	esi,[communication_area]
555
	mov	esi,[communication_area]
544
	add	esi,28
556
	add	esi,28
545
;	mov	ebx,220*65536+14
557
;	mov	ebx,220*65536+14
546
	mov	ebx,(c_start_x+c_size_x*2+10*3)*65536+14
558
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
547
	mov	ecx,27*65536+14
559
	mov	ecx,27*65536+14
548
	mov	eax,13
560
	mov	eax,SF_DRAW_RECT
549
	mov	[frame_data.draw_text_flag],dword 0
561
	mov	[frame_data.draw_text_flag],dword 0
550
;--------------------------------------
562
;--------------------------------------
551
align 4
563
align 4
552
newcol:
564
newcol:
553
	mov	edx,[esi]
565
	mov	edx,[esi]
Line 561... Line 573...
561
	add	cx,4
573
	add	cx,4
Line 562... Line 574...
562
 
574
 
563
	mov	[frame_data.x],ebx
575
	mov	[frame_data.x],ebx
Line 564... Line -...
564
	mov	[frame_data.y],ecx
-
 
565
 
576
	mov	[frame_data.y],ecx
Line 566... Line 577...
566
	push	dword frame_data
577
 
Line 567... Line 578...
567
	call	[Frame_draw]
578
	stdcall	[Frame_draw], frame_data
568
 
579
 
Line 576... Line 587...
576
 
587
 
577
	ret
588
	ret
578
;----------------------------------------------------------------------
589
;----------------------------------------------------------------------
579
align 4
590
align 4
580
draw_window:
591
draw_window:
581
	mcall	12,1
592
	mcall	SF_REDRAW,SSF_BEGIN_DRAW
582
;	mcall	0, , , 0x33AABBCC,,title
593
;	mcall	SF_CREATE_WINDOW, , , 0x33AABBCC,,title
583
	xor	esi,esi
594
	xor	esi,esi
584
	mcall	0,[window_x],[window_y], 0x34EEEeee,,title
595
	mcall	SF_CREATE_WINDOW,[window_x],[window_y], 0x34EEEeee,,title
585
	mcall	8,,,0x60000002
596
	mcall	SF_DEFINE_BUTTON,,,0x60000002
586
	mcall	,,,0x60000003
597
	mcall	,,,0x60000003
587
	mcall	,<296,80>,<280,22>,4,0x37A4D4
598
	mcall	,<296,80>,<280,22>,4,0x37A4D4
588
	mcall	,<402,80>,        ,1
599
	mcall	,<402,80>,        ,1
589
	mcall   4,<332,289>,0x802C7B9E,OK_Cancel
600
	mcall   SF_DRAW_TEXT,<332,289>,0x802C7B9E,OK_Cancel
590
	mcall   ,<331,288>,0x80FFFfff
601
	mcall   ,<331,288>,0x80FFFfff
591
	xor	ebp,ebp
602
	xor	ebp,ebp
592
	mcall	65,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,,24
603
	mcall	SF_PUT_IMAGE_EXT,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,,24
593
	call	draw_tone
604
	call	draw_tone
594
	call	draw_selected_color
605
	call	draw_selected_color
595
	xor	eax,eax
606
	xor	eax,eax
596
	inc	eax
607
	inc	eax
Line 600... Line 611...
600
	call	draw_scrollbars
611
	call	draw_scrollbars
601
	call	draw_history_frame
612
	call	draw_history_frame
602
	call	draw_button_row
613
	call	draw_button_row
603
	call	draw_colours
614
	call	draw_colours
604
	call	draw_color_value
615
	call	draw_color_value
-
 
616
	mcall	SF_REDRAW,SSF_END_DRAW
-
 
617
	ret
-
 
618
;---------------------------------------------------------------------
-
 
619
align 4
-
 
620
proc hex_in_str, buf:dword,val:dword,zif:dword
-
 
621
pushad
-
 
622
	mov edi,[buf]
-
 
623
	mov ecx,[zif]
-
 
624
	add edi,ecx
-
 
625
	dec edi
-
 
626
	mov ebx,[val]
-
 
627
 
-
 
628
	.cycle:
-
 
629
		mov al,bl
-
 
630
		and al,0xf
-
 
631
		cmp al,10
-
 
632
		jl @f
-
 
633
			add al,'A'-'0'-10
-
 
634
		@@:
-
 
635
		add al,'0'
-
 
636
		mov byte[edi],al
-
 
637
		dec edi
-
 
638
		shr ebx,4
-
 
639
	loop .cycle
-
 
640
popad
-
 
641
	ret
-
 
642
endp
-
 
643
;---------------------------------------------------------------------
-
 
644
;input:
-
 
645
; buf - указатель на строку, число должно быть в 10 или 16 ричном виде
-
 
646
;output:
-
 
647
; eax - число
-
 
648
align 4
-
 
649
proc conv_str_to_int uses ebx ecx esi, buf:dword
-
 
650
	xor eax,eax
-
 
651
	xor ebx,ebx
-
 
652
	mov esi,[buf]
-
 
653
 
-
 
654
	;на случай если перед числом находятся пробелы
-
 
655
	@@:
-
 
656
	cmp byte[esi],' '
-
 
657
	jne @f
-
 
658
		inc esi
-
 
659
		jmp @b
-
 
660
	@@:
-
 
661
 
-
 
662
	;определение отрицательных чисел
-
 
663
	xor ecx,ecx
-
 
664
	inc ecx
-
 
665
	cmp byte[esi],'-'
-
 
666
	jne @f
-
 
667
		dec ecx
-
 
668
		inc esi
-
 
669
	@@:
-
 
670
 
-
 
671
	cmp word[esi],'0x'
-
 
672
	je .load_digit_16
-
 
673
 
-
 
674
	.load_digit_10: ;считывание 10-тичных цифр
-
 
675
		mov bl,byte[esi]
-
 
676
		cmp bl,'0'
-
 
677
		jl @f
-
 
678
		cmp bl,'9'
-
 
679
		jg @f
-
 
680
			sub bl,'0'
-
 
681
			imul eax,10
-
 
682
			add eax,ebx
-
 
683
			inc esi
-
 
684
			jmp .load_digit_10
-
 
685
	jmp @f
-
 
686
 
-
 
687
	.load_digit_16: ;считывание 16-ричных цифр
-
 
688
		add esi,2
605
	mcall	12,2
689
	.cycle_16:
-
 
690
		mov bl,byte[esi]
-
 
691
		cmp bl,'0'
-
 
692
		jl @f
-
 
693
		cmp bl,'f'
-
 
694
		jg @f
-
 
695
		cmp bl,'9'
-
 
696
		jle .us1
-
 
697
			cmp bl,'A'
-
 
698
			jl @f ;отсеиваем символы >'9' и <'A'
-
 
699
		.us1: ;составное условие
-
 
700
		cmp bl,'F'
-
 
701
		jle .us2
-
 
702
			cmp bl,'a'
-
 
703
			jl @f ;отсеиваем символы >'F' и <'a'
-
 
704
			sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
-
 
705
		.us2: ;составное условие
-
 
706
			sub bl,'0'
-
 
707
			cmp bl,9
-
 
708
			jle .cor1
-
 
709
				sub bl,7 ;convert 'A' to '10'
-
 
710
			.cor1:
-
 
711
			shl eax,4
-
 
712
			add eax,ebx
-
 
713
			inc esi
-
 
714
			jmp .cycle_16
-
 
715
	@@:
-
 
716
	cmp ecx,0 ;если число отрицательное
-
 
717
	jne @f
-
 
718
		sub ecx,eax
-
 
719
		mov eax,ecx
-
 
720
	@@:
606
	ret
721
	ret
-
 
722
endp
607
;---------------------------------------------------------------------
723
;---------------------------------------------------------------------
608
include 'palette.inc'
724
include 'palette.inc'
609
;---------------------------------------------------------------------
725
;---------------------------------------------------------------------
610
include 'tone.inc'
726
include 'tone.inc'
611
;---------------------------------------------------------------------
727
;---------------------------------------------------------------------