Subversion Repositories Kolibri OS

Rev

Rev 5914 | 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