Subversion Repositories Kolibri OS

Rev

Rev 8288 | Rev 8996 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3380 mario79 1
;*****************************************************************************
2
; Color Dialog - for Kolibri OS
3
; Copyright (c) 2013, Marat Zakiyanov aka Mario79, aka Mario
4
; All rights reserved.
5
;
6
; Redistribution and use in source and binary forms, with or without
7
; modification, are permitted provided that the following conditions are met:
8
;        * Redistributions of source code must retain the above copyright
9
;          notice, this list of conditions and the following disclaimer.
10
;        * Redistributions in binary form must reproduce the above copyright
11
;          notice, this list of conditions and the following disclaimer in the
12
;          documentation and/or other materials provided with the distribution.
13
;        * Neither the name of the  nor the
14
;          names of its contributors may be used to endorse or promote products
15
;          derived from this software without specific prior written permission.
16
;
17
; THIS SOFTWARE IS PROVIDED BY Marat Zakiyanov ''AS IS'' AND ANY
18
; EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19
; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20
; DISCLAIMED. IN NO EVENT SHALL  BE LIABLE FOR ANY
21
; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23
; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24
; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
;*****************************************************************************
3417 mario79 28
;---------------------------------------------------------------------
29
;Some documentation for memory
30
;
31
;area name db 'FFFFFFFF_color_dialog',0 ; FFFFFFFF = PID
32
;
33
; communication area data
34
; flag  ; +0
35
; dw 0   ; 0 - empty, 1 - OK, color selected
36
;          2 - use another method/not found program, 3 - cancel
37
;
38
; type of dialog:  0-Palette&Tone
39
; dw 0 ; +2
40
;
41
; window X size ; +4
42
; dw 0
43
;
3587 fedesco 44
; window X position ; +6
3417 mario79 45
; dw 0
46
;
47
; window y size ; +8
48
; dw 0
49
;
50
; window Y position ; +10
51
; dw 0
52
;
53
; ColorDialog WINDOW SLOT ; +12
54
; dd 0
55
;
56
; Color type ; +16
57
; dd 0
58
;
59
; Color value ; +20
60
; dd 0
3473 mario79 61
 
62
; First start flag ; +24
63
; dd 0 ; 0 - first start, 1 - subsequent starts
64
;
65
; Old colors ; +28
66
; rd 10
67
;
68
; Free area ; +68
3417 mario79 69
;---------------------------------------------------------------------
3380 mario79 70
  use32
8288 IgorA 71
  org	 0
3380 mario79 72
  db	 'MENUET01'
8288 IgorA 73
  dd	 1, START, IM_END, I_END, stacktop, param, path
3380 mario79 74
;---------------------------------------------------------------------
75
include '../../macros.inc'
8288 IgorA 76
include '../../proc32.inc'
8271 IgorA 77
include '../../KOSfuncs.inc'
78
include '../../load_lib.mac'
3469 mario79 79
include '../../develop/libraries/box_lib/trunk/box_lib.mac'
3380 mario79 80
;include 'lang.inc'
3469 mario79 81
;include '../../debug.inc'
82
@use_library
3380 mario79 83
;---------------------------------------------------------------------
84
p_start_x = 10
85
p_start_y = 10
86
 
87
p_size_x = 20
88
p_size_y = 256
89
;--------------------------------------
90
t_start_x = 40
91
t_start_y = 10
92
;--------------------------------------
93
w_start_x = 200
94
w_start_y = 200
95
 
96
w_size_x = 400
97
w_size_y = 350
98
;--------------------------------------
99
c_start_x = t_start_x + p_size_y + 10
100
c_start_y = 10
101
 
8288 IgorA 102
c_size_x = 27
3380 mario79 103
c_size_y = 20
8288 IgorA 104
ed_size_x = 53
3380 mario79 105
;---------------------------------------------------------------------
3463 mario79 106
x_minimal_size equ 350
107
y_minimal_size equ 250
108
;---------------------------------------------------------------------
3380 mario79 109
START:
8288 IgorA 110
	mcall	SF_SYS_MISC,SSF_HEAP_INIT
