Subversion Repositories Kolibri OS

Rev

Rev 1720 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;
  2. ; ¢ í⮬ ä ©«¥ ᮡ࠭ë ä㭪樨 à¨áãî騥 ®ª­® ª®­áâàãªâ®à 
  3. ;
  4.  
  5. ;¯¥à¥¤¢¨£ ¥¬ ª®®à¤¨­ âë ®â­®á¨â¥«ì­® ᪨­ 
  6. macro move_to_skin coord_x,coord_y
  7. {
  8.         push eax
  9.         mov eax,[obj_m_win] ;㪠§ â¥«ì ­  ®ª­®
  10.         cmp eax,0
  11.         je @f
  12.         test_bool_prop eax,BIT_MOD_WI_CORD_OTN_CL_OBL
  13.         ;bt dword[[obj_m_win]+u_object.modif-u_object],n_prop
  14.         jnc @f
  15.                 add coord_x,SKIN_W1
  16.                 add coord_y,SKIN_H
  17.         @@:
  18.         pop eax
  19. }
  20.  
  21. ;¯¥à¥à¨á®¢ª  ®ª­  ª®­áâàãªâ®à 
  22. align 4
  23. draw_constructor:
  24.         stdcall [buf2d_clear], buf_fon,0xffffff
  25.  
  26. pushad
  27.         cmp [err_ini1],1
  28.         jne @f
  29.                 stdcall [buf2d_draw_text], buf_fon, buf_font,txtErrIni1,10,10,\
  30.                         0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
  31.                 stdcall [buf2d_draw_text], buf_fon, buf_font,fp_obj_opt,10,20,\
  32.                         0xff0000 ;à¨á㥬 áâபã á ⥪á⮬
  33.                 jmp .end_draw
  34.         @@:
  35.  
  36.         mov edx,C_WND
  37.         stdcall find_obj_in_file,edx ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®ª­ 
  38.         cmp eax,0
  39.         je .end_draw
  40.         mov dword[obj_m_win],eax
  41.  
  42.         ;4-width
  43.         stdcall get_obj_text_col,[obj_m_win],4 ;edx = offset
  44.         stdcall conv_str_to_int,edx
  45.         mov ecx,eax ;ecx=width
  46.  
  47.         ;5-height
  48.         stdcall get_obj_text_col,[obj_m_win],5 ;edx = offset
  49.         stdcall conv_str_to_int,edx
  50.         ;eax=height
  51.  
  52.         stdcall [buf2d_rect_by_size], buf_fon, 0,0,ecx,eax, dword[sc.frame] ;à¨á㥬 ¢­¥è­îî à ¬ªã ®ª­ 
  53.         sub eax,2
  54.         sub ecx,2
  55.         stdcall [buf2d_filled_rect_by_size], buf_fon, 1,1,ecx,eax, dword[sc.grab] ;à¨á㥬 ä®­ à ¬ª¨ ®ª­ 
  56.  
  57.         sub eax,6
  58.         sub ecx,6
  59.         stdcall [buf2d_rect_by_size], buf_fon, 4,4,ecx,eax, dword[sc.frame] ;à¨á㥬 ¢­ãâ७­îî à ¬ªã ®ª­ 
  60.         sub eax,2
  61.         sub ecx,2
  62.         stdcall [buf2d_filled_rect_by_size], buf_fon, 5,5,ecx,eax, dword[sc.work] ;à¨á㥬 ä®­ ®ª­ 
  63.  
  64. ;---;---;---
  65. ;jmp .end_skin
  66. ;---;---;---
  67.  
  68.         stdcall get_obj_text_col,[obj_m_win],1
  69.         stdcall conv_str_to_int,edx ;eax = window style
  70.         cmp eax,3
  71.         jl .end_skin
  72.                 stdcall [buf2d_bit_blt], buf_fon, 0,0, buf_skin1 ;«¥¢ë© ᪨­
  73.                 mov edi,buf_skin1
  74.                 mov eax,buf2d_w ;eax - ¯®§¨æ¨ï ¤«ï à¨á®¢ ­¨ï á।­¥£® ᪨­ 
  75.                 mov edi,buf_skin2
  76.                 mov ebx,buf2d_w ;ebx - è¨à¨­  «¥¢®£® ᪨­ 
  77.                 sub ecx,ebx ;®â­¨¬ ¥¬ ®â è¨à¨­ë ®ª­  è¨à¨­ã á।­¥£® ᪨­ 
  78.                 @@:
  79.                         stdcall [buf2d_bit_blt], buf_fon, eax,0, buf_skin2 ;¯à®à¨á®¢ª  á।­¥£® ᪨­ 
  80.                         add eax,ebx
  81.                         cmp eax,ecx ;áà ¢­¨¢ ¥¬ ¯®§¨æ¨î á।­¥£® ᪨­  á è¨à¨­®© ®ª­ 
  82.                         jl @b
  83.  
  84.                 ;4-width
  85.                 stdcall get_obj_text_col,[obj_m_win],4 ;edx = offset
  86.                 stdcall conv_str_to_int,edx
  87.                 mov edi,buf_skin3
  88.                 sub eax,buf2d_w ;®â­¨¬ ¥¬ è¨à¨­ã ¯à ¢®£® ᪨­ 
  89.                 stdcall [buf2d_bit_blt], buf_fon, eax,0, buf_skin3 ;¯à®à¨á®¢ª  ¯à ¢®£® ᪨­ 
  90.         .end_skin:
  91.  
  92.         ;à¨á㥬 £à ä¨ç¥áª¨¥ í«¥¬¥­âë
  93.         mov edx,C_BUT
  94.         stdcall draw_arr_objects, edx,draw_obj_but
  95.         mov edx,C_EDB
  96.         stdcall draw_arr_objects, edx,draw_obj_edit
  97.         mov edx,C_CHB
  98.         stdcall draw_arr_objects, edx,draw_obj_check
  99.         mov edx,C_DTT
  100.         stdcall draw_arr_objects, edx,draw_obj_text
  101.         mov edx,C_REC
  102.         stdcall draw_arr_objects, edx,draw_obj_rect_f13
  103.  
  104.         .end_draw:
  105. popad
  106.         ret
  107.  
  108. ;äã­ªæ¨ï à¨áã¥â ¬ áá¨¢ë ®¯à¥¤¥«¥­­ëå í«¥¬¥­â®¢
  109. align 4
  110. proc draw_arr_objects, obj_t:dword,p_fun_draw:dword
  111. push eax ebx
  112.         stdcall find_obj_in_file,[obj_t] ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®¡ê¥ªâ 
  113.         cmp eax,0
  114.         je .end_draw_o
  115.                 mov ebx,[p_fun_draw]
  116.                 stdcall ebx,eax
  117.                 @@:
  118.                         stdcall find_obj_in_file_next,[obj_t] ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ®¡ê¥ªâ 
  119.                         cmp eax,0
  120.                         je .end_draw_o
  121.                                 stdcall ebx,eax
  122.                 jmp @b
  123.         .end_draw_o:
  124. pop ebx eax
  125.         ret
  126. endp
  127.  
  128. ;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ª­®¯ª¨, ¢ ®ª­¥ ª®­áâàãªâ®à 
  129. align 4
  130. proc draw_obj_but, p_obj:dword
  131. locals
  132.         coor_x dd ?
  133.         coor_y dd ?
  134. endl
  135.         pushad
  136.                 mov ebx,dword[p_obj]
  137.                 ;1,2,3,4,5 - x,y,w,h,color
  138.  
  139.                 stdcall get_obj_text_col,ebx,1
  140.                 stdcall conv_str_to_int,edx
  141.                 mov [coor_x],eax
  142.                 stdcall get_obj_text_col,ebx,2
  143.                 stdcall conv_str_to_int,edx
  144.                 mov [coor_y],eax
  145.                 move_to_skin [coor_x],[coor_y]
  146.                 stdcall get_obj_text_col,ebx,3
  147.                 stdcall conv_str_to_int,edx
  148.                 mov edi,eax
  149.                 stdcall get_obj_text_col,ebx,4
  150.                 stdcall conv_str_to_int,edx
  151.                 mov ecx,eax
  152.                 stdcall get_obj_text_col,ebx,5
  153.                 stdcall conv_str_to_int,edx
  154.                 test_bool_prop ebx,BIT_MOD_BUT_NFON
  155.                 jc .no_draw_fon
  156.                         stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax
  157.                         jmp @f
  158.                 .no_draw_fon: ;­¥ ¯à®à¨á®¢ë¢ ¥¬ ª­®¯ªã
  159.                         stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],edi,ecx,eax
  160.                 @@:
  161.         popad
  162.         ret
  163. endp
  164.  
  165. ;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ⥪á⮢®£® ¯®«ï, ¢ ®ª­¥ ª®­áâàãªâ®à 
  166. align 4
  167. proc draw_obj_edit, p_obj:dword
  168. locals
  169.         coor_x dd ?
  170.         coor_y dd ?
  171.         col_txt dd ? ;梥â ⥪âá 
  172. endl
  173.         pushad
  174.                 mov ebx,dword[p_obj]
  175.                 ;1,2,3,4,...,6,...8,...,10 - w,x,y,col_fon,...,col_frame,...,col_txt,...,txt
  176.  
  177.                 stdcall get_obj_text_col,ebx,2
  178.                 stdcall conv_str_to_int,edx
  179.                 mov [coor_x],eax
  180.                 stdcall get_obj_text_col,ebx,3
  181.                 stdcall conv_str_to_int,edx
  182.                 mov [coor_y],eax
  183.                 move_to_skin [coor_x],[coor_y]
  184.                 stdcall get_obj_text_col,ebx,1
  185.                 stdcall conv_str_to_int,edx
  186.                 mov ecx,eax
  187.                 stdcall get_obj_text_col,ebx,6
  188.                 stdcall conv_str_to_int,edx
  189.                 stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
  190.                         ecx,15, eax
  191.  
  192.                 inc dword[coor_x]
  193.                 inc dword[coor_y]
  194.                 sub ecx,2
  195.                 stdcall get_obj_text_col,ebx,4
  196.                 stdcall conv_str_to_int,edx
  197.                 stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
  198.                         ecx,13, eax
  199.  
  200.                 stdcall get_obj_text_col,ebx,8
  201.                 stdcall conv_str_to_int,edx
  202.                 mov [col_txt],eax
  203.                 add [coor_x],2-1 ;ᬥ頥¬ ª®®à¤¨­ âã, çâ®-¡ë
  204.                 add [coor_y],4-1 ;⥪áâ ¡ë« ¢ ¯®«¥ ¢ë஢­¥­
  205.                 stdcall get_obj_text_col,ebx,10
  206.                 stdcall [buf2d_draw_text], buf_fon, buf_font,edx,dword[coor_x],dword[coor_y],\
  207.                         dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
  208.  
  209.         popad
  210.         ret
  211. endp
  212.  
  213. ;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ä« ¦ª , ¢ ®ª­¥ ª®­áâàãªâ®à 
  214. align 4
  215. proc draw_obj_check, p_obj:dword
  216. locals
  217.         coor_x dd ?
  218.         coor_y dd ?
  219.         ot_txt dd ? ;®âáâ㯠¤«ï ⥪áâ 
  220.         size_w dd ? ;à §¬¥à ª¢ ¤à â¨ª  w
  221.         size_h dd ? ;à §¬¥à ª¢ ¤à â¨ª  h
  222.         col_txt dd ? ;梥â ⥪âá 
  223. endl
  224.         pushad
  225.                 mov ebx,dword[p_obj]
  226.                 ;1,2,3,4,5, 6,7,8, 9 - ot_x,ot_y,w,h,ot_w_txt, col_fon,col_frame,col_txt, txt
  227.  
  228.                 stdcall get_obj_text_col,ebx,1 ;ot_x
  229.                 stdcall conv_str_to_int,edx
  230.                 mov [coor_x],eax
  231.                 stdcall get_obj_text_col,ebx,2 ;ot_y
  232.                 stdcall conv_str_to_int,edx
  233.                 mov [coor_y],eax
  234.                 move_to_skin [coor_x],[coor_y]
  235.                 stdcall get_obj_text_col,ebx,5 ;ot_w_txt
  236.                 stdcall conv_str_to_int,edx
  237.                 mov [ot_txt],eax
  238.                 stdcall get_obj_text_col,ebx,3 ;w
  239.                 stdcall conv_str_to_int,edx
  240.                 dec eax ;à §¬¥à ¬¥­ìè¥ ­  1 ¯¨ªá¥«ì
  241.                 mov [size_w],eax
  242.                 stdcall get_obj_text_col,ebx,4 ;h
  243.                 stdcall conv_str_to_int,edx
  244.                 dec eax ;à §¬¥à ¬¥­ìè¥ ­  1 ¯¨ªá¥«ì
  245.                 mov [size_h],eax
  246.                 stdcall get_obj_text_col,ebx,7 ;col_frame
  247.                 stdcall conv_str_to_int,edx
  248.                 stdcall [buf2d_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
  249.                         dword[size_w],dword[size_h], eax
  250.  
  251.                 ;§ «¨¢ª  ä®­  checkbox- 
  252.                 inc dword[coor_x]
  253.                 inc dword[coor_y]
  254.                 sub dword[size_w],2
  255.                 sub dword[size_h],2
  256.                 stdcall get_obj_text_col,ebx,6 ;col_fon
  257.                 stdcall conv_str_to_int,edx
  258.                 stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
  259.                         dword[size_w],dword[size_h], eax
  260.  
  261.                 test_bool_prop ebx,BIT_MOD_CHE
  262.                 jnc @f
  263.                         ;à¨á®¢ ­¨¥ ®â¬¥âª¨ ¢ checkbox-¥
  264.                         inc dword[coor_x]
  265.                         inc dword[coor_y]
  266.                         sub dword[size_w],2
  267.                         sub dword[size_h],2
  268.                         stdcall get_obj_text_col,ebx,7 ;col_frame
  269.                         stdcall conv_str_to_int,edx
  270.                         stdcall [buf2d_filled_rect_by_size], buf_fon, dword[coor_x],dword[coor_y],\
  271.                                 dword[size_w],dword[size_h], eax
  272.                 @@:
  273.  
  274.                 ;¢®áâ ­ ¢«¨¢ ¥¬ ¯®«®¦¥­¨¥ ¨ à §¬¥àë
  275.                 stdcall get_obj_text_col,ebx,1 ;ot_x
  276.                 stdcall conv_str_to_int,edx
  277.                 mov [coor_x],eax
  278.                 stdcall get_obj_text_col,ebx,2 ;ot_y
  279.                 stdcall conv_str_to_int,edx
  280.                 mov [coor_y],eax
  281.                 move_to_skin [coor_x],[coor_y]
  282.                 stdcall get_obj_text_col,ebx,3 ;w
  283.                 stdcall conv_str_to_int,edx
  284.                 dec eax ;à §¬¥à ¬¥­ìè¥ ­  1 ¯¨ªá¥«ì
  285.                 mov [size_w],eax
  286.                 stdcall get_obj_text_col,ebx,4 ;h
  287.                 stdcall conv_str_to_int,edx
  288.                 dec eax ;à §¬¥à ¬¥­ìè¥ ­  1 ¯¨ªá¥«ì
  289.                 mov [size_h],eax
  290.  
  291.                 stdcall get_obj_text_col,ebx,8 ;col_txt
  292.                 stdcall conv_str_to_int,edx
  293.                 mov [col_txt],eax
  294.                 mov eax,[coor_x]
  295.                 add eax,[size_w]
  296.                 add eax,[ot_txt] ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ⥪á⮢®© ¯®¤¯¨á¨
  297.  
  298.                 test_bool_prop ebx,BIT_MOD_CHE_T
  299.                 jc .end_txt_align ;if text aligment = top
  300.  
  301.                 test_bool_prop ebx,BIT_MOD_CHE_M
  302.                 jnc @f
  303.                         shl [coor_y],1 ;㬭®¦ ¥¬ ­  2
  304.                         mov ecx,[size_h]
  305.                         add [coor_y],ecx ;¤®¡ ¢«ï¥¬ ¢ëá®âã checkbox
  306.                         sub [coor_y],9 ;®â­¨¬ ¥¬ ¢ëá®âã ᨬ¢®« 
  307.                         shr [coor_y],1 ;¤¥«¨¬ ­  ¯®«ã稢襥áï 2, ¯®«ãç ¥¬ ®âáâ㯠¤«ï áâ®ï饣® ¯® 業âàã ⥪áâ 
  308.                         jmp .end_txt_align
  309.                 @@:
  310.  
  311.                 test_bool_prop ebx,BIT_MOD_CHE_B
  312.                 jnc @f
  313.                         mov ecx,[size_h]
  314.                         add [coor_y],ecx ;¤®¡ ¢«ï¥¬ ¢ëá®âã checkbox
  315.                         sub [coor_y],9 ;®â­¨¬ ¥¬ ¢ëá®âã ᨬ¢®« 
  316.                                 ;¯®«ãç ¥¬ ®âáâ㯠¤«ï áâ®ï饣® á­¨§ã ⥪áâ 
  317.                 @@:
  318.                 .end_txt_align:
  319.  
  320.                 stdcall get_obj_text_col,ebx,9 ;txt
  321.                 stdcall [buf2d_draw_text], buf_fon, buf_font,edx,eax,dword[coor_y],\
  322.                         dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
  323.         popad
  324.         ret
  325. endp
  326.  
  327. ;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ⥪á⮢®© ¯®¤¯¨á¨, ¢ ®ª­¥ ª®­áâàãªâ®à 
  328. align 4
  329. proc draw_obj_text, p_obj:dword
  330. locals
  331.         coor_x dd ?
  332.         coor_y dd ?
  333.         col_txt dd ? ;梥â ⥪âá 
  334. endl
  335.         pushad
  336.                 mov ebx,dword[p_obj]
  337.                 ;0,1,2,3,... - txt,x,y,col_txt,...
  338.  
  339.                 stdcall get_obj_text_col,ebx,1
  340.                 stdcall conv_str_to_int,edx
  341.                 mov [coor_x],eax
  342.                 stdcall get_obj_text_col,ebx,2
  343.                 stdcall conv_str_to_int,edx
  344.                 mov [coor_y],eax
  345.                 move_to_skin [coor_x],[coor_y]
  346.  
  347.                 stdcall get_obj_text_col,ebx,3
  348.                 stdcall conv_str_to_int,edx
  349.                 mov [col_txt],eax
  350.  
  351.                 stdcall get_obj_text_col,ebx,0
  352.                 stdcall [buf2d_draw_text], buf_fon, buf_font,edx,dword[coor_x],dword[coor_y],\
  353.                         dword[col_txt] ;à¨á㥬 áâபã á ⥪á⮬
  354.         popad
  355.         ret
  356. endp
  357.  
  358. ;äã­ªæ¨ï à¨áã¥â ®¡ê¥ªâ ¯àאַ㣮«ì­¨ª  (á¨á¨â. ä. 13)
  359. align 4
  360. proc draw_obj_rect_f13, p_obj:dword
  361. locals
  362.         coor_x dd ?
  363.         coor_y dd ?
  364.         color dd ? ;梥â ⥪âá 
  365. endl
  366.         pushad
  367.                 mov ebx,dword[p_obj]
  368.                 ;0,1,2,3,4 - color,x,y,w,h
  369.  
  370.                 stdcall get_obj_text_col,ebx,1
  371.                 stdcall conv_str_to_int,edx
  372.                 mov [coor_x],eax
  373.                 stdcall get_obj_text_col,ebx,2
  374.                 stdcall conv_str_to_int,edx
  375.                 mov [coor_y],eax
  376.                 move_to_skin [coor_x],[coor_y]
  377.  
  378.                 stdcall get_obj_text_col,ebx,0
  379.                 stdcall conv_str_to_int,edx
  380.                 mov [color],eax
  381.  
  382.                 stdcall get_obj_text_col,ebx,3
  383.                 stdcall conv_str_to_int,edx
  384.                 mov ecx,eax
  385.  
  386.                 stdcall get_obj_text_col,ebx,4
  387.                 stdcall conv_str_to_int,edx
  388.                 mov esi,eax
  389.  
  390.                 stdcall [buf2d_filled_rect_by_size], buf_fon,\
  391.                         dword[coor_x],dword[coor_y],ecx,esi,dword[color]
  392.         popad
  393.         ret
  394. endp
  395.