Subversion Repositories Kolibri OS

Rev

Rev 8993 | 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
159
;---------------------------------------------------------------------
160
align 4
161
still:
8288 IgorA 162
	mcall	SF_WAIT_EVENT
3380 mario79 163
 
164
	cmp	eax,1
165
	je	red
166
 
167
	cmp	eax,2
168
	je	key
169
 
170
	cmp	eax,3
3469 mario79 171
	je	button
3587 fedesco 172
 
3469 mario79 173
	cmp	eax,6
174
	je	mouse
3587 fedesco 175
 
3469 mario79 176
	jmp	still
3380 mario79 177
;---------------------------------------------------------------------
178
align 4
179
button:
8288 IgorA 180
	mcall	SF_GET_BUTTON
3380 mario79 181
 
182
	cmp	ah, 2
183
	je	palette_button
3587 fedesco 184
 
3380 mario79 185
	cmp	ah, 3
186
	je	tone_button
3417 mario79 187
 
188
	cmp	ah, 4
189
	je	color_button
3587 fedesco 190
 
3473 mario79 191
	cmp	ah, 30
192
	jb	@f
3587 fedesco 193
 
3473 mario79 194
	cmp	ah, 39
195
	ja	@f
3587 fedesco 196
 
3473 mario79 197
	sub	ah,30
8993 leency 198
 
8996 leency 199
	;click on a colors History
3473 mario79 200
	movzx	eax,ah
201
	shl	eax,2
202
	add	eax,[communication_area]
203
	add	eax,28
204
	mov	eax,[eax]
205
	mov	[selected_color],eax
206
	call	prepare_scrollbars_position_from_color
207
	call	draw_selected_color
208
	call	draw_scrollbars
209
	jmp	still
210
;--------------------------------------
211
align 4
212
@@:
3380 mario79 213
	cmp	ah, 1
214
	jne	still
3473 mario79 215
;--------------------------------------
216
align 4
3380 mario79 217
.exit:
3417 mario79 218
	mov	eax,[communication_area]
219
	mov	[eax],word 3
3473 mario79 220
	jmp	@f
3417 mario79 221
; dps "CD flag value: cancel "
3473 mario79 222
;--------------------------------------
223
align 4
3417 mario79 224
.exit_1:
3473 mario79 225
;--------------------------------------
226
	call	scroll_colors_history
227
;--------------------------------------
228
align 4
229
@@:
230
;	mov	ax,[eax]
231
;	and	eax,0xffff
3417 mario79 232
; dps "CD flag value: "
233
; dpd eax
234
; newline
235
 
3463 mario79 236
	call	get_window_param
237
	mov	ebx,[communication_area]
238
	mov	ecx,procinfo
239
;	mov	eax,[window_x]
8288 IgorA 240
	mov	eax,[ecx+process_information.box.left]
3463 mario79 241
	shl	eax,16
8288 IgorA 242
	add	eax,[ecx+process_information.box.width]
3463 mario79 243
	mov	[ebx+4],eax
244
;	mov	eax,[window_y]
8288 IgorA 245
	mov	eax,[ecx+process_information.box.top]
3463 mario79 246
	shl	eax,16
8288 IgorA 247
	add	eax,[ecx+process_information.box.height]
3463 mario79 248
	mov	[ebx+8],eax
3473 mario79 249
;--------------------------------------
250
align 4
3469 mario79 251
.exit_2:
8288 IgorA 252
	mcall	SF_TERMINATE_PROCESS
3380 mario79 253
;---------------------------------------------------------------------
3473 mario79 254
align 4
3463 mario79 255
get_window_param:
8288 IgorA 256
	mcall	SF_THREAD_INFO,procinfo,-1
257
	mov	eax,[ebx+process_information.client_box.height]
3463 mario79 258
	inc	eax
259
;	mov	[window_high],eax
8288 IgorA 260
	mov	eax,[ebx+process_information.client_box.width]
3463 mario79 261
	inc	eax
262
;	mov	[window_width],eax
8288 IgorA 263
	mov	eax,dword[ebx+process_information.wnd_state]
3463 mario79 264
;	mov	[window_status],eax
265
	ret
266
;---------------------------------------------------------------------
3380 mario79 267
align 4
3417 mario79 268
get_communication_area:
8288 IgorA 269
	movzx	eax,byte[param]
3417 mario79 270
	test	eax,eax
271
	jz	@f
8288 IgorA 272
	mcall	SF_SYS_MISC,SSF_MEM_OPEN,param,,0x01
