Rev 1303 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1303 | Rev 1309 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 2.12.2009 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 8.12.2009 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
Line 34... | Line 34... | ||
34 | tl_capt_cy equ word[edi+74] ;âûñîòà ïîäïèñè |
34 | tl_capt_cy equ word[edi+74] ;âûñîòà ïîäïèñè |
35 | tl_info_capt_offs equ word[edi+76] ;ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
35 | tl_info_capt_offs equ word[edi+76] ;ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
36 | tl_info_capt_len equ word[edi+78] ;äëèííà òåêñòà ïîäïèñè óçëà (åñëè = 0 òî äî êîíöà ñòðóêòóðû) |
36 | tl_info_capt_len equ word[edi+78] ;äëèííà òåêñòà ïîäïèñè óçëà (åñëè = 0 òî äî êîíöà ñòðóêòóðû) |
37 | tl_el_focus equ dword[edi+80] ;óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
37 | tl_el_focus equ dword[edi+80] ;óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
38 | tl_p_scrol equ dword[edi+84] ;óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
38 | tl_p_scrol equ dword[edi+84] ;óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
39 | tl_sb_draw equ dword[edi+88] ;óêàçàòåëü íà ôóíêöèþ ïåðåðèñîâûâàþùóþ ñêðîëëèíã |
- | |
40 | tl_on_press equ dword[edi+96] ;óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
39 | tl_on_press equ dword[edi+96] ;óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
Line 41... | Line 40... | ||
41 | 40 | ||
42 | ;êîíñòàíòû ñòèëÿ |
41 | ;êîíñòàíòû ñòèëÿ |
43 | tl_key_no_edit equ 1b ;ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü) |
42 | tl_key_no_edit equ 1b ;ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü) |
Line 57... | Line 56... | ||
57 | ;ls_tim dd ? ;+34 âðåìÿ ïîñëåäíåãî ñîõðàíåíèÿ |
56 | ;ls_tim dd ? ;+34 âðåìÿ ïîñëåäíåãî ñîõðàíåíèÿ |
58 | ;on_activate dd ? ;+92 óêàçàòåëü íà ôóíêöèþ ïðè àêòèâèðîâàíèè óçëà |
57 | ;on_activate dd ? ;+92 óêàçàòåëü íà ôóíêöèþ ïðè àêòèâèðîâàíèè óçëà |
Line 59... | Line 58... | ||
59 | 58 | ||
60 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
59 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
61 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
60 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
62 | info_capt_len,el_focus, p_scrol,p_sb_draw,on_press { |
61 | info_capt_len,el_focus, p_scrol,on_press { |
63 | .data_info dd 0 |
62 | .data_info dd 0 |
64 | .info_size dw info_size |
63 | .info_size dw info_size |
65 | .info_max_count dd info_max_count |
64 | .info_max_count dd info_max_count |
66 | .style dd style |
65 | .style dd style |
Line 83... | Line 82... | ||
83 | .capt_cy dw capt_cy |
82 | .capt_cy dw capt_cy |
84 | .info_capt_offs dw info_capt_offs |
83 | .info_capt_offs dw info_capt_offs |
85 | .info_capt_len dw info_capt_len |
84 | .info_capt_len dw info_capt_len |
86 | .el_focus dd el_focus |
85 | .el_focus dd el_focus |
87 | .p_scrol dd p_scrol |
86 | .p_scrol dd p_scrol |
88 | .p_sb_draw dd p_sb_draw |
87 | rb 4 |
89 | .on_activate dd 0 |
88 | .on_activate dd 0 |
90 | .on_press dd on_press |
89 | .on_press dd on_press |
91 | } |
90 | } |
Line 92... | Line 91... | ||
92 | 91 | ||
Line 339... | Line 338... | ||
339 | 338 | ||
340 | mov ebx,tl_box_left |
339 | mov ebx,tl_box_left |
341 | add ebx,tl_box_width |
340 | add ebx,tl_box_width |
342 | shl ebx,16 |
341 | shl ebx,16 |
343 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
342 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
Line 344... | Line 343... | ||
344 | jg .no_in_wnd |
343 | jg .test_scroll ;.no_in_wnd |
345 | 344 | ||
346 | mov ebx,tl_box_top |
345 | mov ebx,tl_box_top |
347 | add ebx,tl_box_height |
346 | add ebx,tl_box_height |
Line 419... | Line 418... | ||
419 | mov esi,tl_box_top |
418 | mov esi,tl_box_top |
420 | add esi,tl_box_height ;esi = coord bottom border |
419 | add esi,tl_box_height ;esi = coord bottom border |
421 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
420 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
422 | call tl_draw_caption_cur_pos |
421 | call tl_draw_caption_cur_pos |
423 | jmp .no_draw |
422 | jmp .no_draw |
- | 423 | ;--- mouse event for children scrollbar ---------------------------------------- |
|
- | 424 | .test_scroll: |
|
- | 425 | mov edx,tl_p_scrol |
|
- | 426 | cmp edx,0 |
|
- | 427 | je .no_in_wnd ;ïîëüçîâàòåëü íå ñîçäàë äî÷åðíåãî ñêðîëëèíãà |
|
- | 428 | shr ebx,16 |
|
- | 429 | add bx,word[edx] ;+0 .size_x |
|
- | 430 | shl ebx,16 |
|
- | 431 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
|
- | 432 | jg .no_in_wnd |
|
- | 433 | ||
- | 434 | mov eax,dword[edx+16] ;+16 .max_area |
|
- | 435 | cmp eax,dword[edx+20] ;+20 .cur_area |
|
- | 436 | jbe .no_in_wnd ;âñå óçëû ïîïàäàþò â îêíî ñêðîëëèíãà |
|
- | 437 | push dword edx |
|
- | 438 | call scroll_bar_vertical.mouse ;scrollbar_ver_mouse |
|
- | 439 | ||
- | 440 | cmp dword[edx+40],0 ;+40 .redraw |
|
- | 441 | je @f |
|
- | 442 | mov dword[edx+40],0 ;+40 .redraw |
|
- | 443 | push dword edi |
|
- | 444 | call tl_draw ;ïðîèçîøëè èçìåíåíèÿ ñêðîëëèíãà |
|
- | 445 | @@: |
|
- | 446 | cmp dword[edx+46],0 ;+46 .delta2 |
|
- | 447 | jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
|
- | 448 | ;------------------------------------------------------------------------------- |
|
424 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
449 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
425 | mov ebx,tl_el_focus |
450 | mov ebx,tl_el_focus |
426 | cmp dword[ebx],edi |
451 | cmp dword[ebx],edi |
427 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
452 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
428 | mov dword[ebx],0 ;reset focus |
453 | mov dword[ebx],0 ;reset focus |
- | 454 | mov esi,tl_box_top |
|
- | 455 | add esi,tl_box_height ;esi = coord bottom border |
|
- | 456 | call tl_draw_cursor ;ðèñóåì êóðñîð ñ ïîòåðÿíûì ôîêóñîì |
|
429 | .no_draw: |
457 | .no_draw: |
Line 430... | Line 458... | ||
430 | 458 | ||
431 | pop esi edi edx ecx ebx eax |
459 | pop esi edi edx ecx ebx eax |
432 | pop ebp |
460 | pop ebp |
Line 556... | Line 584... | ||
556 | mov edx,tl_col_bkg |
584 | mov edx,tl_col_bkg |
557 | int 0x40 ;draw window client rect |
585 | int 0x40 ;draw window client rect |
Line 558... | Line 586... | ||
558 | 586 | ||
559 | cmp tl_capt_cy,9 ;9 - minimum caption height |
587 | cmp tl_capt_cy,9 ;9 - minimum caption height |
- | 588 | jl @f |
|
- | 589 | mov ebx,edi ;calculate cursor position |
|
- | 590 | mov eax,tl_cur_pos |
|
- | 591 | inc eax |
|
- | 592 | lea edi,[txt_capt_cur] |
|
- | 593 | add edi,7 |
|
- | 594 | call tl_convert_to_str |
|
- | 595 | ||
- | 596 | mov edi,ebx |
|
- | 597 | mov eax,tl_tim_undo |
|
- | 598 | lea edi,[txt_capt_otm] |
|
- | 599 | add edi,7 |
|
- | 600 | call tl_convert_to_str |
|
- | 601 | mov edi,ebx ;restore edi |
|
560 | jl @f |
602 | |
561 | mov eax,4 ;draw text captions |
603 | mov eax,4 ;draw text captions |
562 | mov ebx,tl_box_left |
604 | mov ebx,tl_box_left |
563 | shl ebx,16 |
605 | shl ebx,16 |
564 | add ebx,5*65536+3 |
606 | add ebx,5*65536+3 |
Line 572... | Line 614... | ||
572 | shl ebx,16 |
614 | shl ebx,16 |
573 | add ebx,100*65536+3 |
615 | add ebx,100*65536+3 |
574 | add ebx,tl_box_top |
616 | add ebx,tl_box_top |
575 | lea edx,[txt_capt_otm] |
617 | lea edx,[txt_capt_otm] |
576 | int 0x40 |
618 | int 0x40 |
577 | - | ||
578 | mov eax,47 ;draw |
- | |
579 | mov ebx,0x40000 |
- | |
580 | mov ecx,tl_cur_pos |
- | |
581 | inc ecx |
- | |
582 | mov edx,tl_box_left |
- | |
583 | shl edx,16 |
- | |
584 | add edx,50*65536+3 |
- | |
585 | add edx,tl_box_top |
- | |
586 | mov esi,tl_col_txt |
- | |
587 | int 0x40 |
- | |
588 | mov ecx,tl_tim_undo |
- | |
589 | mov edx,tl_box_left |
- | |
590 | shl edx,16 |
- | |
591 | add edx,140*65536+3 |
- | |
592 | add edx,tl_box_top |
- | |
593 | mov esi,tl_col_txt |
- | |
594 | int 0x40 |
- | |
595 | @@: |
619 | @@: |
Line 596... | Line -... | ||
596 | - | ||
597 | ;---debug--- |
- | |
598 | ;mov ecx,0 |
- | |
599 | ;@@: |
- | |
600 | ;call DebugSymb |
- | |
601 | ;inc ecx |
- | |
602 | ;cmp ecx,10 |
- | |
603 | ;jge @f |
- | |
604 | ;jmp @b |
- | |
605 | ;@@: |
- | |
606 | ;---debug--- |
- | |
607 | 620 | ||
608 | ;cycle to nodes |
621 | ;cycle to nodes |
609 | xor eax,eax |
622 | xor eax,eax |
610 | mov edx,tl_data_nodes |
623 | mov edx,tl_data_nodes |
611 | mov ecx,edx |
624 | mov ecx,edx |
Line 723... | Line 736... | ||
723 | ; ecx = pointer to 1 node struct |
736 | ; ecx = pointer to 1 node struct |
724 | ; edx = pointer to some node struct |
737 | ; edx = pointer to some node struct |
725 | ; edi = pointer to 'TreeList' struct |
738 | ; edi = pointer to 'TreeList' struct |
726 | align 4 |
739 | align 4 |
727 | tl_iterat_perv: |
740 | tl_iterat_perv: |
728 | push bx |
741 | push eax |
729 | mov bl,0x7f |
- | |
730 | cmp byte[edx+3],1 |
- | |
731 | jne @f |
742 | |
732 | mov bl,byte[edx+2] |
743 | ; mov bl,byte[edx+2] |
733 | @@: |
- | |
Line 734... | Line 744... | ||
734 | 744 | ||
735 | cmp tl_tim_undo,0 |
745 | cmp tl_tim_undo,0 |
Line 736... | Line 746... | ||
736 | je .else |
746 | je .beg1 |
737 | 747 | ||
738 | push eax |
748 | push eax |
739 | .beg0: |
749 | .beg0: |
740 | call tl_move_perv |
750 | call tl_move_perv |
741 | cmp edx,ecx |
751 | cmp edx,ecx |
742 | jle @f |
752 | jle @f |
743 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
753 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
744 | cmp al,1 |
- | |
745 | je .beg0 |
- | |
746 | cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
- | |
747 | jl .beg0 |
- | |
748 | @@: |
- | |
749 | pop eax |
- | |
Line 750... | Line 754... | ||
750 | pop bx |
754 | cmp al,1 |
751 | ret |
755 | je .beg0 |
752 | 756 | ||
753 | .else: |
757 | .beg1: |
754 | call tl_move_perv |
758 | call tl_move_perv |
755 | cmp edx,ecx |
759 | cmp edx,ecx |
- | 760 | jle @f |
|
- | 761 | cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
|
- | 762 | jne .beg1 |
|
- | 763 | ||
- | 764 | @@: |
|
- | 765 | call tl_move_max_clo_par |
|
- | 766 | pop eax |
|
- | 767 | ret |
|
- | 768 | ||
- | 769 | ||
- | 770 | ;input: |
|
- | 771 | ; edx = pointer to some node struct |
|
- | 772 | ; edi = pointer to 'TreeList' struct |
|
- | 773 | ;output: |
|
- | 774 | ; edx = pointer closed parent node with maximum level |
|
- | 775 | align 4 |
|
- | 776 | tl_move_max_clo_par: ;íàõîäèò ðîäèòåëüñêèé çàêðûòûé óçåë ìàêñèìàëüíîãî óðîâíÿ |
|
- | 777 | push eax ebx |
|
- | 778 | mov eax,edx |
|
756 | jle .endif |
779 | xor ebx,ebx |
- | 780 | .beg: |
|
- | 781 | call tl_move_par |
|
- | 782 | cmp byte[edx+3],1 ;ðîäèòåëüñêèé óçåë çàêðûò ? |
|
- | 783 | jne @f |
|
757 | cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
784 | mov eax,edx |
- | 785 | @@: |
|
- | 786 | cmp ebx,edx |
|
758 | jne .else |
787 | je .end_f |
- | 788 | mov ebx,edx |
|
759 | cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
789 | jmp .beg |
760 | jl .else |
790 | .end_f: |
Line 761... | Line 791... | ||
761 | .endif: |
791 | mov edx,eax |
762 | pop bx |
792 | pop ebx eax |
763 | ret |
793 | ret |
Line 785... | Line 815... | ||
785 | imul edx,sizeof.TreeList |
815 | imul edx,sizeof.TreeList |
786 | add edx,tl_data_nodes |
816 | add edx,tl_data_nodes |
787 | ret |
817 | ret |
Line 788... | Line 818... | ||
788 | 818 | ||
- | 819 | ;input: |
|
- | 820 | ; ecx = |
|
- | 821 | ; edx = pointer to some node struct |
|
- | 822 | ; edi = pointer to 'TreeList' struct |
|
- | 823 | ;output: |
|
- | 824 | ; edx = pointer to parent node struct |
|
- | 825 | align 4 |
|
- | 826 | tl_move_par: ;ïåðåäâèãàåìñÿ íà ðîäèòåëüñêèé óçåë, åñëè òàêîãî íåò, òî îñòàâëÿåì ñòàðîå çíà÷åíèå óêàçàòåëÿ |
|
- | 827 | cmp byte[edx+2],0 |
|
- | 828 | je .end_f ;óçåë 0-ãî óðîâíÿ íå ìîæåò áûòü äî÷åðíèì |
|
- | 829 | push eax ebx esi |
|
- | 830 | mov esi,edx ;copy node pointer (edx) |
|
- | 831 | mov bl,byte[edx+2] |
|
- | 832 | @@: |
|
- | 833 | call tl_move_perv |
|
- | 834 | cmp edx,ecx |
|
- | 835 | jle @f ;âñå âûøå ñòîÿùèå óçëû íå ðîäèòåëüñêèå |
|
- | 836 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
|
- | 837 | cmp al,1 |
|
- | 838 | je @b |
|
- | 839 | cmp byte[edx+2],bl |
|
- | 840 | jl .end_0 ;óäà÷íî íàøëè ðîäèòåëüñêèé óçåë |
|
- | 841 | jmp @b |
|
- | 842 | @@: |
|
- | 843 | mov esi,ebx ;restore node pointer |
|
- | 844 | .end_0: |
|
- | 845 | pop esi ebx eax |
|
- | 846 | .end_f: |
|
- | 847 | ret |
|
- | 848 | ||
789 | ;input: |
849 | ;input: |
790 | ; edx = pointer to symbol struct |
850 | ; edx = pointer to symbol struct |
791 | ; edi = pointer to 'TreeList' struct |
851 | ; edi = pointer to 'TreeList' struct |
792 | ;output: |
852 | ;output: |
793 | ; al = 1 if sumbol not visible |
853 | ; al = 1 if sumbol not visible |
Line 853... | Line 913... | ||
853 | int 0x40 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
913 | int 0x40 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
854 | jmp .end_f |
914 | jmp .end_f |
855 | @@: |
915 | @@: |
856 | mov ebx,tl_data_img_sys |
916 | mov ebx,tl_data_img_sys |
857 | imul ax,tl_img_cy |
917 | imul ax,tl_img_cy |
858 | mov cx,tl_img_cx |
- | |
859 | shl ecx,16 |
- | |
860 | mov cx,tl_img_cy |
- | |
861 | mov edx,tl_box_left |
918 | mov edx,tl_box_left |
862 | shl edx,16 |
919 | shl edx,16 |
863 | mov dx,ax |
920 | mov dx,ax |
864 | add edx,tl_box_top |
921 | add edx,tl_box_top |
865 | add dx,tl_capt_cy |
922 | add dx,tl_capt_cy |
Line -... | Line 923... | ||
- | 923 | ||
- | 924 | mov ecx,tl_el_focus ;ïðîâåðÿåì â ôîêóñå ýëåìåíò èëè íåò |
|
- | 925 | cmp dword[ecx],edi |
|
- | 926 | je .focus |
|
- | 927 | xor eax,eax |
|
- | 928 | xor ecx,ecx |
|
- | 929 | mov cx,tl_img_cx |
|
- | 930 | mov ax,tl_img_cy |
|
- | 931 | imul eax,ecx |
|
- | 932 | imul eax,4*3 ;4=icon index 3=rgb |
|
- | 933 | add ebx,eax |
|
- | 934 | .focus: |
|
- | 935 | ||
- | 936 | mov cx,tl_img_cx |
|
- | 937 | shl ecx,16 |
|
- | 938 | mov cx,tl_img_cy |
|
866 | 939 | ||
867 | ;crop image if on the border |
940 | ;crop image if on the border |
868 | cmp si,dx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
941 | cmp si,dx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
Line 869... | Line 942... | ||
869 | jl .end_f |
942 | jl .end_f |
Line 1018... | Line 1091... | ||
1018 | 1091 | ||
1019 | call tl_draw_node_icon_opn_clo |
1092 | call tl_draw_node_icon_opn_clo |
1020 | bt tl_style,1 |
1093 | bt tl_style,1 |
1021 | jae .end_draw |
1094 | jae .end_draw |
1022 | call tl_draw_node_icon_par_lin |
- | |
- | 1095 | call tl_draw_node_icon_par_lin |
|
1023 | 1096 | call tl_draw_node_icon_par_lin_up |
|
1024 | .end_draw: |
1097 | .end_draw: |
1025 | pop esi edx ecx ebx eax |
1098 | pop esi edx ecx ebx eax |
Line 1026... | Line 1099... | ||
1026 | ret |
1099 | ret |
Line 1066... | Line 1139... | ||
1066 | @@: |
1139 | @@: |
1067 | pop esi edx ecx ebx eax |
1140 | pop esi edx ecx ebx eax |
1068 | ret |
1141 | ret |
Line 1069... | Line 1142... | ||
1069 | 1142 | ||
- | 1143 | ;input: |
|
1070 | ;input: |
1144 | ; al = óðîâåíü ýëåìåíòà |
1071 | ;... |
1145 | ;... |
1072 | align 4 |
1146 | align 4 |
1073 | tl_draw_node_icon_par_lin: |
1147 | tl_draw_node_icon_par_lin: |
1074 | cmp byte[edx+3],1 |
1148 | cmp byte[edx+3],1 |
Line 1099... | Line 1173... | ||
1099 | mov edx,tl_col_txt |
1173 | mov edx,tl_col_txt |
1100 | mov eax,13 |
1174 | mov eax,13 |
1101 | int 0x40 ;draw minus rect, if not system icons |
1175 | int 0x40 ;draw minus rect, if not system icons |
1102 | jmp @f |
1176 | jmp @f |
1103 | .draw_img_s: |
1177 | .draw_img_s: |
1104 | mov ecx,esi ;load ecx |
1178 | ; mov ecx,esi ;load ecx |
1105 | mov edx,ebx |
1179 | mov edx,ebx |
1106 | ror ecx,16 |
1180 | ror ecx,16 |
1107 | mov dx,cx |
1181 | mov dx,cx |
1108 | mov cx,bx |
1182 | mov cx,bx |
1109 | ror ecx,16 |
1183 | ror ecx,16 |
Line 1120... | Line 1194... | ||
1120 | @@: |
1194 | @@: |
1121 | pop esi edx ecx ebx eax |
1195 | pop esi edx ecx ebx eax |
1122 | .close: |
1196 | .close: |
1123 | ret |
1197 | ret |
Line -... | Line 1198... | ||
- | 1198 | ||
- | 1199 | ||
- | 1200 | ||
- | 1201 | ;icon: |
|
- | 1202 | ; al = óðîâåíü ýëåìåíòà |
|
- | 1203 | ;... |
|
- | 1204 | align 4 |
|
- | 1205 | tl_draw_node_icon_par_lin_up: |
|
- | 1206 | push eax ebx ecx edx esi |
|
- | 1207 | cmp tl_data_img_sys,0 ;if not image |
|
- | 1208 | je @f |
|
- | 1209 | cmp al,0 |
|
- | 1210 | je @f |
|
- | 1211 | ||
- | 1212 | ;--------- |
|
- | 1213 | xor esi,esi ;â si áóäåì íàñ÷èòûâàòü êîë-âî èêîíîê, íóæíûõ äëÿ ïðîðèñîâêè ëèíèè |
|
- | 1214 | .cycle0: |
|
- | 1215 | call tl_iterat_perv ;get perv visible item |
|
- | 1216 | cmp edx,ecx |
|
- | 1217 | jle .cycle1 ;if begin of list |
|
- | 1218 | ||
- | 1219 | cmp byte[edx+2],al |
|
- | 1220 | jle .cycle1 ;óðîâåíü âåðõíåãî ýëåìåíòà íå òðåáóåò ïðîðèñîâêè |
|
- | 1221 | inc si |
|
- | 1222 | jmp .cycle0 |
|
- | 1223 | .cycle1: |
|
- | 1224 | cmp si,0 ;si = êîë-âî èêîíîê ëèíèè êîòîðûå íóæíî íàðèñîâàòü ñâåðõó |
|
- | 1225 | je @f |
|
- | 1226 | shl esi,16 |
|
- | 1227 | ||
- | 1228 | pop ecx ;esi->ecx |
|
- | 1229 | push ecx ;save esi |
|
- | 1230 | ||
- | 1231 | ror ebx,16 |
|
- | 1232 | sub bx,tl_img_cx |
|
- | 1233 | ror ebx,16 |
|
- | 1234 | ||
- | 1235 | mov edx,ebx |
|
- | 1236 | ror ecx,16 |
|
- | 1237 | mov dx,cx |
|
- | 1238 | mov cx,bx |
|
- | 1239 | ror ecx,16 |
|
- | 1240 | mov cx,tl_img_cy ;restore size y (if crop) |
|
- | 1241 | mov ebx,3 ;rgb = 3 bytes |
|
- | 1242 | imul bx,tl_img_cx |
|
- | 1243 | imul bx,tl_img_cy |
|
- | 1244 | ;imul ebx,1 |
|
- | 1245 | add ebx,tl_data_img_sys |
|
- | 1246 | ||
- | 1247 | add esi,tl_box_top |
|
- | 1248 | add si,tl_capt_cy ;si = âåðõíÿÿ ãðàíèöà îêíà |
|
- | 1249 | mov eax,7 |
|
- | 1250 | ;--------- |
|
- | 1251 | .cycle2: |
|
- | 1252 | sub dx,tl_img_cy ;ïîäíèìàåì êîîðäèíàòó y ââåðõ |
|
- | 1253 | cmp dx,si |
|
- | 1254 | jl @f |
|
- | 1255 | ; int 0x40 ;draw line icon |
|
- | 1256 | cmp esi,0x10000 |
|
- | 1257 | jl @f |
|
- | 1258 | int 0x40 ;draw line icon |
|
- | 1259 | sub esi,0x10000 ;óìåíüøàåì ñ÷åò÷èê èêîíîê |
|
- | 1260 | jmp .cycle2 |
|
- | 1261 | @@: |
|
- | 1262 | pop esi edx ecx ebx eax |
|
- | 1263 | ret |
|
1124 | 1264 | ||
1125 | ;input: |
1265 | ;input: |
1126 | ; edi = pointer to TreeInfo struct |
1266 | ; edi = pointer to TreeInfo struct |
1127 | ;output: |
1267 | ;output: |
1128 | ; eax = rows |
1268 | ; eax = rows |
Line 1351... | Line 1491... | ||
1351 | 1491 | ||
1352 | mov edx,tl_p_scrol |
1492 | mov edx,tl_p_scrol |
1353 | mov dword[edx+20],eax ;+20 .cur_area |
1493 | mov dword[edx+20],eax ;+20 .cur_area |
1354 | mov dword[edx+16],ecx ;+16 .max_area |
1494 | mov dword[edx+16],ecx ;+16 .max_area |
1355 | push dword edx ;pointer to scroll struct |
- | |
1356 | mov edx,tl_sb_draw ;pointer to scroll draw function |
1495 | push dword edx ;pointer to scroll struct |
1357 | call dword[edx] |
1496 | call scroll_bar_vertical.draw |
1358 | @@: |
1497 | @@: |
1359 | pop edx ecx eax |
1498 | pop edx ecx eax |
Line 1360... | Line 1499... | ||
1360 | ret |
1499 | ret |
Line 1585... | Line 1724... | ||
1585 | je @f |
1724 | je @f |
1586 | mov edi,tl_p_scrol |
1725 | mov edi,tl_p_scrol |
1587 | mov dword[edi+24],0 |
1726 | mov dword[edi+24],0 |
1588 | push dword edi |
1727 | push dword edi |
1589 | mov edi,dword[ebp+8] |
1728 | mov edi,dword[ebp+8] |
1590 | mov edi,tl_sb_draw |
- | |
1591 | call dword[edi] |
1729 | call scroll_bar_vertical.draw |
1592 | @@: |
1730 | @@: |
1593 | pop edi |
1731 | pop edi |
Line 1594... | Line 1732... | ||
1594 | 1732 | ||
1595 | pop ebp |
1733 | pop ebp |
Line 1617... | Line 1755... | ||
1617 | add eax,dword[ebx+24] ;.position +24 |
1755 | add eax,dword[ebx+24] ;.position +24 |
1618 | cmp tl_cur_pos,eax |
1756 | cmp tl_cur_pos,eax |
1619 | jl @f |
1757 | jl @f |
1620 | inc dword[ebx+24] ;.position +24 |
1758 | inc dword[ebx+24] ;.position +24 |
1621 | push dword ebx |
1759 | push dword ebx |
1622 | mov edi,tl_sb_draw ;ïåðåðèñîâêà ñêðîëëèíãà |
- | |
1623 | call dword[edi] |
1760 | call scroll_bar_vertical.draw |
Line 1624... | Line 1761... | ||
1624 | 1761 | ||
1625 | mov edi,dword[ebp+8] ;restore edi |
1762 | mov edi,dword[ebp+8] ;restore edi |
1626 | push dword edi |
1763 | push dword edi |
1627 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1764 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
Line 1702... | Line 1839... | ||
1702 | cmp edi,dword[eax+24] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
1839 | cmp edi,dword[eax+24] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
1703 | jge @f |
1840 | jge @f |
1704 | dec dword[eax+24] |
1841 | dec dword[eax+24] |
1705 | push dword eax |
1842 | push dword eax |
1706 | mov edi,dword[ebp+8] |
1843 | mov edi,dword[ebp+8] |
1707 | mov edi,tl_sb_draw ;.redraw |
1844 | call scroll_bar_vertical.draw |
1708 | call dword[edi] |
- | |
1709 | mov edi,dword[ebp+8] ;restore edi |
1845 | mov edi,dword[ebp+8] ;restore edi |
1710 | push dword edi |
1846 | push dword edi |
1711 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1847 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1712 | jmp .no_redraw |
1848 | jmp .no_redraw |
1713 | @@: |
1849 | @@: |
Line 1756... | Line 1892... | ||
1756 | .scroll: |
1892 | .scroll: |
1757 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1893 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1758 | push dword edi |
1894 | push dword edi |
1759 | call tl_draw ;draw window |
1895 | call tl_draw ;draw window |
1760 | push dword esi |
1896 | push dword esi |
1761 | mov eax,dword[ebp+8] |
- | |
1762 | mov eax,tl_sb_draw ;.redraw |
1897 | call scroll_bar_vertical.draw |
1763 | call dword[eax] |
- | |
1764 | .no_redraw: |
1898 | .no_redraw: |
1765 | pop esi edi eax |
1899 | pop esi edi eax |
1766 | pop ebp |
1900 | pop ebp |
1767 | ret 4 |
1901 | ret 4 |
Line 1815... | Line 1949... | ||
1815 | 1949 | ||
1816 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1950 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1817 | push dword edi |
1951 | push dword edi |
1818 | call tl_draw ;draw window |
1952 | call tl_draw ;draw window |
1819 | push dword esi |
- | |
1820 | mov eax,dword[ebp+8] |
1953 | push dword esi |
1821 | mov eax,tl_sb_draw ;.redraw |
- | |
1822 | call dword[eax] |
1954 | call scroll_bar_vertical.draw |
1823 | .no_redraw: |
1955 | .no_redraw: |
1824 | pop esi edi ecx ebx eax |
1956 | pop esi edi ecx ebx eax |
1825 | pop ebp |
1957 | pop ebp |
Line 2041... | Line 2173... | ||
2041 | align 4 |
2173 | align 4 |
2042 | tl_draw_caption_cur_pos: |
2174 | tl_draw_caption_cur_pos: |
2043 | cmp tl_capt_cy,9 ;9 - minimum caption height |
2175 | cmp tl_capt_cy,9 ;9 - minimum caption height |
2044 | jl @f |
2176 | jl @f |
2045 | push eax ebx ecx edx edi esi |
2177 | push eax ebx ecx edx edi esi |
- | 2178 | mov ebx,edi ;calculate cursor position |
|
2046 | mov eax,47 ;draw |
2179 | mov eax,tl_cur_pos |
2047 | mov ebx,0x40000 |
2180 | inc eax |
2048 | mov ecx,tl_cur_pos |
2181 | lea edi,[txt_capt_cur] |
2049 | inc ecx |
2182 | add edi,7 |
- | 2183 | call tl_convert_to_str |
|
- | 2184 | mov edi,ebx |
|
- | 2185 | ||
- | 2186 | mov eax,4 ;draw text captions |
|
2050 | mov edx,tl_box_left |
2187 | mov ebx,tl_box_left |
2051 | shl edx,16 |
2188 | shl ebx,16 |
2052 | add edx,50*65536+3 |
2189 | add ebx,5*65536+3 |
2053 | add edx,tl_box_top |
2190 | add ebx,tl_box_top |
2054 | mov esi,tl_col_txt |
2191 | mov ecx,tl_col_txt |
2055 | or esi,0x40000000 ;çàêðàøèâàòü ôîí öâåòîì edi |
2192 | or ecx,0xc0000000 ;0x40000000 çàêðàøèâàòü ôîí öâåòîì edi |
- | 2193 | lea edx,[txt_capt_cur] |
|
2056 | mov edi,tl_col_zag |
2194 | mov edi,tl_col_zag |
2057 | int 0x40 |
2195 | int 0x40 |
- | 2196 | ||
2058 | pop esi edi edx ecx ebx eax |
2197 | pop esi edi edx ecx ebx eax |
2059 | @@: |
2198 | @@: |
2060 | ret |
2199 | ret |
Line 2061... | Line 2200... | ||
2061 | 2200 | ||
Line 2098... | Line 2237... | ||
2098 | add ecx,esi ;äîáàâëÿåì óêàçàòåëü íà íà÷àëî ïàìÿòè (ñ ó÷åòîì ðàíåå çàïèñàííûõ ñòðóêòóð) |
2237 | add ecx,esi ;äîáàâëÿåì óêàçàòåëü íà íà÷àëî ïàìÿòè (ñ ó÷åòîì ðàíåå çàïèñàííûõ ñòðóêòóð) |
2099 | sub ecx,dword[ebp+12] ;îòíèìàåì óêàçàòåëü íà íà÷àëî ïàìÿòè (áåç ðàíåå çàïèñàííûõ ñòðóêòóð) |
2238 | sub ecx,dword[ebp+12] ;îòíèìàåì óêàçàòåëü íà íà÷àëî ïàìÿòè (áåç ðàíåå çàïèñàííûõ ñòðóêòóð) |
2100 | cmp ecx,dword[ebp+8] ;ecx = element memory size |
2239 | cmp ecx,dword[ebp+8] ;ecx = element memory size |
2101 | jg .err_mem_size |
2240 | jg .err_mem_size |
Line 2102... | Line 2241... | ||
2102 | 2241 | ||
2103 | ;save tree params |
2242 | ;save tree params (in header) |
2104 | mov dword[esi],0x65657274 ;0x65657274 = 'tree' |
2243 | mov dword[esi],0x65657274 ;0x65657274 = 'tree' |
2105 | mov word[esi+4],bx |
2244 | mov word[esi+4],bx |
2106 | mov dword[esi+6],eax ;element count |
- | |
Line 2107... | Line 2245... | ||
2107 | add esi,10 |
2245 | mov dword[esi+6],eax ;element count |
2108 | 2246 | ||
2109 | mov eax,tl_style |
- | |
Line 2110... | Line 2247... | ||
2110 | mov dword[esi],eax |
2247 | mov eax,tl_style |
2111 | add esi,4 |
2248 | mov dword[esi+10],eax |
2112 | - | ||
Line 2113... | Line 2249... | ||
2113 | mov eax,tl_cur_pos |
2249 | |
2114 | mov dword[esi],eax |
2250 | mov eax,tl_cur_pos |
2115 | add esi,4 |
- | |
Line 2116... | Line 2251... | ||
2116 | 2251 | mov dword[esi+14],eax |
|
2117 | mov ax,tl_info_capt_offs |
2252 | |
- | 2253 | mov ax,tl_info_capt_offs |
|
- | 2254 | mov word[esi+18],ax |
|
- | 2255 | ||
- | 2256 | mov ax,tl_info_capt_len |
|
2118 | mov word[esi],ax |
2257 | mov word[esi+20],ax |
- | 2258 | ||
- | 2259 | ;copy scroll position |
|
Line 2119... | Line 2260... | ||
2119 | add esi,2 |
2260 | mov edx,tl_p_scrol |
2120 | 2261 | mov eax,dword[edx+24] ;+24 .position |
|
2121 | mov ax,tl_info_capt_len |
2262 | mov dword[esi+22],eax |
2122 | mov word[esi],ax |
2263 | |
Line 2137... | Line 2278... | ||
2137 | add esi,4 |
2278 | add esi,4 |
2138 | mov eax,dword[edx] ;eax = (type; lev; clo) |
2279 | mov eax,dword[edx] ;eax = (type; lev; clo) |
2139 | mov dword[esi],eax |
2280 | mov dword[esi],eax |
2140 | add esi,4 |
2281 | add esi,4 |
Line 2141... | Line -... | ||
2141 | - | ||
2142 | ;push dword edi |
- | |
2143 | ;call tl_node_get_data |
- | |
2144 | ;pop eax |
2282 | |
2145 | push dword edi |
2283 | push dword edi |
2146 | push dword edx |
2284 | push dword edx |
2147 | call tl_node_poi_get_data |
2285 | call tl_node_poi_get_data |
Line 2216... | Line 2354... | ||
2216 | or dword[ebp+20],tl_err_load_info_size |
2354 | or dword[ebp+20],tl_err_load_info_size |
2217 | @@: |
2355 | @@: |
2218 | mov ecx,dword[esi+6] ;count nodes |
2356 | mov ecx,dword[esi+6] ;count nodes |
2219 | cmp ecx,1 |
2357 | cmp ecx,1 |
2220 | jl .end_f |
2358 | jl .end_f |
- | 2359 | mov edx,esi ;save header pointer |
|
2221 | add esi,tl_save_load_heder_size |
2360 | add esi,tl_save_load_heder_size |
Line 2222... | Line 2361... | ||
2222 | 2361 | ||
2223 | @@: |
2362 | @@: |
2224 | ;load node params |
2363 | ;load node params |
Line 2234... | Line 2373... | ||
2234 | call tl_cur_next |
2373 | call tl_cur_next |
2235 | ;... |
2374 | ;... |
2236 | add esi,ebx |
2375 | add esi,ebx |
2237 | loop @b |
2376 | loop @b |
Line -... | Line 2377... | ||
- | 2377 | ||
- | 2378 | bt word[ebp+18],1 ;load in add mode |
|
- | 2379 | jc .no_tree |
|
- | 2380 | mov eax,dword[edx+14] ;set cursor pos |
|
- | 2381 | mov tl_cur_pos,eax |
|
- | 2382 | mov eax,dword[edx+22] ;set scroll pos |
|
- | 2383 | mov ebx,tl_p_scrol |
|
- | 2384 | cmp ebx,0 |
|
- | 2385 | je .end_f |
|
- | 2386 | mov dword[ebx+24],eax ;+24 .position |
|
- | 2387 | push dword ebx ;pointer to scroll struct |
|
- | 2388 | call scroll_bar_vertical.draw |
|
2238 | 2389 | ||
2239 | jmp .end_f |
2390 | jmp .end_f |
2240 | .no_tree: |
2391 | .no_tree: |
2241 | mov dword[ebp+20],tl_err_load_caption |
2392 | mov dword[ebp+20],tl_err_load_caption |
2242 | .end_f: |
2393 | .end_f: |
Line 2258... | Line 2409... | ||
2258 | tl_key_ascii db 13,32,178,177,176,179,182,184,183 |
2409 | tl_key_ascii db 13,32,178,177,176,179,182,184,183 |
2259 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
2410 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
Line 2260... | Line 2411... | ||
2260 | 2411 | ||
2261 | txt_capt_cur db 'âப ',0 |
2412 | txt_capt_cur db 'âப ',0 |
- | 2413 | txt_capt_otm db '⬥ë ',0 |
|
- | 2414 | ||
- | 2415 | ;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó |
|
- | 2416 | ;input: |
|
- | 2417 | ; eax = value |
|
- | 2418 | ; edi = string buffer |
|
- | 2419 | ;output: |
|
- | 2420 | ; edi = |
|
- | 2421 | align 4 |
|
- | 2422 | tl_convert_to_str: |
|
- | 2423 | pushad |
|
- | 2424 | mov dword[edi+1],0x20202020 |
|
- | 2425 | call .str |
|
- | 2426 | popad |
|
- | 2427 | ret |
|
- | 2428 | ||
- | 2429 | align 4 |
|
- | 2430 | .str: |
|
- | 2431 | mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî |
|
- | 2432 | ;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé |
|
- | 2433 | cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax |
|
- | 2434 | jb @f |
|
- | 2435 | xor edx,edx ;î÷èñòèòü edx |
|
- | 2436 | div ecx ;ðàçäåëèòü - îñòàòîê â edx |
|
- | 2437 | push edx ;ïîëîæèòü â ñòåê |
|
- | 2438 | ;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè |
|
- | 2439 | call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx |
|
- | 2440 | pop eax |
|
- | 2441 | @@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ)) |
|
- | 2442 | ;sbb al,$69 ;- ÷åñòíî äàííàÿ èíñòðóêöèÿ ìåíÿ çàñòàâëÿåò çàäóìàòüñÿ ò.å. ÿ íå çíàþ êàê ýòî ðàáîòàåò |
|
- | 2443 | ;das ;ïîñëå äàííîé êîìàíäû êàê áû ïðîèñõîäèò óìåíüøåíèå al íà 66h (â êíèãå íàïèñàíî äðóãîå) |
|
- | 2444 | or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå |
|
- | 2445 | stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi |
|
2262 | txt_capt_otm db '⬥ë',0 |
2446 | ret ;âåðíóòüñÿ ÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
2263 | } |
2447 | } |