Subversion Repositories Kolibri OS

Rev

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

Rev 5914 Rev 5948
Line 1... Line 1...
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
1
; ¬ ªà®á ¤«ï á¨á⥬­®© ¡¨¡«¨®â¥ª¨ box_lib.obj
2
; í«¥¬¥­â TreeList ¤«ï Kolibri OS
2
; í«¥¬¥­â TreeList ¤«ï Kolibri OS
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 14.11.2015 IgorA
3
; ä ©« ¯®á«¥¤­¨© à § ¨§¬¥­ï«áï 03.12.2015 IgorA
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
4
; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
Line 5... Line 5...
5
 
5
 
6
 
6
 
Line 61... Line 61...
61
	ret
61
	ret
62
endp
62
endp
Line 63... Line 63...
63
 
63
 
64
;®ç¨á⪠ ¯ ¬ïâ¨ í«¥¬¥­â  (¤¥áâàãªâ®à)
64
;®ç¨á⪠ ¯ ¬ïâ¨ í«¥¬¥­â  (¤¥áâàãªâ®à)
65
align 4
65
align 4
66
proc tl_data_clear uses edi, tlist:dword
-
 
67
;uses eax ???
66
proc tl_data_clear uses eax edi, tlist:dword
68
	mov edi,dword[tlist]
67
	mov edi,dword[tlist]
69
	cmp tl_data_img,0
68
	cmp tl_data_img,0
70
	je @f
69
	je @f
71
		invoke mem.free,tl_data_img ;ç¨á⪠ á¨á⥬­ëå ¨ª®­®ª
70
		invoke mem.free,tl_data_img ;ç¨á⪠ á¨á⥬­ëå ¨ª®­®ª
Line 188... Line 187...
188
 
187
 
189
	mov ebx,tl_box_left
188
	mov ebx,tl_box_left
190
	shl ebx,16
189
	shl ebx,16
191
	cmp eax,ebx ;«¥¢ ï £à ­¨æ  ®ª­ 
190
	cmp eax,ebx ;«¥¢ ï £à ­¨æ  ®ª­ 
192
	jl .no_in_wnd ;.test_scroll ­¥ ¯à¨¬¥­ï¥¬
-
 
193
 
191
	jl .no_in_wnd ;.test_scroll ­¥ ¯à¨¬¥­ï¥¬
194
		shr ebx,16
192
		shr ebx,16
195
		add ebx,tl_box_width
193
		add ebx,tl_box_width
196
		shl ebx,16
194
		shl ebx,16
197
		cmp eax,ebx ;¯à ¢ ï £à ­¨æ  ®ª­ 
195
		cmp eax,ebx ;¯à ¢ ï £à ­¨æ  ®ª­ 
Line 229... Line 227...
229
@@:
227
@@:
230
	stdcall tl_cur_next, edi
228
	stdcall tl_cur_next, edi
231
	dec ecx
229
	dec ecx
232
	jnz @r
230
	jnz @r
233
	jmp .mouse_next
231
	jmp .mouse_next
234
;----------------------------------------
232
;------------------------------------------------
235
.decr: ;¢¥à⨪ «ì­ ï ¯à®ªàã⪠ ®âà¨æ â¥«ì­ ï
233
.decr: ;¢¥à⨪ «ì­ ï ¯à®ªàã⪠ ®âà¨æ â¥«ì­ ï
236
	mov bx,ax ;ax = mouse scroll data vertical
234
	mov bx,ax ;ax = mouse scroll data vertical
237
	jmp @f
235
	jmp @f
238
.decr_1: ;£®à¨§®­â «ì­ ï ¯à®ªàã⪠ ®âà¨æ â¥«ì­ ï
236
.decr_1: ;£®à¨§®­â «ì­ ï ¯à®ªàã⪠ ®âà¨æ â¥«ì­ ï
239
	mov bx,ax ;ax = mouse scroll data horizontal
237
	mov bx,ax ;ax = mouse scroll data horizontal
Line 243... Line 241...
243
	inc ecx
241
	inc ecx
244
@@:
242
@@:
245
	stdcall tl_cur_perv, edi
243
	stdcall tl_cur_perv, edi
246
	dec ecx
244
	dec ecx
247
	jnz @r
245
	jnz @r
248
;---------------------------------------------------
246
;------------------------------------------------
249
.mouse_next:
247
.mouse_next:
250
pop ebx eax
248
pop ebx eax
Line 251... Line 249...
251
 
249
 
252
		push eax ebx
250
		push eax ebx
Line 349... Line 347...
349
;-------------------------------------------------------------------------------
347
;-------------------------------------------------------------------------------
350
	.no_in_wnd:  ;­¥ ¯®¯ «¨ ¢ ®ª­® - ¯®â¥àï 䮪ãá  (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ­  ¤ ­­®¬ í¥«¥¬¥­â¥)
348
	.no_in_wnd:  ;­¥ ¯®¯ «¨ ¢ ®ª­® - ¯®â¥àï 䮪ãá  (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ­  ¤ ­­®¬ í¥«¥¬¥­â¥)
351
	mcall 37,2 ;¯à®¢¥à塞 ­ ¦ â®áâì «î¡ëå ª­®¯®ª