111
	;mcall	SF_KEYBOARD,SSF_SET_INPUT_MODE,1
8993 leency 112
	mcall	SF_SET_EVENTS_MASK,EVM_REDRAW+EVM_KEY+\
113
	        EVM_BUTTON+EVM_MOUSE+EVM_MOUSE_FILTER
3473 mario79 114
;--------------------------------------
3469 mario79 115
load_libraries	l_libs_start,end_l_libs
116
	test	eax,eax
117
	jnz	button.exit_2
3473 mario79 118
;--------------------------------------
8288 IgorA 119
	call	get_communication_area
120
	call	get_active_pocess
121
	call	clear_colors_history
3380 mario79 122
	xor	eax,eax
123
	mov	al,p_size_x
124
	mov	[palette_SIZE_X],eax
125
	mov	ax,p_size_y
126
	mov	[palette_SIZE_Y],eax
127
	mov	[tone_SIZE_X],eax
128
	mov	[tone_SIZE_Y],eax
8993 leency 129
 
130
	;set the last used color as a current one
131
	mov	eax,[communication_area]
132
	add	eax,28
133
	mov	eax,[eax]
134
	mov	[selected_color],eax
3380 mario79 135
	mov	[tone_color],eax
3469 mario79 136
	call	prepare_scrollbars_position_from_color
3380 mario79 137
;--------------------------------------
138
	mov	ecx,[palette_SIZE_Y]
139
	imul	ecx,[palette_SIZE_X]
140
	lea	ecx,[ecx*3]
141
	inc	ecx	;reserve for stosd
8288 IgorA 142
	mcall	SF_SYS_MISC,SSF_MEM_ALLOC
3380 mario79 143
	mov	[palette_area],eax
144
;--------------------------------------
145
	call	create_palette
3587 fedesco 146
;--------------------------------------
3380 mario79 147
	mov	ecx,[tone_SIZE_Y]
148
	imul	ecx,[tone_SIZE_X]
149
	lea	ecx,[ecx*3]
150
	inc	ecx	;reserve for stosd
8288 IgorA 151
	mcall	SF_SYS_MISC,SSF_MEM_ALLOC
3380 mario79 152
	mov	[tone_area],eax
153
;--------------------------------------
154
	call    create_tone
155
;---------------------------------------------------------------------
156
align 4
157
red:
158
	call	draw_window
8993 leency 159
	;mov     ah,0
160
	;jmp     button.history_click
3380 mario79 161
;---------------------------------------------------------------------
162
align 4
163
still:
8288 IgorA 164
	mcall	SF_WAIT_EVENT
3380 mario79 165
 
166
	cmp	eax,1
167
	je	red
168
 
169
	cmp	eax,2
170
	je	key
171
 
172
	cmp	eax,3
3469 mario79 173
	je	button
3587 fedesco 174
 
3469 mario79 175
	cmp	eax,6
176
	je	mouse
3587 fedesco 177
 
3469 mario79 178
	jmp	still
3380 mario79 179
;---------------------------------------------------------------------
180
align 4
181
button:
8288 IgorA 182
	mcall	SF_GET_BUTTON
3380 mario79 183
 
184
	cmp	ah, 2
185
	je	palette_button
3587 fedesco 186
 
3380 mario79 187
	cmp	ah, 3
188
	je	tone_button
3417 mario79 189
 
190
	cmp	ah, 4
191
	je	color_button
3587 fedesco 192
 
3473 mario79 193
	cmp	ah, 30
194
	jb	@f
3587 fedesco 195
 
3473 mario79 196
	cmp	ah, 39
197
	ja	@f
3587 fedesco 198
 
3473 mario79 199
	sub	ah,30
8993 leency 200
 
201
.history_click:
3473 mario79 202
	movzx	eax,ah
203
	shl	eax,2
204
	add	eax,[communication_area]
205
	add	eax,28
206
	mov	eax,[eax]
207
	mov	[selected_color],eax
208
	call	prepare_scrollbars_position_from_color
