Subversion Repositories Kolibri OS

Rev

Rev 5831 | Rev 7571 | 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.         cmp ted_panel_id,TED_PANEL_FIND ;if not panel
  127.         jne @f
  128.         push eax ebx ecx edx
  129.                 mov ecx,ted_wnd_t
  130.                 shl ecx,16
  131.                 mov cx,20
  132.                 mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
  133.  
  134.                 mov ebx,30*65536+25
  135.                 add ebx,ted_wnd_t
  136.                 mov ecx,[sc.work_text]
  137.                 or ecx,0x80000000
  138.                 mcall SF_DRAW_TEXT,,,txtFindCapt
  139.  
  140.                 stdcall [edit_box_draw], edit2
  141.  
  142.                 mov ecx,ted_wnd_t
  143.                 add cx,20+15 ; 15 - height text box
  144.                 shl ecx,16
  145.                 add ecx,ted_wnd_h
  146.                 mov edx,ted_scr_h
  147.                 add cx,word[edx+sb_offs_size_y]
  148.                 sub cx,20+15-1 ; 15 - height text box
  149.                 mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work]
  150.  
  151.                 mov ecx,ted_wnd_t
  152.                 add cx,20+15+5
  153.                 shl ecx,16
  154.                 mov cx,20
  155.                 mcall SF_DEFINE_BUTTON,5*65536+85,,201,[sc.work_button] ;201 - button id
  156.  
  157.                 mov ebx,15*65536+(20+15+10)
  158.                 add ebx,ted_wnd_t
  159.                 mov ecx,[sc.work_text]
  160.                 or ecx,0x80000000
  161.                 mcall SF_DRAW_TEXT,,,txtFindNext
  162.         pop edx ecx ebx eax
  163.         jmp .end_f
  164.         @@:
  165.         push eax edx
  166.                 mov edx,201
  167.                 or edx,0x80000000
  168.                 mcall SF_DEFINE_BUTTON
  169.         pop edx eax
  170.         .end_f:
  171.         ret
  172. endp
  173.  
  174. ;input:
  175. ; edi = pointer to tedit struct
  176. align 4
  177. proc draw_panel_syntax
  178.         cmp ted_panel_id,TED_PANEL_SYNTAX ;if not panel
  179.         jne @f
  180.         pushad
  181.  
  182.         mov ecx,ted_wnd_t
  183.         shl ecx,16
  184.         mov cx,20
  185.         mcall SF_DRAW_RECT,TED_PANEL_WIDTH,,[sc.work] ;ðèñîâàíèå âåðõíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
  186.  
  187.         stdcall dword[tl_draw], tree1
  188.         mov [ws_dir_lbox.all_redraw],1 ;äëÿ ïîëíîé ïåðåðèñîâêè äî÷åðíåãî ñêðîëëèíãà
  189.         stdcall dword[scrollbar_ver_draw], dword ws_dir_lbox
  190.  
  191.         ror ecx,16
  192.         add ecx,dword[tree1.box_height]
  193.         add ecx,20
  194.         and ecx,0xffff
  195.         ror ecx,16
  196.         add ecx,ted_wnd_h
  197.         mov esi,ted_scr_h
  198.         add cx,word[esi+sb_offs_size_y]
  199.         sub cx,20
  200.         sub ecx,dword[tree1.box_height]
  201.         inc cx
  202.         int 0x40 ;ðèñîâàíèå íèæíåãî ôîíîâîãî ïðÿìîóãîëüíèêà
  203.  
  204.         mov ecx,ted_wnd_t
  205.         add ecx,25
  206.         add ecx,dword[tree1.box_height]
  207.         shl ecx,16
  208.         mov cx,20
  209.         mcall SF_DEFINE_BUTTON,(5 shl 16)+65,,200,[sc.work_button] ;200 - button id
  210.  
  211.         mov ebx,(30 shl 16)+5
  212.         add ebx,ted_wnd_t
  213.         mov ecx,[sc.work_text]
  214.         or ecx,0x80000000
  215.         mcall SF_DRAW_TEXT,,,txtFormatCapt
  216.  
  217.         mov ebx,(10 shl 16)+31
  218.         add ebx,dword[tree1.box_height]
  219.         add ebx,ted_wnd_t
  220.         mcall ,,,txtFormatApply
  221.  
  222.         popad
  223.         jmp .end_f
  224.         @@:
  225.                 push eax edx
  226.                 mov edx,200
  227.                 or edx,0x80000000
  228.                 mcall SF_DEFINE_BUTTON ;åñëè íåò ïàíåëè òî óäàëÿåì êíîïêó
  229.                 pop edx eax
  230.         .end_f:
  231.         ret
  232. endp
  233.  
  234. MIN_M_WND_H equ 100 ;ìèíèìàëüíàÿ âûñîòà ãëàâíîãî îêíà
  235. ;input:
  236. ; edi = pointer to tedit struct
  237. align 4
  238. EvSize:
  239.         pushad
  240.         mov ebx,ted_scr_h
  241.         mov esi,ted_scr_w
  242.  
  243.         m2m ted_wnd_w,[procinfo.client_box.width] ;ñòàâèì øèðèíó îêíà ðåäàêòîðà ðàâíîé øèðèíå âñåãî îêíà
  244.         mov eax,ted_wnd_l
  245.         sub ted_wnd_w,eax ;îòíèìàåì îòñòóï ñëåâà
  246.         movzx eax,word[esi+sb_offs_size_x]
  247.         sub ted_wnd_w,eax ;îòíèìàåì øèðèíó âåðò. ñêðîëëèíãà
  248.  
  249.         m2m ted_wnd_h,[procinfo.client_box.height] ;ñòàâèì âûñîòó îêíà ðåäàêòîðà ðàâíîé âûñîòå âñåãî îêíà
  250.         cmp ted_wnd_h,MIN_M_WND_H
  251.         jg @f
  252.                 mov ted_wnd_h,MIN_M_WND_H
  253.         @@:
  254.  
  255.         movzx eax,word[ebx+sb_offs_size_y]
  256.         sub ted_wnd_h,eax             ;îòíèìàåì âûñîòó ãîðèç. ñêðîëëèíãà
  257.         mov eax,ted_wnd_t
  258.         sub ted_wnd_h,eax             ;îòíèìàåì îòñòóï ñâåðõó
  259.  
  260.         stdcall [ted_init_scroll_bars], tedit0,2
  261.  
  262.         mov eax,ted_wnd_t
  263.         mov edi,dword tree1
  264.         mov tl_box_top,eax ;=ted_wnd_t
  265.         add tl_box_top,20
  266.  
  267.         mov [edit2.top],eax ;=ted_wnd_t
  268.         add dword[edit2.top],20
  269.  
  270.         popad
  271.         ret
  272.  
  273. ;input:
  274. ;  ecx = 0x4000____
  275. ;   cx = icon index
  276. ;  edx = x*2^16+y
  277. align 4
  278. draw_but_icon:
  279.         push eax ebx
  280.  
  281.         mov eax,SF_DEFINE_BUTTON
  282.         push ecx edx esi
  283.                 mov ebx,edx
  284.                 mov edx,ecx
  285.                 add edx,3
  286.                 mov cx,bx
  287.                 shl ecx,16
  288.                 mov cx,19 ;=20-1
  289.                 mov bx,19 ;=20-1
  290.                 mov esi,ebx
  291.                 shr esi,16
  292.                 add esi,20
  293.                 cmp esi,[procinfo.client_box.width]
  294.                 jge @f ;êíîïêà íå âëåçëà â îêíî
  295.                         mov esi,[sc.work_button]
  296.                         int 0x40 ;ñòàâèì êíîïêó
  297.                         mov eax,SF_PUT_IMAGE
  298.                 @@:
  299.         pop esi edx ecx
  300.  
  301.         cmp eax,SF_PUT_IMAGE
  302.         jne @f ;êíîïêà íå âëåçëà â îêíî
  303.                 mov ebx,[bmp_icon]
  304.                 bt ecx,30 ;if (ecx & 0x40000000)
  305.                 jc .gray
  306.                         add ebx,TOOLBAR_ICONS_SIZE ;ïåðåìåùàåìñÿ íà ñåðûå êíîïêè
  307.                 .gray:
  308.                 push ecx
  309.                 and ecx,0xffff
  310.                 imul ecx,1200
  311.                 add ebx,ecx
  312.                 mov ecx,20
  313.                 shl ecx,16
  314.                 add ecx,20
  315.                 int 0x40 ;ñòàâèì ðèñóíîê íà êíîïêó
  316.                 pop ecx
  317.         @@:
  318.         pop ebx eax
  319.         ret
  320.  
  321. ;descrition:
  322. ; ôóíêöèÿ äëÿ ãåíåðèðîâàíèÿ ñåðûõ èêîíîê
  323. ;input:
  324. ; buf_rgb - áóôåð ñ âõîäíûì 24 áèòíûì öâåòíûì èçîáðàæåíèåì
  325. ; buf_g24 - áóôåð ñ âûõîäíûì 24 áèòíûì ñåðûì èçîáðàæåíèåì
  326. ; pixels - ÷èñëî ïèêñåëåé â èçîáðàæåíèè
  327. align 4
  328. proc img_to_gray, buf_rgb:dword, buf_g24:dword, pixels:dword
  329. pushad
  330.         mov esi,[buf_rgb]
  331.         mov edi,[buf_g24]
  332.         mov ecx,[pixels]
  333.         mov ebx,3
  334.         @@:
  335.                 movzx eax,byte[esi]
  336.                 movzx edx,byte[esi+1]
  337.                 add eax,edx
  338.                 movzx edx,byte[esi+2]
  339.                 add eax,edx
  340.                 xor edx,edx
  341.                 div ebx ;shr eax,2
  342.                 mov ah,al
  343.                 mov word[edi],ax
  344.                 mov byte[edi+2],al
  345.                 add esi,3
  346.                 add edi,3
  347.                 loop @b
  348. popad
  349.         ret
  350. endp
  351.  
  352.