Subversion Repositories Kolibri OS

Rev

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

  1. align 4
  2. draw_obj_info: ;®ª­® ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  3.         mov eax,13 ;rect
  4.         mov edx,WND_CAPT_COLOR
  5.         mov ebx,[wndObjI.left]
  6.         shl ebx,16
  7.         add ebx,[wndObjI.width]
  8.         mov ecx,[wndObjI.top]
  9.         add ecx,[recMain.top]
  10.         shl ecx,16
  11.         add ecx,[wndObjI.height]
  12.         sub ecx,[recMain.top]
  13.         mov edx,0xffffff ;0x80ffffff
  14.         int 0x40 ;¯àאַ㣮«ì­¨ª ¤«ï ®ª­ 
  15.  
  16.         mov ecx,[wndObjI.top] ;draw caption
  17.         shl ecx,16
  18.         add ecx,[recMain.top]
  19.         mov edx,WND_CAPT_COLOR
  20.         int 0x40
  21.  
  22.         mov edx,[foc_obj] ;¡¥à¥¬ 㪠§ â¥«ì ­  ®¡ê¥ªâ
  23.         cmp edx,0
  24.         je .exit_fun
  25. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26.     pushad
  27.     ;draw caption wndObjI
  28.     mov eax,4 ;¯®¤¯¨áì - ­ §¢ ­¨¥ ®¡ê¥ªâ 
  29.  
  30.     mov bl,[edx]
  31.     call find_obj_in_opt
  32.     mov edx,edi
  33.  
  34.     mov ebx,[wndObjI.left]
  35.     add ebx,[recMain.left]
  36.     add ebx,4
  37.     shl ebx,16
  38.     add ebx,[wndObjI.top]
  39.     add ebx,4
  40.     mov ecx,0xc0d000ff
  41.     mov edi,WND_CAPT_COLOR
  42.     add edx,obj_opt.info-obj_opt
  43.     int 0x40
  44.  
  45.         mov eax,8 ;ª­®¯ª  ¤«ï á®åà ­¥­¨ï ¨§¬¥­¥­¨©
  46.     mov ebx,[wndObjI.left]
  47.         add ebx,119
  48.     shl ebx,16
  49.         add ebx,18
  50.         mov ecx,[wndObjI.top]
  51.         add ecx,1
  52.         shl ecx,16
  53.         add ecx,18
  54.         mov edx,10
  55.         mov esi,0xd040
  56.         int 0x40
  57.  
  58.         ror ebx,16 ;¢ëç¨á«ï¥¬ ª®®à¤¨­ âë ¤«ï ¨ª®­ª¨
  59.         ror ecx,16
  60.         and ebx,0xffff
  61.         and ecx,0xffff
  62.         inc ebx
  63.         inc ecx
  64.         stdcall draw_icon, 17,ebx,ecx ;17 - save
  65.  
  66.         mov edi,edit2
  67.         .cycle:
  68.                 stdcall [edit_box_draw], edi ;à¨á㥬 ¯®«ï ᮠ᢮©á⢠¬¨ ®¡ê¥ªâ 
  69.                 add edi,ed_struc_size
  70.                 cmp edi,prop_wnd_edits_end
  71.                 jl .cycle
  72.  
  73.     popad
  74. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  75.  
  76.         xor ebx,ebx ;­®¬¥à ¯®«ï
  77.         .draw_column:
  78.                 mov eax,ebx
  79.                 imul eax,[recMain.height]
  80.                 add eax,[recMain.top]
  81.                 add eax,[wndObjI.top]
  82.                 stdcall draw_icon_obj,[edx],ebx,eax
  83.  
  84.                 inc ebx
  85.                 cmp ebx,MAX_OPT_FIELDS
  86.         jl .draw_column
  87.         .exit_fun:
  88.         ret
  89.  
  90. ;¯®¤­¨¬ ¥¬ ®¡ê¥ªâ ¢¢¥àå ¯® ᯨáªã
  91. align 4
  92. but_obj_move_up:
  93.         stdcall [tl_node_move_up], tree2
  94.         ret
  95.  
  96. ;®¯ã᪠¥¬ ®¡ê¥ªâ ¢­¨§ ¯® ᯨáªã
  97. align 4
  98. but_obj_move_down:
  99.         stdcall [tl_node_move_down], tree2
  100.         ret
  101.  
  102. ;ª®¯¨à㥬 ®¡ê¥ªâ
  103. align 4
  104. but_obj_copy:
  105. push ecx esi edi
  106.         stdcall [tl_node_get_data], tree2
  107.         pop esi
  108.         mov edi,[tree2.data_info] ;¤ ­­ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ­¨ï
  109.         xor ecx,ecx
  110.         mov cx,word[tree2.info_size]
  111.         cld
  112.         rep movsb
  113. pop edi esi ecx
  114.         ret
  115.  
  116. ;¢áâ ¢«ï¥¬ ®¡ê¥ªâ
  117. align 4
  118. but_obj_paste:
  119. push eax ebx ecx edi
  120.                 mov eax,[tree2.data_info] ;¤ ­­ë¥ 0-£® 㧫 , ¨á¯®«ì§ã¥¬ ¤«ï ª®¯¨à®¢ ­¨ï
  121.                 mov bl,byte[eax]
  122.                 call find_obj_in_opt
  123.                 xor ecx,ecx
  124.                 mov cx,word[edi+obj_opt.img-obj_opt] ;cx - ¨­¤¥ªá £« ¢­®© ¨ª®­ª¨ ¤®¡ ¢«ï¥¬®£® ®¡ê¥ªâ 
  125.                 shl ecx,16
  126.                 stdcall [tl_node_add], eax, ecx, tree2 ;¤®¡ ¢«ï¥¬ ®¡ê¥ªâ
  127.                 stdcall [tl_draw], tree2
  128. pop edi ecx ebx eax
  129.         ret
  130.  
  131. ;®¡­®¢«¥­¨¥ ®¡ê¥ªâ®¢ ¢ tree2, ¯® §­ ç¥­¨ï¬ ⥪á⮢ëå ¯®«¥©
  132. ;äã­ªæ¨ï ®¡à â­ ï ª ¤ ­­®© on_file_object_select
  133. align 4
  134. but_element_change:
  135.         ;foc_obj - 㪠§ â¥«ì ­  ¯®á«¥¤­¨© ¢ë¡à ­­ë© 㧥« ¢ tree2
  136.         cmp dword[foc_obj],0
  137.         je @f
  138.                 pushad
  139.                 xor ebx,ebx
  140.                 mov edi,edit2
  141.                 .cycle:
  142.                         call get_obj_win_param
  143.                         inc ebx
  144.                         add edi,ed_struc_size
  145.                         cmp edi,prop_wnd_edits_end
  146.                         jl .cycle
  147.                 popad
  148.         @@:
  149.         call draw_constructor ;®¡­®¢«ï¥¬ ®ª­® ª®­áâàãªâ®à 
  150.         call draw_window
  151.         ret
  152.  
  153. ;input:
  154. ; ebx - property column
  155. ; edi - pointer to property editbox
  156. align 4
  157. get_obj_win_param:
  158.         pushad
  159.                 mov esi,ed_text
  160.                 stdcall get_obj_text_col, [foc_obj], ebx ;edx - ᬥ饭¨¥ ¤«ï ⥪áâ 
  161.                 stdcall get_obj_text_len_col, [foc_obj], ebx ;eax - ¤«¨­­  ¯®«ï
  162.                 cld
  163.                 mov edi,edx
  164.                 mov ecx,eax
  165.                 rep movsb
  166.         popad
  167.         ret
  168.  
  169. ;input:
  170. ;  obj - pointer to object
  171. ;  ind - column index
  172. ;output:
  173. ;  edx + offset
  174. ;  edx = 0 if not text
  175. align 4
  176. proc get_obj_text_col, obj:dword, ind:dword
  177.         mov edx,dword[obj]
  178.         inc edx ;goto text
  179. push ebx
  180.         mov ebx,dword[ind]
  181.         cmp bx,0
  182.         je .end_fun
  183.  
  184.         shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ­®¬¥à ¨áª®¬®© ª®«®­ª¨
  185.         mov bl,byte[edx-1] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
  186.  
  187.         push ecx edi
  188.         call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
  189.  
  190.         add edi,obj_opt.Col-obj_opt
  191.         dec bh
  192.         and ebx,0xff00
  193.         shr ebx,7 ;ᤢ¨£ ¥¬ ­  7, â.ª. ­ã¦­® §­ ç¥­¨¥ bh 㬭®¦¥­­®¥ ­  2
  194.         add edi,ebx ;+ ¡ë¢è¥¥ bh*2
  195.         xor ecx,ecx
  196.         mov cx,word[edi] ;ecx - ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï
  197.         add edx,ecx
  198.  
  199.         cmp cx,0
  200.         jg @f
  201.                 mov edx,0 ;not text
  202.         @@:
  203.         cmp cx,MAX_LEN_OBJ_TXT
  204.         jl @f
  205.                 mov edx,0 ;not text
  206.         @@:
  207.  
  208.         pop edi ecx
  209.         .end_fun:
  210. pop ebx
  211.         ret
  212. endp
  213.  
  214. ;input:
  215. ;  obj - 㪠§ â¥«ì ­  ®¡ê¥ªâ
  216. ;  ind - ­®¬¥à ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
  217. ;output:
  218. ;  eax - ¤«¨­­  ⥪á⮢®£® ¯®«ï ¢­ãâਠ®¡ê¥ªâ 
  219. align 4
  220. proc get_obj_text_len_col, obj:dword, ind:dword
  221.         xor eax,eax
  222. push ebx
  223.         mov ebx,dword[ind]
  224.         shl ebx,8 ;¢ bh ¯®¯ ¤ ¥â ­®¬¥à ¨áª®¬®© ª®«®­ª¨
  225.         mov eax,dword[obj]
  226.         mov bl,byte[eax] ;¢ bl ¯®¯ ¤ ¥â ª®¤ ®¡ê¥ªâ 
  227.         xor eax,eax
  228.  
  229.         push edi
  230.         call find_obj_in_opt ;¨é¥¬ áâàãªâãàã á ®¯æ¨ï¬¨ ®¡ê¥ªâ 
  231.  
  232.         add edi,obj_opt.Col-obj_opt
  233.         and ebx,0xff00
  234.         shr ebx,7 ;ᤢ¨£ ¥¬ ­  7, â.ª. ­ã¦­® §­ ç¥­¨¥ bh 㬭®¦¥­­®¥ ­  2
  235.         add edi,ebx ;+ ¡ë¢è¥¥ bh*2
  236.  
  237.         mov ax,word[edi] ;eax - ᤨ£ ¤«ï á«¥¤ã饣® ¯®«ï
  238.         cmp ax,0
  239.         jg @f
  240.                 mov eax,MAX_LEN_OBJ_TXT ;¯®á«¥¤­¨¥ ¯®«ï ¤«ï 㤮¡á⢠ ª®¤¨àãîâáï 0,   ­¥ MAX_LEN_OBJ_TXT, ¨á¯à ¢«ï¥¬ á¨âã æ¨î
  241.         @@:
  242.         cmp dword[ind],0
  243.         je .end_fun ;¤«ï ¯¥à¢®£® ¯®«ï ᤨ£ = 0, ¯®â®¬ã ¢ áâàãªâãॠ®­ ­¥ åà ­¨âáï, â.ª. ¨§¢¥á⥭ § à ­¥¥
  244.         sub ax,word[edi-2] ;®â­¨¬ ¥¬ ᤨ£ ¤«ï ¨áª®¬®£® ¯®«ï, ¯®«ãç ¥¬ ¤«¨­­ã ¯®«ï
  245.  
  246.         cmp word[edi-2],0
  247.         jg @f
  248.                 mov eax,0 ;¯®«¥ ¯ãá⮥, ­¥ ¨á¯®«ì§ã¥âáï
  249.         @@:
  250.         cmp ax,MAX_LEN_OBJ_TXT
  251.         jl @f
  252.                 mov eax,0 ;not text
  253.         @@:
  254.  
  255.         pop edi
  256.         .end_fun:
  257. pop ebx
  258.         ret
  259. endp
  260.  
  261. align 4
  262. proc draw_icon_obj, o_type:dword,n_col:dword, coord_y:dword
  263.         pushad
  264.         xor ebx,ebx
  265.         mov bl,byte[o_type]
  266.         call find_obj_in_opt
  267.  
  268.         add edi,obj_opt.img-obj_opt ;get index (+0)
  269.         mov ebx,[n_col]
  270.         shl ebx,1
  271.         add edi,ebx ;move index (+bh)
  272.         xor ecx,ecx
  273.         mov cx,[edi]
  274.  
  275.         cmp cx,0
  276.         jge @f
  277.                 jmp .end_fun ;error icon index
  278.         @@:
  279.  
  280.         mov ebx,bmp_icon
  281.         imul ecx,0x300
  282.         add ebx,ecx
  283.  
  284.         mov eax,7
  285.         mov ecx,0x100010 ;ecx - size:16*16
  286.         mov edx,[wndObjI.left]
  287.         add edx,3 ;®âáâ㯠®â «¥¢®£® ªà ï à ¬ª¨ ¤® ¨ª®­ª¨
  288.         shl edx,16
  289.         add edx,[coord_y]
  290.         int 0x40
  291.         .end_fun:
  292.         popad
  293.         ret
  294. endp
  295.  
  296. align 4
  297. proc draw_icon, ind:dword,coord_x:dword,coord_y:dword
  298.         pushad
  299.         mov ecx,[ind]
  300.         cmp ecx,0
  301.         jl .end_fun
  302.                 mov ebx,bmp_icon
  303.                 imul ecx,0x300
  304.                 add ebx,ecx
  305.  
  306.                 mov eax,7
  307.                 mov ecx,0x100010 ;ecx - size:16*16
  308.                 mov edx,[coord_x]
  309.                 shl edx,16
  310.                 add edx,[coord_y]
  311.                 int 0x40
  312.         .end_fun:
  313.         popad
  314.         ret
  315. endp
  316.  
  317. ;input
  318. ;  bl = cod object
  319. ;output:
  320. ;  edi = pointer to option struct
  321. align 4
  322. find_obj_in_opt:
  323.         push ecx
  324.         xor ecx,ecx ;find 'bl' in options
  325.         mov edi,obj_opt
  326.         @@:
  327.                 cmp bl,[edi] ;find
  328.                 je @f
  329.                 inc ecx
  330.                 cmp ecx,MAX_OBJ_TYPES
  331.                 je @f ;not find
  332.                 add edi,sizeof.ObjOpt
  333.                 jmp @b
  334.         @@:
  335.         pop ecx
  336.         ret
  337.  
  338.  
  339. obj_find_last dd 0 ;㪠§ â¥«ì ­  ¯®á«¥¤­¨© 㤠筮 ­ ©¤¥­­ë© ®¡ê¥ªâ,
  340.         ;­ã¦¥­ ¤«ï ã᪮७¨ï ¯®á«¥¤ã饣® ¯®¨áª 
  341.  
  342. ;¢ë室:
  343. ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
  344. align 4
  345. proc find_obj_in_file, o_type:dword
  346. push ebx esi
  347.         mov ebx,[o_type]
  348.         stdcall dword[tl_node_poi_get_info], 0,tree2
  349.         pop esi
  350.  
  351.         @@:
  352.                 cmp esi,0
  353.                 je .find_no
  354.  
  355.                 stdcall dword[tl_node_poi_get_data], esi,tree2
  356.                 pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  357.                 cmp eax,0
  358.                 je .find_no
  359.  
  360.                 cmp byte[eax],bl ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
  361.                 je .find_yes
  362.  
  363.                 stdcall dword[tl_node_poi_get_next_info], esi,tree2
  364.                 pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  365.  
  366.                 jmp @b
  367.  
  368.         .find_yes:
  369.                 mov dword[obj_find_last],esi
  370.                 jmp @f
  371.         .find_no:
  372.                 mov dword[obj_find_last],0
  373.                 xor eax,eax
  374.         @@:
  375. pop esi ebx
  376.         ret
  377. endp
  378.  
  379. ;¢ë室:
  380. ;eax - 㪠§ â¥«ì ­  áâàãªâãàã ­ ©¤¥­­®£® ®¡ê¥ªâ 
  381. align 4
  382. proc find_obj_in_file_next, o_type:dword
  383. push ebx esi
  384.         cmp dword[obj_find_last],0
  385.         je .find_no
  386.  
  387.         mov ebx,[o_type]
  388.  
  389.         stdcall dword[tl_node_poi_get_next_info], dword[obj_find_last],tree2
  390.         pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  391.  
  392.         @@:
  393.                 cmp esi,0
  394.                 je .find_no
  395.  
  396.                 stdcall dword[tl_node_poi_get_data], esi,tree2
  397.                 pop eax ;¯®«ãç ¥¬ ¤ ­­ë¥ 㧫 
  398.                 cmp eax,0
  399.                 je .find_no
  400.  
  401.                 cmp byte[eax],bl ;ᬮâਬ ®¯¨á ­ «¨ ¨áª®¬ë© ®¡ê¥ªâ ¢ 㧫¥
  402.                 je .find_yes
  403.  
  404.                 stdcall dword[tl_node_poi_get_next_info], esi, tree2
  405.                 pop esi ;¯¥à¥å®¤¨¬ ª á«¥¤ã饬ã 㧫ã
  406.  
  407.                 jmp @b
  408.  
  409.         .find_yes:
  410.                 mov dword[obj_find_last],esi
  411.                 jmp @f
  412.         .find_no:
  413.                 mov dword[obj_find_last],0
  414.                 xor eax,eax
  415.         @@:
  416. pop esi ebx
  417.         ret
  418. endp
  419.  
  420. align 4
  421. but_show_constructor:
  422.         mov byte[show_mode],0
  423.         stdcall [buf2d_draw], buf_fon
  424.         ret
  425.  
  426. align 4
  427. but_show_code:
  428.         mov byte[show_mode],1
  429.         stdcall [ted_draw], tedit0
  430.         ret
  431.  
  432. ;input:
  433. ; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
  434. ;output:
  435. ; eax - ç¨á«®
  436. align 4
  437. proc conv_str_to_int, buf:dword
  438.         xor eax,eax
  439.         push ebx esi
  440.         xor ebx,ebx
  441.         mov esi,[buf]
  442.         cmp word[esi],'0x'
  443.         je .load_digit_16
  444.  
  445.         .load_digit_10: ;áç¨â뢠­¨¥ 10-â¨ç­ëå æ¨äà
  446.                 mov bl,byte[esi]
  447.                 cmp bl,'0'
  448.                 jl @f
  449.                 cmp bl,'9'
  450.                 jg @f
  451.                         sub bl,'0'
  452.                         imul eax,10
  453.                         add eax,ebx
  454.                         inc esi
  455.                         jmp .load_digit_10
  456.         jmp @f
  457.  
  458.         .load_digit_16: ;áç¨â뢠­¨¥ 16-à¨ç­ëå æ¨äà
  459.                 add esi,2
  460.         .cycle_16:
  461.                 mov bl,byte[esi]
  462.                 cmp bl,'0'
  463.                 jl @f
  464.                 cmp bl,'f'
  465.                 jg @f
  466.                 cmp bl,'9'
  467.                 jle .us1
  468.                         cmp bl,'A'
  469.                         jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'9' ¨ <'A'
  470.                 .us1: ;á®áâ ¢­®¥ ãá«®¢¨¥
  471.                 cmp bl,'F'
  472.                 jle .us2
  473.                         cmp bl,'a'
  474.                         jl @f ;®âᥨ¢ ¥¬ ᨬ¢®«ë >'F' ¨ <'a'
  475.                         sub bl,32 ;¯¥à¥¢®¤¨¬ ᨬ¢®«ë ¢ ¢¥àå­¨© ॣ¨áâà, ¤«ï ã¯à®é¥­¨ï ¨å ¯®á«¥¤ã饩 ®¡à ¡®âª¨
  476.                 .us2: ;á®áâ ¢­®¥ ãá«®¢¨¥
  477.                         sub bl,'0'
  478.                         cmp bl,9
  479.                         jle .cor1
  480.                                 sub bl,7 ;convert 'A' to '10'
  481.                         .cor1:
  482.                         shl eax,4
  483.                         add eax,ebx
  484.                         inc esi
  485.                         jmp .cycle_16
  486.         @@:
  487.  
  488.         pop esi ebx
  489.         ret
  490. endp
  491.