3417 mario79 273
	mov	[communication_area],eax
274
;	movzx	ebx,word [eax+2]
275
;	mov	[color_dialog_type],ebx
276
 
3463 mario79 277
	mov	ebx,[eax+4]
3469 mario79 278
;	cmp	bx,word x_minimal_size ;300
279
;	jb	@f
3476 mario79 280
	mov	bx,510
3463 mario79 281
	mov	[window_x],ebx
282
	mov	ebx,[eax+8]
3469 mario79 283
;	cmp	bx,word y_minimal_size ;200
284
;	jb	@f
6054 leency 285
	mov	bx,340
3463 mario79 286
	mov	[window_y],ebx
3417 mario79 287
@@:
288
	ret
289
;---------------------------------------------------------------------
290
align 4
291
get_active_pocess:
8288 IgorA 292
	mcall	SF_THREAD_INFO,procinfo,-1
293
	mov	ecx,[ebx+process_information.PID]
294
	mcall	SF_SYSTEM,SSF_GET_THREAD_SLOT
3417 mario79 295
	mov	[active_process],eax	; WINDOW SLOT
3587 fedesco 296
	mov	ebx,[communication_area]
3417 mario79 297
	test	ebx,ebx
298
	jz	.1
299
	mov	[ebx+12],eax	; WINDOW SLOT to com. area
300
.1:
301
	ret
302
;---------------------------------------------------------------------
303
align 4
3473 mario79 304
clear_colors_history:
305
	mov	edi,[communication_area]
306
	cmp	[edi+24],dword 1
307
	je	@f
308
	mov	[edi+24],dword 1
309
	add	edi,28
310
	mov	ecx,10
311
	cld
8993 leency 312
	mov	eax,0x06BEEE
3473 mario79 313
	rep	stosd
314
@@:
315
	ret
316
;---------------------------------------------------------------------
317
align 4
318
scroll_colors_history:
319
	mov	edi,[communication_area]
320
	add	edi,28
321
	mov	eax,[selected_color]
322
	cmp	[edi],eax
323
	je	@f
324
	mov	ecx,9
325
	mov	esi,edi
326
	add	esi,32
327
	add	edi,36
328
	std
329
	rep	movsd
330
	mov	edi,[communication_area]
331
	mov	[edi+28],eax
332
@@:
333
	ret
334
;---------------------------------------------------------------------
335
align 4
3380 mario79 336
palette_button:
8288 IgorA 337
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
3380 mario79 338
	and	eax,0xffff
339
	sub	eax,p_start_y
340
	imul	eax,p_size_x
341
	lea	eax,[eax+eax*2]
342
	add	eax,[palette_area]
343
	mov	eax,[eax]
344
	mov	[tone_color],eax
345
	mov	[selected_color],eax
3469 mario79 346
	call	prepare_scrollbars_position_from_color
3380 mario79 347
	call	create_and_draw_tone
348
	call	draw_selected_color
3469 mario79 349
	call	draw_scrollbars
3380 mario79 350
	jmp	still
351
;---------------------------------------------------------------------
352
align 4
353
tone_button:
8288 IgorA 354
	mcall	SF_MOUSE_GET,SSF_WINDOW_POSITION
3380 mario79 355
	mov	ebx,eax
356
	and	eax,0xffff
357
	shr	ebx,16
358
	sub	eax,t_start_y
359
	imul	eax,p_size_y
360
	sub	ebx,t_start_x
361
	add	eax,ebx
362
	lea	eax,[eax+eax*2]
363
	add	eax,[tone_area]
364
	mov	eax,[eax]
365
	mov	[selected_color],eax
3469 mario79 366
	call	prepare_scrollbars_position_from_color
3380 mario79 367
	call	draw_selected_color
3469 mario79 368
	call	draw_scrollbars
3380 mario79 369
	jmp	still
370
;---------------------------------------------------------------------
371
align 4
3417 mario79 372
color_button:
373
	mov	eax,[communication_area]
374
	mov	[eax],word 1
375
	mov	ebx,[selected_color]
3463 mario79 376
	and	ebx,0xffffff
3417 mario79 377
	mov	[eax+20],ebx
378
; dps "CD flag value: OK "
379
	jmp	button.exit_1
380
;---------------------------------------------------------------------
381
align 4
3469 mario79 382
prepare_scrollbars_position_from_color:
383
; in: eax = selected color
384
	movzx	ebx,al
8288 IgorA 385
	inc bl
386
	neg bl