349
	mcall 37,2 ;¯à®¢¥à塞 ­ ¦ â®áâì «î¡ëå ª­®¯®ª
352
	cmp eax,0  ;­¨ç¥£® ­¥ ­ ¦ «¨ eax=0
350
	cmp eax,0  ;­¨ç¥£® ­¥ ­ ¦ «¨ eax=0
353
	je .no_draw
351
	je .no_draw
354
 
-
 
355
		mov ebx,tl_el_focus
352
		mov ebx,tl_el_focus
356
		cmp dword[ebx],edi
353
		cmp dword[ebx],edi
357
		jne .no_draw ;í«¥¬¥­â ­¥ ¢ 䮪ãá¥
354
		jne .no_draw ;í«¥¬¥­â ­¥ ¢ 䮪ãá¥
358
			mov dword[ebx],0 ;reset focus
355
			mov dword[ebx],0 ;reset focus
359
			mov esi,tl_box_top
356
			mov esi,tl_box_top
Line 405... Line 402...
405
  mov eax,tl_tim_undo
402
	mov eax,tl_tim_undo
406
  sub tl_ch_tim,eax ;ch_tim-=tim_undo;
403
	sub tl_ch_tim,eax ;ch_tim-=tim_undo;
407
  mov eax,tl_ch_tim
404
	mov eax,tl_ch_tim
408
    cmp edx,ecx
405
	cmp edx,ecx
409
    jle @f
406
	jle @f
410
 
-
 
411
    ;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ­¨¥ ᨬ¢®«  ¡ë«® ®â¬¥­¥­®
407
		;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ­¨¥ ᨬ¢®«  ¡ë«® ®â¬¥­¥­®
412
    cmp dword[edx+12],eax
408
		cmp dword[edx+12],eax
413
    jle .no_u1
409
		jle .no_u1
414
      mov dword[edx+12],0
410
			mov dword[edx+12],0
415
      mov dword[edx+16],0
411
			mov dword[edx+16],0
Line 423... Line 419...
423
      mov ebx, dword[edx+8]
419
			mov ebx, dword[edx+8]
424
      imul ebx,sizeof.TreeList
420
			imul ebx,sizeof.TreeList
425
      add ebx, tl_data_nodes ;.perv
421
			add ebx, tl_data_nodes ;.perv
426
      push dword[edx+4] ;node[node[i].next].perv=node[i].perv;
422
			push dword[edx+4] ;node[node[i].next].perv=node[i].perv;
427
      pop dword[ebx+4]
423
			pop dword[ebx+4]
428
 
-
 
429
    .no_u1:
424
		.no_u1:
Line 430... Line 425...
430
 
425
 
431
    ;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥­¨¥ ᨬ¢®«  ¡ë«® ®â¬¥­¥­®
426
		;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥­¨¥ ᨬ¢®«  ¡ë«® ®â¬¥­¥­®
432
    cmp dword[edx+16],eax
427
		cmp dword[edx+16],eax
433
    jle .no_u2
428
		jle .no_u2
434
      mov dword[edx+16],0
429
			mov dword[edx+16],0
435
    .no_u2:
-
 
436
 
430
		.no_u2:
437
    call tl_move_next
431
		call tl_move_next
438
    jmp @b
432
		jmp @b
439
  @@:
433
	@@:
440
  mov tl_tim_undo,0
-
 
441
;  mov eax,[edi+?] ;co_tim
-
 
442
;  cmp tl_ch_tim,eax ;ch_tim
-
 
443
;  jge @f
-
 
444
;    mov [edi+?],0 ;co_tim
-
 
445
;  @@:
434
	mov tl_tim_undo,0
446
  pop edx ecx ebx eax
435
	pop edx ecx ebx eax
447
  .no_work:
-
 
448
 
436
	.no_work:
Line 449... Line 437...
449
  ret
437
	ret
450
 
438
 
451
;¢ë¢®¤ ᯨ᪠ ­  íªà ­
439
;¢ë¢®¤ ᯨ᪠ ­  íªà ­
Line 520... Line 508...
520
	call tl_iterat_next
508
			call tl_iterat_next
521
	cmp edx,ecx
509
			cmp edx,ecx
522
	jle .end_draw
510
			jle .end_draw
523
	inc eax
511
			inc eax
524
	cmp eax,dword[esi+sb_offs_position]
512
			cmp eax,dword[esi+sb_offs_position]
525
	jge .end_c1
-
 
526
	jmp @b
513
			jl @b
527
    .end_c1:
514
	.end_c1:
Line 528... Line 515...
528
 
515
 
529
    xor eax,eax
516
	xor eax,eax
530
    mov esi,tl_box_top
517
	mov esi,tl_box_top
Line 542... Line 529...
542
 
529
 
543
    mov edi,tl_p_scroll ;à¨á㥬 ¤®ç¥à­¨© áªà®««¨­£
530
	mov edi,tl_p_scroll ;à¨á㥬 ¤®ç¥à­¨© áªà®««¨­£
544
    cmp edi,0          ;¤«ï ⮣® çâ®-¡ë ¥£® ­¥ ¯à¨è«®áì à¨á®¢ âì ¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥
531
	cmp edi,0    ;¤«ï ⮣® çâ®-¡ë ¥£® ­¥ ¯à¨è«®áì à¨á®¢ âì ¢ ¯®«ì§®¢ â¥«ì᪮© ¯à®£à ¬¬¥