209
	call	draw_selected_color
210
	call	draw_scrollbars
211
	jmp	still
212
;--------------------------------------
213
align 4
214
@@:
3380 mario79 215
	cmp	ah, 1
216
	jne	still
3473 mario79 217
;--------------------------------------
218
align 4
3380 mario79 219
.exit:
3417 mario79 220
	mov	eax,[communication_area]
221
	mov	[eax],word 3
3473 mario79 222
	jmp	@f
3417 mario79 223
; dps "CD flag value: cancel "
3473 mario79 224
;--------------------------------------
225
align 4
3417 mario79 226
.exit_1:
3473 mario79 227
;--------------------------------------
228
	call	scroll_colors_history
229
;--------------------------------------
230
align 4
231
@@:
232
;	mov	ax,[eax]
233
;	and	eax,0xffff
3417 mario79 234
; dps "CD flag value: "
235
; dpd eax
236
; newline
237
 
3463 mario79 238
	call	get_window_param
239
	mov	ebx,[communication_area]
240
	mov	ecx,procinfo
241
;	mov	eax,[window_x]
8288 IgorA 242
	mov	eax,[ecx+process_information.box.left]
3463 mario79 243
	shl	eax,16
8288 IgorA 244
	add	eax,[ecx+process_information.box.width]
3463 mario79 245
	mov	[ebx+4],eax
246
;	mov	eax,[window_y]
8288 IgorA 247
	mov	eax,[ecx+process_information.box.top]
3463 mario79 248
	shl	eax,16
8288 IgorA 249
	add	eax,[ecx+process_information.box.height]
3463 mario79 250
	mov	[ebx+8],eax
3473 mario79 251
;--------------------------------------
252
align 4
3469 mario79 253
.exit_2:
8288 IgorA 254
	mcall	SF_TERMINATE_PROCESS
3380 mario79 255
;---------------------------------------------------------------------
3473 mario79 256
align 4
3463 mario79 257
get_window_param:
8288 IgorA 258
	mcall	SF_THREAD_INFO,procinfo,-1
259
	mov	eax,[ebx+process_information.client_box.height]
3463 mario79 260
	inc	eax
261
;	mov	[window_high],eax
8288 IgorA 262
	mov	eax,[ebx+process_information.client_box.width]
3463 mario79 263
	inc	eax
264
;	mov	[window_width],eax
8288 IgorA 265
	mov	eax,dword[ebx+process_information.wnd_state]
3463 mario79 266
;	mov	[window_status],eax
267
	ret
268
;---------------------------------------------------------------------
3380 mario79 269
align 4
3417 mario79 270
get_communication_area:
8288 IgorA 271
	movzx	eax,byte[param]
3417 mario79 272
	test	eax,eax
273
	jz	@f
8288 IgorA 274
	mcall	SF_SYS_MISC,SSF_MEM_OPEN,param,,0x01
3417 mario79 275
	mov	[communication_area],eax
276
;	movzx	ebx,word [eax+2]
277
;	mov	[color_dialog_type],ebx
278
 
3463 mario79 279
	mov	ebx,[eax+4]
3469 mario79 280
;	cmp	bx,word x_minimal_size ;300
281
;	jb	@f
3476 mario79 282
	mov	bx,510
3463 mario79 283
	mov	[window_x],ebx
284
	mov	ebx,[eax+8]
3469 mario79 285
;	cmp	bx,word y_minimal_size ;200
286
;	jb	@f
6054 leency 287
	mov	bx,340
3463 mario79 288
	mov	[window_y],ebx
3417 mario79 289
@@:
290
	ret
291
;---------------------------------------------------------------------
292
align 4
293
get_active_pocess:
8288 IgorA 294
	mcall	SF_THREAD_INFO,procinfo,-1
295
	mov	ecx,[ebx+process_information.PID]
296
	mcall	SF_SYSTEM,SSF_GET_THREAD_SLOT
3417 mario79 297
	mov	[active_process],eax	; WINDOW SLOT
3587 fedesco 298
	mov	ebx,[communication_area]