3469 mario79 387
	mov	[scroll_bar_data_blue.position],ebx
388
	shr	eax,8
389
	mov	bl,al
8288 IgorA 390
	inc bl
391
	neg bl
3469 mario79 392
	mov	[scroll_bar_data_green.position],ebx
393
	shr	eax,8
394
	mov	bl,al
8288 IgorA 395
	inc bl
396
	neg bl
3469 mario79 397
	mov	[scroll_bar_data_red.position],ebx
398
	ret
399
;---------------------------------------------------------------------
400
align 4
401
prepare_color_from_scrollbars_position:
402
; out: ebx = selected color
403
	mov	eax,[scroll_bar_data_red.position]
8288 IgorA 404
	inc al
405
	neg al
3469 mario79 406
	movzx	ebx,al
407
	shl	ebx,8
408
	mov	eax,[scroll_bar_data_green.position]
8288 IgorA 409
	inc al
410
	neg al
3469 mario79 411
	mov	bl,al
412
	shl	ebx,8
413
	mov	eax,[scroll_bar_data_blue.position]
8288 IgorA 414
	inc al
415
	neg al
3469 mario79 416
	mov	bl,al
417
	ret
3587 fedesco 418
;---------------------------------------------------------------------
3469 mario79 419
align 4
3380 mario79 420
key:
8288 IgorA 421
	mcall	SF_GET_KEY
8993 leency 422
 
8288 IgorA 423
	test word[edit1.flags],10b ;ed_focus
8993 leency 424
	jne @f
425
	cmp	ah,027	; Esc
426
	je	button.exit
427
	jmp still
428
@@:
8288 IgorA 429
	stdcall [edit_box_key], edit1
430
	stdcall conv_str_to_int, [edit1.text]
431
	cmp [selected_color],eax
432
	je still
433
	mov	[selected_color],eax
434
	call	prepare_scrollbars_position_from_color
435
	;call	draw_selected_color
436
	mcall	SF_DRAW_RECT,,,[selected_color]
437
	call	draw_scrollbars
3380 mario79 438
	jmp	still
439
;---------------------------------------------------------------------
440
align 4
3469 mario79 441
mouse:
442
	cmp	[scroll_bar_data_red.delta2],0
443
	jne	.red
444
	cmp	[scroll_bar_data_green.delta2],0
445
	jne	.green
446
	cmp	[scroll_bar_data_blue.delta2],0
3587 fedesco 447
	jne	.blue
3469 mario79 448
;--------------------------------------
449
align 4
450
.red:
8288 IgorA 451
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_red
3469 mario79 452
	cmp	[scroll_bar_data_red.delta2],0
453
	jne	@f
454
;--------------------------------------
455
align 4
456
.green:
8288 IgorA 457
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_green
3469 mario79 458
	cmp	[scroll_bar_data_green.delta2],0
459
	jne	@f
460
;--------------------------------------
461
align 4
462
.blue:
8288 IgorA 463
	stdcall	[scrollbar_ver_mouse], scroll_bar_data_blue
464
	cmp	[scroll_bar_data_blue.delta2],0
465
	jne	@f
3469 mario79 466
;--------------------------------------
467
align 4
468
@@:
8288 IgorA 469
	stdcall [edit_box_mouse], edit1
3469 mario79 470
	call	prepare_color_from_scrollbars_position
471
	cmp	[selected_color],ebx
472
	je	still
473
	mov	[selected_color],ebx
474
	call	draw_selected_color
475
	jmp	still
476
;---------------------------------------------------------------------
477
align 4
3380 mario79 478
draw_selected_color:
8288 IgorA 479
	mcall	SF_DRAW_RECT,,,[selected_color]
8993 leency 480
	stdcall hex_in_str, sz_0x,[selected_color],6
481
	mov byte[sz_0x+6],0
8288 IgorA 482
	stdcall [edit_box_set_text],edit1,sz_0x
483
	stdcall [edit_box_draw],edit1
3380 mario79 484
	ret
485
;---------------------------------------------------------------------
486
align 4
487
create_and_draw_tone:
488
	call    create_tone
489
	call    draw_tone
490
	ret
491
;---------------------------------------------------------------------
492
align 4
493
draw_tone:
8288 IgorA 494
	mcall	SF_PUT_IMAGE_EXT,[tone_area],<[tone_SIZE_X],[tone_SIZE_Y]>,,24
3380 mario79 495
	ret