545
    je .end_draw       ;¥á«¨ ­¥â áªà®««¨­£  ¢ë室¨¬
532
	je .end_draw ;¥á«¨ ­¥â áªà®««¨­£  ¢ë室¨¬
546
    stdcall scroll_bar_vertical.draw, edi
-
 
547
 
533
		stdcall scroll_bar_vertical.draw, edi
548
    .end_draw:
534
	.end_draw:
549
    popad
535
	popad
550
  ret
536
	ret
Line 852... Line 838...
852
align 4
838
align 4
853
proc tl_draw_null_cursor uses eax ebx ecx edx esi
839
proc tl_draw_null_cursor uses eax ebx ecx edx esi
854
    call tl_get_display_cur_pos ;eax = cursor pos in screen
840
	call tl_get_display_cur_pos ;eax = cursor pos in screen
855
    cmp eax,0
841
	cmp eax,0
856
    jl .end_f ;ªãàá®à ­ å®¤¨âáï ¢ëè¥ ®ª­ , ¢ ®¡« á⨠¯à®ªàã祭­®© áªà®««¨­£®¬
842
	jl .end_f ;ªãàá®à ­ å®¤¨âáï ¢ëè¥ ®ª­ , ¢ ®¡« á⨠¯à®ªàã祭­®© áªà®««¨­£®¬
857
 
-
 
858
    mov ebx,tl_box_left
843
		mov ebx,tl_box_left
859
    shl ebx,16
844
		shl ebx,16
860
    mov bx,tl_img_cx
845
		mov bx,tl_img_cx
861
    xor ecx,ecx
846
		xor ecx,ecx
862
    mov cx,tl_img_cy
847
		mov cx,tl_img_cy
Line 873... Line 858...
873
    mov cx,tl_img_cy
858
		mov cx,tl_img_cy
874
    cmp si,tl_img_cy
859
		cmp si,tl_img_cy
875
    jge @f
860
		jge @f
876
      mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥­ ç áâ¨ç­® (¯®¯ « ­  ­¨¦­îî £à ­¨æã)
861
			mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥­ ç áâ¨ç­® (¯®¯ « ­  ­¨¦­îî £à ­¨æã)
877
    @@:
862
		@@:
878
 
-
 
879
    mov edx,tl_col_bkg
-
 
880
    mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì­¨ª á ä®­®¢ë¬ 梥⮬
863
		mcall 13,,,tl_col_bkg ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì­¨ª á ä®­®¢ë¬ 梥⮬
881
 
-
 
882
    .end_f:
864
	.end_f:
883
  ret
865
	ret
884
endp
866
endp
Line 885... Line 867...
885
 
867
 
Line 901... Line 883...
901
  @@:
883
	@@:
902
  ret
884
	ret
Line 903... Line 885...
903
 
885
 
904
;à¨áã¥â 㧥« á: ª à⨭ª®©, ¯®¤¯¨áìî, ¨ª®­ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨­¨ï¬¨ ª த¨â. 㧫ã
886
;à¨áã¥â 㧥« á: ª à⨭ª®©, ¯®¤¯¨áìî, ¨ª®­ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨­¨ï¬¨ ª த¨â. 㧫ã
905
;input:
887
;input:
906
; eax = node position
888
; eax = node position (0, ..., max_nodes-scroll_pos) ­¥ ¤® tl_box_height/tl_img_cy
907
; edx = pointer to some node struct
889
; edx = pointer to some node struct
908
; edi = pointer to 'TreeList' struct
890
; edi = pointer to 'TreeList' struct
909
; esi = coord of bottom border
891
; esi = coord of bottom border
910
align 4
892
align 4
Line 921... Line 903...
921
	shl ebx,16
903
	shl ebx,16
922
	mov bx,tl_img_cx
904
	mov bx,tl_img_cx
923
	xor ecx,ecx
905
	xor ecx,ecx
924
	mov cx,tl_img_cy
906
	mov cx,tl_img_cy
925
	imul ecx,eax
907
	imul ecx,eax
926
	add ecx,tl_box_top
-
 
927
	add cx,tl_capt_cy
908
	add cx,tl_capt_cy
-
 
909
	jc .end_draw ;ª®£¤  ¬­®£® 㧫®¢, â® ¬®¦¥â ¡ëâì ¯¥à¥¯®«­¥­¨¥ ª®®à¤¨­ âë cx
-
 
910
	add ecx,tl_box_top
Line 928... Line 911...
928
 
911
 
929
	;crop image if on the border
912
	;crop image if on the border
930
	cmp esi,ecx ;¥á«¨ 㧥« ¢­¨§ã ¨ ¥£® ¢®®¡é¥ ­¥ ¢¨¤­®
913
	cmp esi,ecx ;¥á«¨ 㧥« ¢­¨§ã ¨ ¥£® ¢®®¡é¥ ­¥ ¢¨¤­®
Line 1005... Line 988...
1005
      ror ebx,16
988
		ror ebx,16
1006
      sub bx,tl_img_cx
989
		sub bx,tl_img_cx
1007
      ror ebx,16
990
		ror ebx,16
1008
      cmp tl_data_img_sys,0