3417 mario79 299
	test	ebx,ebx
300
	jz	.1
301
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
302
.1:
303
	ret
304
;---------------------------------------------------------------------
305
align 4
3473 mario79 306
clear_colors_history:
307
	mov	edi,[communication_area]
308
	cmp	[edi+24],dword 1
309
	je	@f
310
	mov	[edi+24],dword 1
311
	add	edi,28
312
	mov	ecx,10
313
	cld
8993 leency 314
	mov	eax,0x06BEEE
3473 mario79 315
	rep	stosd
316
@@:
317
	ret
318
;---------------------------------------------------------------------
319
align 4
320
scroll_colors_history:
321
	mov	edi,[communication_area]
322
	add	edi,28
323
	mov	eax,[selected_color]
324
	cmp	[edi],eax
325
	je	@f
326
	mov	ecx,9
327
	mov	esi,edi
328
	add	esi,32
329
	add	edi,36
330
	std
331
	rep	movsd
332
	mov	edi,[communication_area]
333
	mov	[edi+28],eax
334
@@:
335
	ret
336
;---------------------------------------------------------------------
337
align 4
3380 mario79 338
palette_button:
8288 IgorA 339
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
3380 mario79 340
	and	eax,0xffff
341
	sub	eax,p_start_y
342
	imul	eax,p_size_x
343
	lea	eax,[eax+eax*2]
344
	add	eax,[palette_area]
345
	mov	eax,[eax]
346
	mov	[tone_color],eax
347
	mov	[selected_color],eax
3469 mario79 348
	call	prepare_scrollbars_position_from_color
3380 mario79 349
	call	create_and_draw_tone
350
	call	draw_selected_color
3469 mario79 351
	call	draw_scrollbars
3380 mario79 352
	jmp	still
353
;---------------------------------------------------------------------
354
align 4
355
tone_button:
8288 IgorA 356
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
3380 mario79 357
	mov	ebx,eax
358
	and	eax,0xffff
359
	shr	ebx,16
360
	sub	eax,t_start_y
361
	imul	eax,p_size_y
362
	sub	ebx,t_start_x
363
	add	eax,ebx
364
	lea	eax,[eax+eax*2]
365
	add	eax,[tone_area]
366
	mov	eax,[eax]
367
	mov	[selected_color],eax
3469 mario79 368
	call	prepare_scrollbars_position_from_color
3380 mario79 369
	call	draw_selected_color
3469 mario79 370
	call	draw_scrollbars
3380 mario79 371
	jmp	still
372
;---------------------------------------------------------------------
373
align 4
3417 mario79 374
color_button:
375
	mov	eax,[communication_area]
376
	mov	[eax],word 1
377
	mov	ebx,[selected_color]
3463 mario79 378
	and	ebx,0xffffff
3417 mario79 379
	mov	[eax+20],ebx
380
; dps "CD flag value: OK "
381
	jmp	button.exit_1
382
;---------------------------------------------------------------------
383
align 4
3469 mario79 384
prepare_scrollbars_position_from_color:
385
; in: eax = selected color
386
	movzx	ebx,al
8288 IgorA 387
	inc bl
388
	neg bl
3469 mario79 389
	mov	[scroll_bar_data_blue.position],ebx
390
	shr	eax,8
391
	mov	bl,al
8288 IgorA 392
	inc bl
393
	neg bl
3469 mario79 394
	mov	[scroll_bar_data_green.position],ebx
395
	shr	eax,8
396
	mov	bl,al
8288 IgorA 397
	inc bl
398
	neg bl
3469 mario79 399
	mov	[scroll_bar_data_red.position],ebx
400
	ret
401
;---------------------------------------------------------------------
402
align 4
403
prepare_color_from_scrollbars_position:
404
; out: ebx = selected color
405
	mov	eax,[scroll_bar_data_red.position]
8288 IgorA 406
	inc al
407
	neg al
3469 mario79 408
	movzx	ebx,al
409
	shl	ebx,8
410
	mov	eax,[scroll_bar_data_green.position]