496
;---------------------------------------------------------------------
8288 IgorA 497
align 4
3469 mario79 498
draw_scrollbars:
8288 IgorA 499
	stdcall	[scrollbar_ver_draw], scroll_bar_data_red
500
	stdcall	[scrollbar_ver_draw], scroll_bar_data_green
501
	stdcall	[scrollbar_ver_draw], scroll_bar_data_blue
3469 mario79 502
	ret
503
;---------------------------------------------------------------------
3476 mario79 504
align 4
505
draw_history_frame:
8288 IgorA 506
	mov	[frame_data.x],dword (c_start_x+c_size_x+ed_size_x+10*2)*65536+80
3476 mario79 507
	mov	[frame_data.y],dword (p_start_y+5)*65536+(p_size_y-5)
508
 
509
	mov	[frame_data.draw_text_flag],dword 1
3587 fedesco 510
 
3476 mario79 511
	mov	[frame_data.text_pointer],dword history_text
8288 IgorA 512
	stdcall	[Frame_draw], frame_data
3476 mario79 513
	ret
514
;---------------------------------------------------------------------
515
align 4
3473 mario79 516
draw_button_row:
517
	mov	edx,0x60000000 + 30		; BUTTON ROW
518
;	mov	ebx,220*65536+14
8288 IgorA 519
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
3476 mario79 520
	mov	ecx,25*65536+14
8288 IgorA 521
	mov	eax,SF_DEFINE_BUTTON
3473 mario79 522
;-----------------------------------
3476 mario79 523
align 4
3473 mario79 524
.newb:
525
	mcall
3476 mario79 526
	add	ecx,24*65536
3473 mario79 527
	inc	edx
528
	cmp	edx,0x60000000 + 39
529
	jbe	.newb
530
	ret
531
;---------------------------------------------------------------------
3476 mario79 532
align 4
533
draw_color_value:
8288 IgorA 534
	movzx ebx,word[frame_data.x_start]
535
	shl ebx,16
536
	add ebx,(22 shl 16)+39
3476 mario79 537
	mov	ecx,28*65536+11
538
	mov	edx,0xffffff
8288 IgorA 539
	mov	eax,SF_DRAW_RECT
3476 mario79 540
	mov	edi,10
541
	mov	esi,[communication_area]
542
	add	esi,28
543
;-----------------------------------
544
align 4
3587 fedesco 545
@@:
3476 mario79 546
	mcall
547
	pusha
8288 IgorA 548
	lea	edx,[ebx+(2 shl 16)]
3476 mario79 549
	shr	ecx,16
550
	mov	dx,cx
551
	add	dx,2
552
	mov	ecx,[esi]
553
	and	ecx,0xffffff
8288 IgorA 554
	mcall	SF_DRAW_NUMBER,0x00060100,,,0
3476 mario79 555
	popa
3587 fedesco 556
 
3476 mario79 557
	add	ecx,24*65536
558
	add	esi,4
559
	dec	edi
560
	jnz	@b
561
 
562
	ret
563
;---------------------------------------------------------------------
564
align 4
3473 mario79 565
draw_colours:
566
	mov	edi,10
567
	mov	esi,[communication_area]
568
	add	esi,28
569
;	mov	ebx,220*65536+14
8288 IgorA 570
	mov	ebx,(c_start_x+c_size_x+ed_size_x+10*3)*65536+14
3476 mario79 571
	mov	ecx,27*65536+14
8288 IgorA 572
	mov	eax,SF_DRAW_RECT
3473 mario79 573
	mov	[frame_data.draw_text_flag],dword 0
574
;--------------------------------------
3476 mario79 575
align 4
3473 mario79 576
newcol:
577
	mov	edx,[esi]
578
	mcall
579
 
580
	push	ebx ecx
581
 
582
	sub	ebx,2 shl 16
583
	add	bx,4
584
	sub	ecx,2 shl 16
585
	add	cx,4
3587 fedesco 586
 
3473 mario79 587
	mov	[frame_data.x],ebx
3587 fedesco 588
	mov	[frame_data.y],ecx
3473 mario79 589
 
8288 IgorA 590
	stdcall	[Frame_draw], frame_data
3473 mario79 591
 
592
	pop	ecx ebx
593
 
3476 mario79 594
	add	ecx,24*65536
3473 mario79 595
	add	esi,4
3587 fedesco 596
 
3473 mario79 597
	dec	edi
598
	jnz	newcol
599
 
600
	ret
601
;----------------------------------------------------------------------
3380 mario79 602
align 4
603
draw_window:
8288 IgorA 604
	mcall	SF_REDRAW,SSF_BEGIN_DRAW