991
		cmp tl_data_img_sys,0
1009
      jne .draw_img_s
992
		jne .draw_img_s
1010
	mov edx,tl_col_txt
-
 
1011
	mcall 13 ;draw minus rect, if not system icons
993
			mcall 13,,,tl_col_txt ;draw minus rect, if not system icons
1012
	jmp @f
994
			jmp @f
1013
      .draw_img_s:
995
		.draw_img_s:
1014
      mov ecx,esi ;load ecx
996
		mov ecx,esi ;load ecx
1015
      mov edx,ebx
997
		mov edx,ebx
1016
      ror ecx,16
998
		ror ecx,16
Line 1040... Line 1022...
1040
  cmp byte[edx+3],1
1022
	cmp byte[edx+3],1
1041
  je .close
1023
	je .close
1042
  push eax ebx ecx edx esi
1024
	push eax ebx ecx edx esi
1043
    cmp al,0
1025
	cmp al,0
1044
    je @f
1026
	je @f
1045
;    dec al
-
 
1046
;    call tl_iterat_perv ;get perv visible item
-
 
1047
 
-
 
1048
    call tl_iterat_next_all ;get next visible item
1027
		call tl_iterat_next_all ;get next visible item
1049
    cmp edx,ecx
1028
		cmp edx,ecx
1050
    jle .line3 ;if end of list
1029
		jle .line3 ;if end of list
1051
      cmp al,byte[edx+2]
1030
			cmp al,byte[edx+2]
1052
      jne .line3 ;jg ???
1031
			jne .line3 ;jg ???
Line 1060... Line 1039...
1060
      ror ebx,16
1039
		ror ebx,16
1061
      sub bx,tl_img_cx
1040
		sub bx,tl_img_cx
1062
      ror ebx,16
1041
		ror ebx,16
1063
      cmp tl_data_img_sys,0
1042
		cmp tl_data_img_sys,0
1064
      jne .draw_img_s
1043
		jne .draw_img_s
1065
	mov edx,tl_col_txt
-
 
1066
	mcall 13 ;draw minus rect, if not system icons
1044
			mcall 13,,,tl_col_txt ;draw minus rect, if not system icons
1067
	jmp @f
1045
			jmp @f
1068
      .draw_img_s:
1046
		.draw_img_s:
1069
;      mov ecx,esi ;load ecx
-
 
1070
      mov edx,ebx
1047
		mov edx,ebx
1071
      ror ecx,16
1048
		ror ecx,16
1072
      mov dx,cx
1049
		mov dx,cx
1073
      mov cx,bx
1050
		mov cx,bx
1074
      ror ecx,16
1051
		ror ecx,16
1075
      mov ebx,3 ;rgb = 3 bytes
1052
		mov ebx,3 ;rgb = 3 bytes
1076
      imul bx,tl_img_cx
1053
		imul bx,tl_img_cx
1077
      imul bx,tl_img_cy
1054
		imul bx,tl_img_cy
Line 1078... Line -...
1078
 
-
 
1079
;      shr eax,8
-
 
1080
;      and eax,0xff
1055
 
1081
      imul ebx,eax ;eax = icon index
1056
		imul ebx,eax ;eax = icon index
1082
      add ebx,tl_data_img_sys
1057
		add ebx,tl_data_img_sys
1083
      mcall 7 ;draw line icon
1058
		mcall 7 ;draw line icon
1084
    @@:
1059
	@@:
Line 1087... Line 1062...
1087
  ret
1062
	ret
Line 1088... Line 1063...
1088
 
1063
 
1089
 
1064
 
-
 
1065
;input:
1090
;input:
1066
; al = ã஢¥­ì í«¥¬¥­â 
1091
; al = ã஢¥­ì í«¥¬¥­â 
1067
; ebx = (node.left shl 16) + tl_img_cx
1092
; ecx = pointer to 1 node struct
1068
; ecx = pointer to 1 node struct
1093
; edx = pointer to some node struct
1069
; edx = pointer to some node struct
1094
; edi = pointer to 'TreeList' struct
1070
; edi = pointer to 'TreeList' struct
1095
align 4
-
 
1096
tl_draw_node_icon_par_lin_up:
-
 
1097
  push eax ebx ecx edx
1071
align 4
1098
  push esi
1072
proc tl_draw_node_icon_par_lin_up uses eax ebx ecx edx esi
1099
    cmp tl_data_img_sys,0 ;if not image
1073
	cmp tl_data_img_sys,0 ;if not image
1100
    je @f
1074
	je @f
1101
    cmp al,0
-
 
1102
    je @f
1075
	cmp al,0
1103
 
1076
	je @f
1104
    xor esi,esi ;¢ si ¡ã¤¥¬ ­ áç¨â뢠âì ª®«-¢® ¨ª®­®ª, ­ã¦­ëå ¤«ï ¯à®à¨á®¢ª¨ «¨­¨¨
1077
		xor esi,esi ;¢ si ¡ã¤¥¬ ­ áç¨â뢠âì ª®«-¢® ¨ª®­®ª, ­ã¦­ëå ¤«ï ¯à®à¨á®¢ª¨ «¨­¨¨
