Subversion Repositories Kolibri OS

Rev

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