605
;	mcall	SF_CREATE_WINDOW, , , 0x33AABBCC,,title
3469 mario79 606
	xor	esi,esi
8288 IgorA 607
	mcall	SF_CREATE_WINDOW,[window_x],[window_y], 0x34EEEeee,,title
608
	mcall	SF_DEFINE_BUTTON,,,0x60000002
3380 mario79 609
	mcall	,,,0x60000003
6054 leency 610
	mcall	,<296,80>,<280,22>,4,0x37A4D4
611
	mcall	,<402,80>,        ,1
8288 IgorA 612
	mcall   SF_DRAW_TEXT,<332,289>,0x802C7B9E,OK_Cancel
6054 leency 613
	mcall   ,<331,288>,0x80FFFfff
3469 mario79 614
	xor	ebp,ebp
8288 IgorA 615
	mcall	SF_PUT_IMAGE_EXT,[palette_area],<[palette_SIZE_X],[palette_SIZE_Y]>,,24
3380 mario79 616
	call	draw_tone
617
	call	draw_selected_color
3469 mario79 618
	xor	eax,eax
619
	inc	eax
620
	mov	[scroll_bar_data_red.all_redraw],eax
621
	mov	[scroll_bar_data_green.all_redraw],eax
622
	mov	[scroll_bar_data_blue.all_redraw],eax
623
	call	draw_scrollbars
3476 mario79 624
	call	draw_history_frame
3473 mario79 625
	call	draw_button_row
626
	call	draw_colours
3476 mario79 627
	call	draw_color_value
8288 IgorA 628
	mcall	SF_REDRAW,SSF_END_DRAW
3380 mario79 629
	ret
630
;---------------------------------------------------------------------
8288 IgorA 631
align 4
632
proc hex_in_str, buf:dword,val:dword,zif:dword
633
pushad
634
	mov edi,[buf]
635
	mov ecx,[zif]
636
	add edi,ecx
637
	dec edi
638
	mov ebx,[val]
639
 
640
	.cycle:
641
		mov al,bl
642
		and al,0xf
643
		cmp al,10
644
		jl @f
645
			add al,'A'-'0'-10
646
		@@:
647
		add al,'0'
648
		mov byte[edi],al
649
		dec edi
650
		shr ebx,4
651
	loop .cycle
652
popad
653
	ret
654
endp
655
;---------------------------------------------------------------------
656
;input:
8996 leency 657
; buf - pointer to a hexadecimal string
8288 IgorA 658
;output:
8993 leency 659
; eax - number
8288 IgorA 660
align 4
661
proc conv_str_to_int uses ebx ecx esi, buf:dword
662
	xor eax,eax
663
	xor ebx,ebx
664
	mov esi,[buf]
665
 
8996 leency 666
	.cycle_16:
8288 IgorA 667
		mov bl,byte[esi]
668
		cmp bl,'0'
669
		jl @f
670
		cmp bl,'f'
671
		jg @f
672
		cmp bl,'9'
673
		jle .us1
674
			cmp bl,'A'
8996 leency 675
			jl @f ;skip the chars not in between '9' and 'A'
8288 IgorA 676
		.us1: ;составное условие
677
		cmp bl,'F'
678
		jle .us2
679
			cmp bl,'a'
8996 leency 680
			jl @f ;skip the chars not in between 'F' and 'a'
681
			sub bl,32 ;convert symbols to uppercase for convenience
8288 IgorA 682
		.us2: ;составное условие
683
			sub bl,'0'
684
			cmp bl,9
685
			jle .cor1
686
				sub bl,7 ;convert 'A' to '10'
687
			.cor1:
688
			shl eax,4
689
			add eax,ebx
690
			inc esi
691
			jmp .cycle_16
692
	@@:
8996 leency 693
	cmp ecx,0 ;if the number is negative
8288 IgorA 694
	jne @f
695
		sub ecx,eax
696
		mov eax,ecx
697
	@@:
698
	ret
699
endp
700
;---------------------------------------------------------------------
3380 mario79 701
include 'palette.inc'
702
;---------------------------------------------------------------------
703
include 'tone.inc'
704
;---------------------------------------------------------------------
705
include 'i_data.inc'
706
;---------------------------------------------------------------------
707
IM_END:
708
;---------------------------------------------------------------------
709
include 'u_data.inc'
710
;---------------------------------------------------------------------
711
I_END:
3587 fedesco 712
;---------------------------------------------------------------------