1105
;--- 横« ¤«ï ¢ëç¨á«¥­¨ï ª®««¨ç¥á⢠ ¢¥à⨪ «ì­ëå «¨­¨© ---
1078
;--- 横« ¤«ï ¢ëç¨á«¥­¨ï ª®««¨ç¥á⢠ ¢¥à⨪ «ì­ëå «¨­¨© ---
1106
    .cycle0:
1079
		.cycle0:
Line 1147... Line 1120...
1147
        jl @f
1120
			jl @f
1148
        int 0x40 ;draw line icon
1121
			int 0x40 ;draw line icon
1149
        sub esi,0x10000 ;㬥­ìè ¥¬ áç¥â稪 ¨ª®­®ª
1122
			sub esi,0x10000 ;㬥­ìè ¥¬ áç¥â稪 ¨ª®­®ª
1150
      jmp .cycle1
1123
		jmp .cycle1
1151
    @@:
1124
	@@:
1152
  pop esi
-
 
1153
  pop edx ecx ebx eax
-
 
1154
  ret
1125
	ret
-
 
1126
endp
Line 1155... Line 1127...
1155
 
1127
 
1156
;input:
1128
;input:
1157
; edi = pointer to TreeInfo struct
1129
; edi = pointer to TreeInfo struct
1158
;output:
1130
;output:
Line 1174... Line 1146...
1174
; ebx = [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [img_cx]
1146
; ebx = [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [img_cx]
1175
; ecx = [ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [img_cy]
1147
; ecx = [ª®®à¤¨­ â  ¯® ®á¨ y]*65536 + [img_cy]
1176
; edx = pointer to some node struct
1148
; edx = pointer to some node struct
1177
; edi = pointer to TreeInfo struct
1149
; edi = pointer to TreeInfo struct
1178
align 4
1150
align 4
1179
tl_draw_node_caption:
-
 
1180
    push ebx ecx edx esi
1151
proc tl_draw_node_caption uses ebx ecx edx esi
1181
 
-
 
1182
    xor esi,esi
1152
	xor esi,esi
1183
    mov si,tl_info_size
1153
	mov si,tl_info_size
1184
    cmp si,tl_info_capt_offs
1154
	cmp si,tl_info_capt_offs
1185
    jle @f ;if caption size <= 0
1155
	jle @f ;if caption size <= 0
1186
 
-
 
1187
    push eax
1156
		push eax
1188
      call tl_get_node_index ;eax = node index
1157
			call tl_get_node_index ;eax = node index
1189
      imul esi,eax
1158
			imul esi,eax
1190
    pop eax
1159
		pop eax
1191
      add si,tl_info_capt_offs
1160
		add si,tl_info_capt_offs
Line 1203... Line 1172...
1203
      mov ebx,ecx
1172
		mov ebx,ecx
1204
      add bx,tl_img_cy ;¢ëà ¢­¨¢¨­¨¥ ¯® ­¨¦­¥© £à ­¨æ¥ ¨ª®­ª¨
1173
		add bx,tl_img_cy ;¢ëà ¢­¨¢¨­¨¥ ¯® ­¨¦­¥© £à ­¨æ¥ ¨ª®­ª¨
1205
      sub bx,9 ;®â­¨¬ ¥¬ ¢ëá®âã ⥪áâ 
1174
		sub bx,9 ;®â­¨¬ ¥¬ ¢ëá®âã ⥪áâ 
1206
      mov ecx,tl_col_txt
1175
		mov ecx,tl_col_txt
1207
      and ecx,0xffffff
1176
		and ecx,0xffffff
1208
;      or ecx,0x80000000 ;text is ASCIIZ
-
 
1209
      mcall 4
1177
		mcall 4
1210
    @@:
1178
	@@:
1211
    pop esi edx ecx ebx
-
 
1212
  ret
1179
	ret
-
 
1180
endp
Line 1213... Line 1181...
1213
 
1181
 
1214
;input:
1182
;input:
1215
; eax = strlen
1183
; eax = strlen
1216
; ebx = text coord x
1184
; ebx = text coord x
1217
;output:
1185
;output:
1218
; esi = text len
1186
; esi = text len
1219
align 4
1187
align 4
1220
tl_get_draw_text_len:
-
 
1221
  push eax ecx edx
1188
proc tl_get_draw_text_len uses eax ecx edx
1222
    mov esi,eax ;¡¥à¥¬ ¤«¨­­ã áâப¨
-
 
1223
 
1189
	mov esi,eax ;¡¥à¥¬ ¤«¨­­ã áâப¨
1224
    mov eax,tl_box_left
1190
	mov eax,tl_box_left
1225
    add eax,tl_box_width
1191
	add eax,tl_box_width
1226
    cmp eax,ebx
1192
	cmp eax,ebx
1227
    jle .text_null ;¥á«¨ ¯®¤¯¨áì ¯®«­®áâìî ¢áï §  íªà ­®¬
1193
	jle .text_null ;¥á«¨ ¯®¤¯¨áì ¯®«­®áâìî ¢áï §  íªà ­®¬
1228
    sub eax,ebx
1194
		sub eax,ebx
1229
    xor edx,edx
1195
		xor edx,edx
1230
    mov ecx,6 ;è¨à¨­  á¨á⥬­®£® èà¨äâ 
1196
		mov ecx,6 ;è¨à¨­  á¨á⥬­®£® èà¨äâ 
1231
    div ecx ;ᬮâਬ ᪮«ìª® ᨬ¢®«®¢ ¬®¦¥â ¯®¬¥áâ¨âìáï ­  íªà ­¥
-
 
1232
 
1197
		div ecx ;ᬮâਬ ᪮«ìª® ᨬ¢®«®¢ ¬®¦¥â ¯®¬¥áâ¨âìáï ­  íªà ­¥
1233
    cmp esi,eax
1198
		cmp esi,eax
1234
    jl @f
1199
		jl @f
1235
      mov esi,eax ;¥á«¨ ¤«¨­­  ⥪áâ  ¬¥­ìè¥, 祬 ¢á¥ ¬¥áâ® ¯®¤ áâபã
1200
			mov esi,eax ;¥á«¨ ¤«¨­­  ⥪áâ  ¬¥­ìè¥, 祬 ¢á¥ ¬¥áâ® ¯®¤ áâபã
1236
    jmp @f
1201
			jmp @f
1237
    .text_null:
1202
	.text_null:
1238
      xor esi,esi
1203
	xor esi,esi
1239
    @@:
-
 
1240
  pop edx ecx eax
1204
	@@:
-
 
1205
	ret
Line 1241... Line 1206...
1241
  ret
1206
endp
1242
 
1207
 
1243
;input:
1208
;input:
1244
; esi = pointer to string
1209
; esi = pointer to string
Line 1289... Line 1254...
1289
 
1254
 
1290
	inc  tl_ch_tim
1255
		inc tl_ch_tim
1291
	mov ecx,dword[n_opt]
1256
		mov ecx,dword[n_opt]
1292
	ror ecx,16 ;cx = type
1257
		ror ecx,16 ;cx = type
1293
	mov word[edx],cx
-
 
1294
 ;;;mov cl,byte[ebp+13]
1258
		mov word[edx],cx
1295
 rol ecx,8 ;cl = close|open
1259
		rol ecx,8 ;cl = close|open
1296
 mov byte[edx+3],cl  ;node[i].clo
1260
		mov byte[edx+3],cl ;node[i].clo
1297
	mov   byte[edx+2], 0 ;node[i].lev=0
1261
		mov byte[edx+2],0 ;node[i].lev=0
1298
  bt tl_style,2 ;tl_list_box_mode
1262
		bt tl_style,2 ;tl_list_box_mode
1299
  jc .l_box_m
1263
		jc .l_box_m
1300
    mov cl,byte[n_opt]
1264
			mov cl,byte[n_opt]
1301
    mov byte[edx+2],cl  ;node[i].lev
1265
			mov byte[edx+2],cl ;node[i].lev
1302
  .l_box_m:
1266
		.l_box_m:
1303
	push tl_ch_tim       ;node[i].tc=ch_tim;
1267
		push tl_ch_tim       ;node[i].tc=ch_tim;
1304
	pop  dword[edx+12]
1268
		pop dword[edx+12]
1305
	mov  dword[edx+4], eax ;node[i].perv=po_t;
1269
		mov [edx+4],eax ;node[i].perv=po_t;
1306
	;*** copy node data ***
1270
		;*** copy node data ***
1307
	push esi
1271
		push esi
1308
	xor ecx,ecx
1272
		xor ecx,ecx
1309
	mov cx,tl_info_size
1273
		mov cx,tl_info_size
Line 1344... Line 1308...
1344
	pop dword [edx+8]
1308
		pop dword[edx+8]
Line 1345... Line 1309...
1345
 
1309
 
1346
	call tl_get_node_index ;*** eax = i ***
1310
		call tl_get_node_index ;*** eax = i ***
1347
	cmp eax,tl_info_max_count
1311
		cmp eax,tl_info_max_count
1348
	jge .u0
-
 
1349
 
1312
		jge .u0
1350
	mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥­ ¯à ¢«ï¥¬
1313
			mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥­ ¯à ¢«ï¥¬
1351
	mov ecx,[edx+8] ; *** ecx = node[i].next ***
1314
			mov ecx,[edx+8] ; *** ecx = node[i].next ***
1352
	imul ecx,sizeof.TreeList
1315
			imul ecx,sizeof.TreeList
1353
	add ecx,tl_data_nodes ; *** ecx = node[node[i].next] ***
1316
			add ecx,tl_data_nodes ; *** ecx = node[node[i].next] ***
Line 1374... Line 1337...
1374
    call tl_get_rows_count
1337
		call tl_get_rows_count
1375
    cmp ecx,eax
1338
		cmp ecx,eax
1376
    jg .ye_sb
1339
		jg .ye_sb
1377
      xor ecx,ecx
1340
			xor ecx,ecx
1378
    .ye_sb:
1341
		.ye_sb:
1379
 
-
 
1380
    mov edx,tl_p_scroll
1342
		mov edx,tl_p_scroll
1381
    mov dword[edx+sb_offs_cur_area],eax
1343
		mov dword[edx+sb_offs_cur_area],eax
1382
    mov dword[edx+sb_offs_max_area],ecx
1344
		mov dword[edx+sb_offs_max_area],ecx
1383
		stdcall scroll_bar_vertical.draw,edx
1345
		stdcall scroll_bar_vertical.draw,edx
1384
  @@:
1346
	@@:
Line 1419... Line 1381...
1419
        sub esi,eax
1381
				sub esi,eax
1420
        .no_limit:
1382
			.no_limit:
1421
          dec esi
1383
			dec esi
1422
          mov byte[esi],0 ;®¡­ã«ï¥¬ ¯®á«¥¤­¨© ᨬ¢®« ¯®¤¯¨á¨, çâ®-¡ë ­¥ £«î稫® ¥á«¨ ¯®«ì§®¢ â¥«ì § ¤ « ­¥¯à ¢¨«ì­ãî áâàãªâãàã
1384
			mov byte[esi],0 ;®¡­ã«ï¥¬ ¯®á«¥¤­¨© ᨬ¢®« ¯®¤¯¨á¨, çâ®-¡ë ­¥ £«î稫® ¥á«¨ ¯®«ì§®¢ â¥«ì § ¤ « ­¥¯à ¢¨«ì­ãî áâàãªâãàã
1423
      .no_text_data:
1385
		.no_text_data:
1424
 
-
 
1425
    @@:
1386
	@@:
1426
	ret
1387
	ret
1427
endp
1388
endp
Line 1428... Line 1389...
1428
 
1389
 
Line 1606... Line 1567...
1606
;¯¥à¥­¥á⨠ªãàá®à ­  1 ¯®§¨æ¨î ­¨¦¥
1567
;¯¥à¥­¥á⨠ªãàá®à ­  1 ¯®§¨æ¨î ­¨¦¥
1607
align 4
1568
align 4
1608
proc tl_cur_next uses eax ebx edi esi, tlist:dword
1569
proc tl_cur_next uses eax ebx edi esi, tlist:dword
1609
    mov edi,dword[tlist]
1570
	mov edi,dword[tlist]
1610
    call tl_get_node_count ;eax = node count
1571
	call tl_get_node_count ;eax = node count
1611
    ;inc eax
-
 
1612
    cmp tl_cur_pos,eax
1572
	cmp tl_cur_pos,eax
1613
    jge .no_redraw
1573
	jge .no_redraw
1614
      mov esi,tl_box_top
1574
		mov esi,tl_box_top
1615
      add esi,tl_box_height ;esi = coord bottom border
1575
		add esi,tl_box_height ;esi = coord bottom border
1616
      call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à
1576
		call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à
Line 1623... Line 1583...
1623
    add eax,dword[ebx+sb_offs_position]
1583
		add eax,dword[ebx+sb_offs_position]
1624
    cmp tl_cur_pos,eax
1584
		cmp tl_cur_pos,eax
1625
    jl @f
1585
		jl @f
1626
      inc dword[ebx+sb_offs_position]
1586
			inc dword[ebx+sb_offs_position]
1627
      stdcall scroll_bar_vertical.draw,ebx
1587
			stdcall scroll_bar_vertical.draw,ebx
1628
 
-
 
1629
      stdcall tl_draw,dword[tlist] ;¯®«­ ï ¯¥à¥à¨á®¢ª  ®ª­ 
1588
			stdcall tl_draw,dword[tlist] ;¯®«­ ï ¯¥à¥à¨á®¢ª  ®ª­ 
1630
      jmp .no_redraw
1589
			jmp .no_redraw
1631
    @@:
1590
		@@:
1632
      mov edi,dword[tlist] ;restore edi
1591
		mov edi,dword[tlist] ;restore edi
1633
      call tl_draw_cursor ;¯¥à¥à¨á®¢ª  ªãàá®à 
1592
		call tl_draw_cursor ;¯¥à¥à¨á®¢ª  ªãàá®à 
Line 1718... Line 1677...
1718
proc tl_cur_page_up uses eax edi esi, tlist:dword
1677
proc tl_cur_page_up uses eax edi esi, tlist:dword
1719
    mov edi,dword[tlist]
1678
	mov edi,dword[tlist]
Line 1720... Line 1679...
1720
 
1679
 
1721
    cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ â¥«ì ­  áªà®««¨­£
1680
	cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ â¥«ì ­  áªà®««¨­£
1722
    je .no_redraw
-
 
1723
 
1681
	je .no_redraw
1724
    mov esi,tl_p_scroll
1682
		mov esi,tl_p_scroll
Line 1725... Line 1683...
1725
    call tl_get_rows_count ;eax = rows count
1683
		call tl_get_rows_count ;eax = rows count
1726
 
1684
 
Line 1756... Line 1714...
1756
proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword
1714
proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword
1757
;eax - ª®«-¢® áâப ­  áâà ­¨æ¥
1715
;eax - ª®«-¢® áâப ­  áâà ­¨æ¥
1758
;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à 
1716
;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à 
1759
;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨­£ 
1717
;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨­£ 
1760
    mov edi,dword[tlist]
1718
	mov edi,dword[tlist]
1761
 
-
 
1762
    cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ â¥«ì ­  áªà®««¨­£
1719
	cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ â¥«ì ­  áªà®««¨­£
1763
    je .no_redraw
1720
	je .no_redraw
1764
 
-
 
1765
    mov esi,tl_p_scroll
1721
		mov esi,tl_p_scroll
1766
    call tl_get_node_count ;eax = node count
1722
		call tl_get_node_count ;eax = node count
1767
    mov ebx,eax
1723
		mov ebx,eax
1768
    call tl_get_rows_count ;eax = rows count
1724
		call tl_get_rows_count ;eax = rows count
Line 1781... Line 1737...
1781
    jl @f
1737
		jl @f
1782
    cmp dword[esi+sb_offs_position],ecx ;áªà®««¨­£ ¢­¨§ã ?
1738
		cmp dword[esi+sb_offs_position],ecx ;áªà®««¨­£ ¢­¨§ã ?
1783
    jl @f
1739
		jl @f
1784
      jmp .no_redraw
1740
			jmp .no_redraw
1785
    @@:
1741
		@@:
1786
 
-
 
1787
      add tl_cur_pos,eax ;¯¥à¥¬¥é ¥¬ ªãàá®à
1742
		add tl_cur_pos,eax ;¯¥à¥¬¥é ¥¬ ªãàá®à
1788
      cmp tl_cur_pos,ebx
1743
		cmp tl_cur_pos,ebx
1789
      jl @f
1744
		jl @f
1790
        mov tl_cur_pos,ebx
1745
			mov tl_cur_pos,ebx
1791
      @@:
1746
		@@:
1792
 
-
 
1793
      add dword[esi+sb_offs_position],eax ;¯¥à¥¬¥é ¥¬ áªà®««¨­£
1747
		add dword[esi+sb_offs_position],eax ;¯¥à¥¬¥é ¥¬ áªà®««¨­£
1794
      cmp dword[esi+sb_offs_position],ecx
1748
		cmp dword[esi+sb_offs_position],ecx
1795
      jl @f
1749
		jl @f
1796
        mov dword[esi+sb_offs_position],ecx
1750
			mov dword[esi+sb_offs_position],ecx
1797
      @@:
1751
		@@:
Line 1977... Line 1931...
1977
;eax = ?
1931
;eax = ?
1978
;ebx = ?
1932
;ebx = ?
1979
;ecx = ?
1933
;ecx = ?
1980
align 4
1934
align 4
1981
tl_node_move_po8:
1935
tl_node_move_po8:
1982
;  push ecx
-
 
1983
	mov ecx,edx ;save node pointer
1936
	mov ecx,edx ;save node pointer
1984
	call tl_move_perv
1937
	call tl_move_perv
1985
	mov dword[edx+8],ebx
1938
	mov dword[edx+8],ebx
1986
	mov edx,ecx
1939
	mov edx,ecx
1987
	call tl_move_next
1940
	call tl_move_next
Line 1991... Line 1944...
1991
	mov dword[edx+8],eax
1944
	mov dword[edx+8],eax
1992
	mov edx,esi
1945
	mov edx,esi
1993
	call tl_move_next
1946
	call tl_move_next
1994
	mov dword[edx+4],eax
1947
	mov dword[edx+4],eax
1995
	mov edx,ecx ;restore node pointer
1948
	mov edx,ecx ;restore node pointer
1996
;  pop ecx
-
 
Line 1997... Line 1949...
1997
 
1949
 
1998
	;+4 perv
1950
	;+4 perv
1999
	mov eax,dword[edx+4]
1951
	mov eax,dword[edx+4]
2000
	mov ebx,dword[esi+4]
1952
	mov ebx,dword[esi+4]
Line 2289... Line 2241...
2289
  cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
2241
	cmp eax,ecx  ;áà ¢­¨âì ¥á«¨ ¢ eax ¬¥­ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ ­  @@-1 â.¥. ­  pop eax
2290
  jb @f
2242
	jb @f
2291
  xor edx,edx  ;®ç¨áâ¨âì edx
2243
		xor edx,edx ;®ç¨áâ¨âì edx
2292
  div ecx      ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
2244
		div ecx     ;à §¤¥«¨âì - ®áâ â®ª ¢ edx
2293
  push edx     ;¯®«®¦¨âì ¢ á⥪
2245
		push edx    ;¯®«®¦¨âì ¢ á⥪
2294
  call .str;¯¥à¥©â¨ ­  á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
2246
		call .str   ;¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥­â  ¯®ª  ¢ eax ­¥ áâ ­¥â ¬¥­ìè¥ ç¥¬ ¢ ecx
2295
  pop eax
2247
		pop eax
2296
  @@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
2248
	@@: ;cmp al,10 ;¯à®¢¥à¨âì ­¥ ¬¥­ìè¥ «¨ §­ ç¥­¨¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥­ï 10 ¤ ­­ ï ª®¬ ­¤  - «¨è­ ï))
2297
  or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
2249
	or al,0x30  ;¤ ­­ ï ª®¬ ­¤  ª®à®ç¥  祬 ¤¢¥ ¢ëè¥ 
2298
  stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
2250
	stosb       ;§ ¯¨á âì í«¥¬¥­â ¨§ ॣ¨áâà  al ¢ ï祪㠯 ¬ï⨠es:edi
2299
  ret         ;¢¥à­ãâìáï ®ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï
2251
	ret         ;¢¥à­ãâìáï ®ç¥­ì ¨­â¥à¥á­ë© 室 â.ª. ¯®ª  ¢ á⥪¥ åà ­¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï