Subversion Repositories Kolibri OS

Rev

Rev 1476 | Blame | Last modification | View Log | Download | RSS feed

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