Subversion Repositories Kolibri OS

Rev

Rev 2125 | Rev 4228 | 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. ;input:
  265. ; edi = pointer to tedit struct
  266. align 4
  267. EvSize:
  268.   pushad
  269.   mov ebx,ted_scr_h
  270.   mov esi,ted_scr_w
  271.  
  272.   m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà
  273.   mov eax,ted_wnd_l
  274.   sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà
  275.   mov eax,dword[esi+sb_offs_size_x]
  276.   and eax,0xffff
  277.   sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà
  278.  
  279.   m2m ted_wnd_h,[procinfo.client_box.height] ;ñòàâèì âûñîòó îêíà ðåäàêòîðà ðàâíîé âûñîòå âñåãî îêíà
  280.   cmp ted_wnd_h,MIN_M_WND_H
  281.   jg @f
  282.     mov ted_wnd_h,MIN_M_WND_H
  283.   @@:
  284.  
  285.   mov ax,word[ebx+sb_offs_size_y]
  286.   and eax,0xffff
  287.   sub ted_wnd_h,eax           ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
  288.   mov eax,ted_wnd_t
  289.   sub ted_wnd_h,eax           ;îòíèìàåì îòñòóï ñâåðõó
  290.  
  291.   stdcall [ted_init_scroll_bars], tedit0,2
  292.  
  293.   mov eax,ted_wnd_t
  294.   mov edi,dword tree1
  295.   mov tl_box_top,eax ;=ted_wnd_t
  296.   add tl_box_top,20
  297.  
  298.   mov dword[edit2.top],eax ;=ted_wnd_t
  299.   add dword[edit2.top],20
  300.  
  301.   popad
  302.   ret
  303.  
  304. ;input:
  305. ;  ecx = 0x4000____
  306. ;   cx = icon index
  307. ;  edx = x*2^16+y
  308. align 4
  309. draw_but_icon:
  310.         push eax ebx
  311.  
  312.         mov eax,8 ;êíîïêà
  313.         push ecx edx esi
  314.                 mov ebx,edx
  315.                 mov edx,ecx
  316.                 add edx,3
  317.                 mov cx,bx
  318.                 shl ecx,16
  319.                 mov cx,19 ;=20-1
  320.                 mov bx,19 ;=20-1
  321.                 mov esi,ebx
  322.                 shr esi,16
  323.                 add esi,20
  324.                 cmp esi,[procinfo.client_box.width]
  325.                 jge @f ;êíîïêà íå âëåçëà â îêíî
  326.                         mov esi,[sc.work_button]
  327.                         int 0x40 ;ñòàâèì êíîïêó
  328.                         mov eax,7 ;bmp
  329.                 @@:
  330.         pop esi edx ecx
  331.  
  332.         cmp eax,7
  333.         jne @f ;êíîïêà íå âëåçëà â îêíî
  334.                 mov ebx,[bmp_icon]
  335.                 bt ecx,30 ;if (ecx or 0x40000000)
  336.                 jc .gray
  337.                         add ebx,TOOLBAR_ICONS_SIZE ;ïåðåìåùàåìñÿ íà ñåðûå êíîïêè
  338.                 .gray:
  339.                 push ecx
  340.                 and ecx,0xffff
  341.                 imul ecx,1200
  342.                 add ebx,ecx
  343.                 mov ecx,20
  344.                 shl ecx,16
  345.                 add ecx,20
  346.                 int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó
  347.                 pop ecx
  348.         @@:
  349.         pop ebx eax
  350.         ret
  351.  
  352. ;descrition:
  353. ; ôóíêöèÿ äëÿ ãåíåðèðîâàíèÿ ñåðûõ èêîíîê
  354. ;input:
  355. ; buf_rgb - áóôåð ñ âõîäíûì 24 áèòíûì öâåòíûì èçîáðàæåíèåì
  356. ; buf_g24 - áóôåð ñ âûõîäíûì 24 áèòíûì ñåðûì èçîáðàæåíèåì
  357. ; pixels - ÷èñëî ïèêñåëåé â èçîáðàæåíèè
  358. align 4
  359. proc img_to_gray uses eax ebx ecx edi esi, buf_rgb:dword, buf_g24:dword, pixels:dword
  360.         mov esi,[buf_rgb]
  361.         mov edi,[buf_g24]
  362.         mov ecx,[pixels]
  363.         @@:
  364.                 movzx eax,byte[esi]
  365.                 movzx ebx,byte[esi+1]
  366.                 add eax,ebx
  367.                 movzx ebx,byte[esi+2]
  368.                 add eax,ebx
  369.                 shr eax,2
  370.                 mov ah,al
  371.                 mov word[edi],ax
  372.                 mov byte[edi+2],al
  373.                 add esi,3
  374.                 add edi,3
  375.                 loop @b
  376.         ret
  377. endp
  378.  
  379.