8288 IgorA 411
	inc al
412
	neg al
3469 mario79 413
	mov	bl,al
414
	shl	ebx,8
415
	mov	eax,[scroll_bar_data_blue.position]
8288 IgorA 416
	inc al
417
	neg al
3469 mario79 418
	mov	bl,al
419
	ret
3587 fedesco 420
;---------------------------------------------------------------------
3469 mario79 421
align 4
3380 mario79 422
key:
8288 IgorA 423
	mcall	SF_GET_KEY
8993 leency 424
 
8288 IgorA 425
	test word[edit1.flags],10b ;ed_focus
8993 leency 426
	jne @f
427
	cmp	ah,027	; Esc
428
	je	button.exit
429
	jmp still
430
@@:
8288 IgorA 431
	stdcall [edit_box_key], edit1
432
	stdcall conv_str_to_int, [edit1.text]
433
	cmp [selected_color],eax
434
	je still
435
	mov	[selected_color],eax
436
	call	prepare_scrollbars_position_from_color
437
	;call	draw_selected_color
438
	mcall	SF_DRAW_RECT,,,[selected_color]
439
	call	draw_scrollbars
3380 mario79 440
	jmp	still
441
;---------------------------------------------------------------------
442
align 4
3469 mario79 443
mouse:
444
	cmp	[scroll_bar_data_red.delta2],0
445
	jne	.red
446
	cmp	[scroll_bar_data_green.delta2],0
447
	jne	.green
448
	cmp	[scroll_bar_data_blue.delta2],0
3587 fedesco 449
	jne	.blue
3469 mario79 450
;--------------------------------------
451
align 4
452
.red:
8288 IgorA 453
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_red
3469 mario79 454
	cmp	[scroll_bar_data_red.delta2],0
455
	jne	@f
456
;--------------------------------------
457
align 4
458
.green:
8288 IgorA 459
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_green
3469 mario79 460
	cmp	[scroll_bar_data_green.delta2],0
461
	jne	@f
462
;--------------------------------------
463
align 4
464
.blue:
8288 IgorA 465
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_blue
466
	cmp	[scroll_bar_data_blue.delta2],0
467
	jne	@f
3469 mario79 468
;--------------------------------------
469
align 4
470
@@:
8288 IgorA 471
	stdcall [edit_box_mouse], edit1
3469 mario79 472
	call	prepare_color_from_scrollbars_position
473
	cmp	[selected_color],ebx
474
	je	still
475
	mov	[selected_color],ebx
476
	call	draw_selected_color
477
	jmp	still
478
;---------------------------------------------------------------------
479
align 4
3380 mario79 480
draw_selected_color:
8288 IgorA 481
	mcall	SF_DRAW_RECT,,,[selected_color]
8993 leency 482
	stdcall hex_in_str, sz_0x,[selected_color],6
483
	mov byte[sz_0x+6],0
8288 IgorA 484
	stdcall [edit_box_set_text],edit1,sz_0x
485
	stdcall [edit_box_draw],edit1
3380 mario79 486
	ret
487
;---------------------------------------------------------------------
488
align 4
489
create_and_draw_tone:
490
	call    create_tone
491
	call    draw_tone
492
	ret
493
;---------------------------------------------------------------------
494
align 4
495
draw_tone:
8288 IgorA 496
	mcall	SF_PUT_IMAGE_EXT,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,,24
3380 mario79 497
	ret
498
;---------------------------------------------------------------------
8288 IgorA 499
align 4
3469 mario79 500
draw_scrollbars:
8288 IgorA 501
	stdcall	[scrollbar_ver_draw], scroll_bar_data_red
502
	stdcall	[scrollbar_ver_draw], scroll_bar_data_green
503
	stdcall	[scrollbar_ver_draw], scroll_bar_data_blue
3469 mario79 504
	ret
505
;---------------------------------------------------------------------
3476 mario79 506
align 4
507
draw_history_frame:
8288 IgorA 508
	mov	[frame_data.x],dword (c_start_x+c_size_x+ed_size_x+10*2)*65536+80
