Subversion Repositories Kolibri OS

Rev

Rev 1456 | Rev 1458 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. align 4
  2. draw_but_toolbar: ;ôóíêöèÿ äëÿ ðèñîâàíèÿ ïàíåëè èíñòðóìåíòîâ
  3.   pushad
  4.   mov edi,tedit0
  5.  
  6.   mov ecx,0x40000000
  7. ;  mov edx,5*65536+25
  8.   mov edx,85*65536+2
  9.   call draw_but_icon
  10.  
  11.   inc cx
  12. ;  mov edx,30*65536+25
  13.   mov edx,110*65536+2
  14.   call draw_but_icon
  15.  
  16. stdcall [ted_can_save],edi
  17. cmp al,1
  18. je @f
  19. and ecx,0xffff
  20. @@:
  21.   inc cx
  22. ;  mov edx,55*65536+25
  23.   mov edx,135*65536+2
  24.   call draw_but_icon
  25. or ecx,0x40000000
  26.  
  27.   inc cx
  28.   mov edx,85*65536+25
  29.   call draw_but_icon
  30.  
  31. call [ted_is_select]
  32. cmp al,0
  33. jne @f
  34. and ecx,0xffff
  35. @@:
  36.   inc cx ; Cut
  37.   mov edx,110*65536+25
  38.   call draw_but_icon
  39.  
  40.   inc cx ; Copy
  41.   mov edx,135*65536+25
  42.   call draw_but_icon
  43.  
  44.   mov cx,10 ; Upper
  45.   mov edx,265*65536+25
  46.   call draw_but_icon
  47.  
  48.   inc cx ; Lower
  49.   mov edx,290*65536+25
  50.   call draw_but_icon
  51.  
  52.   inc cx ; reverse
  53.   mov edx,315*65536+25
  54.   call draw_but_icon
  55. or ecx,0x40000000
  56.  
  57. cmp byte[buf],0
  58. jne @f
  59. and ecx,0xffff
  60. @@:
  61.   mov cx,6 ; Paste
  62.   mov edx,160*65536+25
  63.   call draw_but_icon
  64. or ecx,0x40000000
  65.  
  66.   inc cx
  67.   mov edx,185*65536+25
  68.   call draw_but_icon
  69.  
  70.   inc cx
  71.   mov edx,210*65536+25
  72.   call draw_but_icon
  73.  
  74.   inc cx
  75.   mov edx,235*65536+25
  76.   call draw_but_icon
  77.  
  78. mov ebx,ted_tim_undo
  79. cmp ted_tim_ch,ebx
  80. jg @f
  81. and ecx,0xffff
  82. @@:
  83.   mov cx,13
  84.   mov edx,345*65536+25
  85.   call draw_but_icon
  86. or ecx,0x40000000
  87.  
  88. cmp ted_tim_undo,1
  89. jge @f
  90. and ecx,0xffff
  91. @@:
  92.   inc cx
  93.   mov edx,370*65536+25
  94.   call draw_but_icon
  95. or ecx,0x40000000
  96.  
  97.   inc cx
  98.   mov edx,400*65536+25
  99.   call draw_but_icon
  100.  
  101.   inc cx
  102.   mov edx,425*65536+25
  103.   call draw_but_icon
  104.  
  105.   mov cx,17
  106.   mov edx,450*65536+25
  107.   call draw_but_icon
  108.  
  109.   popad
  110.   ret
  111.  
  112. ;txtBUp db 24
  113. ;txtBDn db 25
  114. ;txtBRi db 26
  115. ;txtBLe db 27
  116.  
  117. ;input:
  118. ; edi = pointer to tedit struct
  119. align 4
  120. proc draw_panel_find
  121. ;push edi
  122. ;mov edi,dword[edit]
  123.   cmp ted_panel_id,TED_PANEL_FIND ;if not panel
  124.   jne @f
  125.   push eax ebx ecx edx
  126.  
  127.   mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà
  128.   mov ebx,TED_PANEL_WIDTH
  129.   mov ecx,ted_wnd_t
  130.   shl ecx,16
  131.   mov cx,20
  132.   mov edx,[sc.work]
  133.   int 0x40
  134.  
  135.   mov eax,4 ;ðèñîâàíèå òåêñòà
  136.   mov ebx,30*65536+5
  137.   add ebx,ted_wnd_t
  138.   mov ecx,[sc.work_text]
  139.   or ecx,0x80000000
  140.   mov edx,txtFindCapt
  141.   int 0x40
  142.  
  143.   stdcall [edit_box_draw], dword edit2
  144.  
  145.   mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà
  146.   mov ebx,TED_PANEL_WIDTH
  147.   mov ecx,ted_wnd_t
  148.   add cx,20+15 ; 15 - height text box
  149.   shl ecx,16
  150.   add ecx,ted_wnd_h
  151.   mov edx,ted_scr_h
  152.   add cx,word[edx+sb_offs_size_y]
  153.   sub cx,20+15-1 ; 15 - height text box
  154.   mov edx,[sc.work]
  155.   int 0x40
  156.  
  157.   mov eax,8 ;êíîïêà
  158.   mov ebx,5*65536+85
  159.   mov ecx,ted_wnd_t
  160.   add cx,20+15+5
  161.   shl ecx,16
  162.   mov cx,20
  163.   mov edx,201 ;button id
  164.   mov esi,[sc.work_button]
  165.   int 0x40
  166.  
  167.   mov eax,4 ;ðèñîâàíèå òåêñòà
  168.   mov ebx,15*65536+(20+15+10)
  169.   add ebx,ted_wnd_t
  170.   mov ecx,[sc.work_text]
  171.   or ecx,0x80000000
  172.   mov edx,txtFindNext
  173.   int 0x40
  174.  
  175.   pop edx ecx ebx eax
  176.   jmp .end_f
  177.   @@:
  178.   push eax edx
  179.     mov eax,8
  180.     mov edx,201
  181.     or edx,0x80000000
  182.     int 0x40
  183.   pop edx eax
  184.   .end_f:
  185. ;pop edi
  186.   ret
  187. endp
  188.  
  189. ;input:
  190. ; edi = pointer to tedit struct
  191. align 4
  192. proc draw_panel_syntax
  193. ;push edi
  194. ;mov edi,dword[edit]
  195.   cmp ted_panel_id,TED_PANEL_SYNTAX ;if not panel
  196.   jne @f
  197.   pushad
  198.  
  199.   mov eax,13 ;ðèñîâàíèå ïðÿìîóãîëüíèêà
  200.   mov ebx,TED_PANEL_WIDTH
  201.   mov ecx,ted_wnd_t
  202.   shl ecx,16
  203.   mov cx,20
  204.   mov edx,[sc.work]
  205.   int 0x40 ;ðèñîâàíèå âåðõíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
  206.  
  207.   stdcall dword[tl_draw], tree1
  208.   mov [ws_dir_lbox.all_redraw],1 ;äëÿ ïîëíîé ïåðåðèñîâêè äî÷åðíåãî ñêðîëëèíãà
  209.   stdcall dword[scrollbar_ver_draw], dword ws_dir_lbox
  210.  
  211.   ror ecx,16
  212.   add ecx,dword[tree1.box_height]
  213.   add ecx,20
  214.   and ecx,0xffff
  215.   ror ecx,16
  216.   add ecx,ted_wnd_h
  217.   mov esi,ted_scr_h
  218.   add cx,word[esi+sb_offs_size_y]
  219.   sub cx,20
  220.   sub ecx,dword[tree1.box_height]
  221.   inc cx
  222.   int 0x40 ;ðèñîâàíèå íèæíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
  223.  
  224.   mov eax,8 ;êíîïêà
  225.   mov ebx,5*65536+65
  226.   mov ecx,ted_wnd_t
  227.   add ecx,25
  228.   add ecx,dword[tree1.box_height]
  229.   shl ecx,16
  230.   mov cx,20
  231.   mov edx,200 ;button id
  232.   mov esi,[sc.work_button]
  233.   int 0x40
  234.  
  235.   mov eax,4 ;ðèñîâàíèå òåêñòà
  236.   mov ebx,30*65536+5
  237.   add ebx,ted_wnd_t
  238.   mov ecx,[sc.work_text]
  239.   or ecx,0x80000000
  240.   mov edx,txtFormatCapt
  241.   int 0x40
  242.  
  243.   mov ebx,10*65536+30
  244.   add ebx,dword[tree1.box_height]
  245.   add ebx,ted_wnd_t
  246.   mov edx,txtFormatApply
  247.   int 0x40
  248.  
  249.   popad
  250.   jmp .end_f
  251.   @@:
  252.     push eax edx
  253.       mov eax,8
  254.       mov edx,200
  255.       or edx,0x80000000
  256.       int 0x40 ;åñëè íåò ïàíåëè òî óäàëÿåì êíîïêó
  257.     pop edx eax
  258.   .end_f:
  259. ;pop edi
  260.   ret
  261. endp
  262.  
  263. MIN_M_WND_H equ 100
  264. MIN_W_SCRL_ARE equ 3
  265. MIN_H_SCRL_ARE equ 3
  266. align 4
  267. proc EvSize, edit:dword
  268.   pushad
  269.   mov edi,dword[edit]
  270.   mov ebx,ted_scr_h
  271.   mov esi,ted_scr_w
  272.  
  273.   m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà
  274.   mov eax,ted_wnd_l
  275.   sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà
  276.   mov eax,dword[esi+sb_offs_size_x]
  277.   and eax,0xffff
  278.   sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà
  279.  
  280.   m2m ted_wnd_h,[procinfo.client_box.height] ;ñòàâèì âûñîòó îêíà ðåäàêòîðà ðàâíîé âûñîòå âñåãî îêíà
  281.   cmp ted_wnd_h,MIN_M_WND_H
  282.   jg @f
  283.     mov ted_wnd_h,MIN_M_WND_H
  284.   @@:
  285.  
  286.   mov ax,word[ebx+sb_offs_size_y]
  287.   and eax,0xffff
  288.   sub ted_wnd_h,eax           ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
  289.     mov eax,ted_wnd_h     ;eax = âûñîòà îêíà - âûñîòà ãîðèç. ñêðîëëèíãà
  290.     mov word[ebx+sb_offs_start_y],ax ;ïåðåäâèãàåì ãîðèç. ñêðîëëèíã
  291.   mov eax,ted_wnd_t
  292.   sub ted_wnd_h,eax           ;îòíèìàåì îòñòóï ñâåðõó
  293.  
  294.   mov eax,ted_wnd_w
  295.   mov ecx,ted_wnd_l
  296.   add eax,ecx
  297.   mov word[esi+sb_offs_start_x],ax   ;ïåðåäâèãàåì âåðò. ñêðîëëèíã
  298.   mov eax,ted_wnd_h
  299.   mov word[esi+sb_offs_size_y],ax    ;çàäàåì âûñîòó âåðò. ñêðîëëèíãà
  300.  
  301.   add ecx,ted_rec_l     ;ecx=ted_wnd_l+ted_rec_l
  302.   mov word[ebx+sb_offs_start_x],cx ;ñäâèãàåì ãîðèç. ñêðîëëèíã ïî ðàçìåðó ëåâîãî îòñòóïà äëÿ öèôð
  303.   mov eax,ted_wnd_w
  304.   sub eax,ted_rec_l
  305.   mov word[ebx+sb_offs_size_x],ax ;çàäàåì øèðèíó ãîðèç. ñêðîëëèíãà
  306.  
  307.   mov eax,ted_wnd_h ;calculate lines in page
  308.   sub eax,ted_rec_t
  309.   xor edx,edx
  310.   mov ecx,ted_rec_h
  311.   div ecx
  312.   cmp eax,MIN_W_SCRL_ARE
  313.   jg @f
  314.     mov eax,MIN_W_SCRL_ARE
  315.   @@:
  316.   mov dword[esi+sb_offs_cur_area],eax
  317.  
  318.   mov eax,ted_wnd_w ;calculate cols in page
  319.   sub eax,ted_rec_l
  320.   xor edx,edx
  321.   mov ecx,ted_rec_w
  322.   div ecx
  323.   cmp eax,MIN_H_SCRL_ARE
  324.   jg @f
  325.     mov eax,MIN_H_SCRL_ARE
  326.   @@:
  327.   dec eax ; ???
  328.   mov dword[ebx+sb_offs_cur_area],eax
  329.  
  330.   mov eax,ted_wnd_t
  331.   mov edi,dword tree1
  332.   mov tl_box_top,eax ;=ted_wnd_t
  333.   add tl_box_top,20
  334.  
  335.   mov dword[edit2.top],eax ;=ted_wnd_t
  336.   add dword[edit2.top],20
  337.  
  338.   popad
  339.   ret
  340. endp
  341.  
  342. ;input:
  343. ;  ecx = 0x4000____
  344. ;   cx = icon index
  345. ;  edx = x*2^16+y
  346. align 4
  347. draw_but_icon:
  348.         push eax ebx
  349.  
  350.         mov eax,8 ;êíîïêà
  351.         push ecx edx esi
  352.                 mov ebx,edx
  353.                 mov edx,ecx
  354.                 add edx,3
  355.                 mov cx,bx
  356.                 shl ecx,16
  357.                 mov cx,19 ;=20-1
  358.                 mov bx,19 ;=20-1
  359.                 mov esi,ebx
  360.                 shr esi,16
  361.                 add esi,20
  362.                 cmp esi,[procinfo.client_box.width]
  363.                 jge @f ;êíîïêà íå âëåçëà â ýêðàí
  364.                         mov esi,[sc.work_button]
  365.                         int 0x40 ;ñòàâèì êíîïêó
  366.                         mov eax,7 ;bmp
  367.                 @@:
  368.         pop esi edx ecx
  369.  
  370.         cmp eax,7
  371.         jne @f ;êíîïêà íå âëåçëà â ýêðàí
  372.         mov ebx,ecx
  373.         ror ebx,16
  374.         cmp bx,0x4000
  375.         jne @f
  376.                 mov ebx,[bmp_icon]
  377.                 push ecx
  378.                 and ecx,0xffff
  379.                 imul ecx,1200
  380.                 add ebx,ecx
  381.                 mov ecx,20
  382.                 shl ecx,16
  383.                 add ecx,20
  384.                 int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó
  385.                 pop ecx
  386.         @@:
  387.         pop ebx eax
  388.         ret
  389.  
  390.