Subversion Repositories Kolibri OS

Rev

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

  1. ; í«¥¬¥­â Optionbox ¤«ï ¡¨¡«¨®â¥ª¨ box_lib.obj
  2. ; ­  ª®¤ ¯à¨¬¥­¥­  GPL2 «¨æ¥­§¨ï
  3. ; ä ©« ᮧ¤ ­ 13.02.2009 <Lrz>
  4. ; ¯®á«¥¤­ïï ¬®¤¨ä¨ª æ¨ï 12.09.2017 IgorA
  5.  
  6. align 16
  7. option_box_draw:
  8.         pusha
  9.  
  10.         mov   eax,dword[esp+36]
  11. @@:
  12.         mov   edi,dword[eax]
  13.         test  edi,edi
  14.         je    option_check
  15.         call  option_box_draw_box
  16.         add   eax,4
  17.         jmp   @b
  18.  
  19. option_check:
  20.         mov   eax,dword[esp+36]
  21. @@:
  22.         mov   edi,dword[eax]
  23.         test  edi,edi
  24.         je    @f
  25.  
  26.         mov   ebx,dword[edi]
  27.         mov   ebx,dword[ebx]
  28.         cmp   edi,ebx
  29.         jne   .clear_op
  30.  
  31.         pusha
  32.         call  option_box_draw_op
  33.         popa
  34.         add   eax,4
  35.         jmp   @b
  36.  
  37. .clear_op:
  38.         pusha
  39.         call  option_box_clear_op
  40.         popa
  41.         add   eax,4
  42.         jmp   @b
  43.  
  44. @@:
  45.         popa
  46.         ret 4
  47.  
  48.  
  49. align 16
  50. option_box_mouse:
  51.         pusha
  52.         mcall SF_MOUSE_GET,SSF_BUTTON
  53.         test  eax,eax
  54.         jnz @f
  55.         popa
  56.         ret 4
  57.  
  58. @@:
  59.         mov   eax,dword[esp+36]
  60. @@:
  61.         mov   edi,dword[eax]
  62.         test  edi,edi
  63.         je    option_check
  64.         call  option_box_mouse_op
  65.         add   eax,4
  66.         jmp   @b
  67.  
  68. align 16
  69. option_box_draw_box:
  70.         pusha   ;á®åà ­¨¬ ¢á¥ ॣ¨áâàë
  71.  
  72.         movzx ebx,word op_left
  73.         shl   ebx,16
  74.         add   ebx,dword op_size
  75.         movzx ecx,word op_top
  76.         shl   ecx,16
  77.         add   ecx,dword op_size
  78.         mcall SF_DRAW_RECT,,,op_border_color ;à¨á㥬 à ¬ªã
  79.  
  80.         add   ebx,1 shl 16 - 2
  81.         add   ecx,1 shl 16 - 2
  82.         mcall ,,,op_color ;§ ªà è¨¢ ¥¬ ¢­ãâ७­®á⨠祪¡®ªá 
  83.  
  84. ;       mov   eax,dword option_group
  85. ;       mov   eax,[eax]
  86. ;       cmp   eax,edi
  87. ;       jne   @f
  88. ;       call  option_box_draw_op  ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  89.  
  90.  
  91. ;----------------------------
  92. ;à áç¥â ªã¤  ¡ã¤¥â ¯à®¨§¢¥¤¥­ ¢ë¢®¤ ⥪áâ 
  93. ;----------------------------
  94. @@:
  95.         movzx ebx,word op_left ;§ £à㧨âì §­ ç¥­¨¥ å ¤«ï 祪 ¡®ªá 
  96.         add   ebx,dword op_size
  97.         add   ebx,dword op_text_margin ;¤®¡ ¢¨âì à §¬¥à áâ®à®­ë ¨ à ááâ®ï­¨¥ ­  ª®â®à®¬ ­ ç­¥âáï ¢ë¢®¤ ⥪áâ 
  98.         shl   ebx,16       ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  99.         mov   bx,word op_top ;§ £à㧨¬ §­ ç¥­¨¥ ¯® y
  100.         mov   eax,op_size
  101.         shr   eax,1
  102.         add   eax,4
  103.         add   ebx,eax
  104.         sub   ebx,7        ;¤®¡ ¢¨¬ §­ ç¥­¨¥ ¤«¨­ë áâ®à®­ë -9+2
  105.         mov   esi,dword op_text_length
  106.         mcall SF_DRAW_TEXT,,op_text_color,op_text_ptr ;‚뢮¤ ­ ¤¯¨á¨ ­  ª ­¢ã
  107.         popa               ;¢®ááâ ­®¢¨âì §­ ç¥­¨ï ॣ¨áâ஢ ¨§ á⥪ 
  108.         ret                ;¢ë©¤¥¬ ¨§ ¯à®æ¥¤ãàë
  109.  
  110. option_box_clear_op:   ;®ç¨á⪠ 祪 ¡®ªá 
  111.         mov   edx,dword op_color ;梥⠢­ãâਠ祪 ¡®ªá 
  112.         jmp   @f         ;¡¥§ãá«®¢­ë© ¯à릮ª ­  ­¨¦­îî ¬¥âªã @@
  113.  
  114.  
  115. option_box_draw_op:    ;­ à¨á®¢ âì ¢ª«î祭­ë© 祪 ¡®ªá
  116.         mov   edx,dword op_border_color ;§ £à㧨âì 梥â
  117. @@:
  118.         movzx ebx,word op_left ;§ £à㧨âì ª®®à¤¨­ âã ¯® å
  119.         mov   eax,dword op_size
  120.         mov   bp,ax
  121.         shr   eax,2
  122.         push  ax
  123.  
  124.         push  ax
  125.         add   ebx,eax          
  126.         shl   ebx,16       ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  127.         pop   ax
  128.         lea   eax,[eax*2]
  129.         sub   bp,ax        ;á®åà ­¨¬ ॣ¨áâà bx ¢ ॣ¨áâॠ㪠§ â¥«ï ¡ §ë
  130.         mov   bx,bp
  131.  
  132.         movzx ecx,word op_top ;§ £à㧨âì ª®®à¤¨­ âã ¯® ã
  133.         pop   ax
  134.         add   cx,ax        
  135.         shl   ecx,16       ;ᤢ¨­¥¬ ­  16 à §à冷¢ ¢ «¥¢® (㬭®¦¨¬ ­  65536)
  136.         mov   cx,bp        ;§ £à㧨¬ §­ ç¥­¨ï ॣ¨áâà  ãª § â¥«ï ¡ §ë ¢ cx
  137.         mcall SF_DRAW_RECT ;¢ë¢®¤ ¯®«®áë â.¥. ¯® áã⨠¯àאַ㣮«ì­¨ª , ª®â®àë© ®â®¡à ¦ ¥â ¢ª«î祭­ë© ª®¬¯®­¥­â 祪 ¡®ªá
  138.         ret                ;¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
  139.  
  140.  
  141. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  142. ;Ž¡à ¡®â稪 mouse
  143. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  144. align 16
  145. option_box_mouse_op:                 ;®¡à ¡®âª  ¬ëè¨
  146. pusha
  147.         mov   esi,dword op_text_length ;§ £à㧨âì ª®«-¢® ᨬ¢®«®¢ ¢ ⥪á⮢®© áâப¥
  148.         imul  esi,6                ;¨«¨ ¬®¦­® ¨ â ª 㬭®¦¨âì ­  6
  149.         add   esi,dword op_text_margin ;¤®¡ ¢¨âì 3 - à ááâ®ï­¨¥ ®â 祪 ¡®ªá  ¤® ­ ¤¯¨á¨
  150.  
  151.         mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;¯®«ãç¨âì ª®®à¤¨­ âë ªãàá®à  ®â­®á¨â¥«ì­® ®ª­ 
  152.  
  153.         movzx ebx,word op_top      ;§ £à㧨âì ¢ bx §­ ç¥­¨¥ ª®®à¤¨­ âë ã
  154.         cmp   ax,bx                ;áà ¢­¨âì á á ª®®à¤¨­ â®© ªãàá®à 
  155.         jl    option_box_mouse_end ;SF <> OF ¥á«¨ ¬¥­ìè¥
  156.         add   ebx,dword op_size    ;¤®¡ ¢¨âì à §¬¥à
  157.         cmp   ax,bx                ;áà ¢­¨âì
  158.         jg    option_box_mouse_end ;ZF = 0 ¨ SF = OF ¥á«¨ ¡®«ìè¥
  159.  
  160.         shr   eax,16               ;à §¤¥«¨¬ ­  65536 ¨«¨ ¯à®á⮠ᤢ¨­¥¬ ¡¨âë ­  16 §­ ç¥­¨©
  161.         movzx ebx,word op_left     ;¯à®¨§¢¥¤¥¬  ­ «®£¨ç­®¥ áà ¢­¥­¨¥
  162.         cmp   ax,bx                ;áà ¢­¨âì ॣ¨áâàë
  163.         jl    option_box_mouse_end ;¥á«¨ ¬¥­ìè¥
  164.         add   ebx,dword op_size    ;¤®¡ ¢¨âì ¤«¨­ã áâ®à®­ë ¯àאַ㣮«ì­¨ª 
  165.         add   ebx,esi              ;“ç¥áâì ¢ §­ ç¥­¨¨ ¯® å ¥é¥ ¨ ¤«¨­ã ­ ¤¯¨á¨ ª 祪¡®ªáã
  166.         cmp   ax,bx                ;áâà ¢­¨âì ॣ¨áâàë
  167.         jg    option_box_mouse_end ;¥á«¨ ¡®«ìè¥
  168.         mov   eax,dword option_group
  169.         mov   [eax],edi
  170.  
  171. option_box_mouse_end:
  172.         popa                         ;¢®ááâ ­®¢¨âì ॣ¨áâàë ¨§ á⥪ 
  173.         ret                          ;¢ë©â¨
  174.