3476 mario79 509
	mov	[frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5)
510
 
511
	mov	[frame_data.draw_text_flag],dword 1
3587 fedesco 512
 
3476 mario79 513
	mov	[frame_data.text_pointer],dword history_text
8288 IgorA 514
	stdcall	[Frame_draw], frame_data
3476 mario79 515
	ret
516
;---------------------------------------------------------------------
517
align 4
3473 mario79 518
draw_button_row:
519
	mov	edx,0x60000000 + 30		; BUTTON ROW
520
;	mov	ebx,220*65536+14
8288 IgorA 521
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
3476 mario79 522
	mov	ecx,25*65536+14
8288 IgorA 523
	mov	eax,SF_DEFINE_BUTTON
3473 mario79 524
;-----------------------------------
3476 mario79 525
align 4
3473 mario79 526
.newb:
527
	mcall
3476 mario79 528
	add	ecx,24*65536
3473 mario79 529
	inc	edx
530
	cmp	edx,0x60000000 + 39
531
	jbe	.newb
532
	ret
533
;---------------------------------------------------------------------
3476 mario79 534
align 4
535
draw_color_value:
8288 IgorA 536
	movzx ebx,word[frame_data.x_start]
537
	shl ebx,16
538
	add ebx,(22 shl 16)+39
3476 mario79 539
	mov	ecx,28*65536+11
540
	mov	edx,0xffffff
8288 IgorA 541
	mov	eax,SF_DRAW_RECT
3476 mario79 542
	mov	edi,10
543
	mov	esi,[communication_area]
544
	add	esi,28
545
;-----------------------------------
546
align 4
3587 fedesco 547
@@:
3476 mario79 548
	mcall
549
	pusha
8288 IgorA 550
	lea	edx,[ebx+(2 shl 16)]
3476 mario79 551
	shr	ecx,16
552
	mov	dx,cx
553
	add	dx,2
554
	mov	ecx,[esi]
555
	and	ecx,0xffffff
8288 IgorA 556
	mcall	SF_DRAW_NUMBER,0x00060100,,,0
3476 mario79 557
	popa
3587 fedesco 558
 
3476 mario79 559
	add	ecx,24*65536
560
	add	esi,4
561
	dec	edi
562
	jnz	@b
563
 
564
	ret
565
;---------------------------------------------------------------------
566
align 4
3473 mario79 567
draw_colours:
568
	mov	edi,10
569
	mov	esi,[communication_area]
570
	add	esi,28
571
;	mov	ebx,220*65536+14
8288 IgorA 572
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
3476 mario79 573
	mov	ecx,27*65536+14
8288 IgorA 574
	mov	eax,SF_DRAW_RECT
3473 mario79 575
	mov	[frame_data.draw_text_flag],dword 0
576
;--------------------------------------
3476 mario79 577
align 4
3473 mario79 578
newcol:
579
	mov	edx,[esi]
580
	mcall
581
 
582
	push	ebx ecx
583
 
584
	sub	ebx,2 shl 16
585
	add	bx,4
586
	sub	ecx,2 shl 16
587
	add	cx,4
3587 fedesco 588
 
3473 mario79 589
	mov	[frame_data.x],ebx
3587 fedesco 590
	mov	[frame_data.y],ecx
3473 mario79 591
 
8288 IgorA 592
	stdcall	[Frame_draw], frame_data
3473 mario79 593
 
594
	pop	ecx ebx
595
 
3476 mario79 596
	add	ecx,24*65536
3473 mario79 597
	add	esi,4
3587 fedesco 598
 
3473 mario79 599
	dec	edi
600
	jnz	newcol
601
 
602
	ret
603
;----------------------------------------------------------------------
3380 mario79 604
align 4
605
draw_window:
8288 IgorA 606
	mcall	SF_REDRAW,SSF_BEGIN_DRAW
607
;	mcall	SF_CREATE_WINDOW, , , 0x33AABBCC,,title
3469 mario79 608
	xor	esi,esi
8288 IgorA 609
	mcall	SF_CREATE_WINDOW,[window_x],[window_y], 0x34EEEeee,,title
610
	mcall	SF_DEFINE_BUTTON,,,0x60000002
3380 mario79 611
	mcall	,,,0x60000003
6054 leency 612
	mcall	,<296,80>,<280,22>,4,0x37A4D4
613
	mcall	,<402,80>,        ,1
8288 IgorA 614
	mcall   SF_DRAW_TEXT,<332,289>,0x802C7B9E,OK_Cancel
6054 leency 615
	mcall   ,<331,288>,0x80FFFfff
3469 mario79 616
	xor	ebp,ebp
8288 IgorA 617
	mcall	SF_PUT_IMAGE_EXT,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,,24
3380 mario79 618
	call	draw_tone
619
	call	draw_selected_color
3469 mario79 620
	xor	eax,eax
621
	inc	eax
622
	mov	[scroll_bar_data_red.all_redraw],eax
623
	mov	[scroll_bar_data_green.all_redraw],eax
624
	mov	[scroll_bar_data_blue.all_redraw],eax
625
	call	draw_scrollbars
3476 mario79 626
	call	draw_history_frame
3473 mario79 627
	call	draw_button_row
628
	call	draw_colours
3476 mario79 629
	call	draw_color_value
8288 IgorA 630
	mcall	SF_REDRAW,SSF_END_DRAW
3380 mario79 631
	ret
632
;---------------------------------------------------------------------
8288 IgorA 633
align 4
634
proc hex_in_str, buf:dword,val:dword,zif:dword
635
pushad
636
	mov edi,[buf]
637
	mov ecx,[zif]
638
	add edi,ecx
639
	dec edi
640
	mov ebx,[val]
641
 
642
	.cycle:
643
		mov al,bl
644
		and al,0xf
645
		cmp al,10
646
		jl @f
647
			add al,'A'-'0'-10
648
		@@:
649
		add al,'0'
650
		mov byte[edi],al
651
		dec edi
652
		shr ebx,4
653
	loop .cycle
654
popad
655
	ret
656
endp
657
;---------------------------------------------------------------------
658
;input:
8993 leency 659
; buf - pointer hexadecimal string
8288 IgorA 660
;output:
8993 leency 661
; eax - number
8288 IgorA 662
align 4
663
proc conv_str_to_int uses ebx ecx esi, buf:dword
664
	xor eax,eax
665
	xor ebx,ebx
666
	mov esi,[buf]
667
 
8993 leency 668
	.cycle_16:     ;считывание 16-ричных цифр
8288 IgorA 669
		mov bl,byte[esi]
670
		cmp bl,'0'
671
		jl @f
672
		cmp bl,'f'
673
		jg @f
674
		cmp bl,'9'
675
		jle .us1
676
			cmp bl,'A'
677
			jl @f ;отсеиваем символы >'9' и <'A'
678
		.us1: ;составное условие
679
		cmp bl,'F'
680
		jle .us2
681
			cmp bl,'a'
682
			jl @f ;отсеиваем символы >'F' и <'a'
683
			sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
684
		.us2: ;составное условие
685
			sub bl,'0'
686
			cmp bl,9
687
			jle .cor1
688
				sub bl,7 ;convert 'A' to '10'
689
			.cor1:
690
			shl eax,4
691
			add eax,ebx
692
			inc esi
693
			jmp .cycle_16
694
	@@:
695
	cmp ecx,0 ;если число отрицательное
696
	jne @f
697
		sub ecx,eax
698
		mov eax,ecx
699
	@@:
700
	ret
701
endp
702
;---------------------------------------------------------------------
3380 mario79 703
include 'palette.inc'
704
;---------------------------------------------------------------------
705
include 'tone.inc'
706
;---------------------------------------------------------------------
707
include 'i_data.inc'
708
;---------------------------------------------------------------------
709
IM_END:
710
;---------------------------------------------------------------------
711
include 'u_data.inc'
712
;---------------------------------------------------------------------
713
I_END:
3587 fedesco 714
;---------------------------------------------------------------------