Subversion Repositories Kolibri OS

Rev

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

  1. ;#___________________________________________________________________________________________________
  2. ;****************************************************************************************************|
  3. ; Program Palitra (c) Sergei Steshin (Akyltist)                                                      |
  4. ;----------------------------------------------------------------------------------------------------|
  5. ;; Charset:DOS-866 Font:Courier New Size:9pt                                                         |
  6. ;.....................................................................................................
  7. ;; compiler:     FASM 1.69.31                                                                        |
  8. ;; version:      0.3.0                                                                               |
  9. ;; last update:  08/11/2012                                                                          |
  10. ;; e-mail:       dr.steshin@gmail.com                                                                |
  11. ;.....................................................................................................
  12. ;; History:                                                                                          |
  13. ;; 0.1.0 - ¥à¢ ï ¢¥àá¨ï ¯à®£à ¬¬ë.                                                                  |
  14. ;; 0.2.0 - ˆá¯à ¢«¥­® ¯®¯ ¤ ­¨¥ ¢ á¥âªã, ¡¥à¥âáï ¡«¨¦ ©è¨© ¯® ¤¨ £®­ «¨ ¯¨ªá¥«ì.                     |
  15. ;;       - „®¡ ¢«¥­ë ¯®«§ã­ª¨, ¤«ï ॣ㫨஢ ­¨ï rgb á®áâ ¢«ïîé¨å æ¢¥â  ¨ ¢ë¢®¤ íâ¨å á®áâ ¢«ïîé¨å.   |
  16. ;;       - “¡à ­ ¢ë¢®¤ æ¢¥â  ¢ ¡¨­ à­®¬ ¢¨¤¥ (¯®ª  §  ­¥ ­ ¤®¡­®áâìî ¨ ­¥  ªâã «ì­®áâìî).            |
  17. ;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
  18. ;; 0.3.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¢¨¤®¢ 梥⮢ëå á奬 (ª­®¯ª  NEXT)                                  |
  19. ;;       - “«ãçè¥­ë ¯®«§ã­ª¨, ¯à®¨§¢®¤¨âáï ®¡à ¡®âª  ­ ¦ â¨ï à冷¬ á ¯®«§ã­ª®¬.                      |
  20. ;;       - —¨á«® á¥â®ª ¢ 梥⮢®© á奬¥ 㬥­ì襭® á 6 ¤® 4 (ªà â­®áâì 256, ¨­ ç¥ ¤ã¡«¨à®¢ ­¨¥ 梥â ).|
  21. ;;       - Œ¥«ª ï ª®á¬¥â¨ª .                                                                         |
  22. ;; 0.4.0 - „®¡ ¢«¥­® ¯¥à¥ª«î祭¨¥ ¬¥¦¤ã ¤¢ã¬ï 梥⠬¨                                                |
  23. ;;       - „®¡ ¢«¥­ ¯®«§ã­®ª ॣ㫨஢ ­¨ï ¯à®§à ç­®á⨠(¡¥§ ¢¨§ã «¨§ æ¨¨).                          |
  24. ;;       - „®¡ ¢«¥­® ¢ëà ¢­¨¢ ­¨¥ §­ ç¥­¨© rgba ¯® 業âàã, ¢ § ¢¨á¨¬®á⨠®â ¤«¨­­ë.                  |
  25. ;;       - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨.                                                                     |
  26. ;;       - ¥¡®«ìè ï ®¯â¨¬¨§ æ¨ï.                                                                    |
  27. ;; 0.5.0 - „®¡ ¢«¥­  ª­®¯ª  ᬥ­ë ä®­  à ¡®ç¥£® á⮫  (®â Leency).                                   |
  28. ;;       - „®¡ ¢«¥­® ¨§¬¥­¥­¨¥ ä®­  à ¡®ç¥£® á⮫  £à ¤¨¥­â­®© § «¨¢ª®©.                             |
  29. ;;       - Š®á¬¥â¨ç¥áª¨¥ ¯à ¢ª¨.                                                                     |
  30. ;;       - ¥¡®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï.                                                                  |
  31. ;; 0.6.0 - „®¡ ¢«¥­  ¢®§¬®¦­®áâì § ¯ã᪠ á ¯ à ¬¥âà ¬¨                                               |
  32. ;;       - „®¡ ¢«¥­ ०¨¬ H (hidden) ¯à®¨§¢®¤¨â § ¬¥­ã ä®­  à ¡®ç¥£® á⮫  £à ¤¨¥­â­®© § «¨¢ª®©.     |
  33. ;;       - ®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï.                                                                    |
  34. ;; 0.7.0 - „®¡ ¢«¥­  ¯¨¯¥âª  - ¢ë¡®à ­  á।­îî ª­®¯ªã ¬ëè¨                                          |
  35. ;; 0.7.5 -  ¦ â¨¥ ¯à ¢®© ª« ¢¨è¥© ¬ëè¨ ­  ï祩ªã á 梥⮬ ãáâ ­ ¢«¨¢ ¥â ­¥ ®á­®¢®©,   ¤®¯®«­. æ¢¥â  |
  36. ;;       - “¬¥­ì襭® ¬¥àæ ­¨¥ ¯à¨ à ¡®â¥ ¯¨¯¥âª¨                                                     |
  37. ;; 0.7.6 - „®¡ ¢«¥­ ०¨¬ B, ª®â®àë© ¯à®¨§¢®¤¨â § ¬¥­ã ä®­  à ¡®ç¥£® á⮫  è㬭®© § «¨¢ª®© (e-andrew)|
  38. ;.....................................................................................................
  39. ;; All rights reserved.                                                                              |
  40. ;;                                                                                                   |
  41. ;; Redistribution and use in source and binary forms, with or without modification, are permitted    |
  42. ;; provided that the following conditions are met:                                                   |
  43. ;;       * Redistributions of source code must retain the above copyright notice, this list of       |
  44. ;;         conditions and the following disclaimer.                                                  |
  45. ;;       * Redistributions in binary form must reproduce the above copyright notice, this list of    |
  46. ;;         conditions and the following disclaimer in the documentation and/or other materials       |
  47. ;;         provided with the distribution.                                                           |
  48. ;;       * Neither the name of the <organization> nor the names of its contributors may be used to   |
  49. ;;         endorse or promote products derived from this software without specific prior written     |
  50. ;;         permission.                                                                               |
  51. ;;                                                                                                   |
  52. ;; THIS SOFTWARE IS PROVIDED BY Sergei Steshin ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,      |
  53. ;; INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A        |
  54. ;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY DIRECT, |
  55. ;; INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED    |
  56. ;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS       |
  57. ;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT          |
  58. ;; LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  |
  59. ;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                                      |
  60. ;....................................................................................................|
  61.  
  62.  
  63. ;#___________________________________________________________________________________________________
  64. ;****************************************************************************************************|
  65. ; ‡€ƒŽ‹Ž‚ŽŠ ˆ‘Ž‹Ÿ…ŒŽƒŽ ”€‰‹€ ˆ‹Ž†…ˆŸ „‹Ÿ ŠŽ‹ˆˆ Ž‘                                             |
  66. ;----------------------------------------------------------------------------------------------------/
  67.   use32
  68.   org    0
  69.   db     'MENUET01'
  70.   dd     1,START,I_END,I_MEM,stacktop,params,sys_path
  71.  
  72.   include '../../../macros.inc'
  73.   include '../../../proc32.inc'
  74.   include '../../../KOSfuncs.inc'
  75.   include '../../../dll.inc'
  76.  
  77.   WIN_W  equ 295            ; è¨à¨­  ®ª­ 
  78.   WIN_H  equ 195            ; ¢ëá®â  ®ª­ 
  79.   WIN_X  equ 250            ; ª®®à¤¨­ â  å ®ª­ 
  80.   WIN_Y  equ 190            ; ª®®à¤¨­ â  ã ®ª­ 
  81.  
  82. panel:
  83.   file "panel.raw"
  84.  
  85. START:
  86.     mcall   SF_SYS_MISC,SSF_HEAP_INIT ; ¨­¨æ¨ «¨§ æ¨ï ªãç¨
  87.     stdcall dll.Load, @IMPORT
  88.     or      eax,eax
  89.     jnz     bexit
  90.     mcall   SF_SET_EVENTS_MASK,0x27   ; ãáâ ­ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
  91.     include 'params_init.inc'             ; ®¡à ¡®âª  ¯ à ¬¥â஢ ª®¬ ­¤­®© áâப¨
  92.  
  93. ;#___________________________________________________________________________________________________
  94. ;****************************************************************************************************|
  95. ; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰                                                        |
  96. ;----------------------------------------------------------------------------------------------------/
  97. red:
  98.     call draw_main                        ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
  99. still:
  100.     mcall   SF_WAIT_EVENT         ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  101.     cmp     eax,1                         ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  102.     je      red                           ; ¥á«¨ ¤  - ­  ¬¥âªã red
  103.     cmp     eax,2                         ; ­ ¦ â  ª« ¢¨è  ?
  104.     je      key                           ; ¥á«¨ ¤  - ­  key
  105.     cmp     eax,3                         ; ­ ¦ â  ª­®¯ª  ?
  106.     je      button                        ; ¥á«¨ ¤  - ­  button
  107.     cmp     eax,6                         ; ᮡë⨥ ®â ¬ëè¨ ¢­¥ ®ª­ 
  108.     je      mouse                         ; ¥á«¨ ¤  - ­  button
  109.     jmp     still                         ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  110. ;end_still
  111.  
  112. key:                                      ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  113.     mcall   SF_GET_KEY    ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
  114.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  115. ;end_key
  116.  
  117. mouse:
  118.     cmp     [renmode],2
  119.     jne     left
  120.     call    cyrcle_draw
  121.     jmp     center
  122.   left:
  123.     mcall   SF_MOUSE_GET,SSF_BUTTON
  124.     cmp     al,1b
  125.     jne     right
  126.     mov     [mouse_f],1
  127.     jmp     still
  128.   right:
  129.     cmp     al,10b
  130.     jne     still
  131.     mov     [mouse_f],2
  132.     jmp     still
  133.   center:
  134.     mcall   SF_MOUSE_GET,SSF_BUTTON
  135.     cmp     al,100b
  136.     jne     still
  137.     mov     [mouse_f],3
  138.     mov     [color],edx
  139.     call    draw_result
  140.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  141. ;end_mouse
  142.  
  143. button:
  144.     mcall   SF_GET_BUTTON         ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  145.     cmp     ah, 1                         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  146.     jz      bexit                         ; ¢ë室¨¬
  147.   ;®¡à ¡®âª  ª­®¯ª¨ Next
  148.     cmp     ah, 12                        ; ¥á«¨ ­ ¦ â  ª­®¯ª  NEXT
  149.     jne     next_bg                       ; ¢ë室¨¬
  150.     inc     [pnext]                       ; 㢥«¨ç¨¢ ¥¬ ¯à¨ ­ ¦ â¨¨ ­®¬¥à ¯ «¨âàë
  151.     mov     [renmode],0                   ; ¢ª«îç ¥¬ æ¢¥â®¢ë¥ á奬ë
  152.     mov     eax,[pnext]                   ; § ­®á¨¬ §­ ç¥­¨¥ ¢ ¥ å
  153.     cmp     al,6                          ; áà ¢­¨¢ ¥¬ á § ï¢«¥­­ë¬ ª®«¨ç¥á⢮¬ ¯ «¨âà
  154.     jne     next_redraw                   ; ¥á«¨ ­¥ ¡®«ìè¥ ¬ ªá¨¬ã¬  â® ­  ¢ë§®¢ ®âà¨á®¢ª¨
  155.     xor     eax,eax                       ; ¨­ ç¥ § ­ã«ï¥¬ ¯ «¨âàã ­  default
  156.     mov     [pnext],eax                   ; ¨ § ¯®¬¨­ ¥¬ çâ® á¡à®á¨«¨ ¯ «¨âàã ­  default
  157.   next_redraw:
  158.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  159.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  160.   next_bg:
  161.     cmp     ah, 14                        ; Š­®¯ª  BACKGROUND
  162.     jne     next_bg2                      ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  163.     call    set_background                ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
  164.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  165.   next_bg2:
  166.     cmp     ah, 16                        ; Š­®¯ª  BACKGROUND
  167.     jne     circle_bg                     ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  168.     call    set_background2               ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
  169.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  170.   circle_bg:
  171.     cmp     ah, 15                        ; Š­®¯ª  Šà㣮¢ ï ¯ «¨âà 
  172.     jne     next_end                      ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  173.     mov     [renmode],2                   ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
  174.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  175.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  176.   next_end:
  177.     cmp     ah,13                         ; COLOR SWAP
  178.     jne     color_swap_end
  179.     push    [color2]
  180.     push    [color]
  181.     pop     [color2]
  182.     pop     [color]
  183.     call    draw_result
  184.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  185.   color_swap_end:
  186.     cmp     ah, 7                         ; à®¢¥à塞 ­ ¦ â  ª­®¯ª  á ID=7
  187.     jne     color_button                  ; …᫨ ­¥ ­ ¦ â , â® ¨¤ñ¬ ¤ «ìè¥
  188.     call    mouse_get                     ; ˆ­ ç¥ ¢ª«îç ¥¬ ®¡à ¡®â稪 ¬ëè¨, ç⮡ë áç¨â âì §­ ç¥­¨¥ æ¢¥â  á ¯ «¨âàë
  189.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  190.   color_button:                           ; €‘—ð’ ª®®à¤¨­ â ¤«ï ¯®«§ã­ª®¢ RGBA
  191.     push    eax                           ; § ¯®¬¨­ ¥¬ ¥ å
  192.     call    mouse_local                   ; ¯®«ãç ¥¬ «®ª «ì­ë¥ ª®®à¤¨­ âë
  193.     mov     ebx,137                       ; ­¨¦­ïï £à ­¨æ  ¯®«§ã­ª  ¯® “
  194.     mov     ecx,[mouse_y]                 ; § ­¨á¨¬ ¢ ¥áå §­ ç¥­¨¥ ªãàá®à  ¯® “
  195.     sub     ebx,ecx                       ; ­ å®¤¨¬ à §­®áâì (â.¥. ªã¤  ᬥ頥âáï ¯®«§ã­®ª)
  196.     mov     ecx,3                         ; § ­®á¨¬ ¢ ¥áå æ¨äàã 3 (256/3=85, £¤¥ 85-¢ëá®â  ¯®«§ã­ª®¢)
  197.     imul    ecx,ebx                       ; ­ å®¤¨¬ ¨á⨭­ë© ¯ à ¬¥âà æ¢¥â  á ãçñ⮬ ¬ áèâ ¡  ¯®«§ã­ª ---+
  198.     pop     eax                           ; ¢®ááâ ­ ¢«¨¢ ¥¬ ¥ å                                          :
  199.   ;red_button:                            ; Šà á­ë© ’४¡ à                                              :
  200.     cmp     ah, 8                         ; ID=8                                                         :
  201.     jne     green_button                  ; ¥á«¨ ­¥â, â® ¯à®¢¥à塞 §¥«ñ­ë© â४¡ à                       :
  202.     mov     [cred],cl                     ; ¨­ ç¥ ¯à¨á¢ ¨¢ ¥¬ §­ ç¥­¨¥, ªà á­®¬ã 梥âã ᯥªâà     <------+
  203.     call    set_spectr                    ; ãáâ ­ ¢«¨¢ ¥¬ ᯥªâà
  204.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  205.   green_button:
  206.     cmp     ah, 9
  207.     jne     blue_button
  208.     mov     [cgreen],cl
  209.     call    set_spectr
  210.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  211.   blue_button:
  212.     cmp     ah, 10
  213.     jne     alpha_button
  214.     mov     [cblue],cl
  215.     call    set_spectr
  216.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  217.   alpha_button:
  218.     cmp     ah, 11
  219.     jne     still
  220.     mov     [calpha],cl
  221.     call    set_spectr
  222.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  223.   bexit:
  224.     mcall SF_TERMINATE_PROCESS ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  225. ;end_button
  226.  
  227. ;#___________________________________________________________________________________________________
  228. ;****************************************************************************************************|
  229. ; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ                                               |
  230. ;----------------------------------------------------------------------------------------------------/
  231. draw_main:
  232.     ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  233.     mcall   SF_REDRAW,SSF_BEGIN_DRAW
  234.  
  235.     ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  236.     mcall   SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  237.  
  238.     ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  239.     mcall   SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
  240.     mov     ecx,eax                       ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
  241.  
  242.     mov     edi,[runmode]
  243.     cmp     edi,2
  244.     jne     no_hiddenmode
  245.     mov     edi,hidden
  246.     jmp     set_title
  247.   no_hiddenmode:
  248.     cmp     edi,3
  249.     jne     no_dialogmode
  250.     mov     edi,hidden
  251.     jmp     set_title
  252.   no_dialogmode:
  253.     mov     edi,title                     ; ‡ £®«®¢®ª ®ª­ 
  254.   set_title:
  255.  
  256.     xor     eax,eax                       ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
  257.     mov     ebx,WIN_X shl 16+WIN_W        ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
  258.     add     ecx,WIN_Y shl 16+WIN_H        ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y] (168 ¤«ï ¢¥àᨨ 0.2)
  259.     mov     edx,[sc.work]                 ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
  260.     or      edx,0x34000000                ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
  261.  
  262.     int     0x40                          ; à¥à뢠­¨¥
  263.  
  264.  
  265.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  266.     call    draw_result                   ; ˆ‘“…Œ …‡“‹œ’€’
  267.  
  268.     ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã
  269.     mcall   SF_DEFINE_BUTTON, (110 shl 16)+147, (9 shl 16)+147, 0x60000007
  270.  
  271.     inc     edx
  272.     mcall   , (13 shl 16)+12, (51 shl 16)+85 ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
  273.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  274.     inc     edx                           ; ID = 9
  275.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
  276.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  277.     inc     edx                           ; ID = 10
  278.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
  279.     add     ebx,23 shl 16                 ; „®¡ ¢«ï¥¬
  280.     inc     edx                           ; ID = 11
  281.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ alpha
  282.  
  283.     ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã (‘Œ…€ –‚…’€)
  284.     mcall   , (11 shl 16)+20, (12 shl 16)+20, 0x6000000D
  285.  
  286.     call    draw_bottom_panel
  287.     call    draw_left_panel
  288.  
  289.     ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  290.     mcall SF_REDRAW,SSF_END_DRAW
  291.     ret
  292.  
  293. ;#___________________________________________________________________________________________________
  294. ;****************************************************************************************************|
  295. ; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ                                                 |
  296. ;----------------------------------------------------------------------------------------------------/
  297.  
  298.  
  299.     ;------------------------------------------------------------------------------------------------+
  300.     draw_left_panel:                      ; Žâà¨á®¢ª  ¡®ª®¢®© ¯ ­¥«¨
  301.     ;.................................................................................................
  302.     ; button_next_colorsheme
  303.     mcall   SF_DEFINE_BUTTON, (266 shl 16)+16, (9 shl 16)+16, 0x6000000C, [sc.work_button]
  304.     ; circle diagram
  305.     add     ecx,19 shl 16                 ; move rect
  306.     mov     edx,0x6000000F                ; ID = 15
  307.     int     0x40                          ; call
  308.  
  309.     mcall   SF_PUT_IMAGE, panel, (16 shl 16)+149, (266 shl 16)+9
  310.  
  311.     ;mov     eax,13                        ; draw rect
  312.     ;mov     ebx,266 shl 16+16             ; [x] + [size]
  313.     ;mov     ecx,9 shl 16+16               ; [y] + [size]
  314.     ;mov     edx,0x666666                  ; RGB
  315.     ;push    esi                           ; backup esi
  316.     ;mov     esi,8                         ; counter=8
  317.     ;draw_lpanel:                          ; loop label
  318.     ;  int     0x40                        ; call draw black rect
  319.     ;  add     ecx,19 shl 16               ; move rect
  320.     ;  dec     esi                         ; decrement counter
  321.     ;  cmp     esi,0                       ; if counter!=zero
  322.     ;  jne     draw_lpanel                 ; then goto label
  323.     ;  mov     esi,8                       ; else counter=8
  324.     ;  mov     ebx,267 shl 16+14           ; [x] + [size]
  325.     ;  mov     ecx,10 shl 16+14            ; [y] + [size]
  326.     ;  mov     edx,0xF3F3F3                ; RGB
  327.     ;draw_lpanel2:                         ; 2 loop label
  328.     ;  int     0x40                        ; call draw white rect
  329.     ;  add     ecx,19 shl 16               ; move rect
  330.     ;  dec     esi                         ; decrement counter
  331.     ;  cmp     esi,0                       ; if counter!=0
  332.     ;  jne     draw_lpanel2                ; then goto label2
  333.     ;pop     esi                           ; restore esi
  334.     ; draw_left_arrow for button_next_colorsheme
  335.     ;mov     eax,4                         ; Write string
  336.     ;mov     ebx,272 shl 16+13             ; [x] + [y]
  337.     ;mov     ecx,0x0                       ; RGB
  338.     ;mov     edx,larrow                    ; string pointer
  339.     ;mov     esi,1                         ; count symbol
  340.     ;int     0x40                          ; call
  341.     ;mov     eax,38                        ; draw line
  342.     ;mov     ebx,270 shl 16+272            ; [start x] + [end x]
  343.     ;mov     ecx,16 shl 16+16              ; [start y] + [end y]
  344.     ;mov     edx,0x0                       ; RGB
  345.     ;int     0x40                          ; call
  346.     ret                                   ; return
  347.     ;.................................................................................................
  348.  
  349.  
  350.     ;------------------------------------------------------------------------------------------------+
  351.     draw_bottom_panel:                    ; Žâà¨á®¢ª  ­¨¦­¥© ¯ ­¥«¨
  352.     ;.................................................................................................
  353.     mcall   SF_DEFINE_BUTTON, (92 shl 16)+90, (169 shl 16)+16, 14, [sc.work_button]
  354.  
  355.     add     ebx, 100 shl 16
  356.     add     edx, 2
  357.     int     0x40
  358.  
  359.     ; Write string
  360.     mov     ecx,[sc.work_text]            ; RGB
  361.     or      ecx, 1 shl 31
  362.     mcall   SF_DRAW_TEXT, (113 - 104) shl 16+174, ,bground
  363.  
  364.     mov     ecx, [sc.work_button_text]
  365.     or      ecx, 1 shl 31
  366.  
  367.     add     ebx, 106 shl 16
  368.     mov     edx, bground1
  369.     int     0x40
  370.  
  371.     add     ebx, 107 shl 16
  372.     mov     edx, bground2
  373.     int     0x40
  374.  
  375.     mcall SF_DRAW_LINE, 4 shl 16+282, 163 shl 16+163, 0x00666666
  376.     ret                                   ; return
  377.     ;.................................................................................................
  378.  
  379. mouse_global:
  380.     ;.................................................................................................
  381.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
  382.     ;.................................................................................................
  383.     mcall   SF_MOUSE_GET,SSF_SCREEN_POSITION
  384.     ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  385.     mov     ecx,eax                       ;
  386.     shr     ecx,16                        ; ecx = x+1
  387.     movzx   edx,ax                        ; edx = y+1
  388.     dec     ecx                           ; ecx = x
  389.     dec     edx                           ; edx = y
  390.     mov     [mouse_x],ecx                 ; mouse_x = x
  391.     mov     [mouse_y],edx                 ; mouse_y = y
  392.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  393. ;end_mouse_global
  394.  
  395. mouse_local:
  396.     ;.................................................................................................
  397.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  398.     ;.................................................................................................
  399.     mcall   SF_MOUSE_GET,SSF_WINDOW_POSITION
  400.         ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  401.     mov     ecx,eax                       ;
  402.     shr     ecx,16                        ; ecx = x+1
  403.     movzx   edx,ax                        ; edx = y+1
  404.     dec     ecx                           ; ecx = x
  405.     dec     edx                           ; edx = y
  406.     mov     [mouse_x],ecx                 ; mouse_x = x
  407.     mov     [mouse_y],edx                 ; mouse_y = y
  408.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  409. ;end_mouse_local
  410.  
  411. set_background:
  412.     ;.................................................................................................
  413.     ; “áâ ­ ¢«¨¢ ¥â ä®­ à ¡®ç¥£® á⮫ 
  414.     ;.................................................................................................
  415.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  416.     ; ®¤äã­ªæ¨ï 4 - ãáâ ­®¢¨âì ०¨¬ ®âà¨á®¢ª¨ ä®­ .
  417.     ; ¥¦¨¬ ®âà¨á®¢ª¨ - § ¬®áâ¨âì (1), à áâï­ãâì (2)
  418.     mcall   SF_BACKGROUND_SET,SSF_MODE_BG,2
  419.  
  420.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  421.     ; ®¤äã­ªæ¨ï 1 - ãáâ ­®¢¨âì à §¬¥à ä®­®¢®£® ¨§®¡à ¦¥­¨ï.
  422.     mcall   SF_BACKGROUND_SET,SSF_SIZE_BG,2,2
  423.  
  424.     mov     eax,[color]
  425.     mov     [cm+0],al
  426.     mov     [cm+9],al
  427.     shr     eax,8
  428.     mov     [cm+1],al
  429.     mov     [cm+10],al
  430.     shr     eax,8
  431.     mov     [cm+2],al
  432.     mov     [cm+11],al
  433.  
  434.     mov     eax,[color2]
  435.     mov     [cm+3],al
  436.     mov     [cm+6],al
  437.     shr     eax,8
  438.     mov     [cm+4],al
  439.     mov     [cm+7],al
  440.     shr     eax,8
  441.     mov     [cm+5],al
  442.     mov     [cm+8],al
  443.  
  444.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  445.     ; ®¤äã­ªæ¨ï 5 - ¯®¬¥áâ¨âì ¡«®ª ¯¨ªá¥«¥© ­  ä®­.
  446.     ; - “ª § â¥«ì ­  ¤ ­­ë¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR
  447.     ; - C¬¥é¥­¨¥ ¢ ¤ ­­ëå ä®­®¢®£® ¨§®¡à ¦¥­¨ï
  448.     ; -  §¬¥à ¤ ­­ëå ¢ ¡ ©â å = 3 * ç¨á«® ¯¨ªá¥«¥©
  449.     mcall   SF_BACKGROUND_SET,SSF_IMAGE_BG,cm,0,3*4
  450.  
  451.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  452.     ; ®¤äã­ªæ¨ï 3 - ¯¥à¥à¨á®¢ âì ä®­.
  453.     mcall   SF_BACKGROUND_SET,SSF_REDRAW_BG
  454.  
  455.     stdcall save_eskin_ini, 'H '
  456.  
  457.     ret
  458. ;end_set_background
  459.  
  460. desktop_get:
  461.     ;.................................................................................................
  462.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
  463.     ;.................................................................................................
  464.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
  465.     mcall   SF_GET_SCREEN_SIZE ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
  466.     mov     ebx,eax                       ;
  467.     shr     ebx,16                        ; ebx = xsize-1
  468.     movzx   edx,ax                        ; edx = ysize-1 («¨è­¨© ª®¤)
  469.     inc     ebx                           ; ebx = xsize
  470.     inc     edx                           ; edx = ysize («¨è­¨© ª®¤)
  471.     mov     [desctop_w],ebx
  472.     mov     [desctop_h],edx
  473.     ret
  474. ;end_desktop_get
  475.  
  476. mouse_get:
  477.     mov     esi,2                         ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
  478.     call    mouse_global
  479.     call    desktop_get
  480.     re_mouse_loop:                        ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
  481.       mov     ebx,[desctop_w]
  482.       imul    ebx,[mouse_y]               ; ebx = y*xsize
  483.       add     ebx,[mouse_x]               ; ebx = y*xsize+x
  484.  
  485.       ;.................................................................................................
  486.       ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
  487.       ;.................................................................................................
  488.        ;mov     ebx,ecx                    ;; ebx = y*xsize+x («¨è­¨© ª®¤)
  489.       mcall   SF_GET_PIXEL    ; ®«ãç ¥¬ 梥⠢ eax
  490.       cmp     eax,[sc.work]               ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
  491.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  492.       cmp     eax,0x222222                ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
  493.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  494.       jmp     mouse_set                   ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
  495.     mouse_err:                            ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
  496.       inc     [mouse_y]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
  497.       inc     [mouse_x]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
  498.       dec     esi                         ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
  499.       cmp     esi,0                       ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  500.     jz        mouse_exit                  ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
  501.     jmp    re_mouse_loop                  ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
  502.     mouse_set:                            ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
  503.       cmp     [mouse_f],1
  504.       jne     was_right
  505.       mov     [color],eax
  506.       call    draw_result
  507.       jmp     mouse_exit
  508.     was_right:
  509.       cmp     [mouse_f],2
  510.       jne     mouse_exit
  511.       mov     [color2],eax
  512.       call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  513.     mouse_exit:
  514.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  515. ;end_mouse_get----------------------------------------------------------------------------------------
  516.  
  517. draw_palitra:
  518.     ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  519.     mcall   SF_DRAW_RECT, 110 shl 16+148, 9 shl 16+148, [sc.work]
  520.  
  521.     cmp     [renmode],2
  522.     je      cyrcle_draw
  523.     ;cmp     [renmode],1
  524.     ;je      picker_draw
  525.     cmp     [renmode],0
  526.     je      sheme_draw
  527.     ret
  528.  
  529.     ;.................................................................................................
  530.     ; Žâà¨á®¢ª  ªà㣮¢®© ¤¨ £à ¬¬ë
  531.     ;.................................................................................................
  532.     cyrcle_draw:
  533.     ;mov     eax,13
  534.     ;mov     edx,0x666666
  535.     ;mov     ebx,108*65536+152
  536.     ;mov     ecx,125*65536+33
  537.     ;mcall
  538.     ;mov     edx,0xF3F3F3
  539.     ;mov     ebx,109*65536+150
  540.     ;mov     ecx,126*65536+31
  541.     ;mcall
  542.  
  543.     ;mov     eax,4                         ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
  544.     ;mov     ebx,115 shl 16+131            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  545.     ;mov     ecx,0x666666                  ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
  546.     ;mov     edx,hint                      ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  547.     ;mov     esi,24                        ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  548.     ;mcall
  549.     ;mov     ebx,125 shl 16+144            ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  550.     ;mov     edx,hint2                     ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  551.     ;mov     esi,21                        ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  552.     ;mcall
  553.  
  554.     ;mov     edx,[color]
  555.     ;mov     ebx,109*65536+150
  556.     ;mov     ecx, 10*65536+150
  557.     ;mcall
  558.     call    mouse_local                   ; ¯®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  559.     mov     ecx, [mouse_x]                ; § ­®á¨¬ ¢ ॣ¨áâà
  560.     mov     edx, [mouse_y]                ; § ­®á¨¬ ¢ ॣ¨áâà
  561.     cmp     ecx, WIN_W-10
  562.     jg      cyrcle_draw_2
  563.     cmp     edx, WIN_H
  564.     jle     end_cyrcle_draw
  565.  
  566.     cyrcle_draw_2:
  567.         mcall   SF_SLEEP,10
  568.     call    desktop_get
  569.     call    mouse_global
  570.  
  571.     mov     ebx,112*65536+11
  572.     mov     esi,0                         ; counter=8
  573.     circle_loop:
  574.       mov     ecx, 10*65536+11
  575.       mov     edi,0
  576.       circle_loop2:
  577.         call    circle_pixel_read
  578.         mcall   SF_DRAW_RECT
  579.         add     ecx,11 shl 16
  580.         inc     edi
  581.         cmp     edi,13
  582.         jne     circle_loop2
  583.  
  584.       add     ebx,11 shl 16
  585.       inc     esi
  586.       cmp     esi,13
  587.       jne     circle_loop
  588.  
  589.     mcall   SF_DRAW_RECT, 177*65536+13, 76*65536+13, 0
  590.     mov     ecx, [mouse_x]
  591.     mov     edx, [mouse_y]
  592.     inc     ecx
  593.     inc     edx
  594.     mov     ebx, edx
  595.     imul    ebx, [desctop_w]
  596.     add     ebx, ecx
  597.     mcall   SF_GET_PIXEL
  598.     mov     edx,eax
  599.     mcall   SF_DRAW_RECT, 178*65536+11, 77*65536+11
  600.     ret
  601.     end_cyrcle_draw:
  602.     mcall   SF_DRAW_RECT, 111*65536+145, 9*65536+145, 0x666666
  603.     ret
  604.  
  605.     circle_pixel_read:
  606.     push    ecx ebx
  607.     mov     ecx, [mouse_x]
  608.     mov     edx, [mouse_y]
  609.     inc     ecx
  610.     add     ecx, esi
  611.     cmp     ecx, 6
  612.     jl      _cpr_exit
  613.     sub     ecx, 6
  614.     inc     edx
  615.     add     edx, edi
  616.     cmp     edx, 6
  617.     jl      _cpr_exit
  618.     sub     edx, 6
  619.  
  620.     mov     ebx, edx
  621.     imul    ebx, [desctop_w]
  622.     add     ebx, ecx
  623.     mcall   SF_GET_PIXEL
  624.     mov     edx,eax
  625.     pop     ebx ecx
  626.     ret
  627.  
  628.     _cpr_exit:
  629.     xor     edx,edx
  630.     pop     ebx ecx
  631.     ret
  632.  
  633.     ;picker_draw:
  634.     ;ret
  635.  
  636.     ;.................................................................................................
  637.     ; Žâà¨á®¢ª  ä®­  ¯®¤ ª­®¯ª¨
  638.     ;.................................................................................................
  639.     sheme_draw:
  640.     mov     eax,SF_DRAW_RECT  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  641.     mov     edx,0x222222                  ; 梥â
  642.     mov     ecx,9 shl 16+73               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  643.     mov     esi,2                         ; ‘ç¥â稪 «¨­¨© ¯®¤«®¦¥ª
  644.     re_draw:
  645.     mov     ebx,110 shl 16+73             ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  646.     mov     edi,2                         ; ‘ç¥â稪 ª®«¨ç¥á⢠ ¯®¤«®¦¥ª
  647.     for_fon_loop:
  648.       int     0x40                        ; à¥à뢠­¨¥
  649.       add     ebx,75 shl 16               ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® å
  650.       dec     edi                         ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  651.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  652.     jnz     for_fon_loop                  ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  653.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  654.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  655.     mov     ecx,84 shl 16+73              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  656.     jnz     re_draw                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  657.  
  658.     ;.................................................................................................
  659.     ; Žâà¨á®¢ª  ª­®¯®ª ¯® 横«ã
  660.     ;.................................................................................................
  661.     mov     eax,SF_DRAW_RECT  ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  662.     mov     edx,0x0FFFFFFF                ; 梥â
  663.     mov     esi,4                         ; ‘ç¥â稪 ª®«¨ç¥á⢠  ¡§ æ¥¢ (#4,8)
  664.     mov     ebx,99 shl 16+8               ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  665.     for_abz:
  666.       ;;push    esi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  667.       cmp     esi,2
  668.       jne     x2_line
  669.       mov     ebx,99 shl 16+8
  670.       x2_line:
  671.       add     ebx,3 shl 16                ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  672.       mov     edi,8                       ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  673.       for_stolbik:
  674.         push    edi                       ; ‘®å࠭塞 §­ ç¥­¨¥ áç¥â稪  «¨­¨© ¢ á⥪
  675.         mov     edi,8                     ; ‘ç¥â稪 ª®«¨ç¥á⢠ ª­®¯®ª ¢ áâப¥
  676.         mov     ecx,  1 shl 16+8          ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® y [ª-â  y]*65536 + [à §¬¥à]
  677.         cmp     esi,2
  678.         jg      y2_line                   ; …᫨ ¡®«ìè¥ 4 â® ¨£­®à¨¬
  679.         mov     ecx,76 shl 16+8
  680.         y2_line:
  681.         add     ebx,9 shl 16              ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® x
  682.         for_loop:
  683.           add     ecx,9 shl 16            ; ‘¬¥é ¥¬ ¯®«®¦¥­¨¥ «¨­¨¨ ¯® y
  684.           int     0x40                    ; à¥à뢠­¨¥
  685.           call    sub_red
  686.           dec     edi                     ; “¬¥­ìè ¥¬ áç¥â稪 ª­®¯®ª
  687.           cmp     edi,0                   ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  688.           jnz     for_loop                ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  689.       call    sub_green
  690.       pop     edi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  691.       dec     edi                         ; “¬¥­ìè ¥¬ ¥£®
  692.       cmp     edi,0                       ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  693.       jnz     for_stolbik                 ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  694.     call    sub_blue
  695.     ;;pop     esi                         ; ˆ­ ç¥ ¢®ááâ ­ ¢«¨¢ ¥¬ áç¥â稪 «¨­¨©
  696.     dec     esi                           ; “¬¥­ìè ¥¬ ¥£®
  697.     cmp     esi,0                         ; ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  698.     jnz     for_abz                       ; …᫨ ­¥ ­®«ì â® ¢ ­ ç «® 横« 
  699.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  700. ;end_draw_palitra-------------------------------------------------------------------------------------
  701.  
  702.  
  703. sub_red:
  704.     ;.................................................................................................
  705.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  706.     ;.................................................................................................
  707.     push    eax
  708.     mov     eax,[pnext]
  709.   ;sub_red_0                              ; palitra
  710.     cmp     al,0
  711.     jne     sub_red_1
  712.     sub     edx,0x40
  713.     jmp     sub_red_e
  714.   sub_red_1:                              ; random
  715.     cmp     al,1
  716.     jne     sub_red_2
  717.     sub     edx,0x20
  718.     jmp     sub_red_e
  719.   sub_red_2:                              ; gree
  720.     cmp     al,2
  721.     jne     sub_red_3
  722.     sub     edx,0x010101
  723.     jmp     sub_red_e
  724.   sub_red_3:                              ; red
  725.     cmp     al,3
  726.     jne     sub_red_4
  727.     sub     edx,0x0101
  728.     jmp     sub_red_e
  729.   sub_red_4:                              ; green
  730.     cmp     al,4
  731.     jne     sub_red_5
  732.     sub     edx,0x010001
  733.     jmp     sub_red_e
  734.   sub_red_5:                              ; blue
  735.     cmp     al,5
  736.     jne     sub_red_e
  737.     sub     edx,0x010100
  738.     jmp     sub_red_e
  739.   sub_red_e:
  740.     pop     eax
  741.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  742. ;end_sub_red------------------------------------------------------------------------------------------
  743.  
  744. sub_green:
  745.     ;.................................................................................................
  746.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  747.     ;.................................................................................................
  748.     push    eax
  749.     mov     eax,[pnext]
  750.   ;sub_green_0
  751.     cmp     al,0
  752.     jne     sub_green_1
  753.     sub     edx,0x4000
  754.     jmp     sub_green_e
  755.   sub_green_1:
  756.     cmp     al,1
  757.     jne     sub_green_e
  758.     sub     edx,0x2000
  759.     ;jmp     sub_green_e
  760.   sub_green_e:
  761.     pop     eax
  762.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  763. ;end_sub_green----------------------------------------------------------------------------------------
  764.  
  765.  
  766. sub_blue:
  767.     ;.................................................................................................
  768.     ;  áçñâ ᬥ饭¨© ªà á­®£® æ¢¥â  ¢ £¥­¥à æ¨¨ æ¢¥â  ¯ «¨âàë
  769.     ;.................................................................................................
  770.     push    eax
  771.     mov     eax,[pnext]
  772.   ;sub_blue_0
  773.     cmp     al,0
  774.     jne     sub_blue_1
  775.     sub     edx,0x600000
  776.     jmp     sub_blue_e
  777.   sub_blue_1:
  778.     cmp     al,1
  779.     jne     sub_blue_e
  780.     sub     edx,0x400000
  781.     ;jmp     sub_blue_e
  782.   sub_blue_e:
  783.     pop     eax
  784.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  785. ;end_sub_blue-----------------------------------------------------------------------------------------
  786.  
  787. draw_result:
  788.     ;.................................................................................................
  789.     ; ®«ìè ï à ¬ª  ¢ë¢®¤  १ã«ìâ â 
  790.     ;.................................................................................................
  791.     mcall   SF_DRAW_RECT, 4 shl 16+98, 9 shl 16+148, 0x00666666
  792.     mcall   , 5 shl 16+96, 10 shl 16+146, 0x00F3F3F3
  793.  
  794.     ;.................................................................................................
  795.     ; Žâà¨á®¢ª  १ã«ìâ â  æ¢¥â  ¢ hex color2
  796.     ;.................................................................................................
  797.     mcall   , 16 shl 16+15, 16 shl 16+15, 0x222222
  798.     ; color 2 - draw color
  799.     mcall   , 17 shl 16+13, 17 shl 16+13, [color2]
  800.     ; color 1 - draw fringle
  801.     mcall   , 11 shl 16+15, 12 shl 16+15, 0x222222
  802.     ; value - draw fringle
  803.     mcall   , 34 shl 16+62, 16 shl 16+15
  804.  
  805.     ; color 2 - draw color
  806.     mcall   , 12 shl 16+13, 13 shl 16+13, [color]
  807.     ; value - draw background
  808.     mcall   , 35 shl 16+60, 17 shl 16+13, 0xFFFFFF
  809.  
  810.     ; ”ã­ªæ¨ï 47 - ¢ë¢®¤ ç¨á«  ¢ ®ª­®
  811.     ;ebx - ¯ à ¬¥âàë ¯à¥®¡à §®¢ ­¨ï ç¨á«  ¢ ⥪áâ (HEX)
  812.     mcall   SF_DRAW_NUMBER, 256+8 shl 16, [color], (45 shl 16)+20,, 0
  813.  
  814.     ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  815.     ; edx - à¨á㥬 '#'
  816.     ; esi - ¤«¨­  ⥪áâ  ¢ ¡ ©â å
  817.     mcall   SF_DRAW_TEXT,38*65536+20,0,hex,1
  818.  
  819.     ;.................................................................................................
  820.     ; Žâà¨á®¢ª  r g b §­ ç¥­¨©
  821.     ;.................................................................................................
  822.     call    get_spectr
  823.  
  824.     movzx   eax,[cred]                    ; ªà á­ë©
  825.     mov     ebx,9*65536+142               ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  826.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  827.  
  828.     movzx   eax,[cgreen]                  ; §¥«¥­ë©
  829.     mov     ebx,32*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  830.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  831.  
  832.     movzx   eax,[cblue]                   ; ᨭ¨©
  833.     mov     ebx,55*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  834.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  835.  
  836.     movzx   eax,[calpha]                  ;  «ìä 
  837.     mov     ebx,78*65536+142              ; [x ­ ç «ì­ë©] *65536 + [y ­ ç «ì­ë©]
  838.     call    draw_value                    ; ¢ë¢®¤¨¬ १ã«ìâ â
  839.  
  840.     ;.................................................................................................
  841.     ; ‚뢮¤¨¬ ¡ãª¢ë r g b a
  842.     ;.................................................................................................
  843.     mov     eax,SF_DRAW_TEXT  ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ  ¢ ®ª­®
  844.     mov     ebx,16 shl 16+40              ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [ª®®à¤¨­ â  ¯® ®á¨ y]
  845.     mov     ecx,0x0                       ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
  846.     mov     edx,cname                     ; 㪠§ â¥«ì ­  ­ ç «® áâப¨
  847.     mov     esi,1                         ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
  848.     newline:                              ; 横«
  849.       int     0x40                        ; à¥à뢠­¨¥
  850.       add     ebx,23 shl 16               ; „®¡ ¢«ï¥¬
  851.       inc     edx                         ; „®¡ ¢«ï¥¬
  852.       cmp     [edx],byte 'x'              ; ‘à ¢­¥­¨¥ á ¡ ©â®¬ å
  853.     jne    newline                        ; …᫨ ­¥ ­ã«ì ¨«¨ ­¥ à ¢­®
  854.  
  855.     ;.................................................................................................
  856.     ; Žâà¨á®¢ª  á« ©¤¥à®¢
  857.     ;.................................................................................................
  858.     ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  859.     mcall   SF_DRAW_RECT, 16 shl 16+4, 51 shl 16+86, 0x222222
  860.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  861.     int     0x40
  862.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  863.     int     0x40
  864.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  865.     int     0x40
  866.  
  867.     mcall   , 17 shl 16+2, 52 shl 16+84, 0xFA0919
  868.     mov     edx,0x08CE19                  ; 梥â-®¡¢®¤ª¨
  869.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  870.     int     0x40
  871.     mov     edx,0x0909FF                  ; 梥â-®¡¢®¤ª¨
  872.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  873.     int     0x40
  874.     mov     edx,0xE4E4E4                  ; 梥â-®¡¢®¤ª¨
  875.     add     ebx,23 shl 16                 ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  y]*65536 + [à §¬¥à]
  876.     int     0x40
  877.  
  878.     ;.................................................................................................
  879.     ; Žâà¨á®¢ª  ¯®«§ã­ª®¢
  880.     ;.................................................................................................
  881.     mov     edx,0x0                       ; 梥â-¯®«§ã­ª®¢
  882.     mov     ebx,17 shl 16+11              ;  ç «ì­ë¥ ª®®à¤¨­ âë ¯® x [ª-â  x]*65536 + [à §¬¥à]
  883.     movzx   eax,[cred]                    ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  884.     call    draw_slider
  885.     add     ebx,23 shl 16
  886.     movzx   eax,[cgreen]                  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  887.     call    draw_slider
  888.     add     ebx,23 shl 16
  889.     movzx   eax,[cblue]                   ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  890.     call    draw_slider
  891.     add     ebx,23 shl 16
  892.     movzx   eax,[calpha]                  ; ¡¥à¥¬ §­ ç¥­¨¥ 梥â 
  893.     call    draw_slider
  894.  
  895.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  896. ;end_draw_result
  897.  
  898. draw_slider:
  899.     xor     ecx,ecx
  900.     mov     cl,0x3                        ; ¡ã¤¥¬ ¤¥«¨âì ¥£® ­  3 â ª ª ª ¯®«§ã­ª¨ ¤«¨­­®© 85 ¯¨ªá¥«¥©
  901.     div     cl                            ; ¤¥«¨¬ - 楫®¥ ¢ al ®áâ â®ª ¢ ah
  902.     mov     cl,136                        ; ­¨¦­ïï â®çª  ¯®«§ã­ª 
  903.     sub     cl,al                         ; cl=cl-al
  904.     shl     ecx,16
  905.     inc     ecx                           ; § ¤ ¥¬ ­ ç «ì­®¥ ¯®«®¦¥­¨¥
  906.     mcall   SF_DRAW_RECT      ; ”ã­ªæ¨ï 13 - ­ à¨á®¢ âì ¯àאַ㣮«ì­¨ª
  907.     push    ebx                           ; á®å࠭塞 ¤«ï á«¥¤ãî饣® ¯®«§ã­ª  x+w
  908.     sub     ebx,8                         ; â ª ª ª è¨à¨­  «¨­¨¨ 11 â® ®â­¨¬ ¥¬ 8 çâ®¡ë ªã¡¨ª áâ « è¨à¨­®© 3
  909.     add     ebx,8 shl 16                  ; Š®®à¤¨­ âë ¯® x ¤«ï ª¢ ¤à â  ­  ¯®«§ã­ª¥ ᬥ頥¬ ­  8 ¢ ¯à ¢®
  910.     inc     ecx                           ; ¡ë¤«®ª®¤¨¬ ¢ëá®âã ¯®«§ã­ª  ¤® 3-å (1+1=2)
  911.     inc     ecx                           ; (2+1=3) ­ã ¢®â ã ­ á ¡ã¤¥â ªã¡¨ª 3å3 ­  8 ¢ ¯à ¢® ®â «¨­¨¨
  912.     int     0x40                          ; à¨á㥬
  913.     pop     ebx                           ; ¢®ááâ ­ ¢«¨¢ ¥¬ ­®à¬ «ì­ë¥ ª®®à¤¨­ âë
  914.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  915.  
  916. ;end_slider
  917.  
  918. draw_value:
  919.     ;.................................................................................................
  920.     ; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
  921.     ;.................................................................................................
  922.     push    ebx                           ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  923.     mov     ebx,10                        ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  924.     mov     edi,buff              ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  925.         call    int2ascii         ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
  926.     mov     eax,SF_DRAW_TEXT  ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  927.     pop     ebx                           ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  928.     cmp     esi,2                         ; –…’ˆŽ‚€ˆ… ’…Š‘’€
  929.     jne     draw_value_1
  930.     add     ebx,4 shl 16
  931.     jmp     draw_value_e
  932.   draw_value_1:
  933.     cmp     esi,1
  934.     jne     draw_value_e
  935.     add     ebx,7 shl 16
  936.   draw_value_e:
  937.     mov     ecx,0x0                       ; 梥â ⥪áâ  RRGGBB
  938.     mov     edx,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  939.     int     0x40
  940.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  941. ;end_draw_value
  942.  
  943.   _read_params:
  944.  
  945.       mov eax,dword[params+2]
  946.       mov dword[params_c+0],eax
  947.  
  948.       mov eax,dword[params+6]
  949.       mov dword[params_c+4],eax
  950.  
  951.       mov   esi,params_c
  952.       mov   ecx,16
  953.       call  ascii2int
  954.       mov   [color],eax
  955.  
  956.       mov eax,dword[params+11]
  957.       mov dword[params_c+0],eax
  958.  
  959.       mov eax,dword[params+15]
  960.       mov dword[params_c+4],eax
  961.  
  962.       mov   esi,params_c
  963.       mov   ecx,16
  964.       call  ascii2int
  965.       mov   [color2],eax
  966.  
  967.       ret
  968.  
  969. hex_digit:
  970.     ;.................................................................................................
  971.     ; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
  972.     ;.................................................................................................
  973.     cmp    dl,10                          ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
  974.     jb     .less                          ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
  975.     add    dl,'A'-10                      ; 10->A 11->B 12->C ...
  976.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  977.     .less:
  978.     or     dl,'0'                         ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
  979.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  980. ;end_hex_digit
  981.  
  982. int2ascii:
  983.     ;.................................................................................................
  984.     ; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
  985.     ;.................................................................................................
  986.     ; eax - 32-å §­ ç­®¥ ç¨á«®
  987.     ; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  988.     ; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  989.     ; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
  990.     push    edi
  991.     xor     esi,esi                       ; § ­ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢
  992.     convert_loop:
  993.     xor     edx,edx                       ; § ­ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ â®ª
  994.     div     ebx                           ; eax/ebx - ®áâ â®ª ¢ edx
  995.     call    hex_digit                     ; ¯à¥®¡à §ã¥¬ ᨬ¢®«
  996.     push    edx                           ; «®¦¨¬ ¢ á⥪
  997.     inc     esi                           ; 㢥«¨ç¨¢ ¥¬ áç¥â稪
  998.     test    eax,eax                       ; ¥á«¨ ¥é¥ ¬®¦­® ¤¥«¨âì
  999.     jnz     convert_loop                  ; â® ¤¥«¨¥¬ ¥é¥
  1000.     cld                                   ; ŽŸ‡€’…‹œŽ á¡à á뢠¥¬ ä« £ ­ ¯à ¢«¥­¨ï DF (§ ¯¨áì ¢¯¥àñ¤)
  1001.     write_loop:                           ; ¨­ ç¥
  1002.     pop     eax                           ; ¤®áâ ¥¬ ¨§ á⥪  ¢ ¥ å
  1003.     stosb                                 ; § ¯¨á뢠¥¬ ¢ ¡ãä¥à ¯®  ¤à¥áã ES:(E)DI
  1004.     dec     esi                           ; 㬥­ìè ¥¬ áç¥â稪
  1005.     test    esi,esi                       ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ 
  1006.     jnz     write_loop                    ; â® ¤®áâ ñ¬
  1007.     mov     byte [edi],0                  ; ¨­ ç¥ ¤®¯¨áë뢠¥¬ ­ã«¥¢®© ¡ ©â
  1008.     pop     edi
  1009.     ; ª®¤ ­¨¦¥ ­¥ ¨¬¥¥â ­¨ç¥£® ®¡é¥£® ª ä㭪樨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨­­ã ¯®«ã祭­®© áâப¨
  1010.     call    str_len
  1011.     mov     esi,eax
  1012.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1013. ;end_int2ascii
  1014.  
  1015. char2byte:
  1016.     sub al,'0'
  1017.     cmp al,10
  1018.     jb  done
  1019.     add al,'0'
  1020.     and al,0x5f
  1021.     sub al,'A'-10
  1022.     and al,0x0f
  1023.     done:
  1024.     ret
  1025. ;end_char2byte
  1026.  
  1027. ascii2int:
  1028.     ;.................................................................................................
  1029.     ; à¥®¡à §®¢ ­¨¥ áâப¨ ¢ ç¨á«®
  1030.     ;.................................................................................................
  1031.     ; esi - 㪠§ â¥«ì ­  ­ã«ìâ¥à¬¨­¨à®¢ ­­ãî áâபã
  1032.     ; ecx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  1033.     ; ‚®§¢à é ¥â eax - ç¨á«®
  1034.     push esi
  1035.     xor eax,eax
  1036.     xor ebx,ebx
  1037.     cmp byte [esi],'-'
  1038.     jnz .next
  1039.     inc esi
  1040.     .next:
  1041.     lodsb
  1042.     or al,al
  1043.     jz .done
  1044.     call char2byte
  1045.     imul ebx,ecx
  1046.     add ebx,eax
  1047.     jmp .next
  1048.     .done:
  1049.     xchg ebx,eax
  1050.     pop esi
  1051.     cmp byte [esi],'-'
  1052.     jz .negate
  1053.     ret
  1054.     .negate:
  1055.     neg eax
  1056.     ret
  1057. ;end_ascii2int
  1058.  
  1059. get_spectr:
  1060.     ;.................................................................................................
  1061.     ; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â 
  1062.     ;.................................................................................................
  1063.     mov     ecx,[color]
  1064.     mov     [cblue],cl
  1065.     shr     ecx,8
  1066.     mov     [cgreen],cl
  1067.     shr     ecx,8
  1068.     mov     [cred],cl
  1069.     shr     ecx,8
  1070.     mov     [calpha],cl
  1071.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1072. ;end_get_spectr
  1073.  
  1074. set_spectr:
  1075.     ;.................................................................................................
  1076.     ; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
  1077.     ;.................................................................................................
  1078.     movzx   eax,[calpha]
  1079.     shl     eax,8
  1080.     mov     al,[cred]
  1081.     shl     eax,8
  1082.     mov     al,[cgreen]
  1083.     shl     eax,8
  1084.     mov     al,[cblue]
  1085.     mov     [color],eax
  1086.     call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  1087.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  1088. ;end_get_spectr
  1089.  
  1090. str_len:
  1091.     ;.................................................................................................
  1092.     ; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
  1093.     ;.................................................................................................
  1094.         push ecx esi edi
  1095.  
  1096.         cld
  1097.         xor   al, al
  1098.         mov ecx, 0FFFFFFFFh
  1099.         mov esi, edi
  1100.         repne scasb
  1101.         sub edi, esi
  1102.         mov eax, edi
  1103.         dec eax
  1104.  
  1105.         pop edi esi ecx
  1106.  
  1107.         ret
  1108. ;end_str_len
  1109.  
  1110.  
  1111.  ;-------------------------------
  1112.  
  1113.  proc random uses ebx ecx edx, max_value
  1114.     mov     ebx, 0
  1115.     mov     eax, ebx
  1116.     or      eax, eax
  1117.     jnz     @f
  1118.     rdtsc
  1119.     xor     eax, edx
  1120.     mov     ebx, eax
  1121.  
  1122.  @@:
  1123.     xor     edx, edx
  1124.     mov     ecx, 127773
  1125.     div     ecx
  1126.     mov     ecx, eax
  1127.     mov     eax, 16807
  1128.     mul     edx
  1129.     mov     edx, ecx
  1130.     mov     ecx, eax
  1131.     mov     eax, 2836
  1132.     mul     edx
  1133.     sub     ecx, eax
  1134.     xor     edx, edx
  1135.     mov     eax, ecx
  1136.     mov     ebx, ecx
  1137.     mov     ecx, 100000
  1138.     div     ecx
  1139.     mov     eax, edx
  1140.  
  1141.     xor     edx, edx
  1142.     mov     ebx, [max_value]
  1143.     div     ebx
  1144.     mov     eax, edx
  1145.  
  1146.     ret
  1147.  endp
  1148.  
  1149. set_background2:
  1150.     mcall   SF_SYS_MISC, SSF_HEAP_INIT
  1151.     mcall   SF_SYS_MISC, SSF_MEM_ALLOC, 256 * 256 * 3
  1152.     mov     [image], eax
  1153.  
  1154.     mov     edx, eax
  1155.     mov     ecx, 256 * 256
  1156.   @@:
  1157.     stdcall random, 15 + 1
  1158.     sub     al, 15 / 2
  1159.  
  1160.     mov     bh, byte [color + 0]
  1161.     add     bh, al
  1162.     mov     [edx + 0], bh
  1163.     mov     bh, byte [color + 1]
  1164.     add     bh, al
  1165.     mov     [edx + 1], bh
  1166.     mov     bh, byte [color + 2]
  1167.     add     bh, al
  1168.     mov     [edx + 2], bh
  1169.     add     edx, 3
  1170.     loop    @b
  1171.  
  1172.     mcall   SF_BACKGROUND_SET, SSF_SIZE_BG, 256, 256
  1173.     mcall   SF_BACKGROUND_SET, SSF_MODE_BG, 1
  1174.     mcall   SF_BACKGROUND_SET, SSF_IMAGE_BG, [image], 0, 256 * 256 * 3
  1175.     mcall   SF_BACKGROUND_SET, SSF_REDRAW_BG
  1176.  
  1177.     mcall   SF_SYS_MISC, SSF_MEM_FREE, [image]
  1178.     stdcall save_eskin_ini, 'B '
  1179. ret
  1180.  
  1181. align 4
  1182. proc save_eskin_ini, opt_HB:dword
  1183.         ;save to file eskin.ini
  1184.         xor     al,al
  1185.         mov     ecx,1024
  1186.         mov     edi,sys_path+2
  1187.         repne   scasb
  1188.         sub     edi,sys_path+3
  1189.         invoke  ini_set_str, inifileeskin, amain, aprogram, sys_path+2, edi
  1190.         ;add param 'H '
  1191.         mov     eax,[opt_HB]
  1192.         mov     word[params],ax
  1193.         mov     eax,[color]
  1194.         or      eax,0xf ;¤«ï ¨§¡¥¦ ­¨ï ¢¥ç­®£® 横«  ¥á«¨ eax=0
  1195.         mov     edi,params+2
  1196.         @@:
  1197.         rol     eax,8
  1198.         or      al,al
  1199.         jnz     @f
  1200.         mov     word[edi],'00' ;­ã«¨ ¯¥à¥¤ ç¨á«®¬
  1201.         add     edi,2
  1202.         jmp     @b
  1203.         @@:
  1204.         and     al,0xf0
  1205.         jnz     @f
  1206.         mov     byte[edi],'0'
  1207.         inc     edi
  1208.         @@:
  1209.         mov     eax,[color]
  1210.         mov     ebx,16
  1211.         call    int2ascii
  1212.         mov     byte[params+10],' '
  1213.         ;add color2
  1214.         mov     eax,[color2]
  1215.         or      eax,0xf ;¤«ï ¨§¡¥¦ ­¨ï ¢¥ç­®£® 横«  ¥á«¨ eax=0
  1216.         mov     edi,params+11
  1217.         @@:
  1218.         rol     eax,8
  1219.         or      al,al
  1220.         jnz     @f
  1221.         mov     word[edi],'00' ;­ã«¨ ¯¥à¥¤ ç¨á«®¬
  1222.         add     edi,2
  1223.         jmp     @b
  1224.         @@:
  1225.         and     al,0xf0
  1226.         jnz     @f
  1227.         mov     byte[edi],'0'
  1228.         inc     edi
  1229.         @@:
  1230.         mov     eax,[color2]
  1231.         mov     ebx,16
  1232.         call    int2ascii
  1233.  
  1234.         invoke  ini_set_str, inifileeskin, amain, aparam, params, 19
  1235.         ret
  1236. endp
  1237.  
  1238. ;#___________________________________________________________________________________________________
  1239. ;****************************************************************************************************|
  1240. ; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’                                                                         |
  1241. ;----------------------------------------------------------------------------------------------------/
  1242. circle:
  1243.     title       db 'Palitra v0.77',0       ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
  1244.     hidden      db 'Hidden',0
  1245.     hex         db '#',0                  ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
  1246.     cname       db 'RGBAx'                ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
  1247.     larrow      db 0x1A,0
  1248.     buff        db '000',0
  1249.     bground     db 'BACKGROUND',0         ; ¨¬ï ª­®¯ª¨ - 14
  1250.     bground1    db 'Gradient',0           ; ¨¬ï ª­®¯ª¨ - 14
  1251.     bground2    db 'Noisy',0         ; ¨¬ï ª­®¯ª¨ - 14
  1252.     runmode     dd 1                      ; ०¨¬ § ¯ã᪠ (1-normal, 2-hidden, 3-colordialog)
  1253.     color2      dd 00FFFFFFh              ; åà ­¨â §­ ç¥­¨¥ ¢â®à®£® ¢ë¡à ­­®£® 梥â 
  1254.  
  1255.     inifileeskin db '/sys/settings/system.ini',0
  1256.     amain       db 'style',0
  1257.     aprogram    db 'bg_program',0
  1258.     aparam      db 'bg_param',0
  1259.  
  1260. align 16
  1261. @IMPORT:
  1262.  
  1263. library \
  1264.     libini , 'libini.obj'
  1265.  
  1266. import  libini, \
  1267.         ini_set_str, 'ini_set_str'
  1268.  
  1269. I_END:
  1270.     cm          rb 12
  1271.     color       rd 1                      ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
  1272.     mouse_x     rd 1                      ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
  1273.     mouse_y     rd 1                      ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
  1274.     mouse_f     rd 1                      ; åà ­¨â ¤ ­­ë¥ ® ⮬ ª ª ï ª­®¯ª  ¬ëè¨ ¡ë«  ­ ¦ â 
  1275.     desctop_w   rd 1                      ; åà ­¨â è¨à¨­ã íªà ­ 
  1276.     desctop_h   rd 1                      ; åà ­¨â ¢ëá®âã íªà ­ 
  1277.     sc          system_colors             ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
  1278.     cred        rb 1                      ; åà ­¨¬ ªà á­ë© ᯥªàâ
  1279.     cgreen      rb 1                      ; åà ­¨¬ §¥«¥­ë© ᯥªâà
  1280.     cblue       rb 1                      ; åà ­¨¬ ᨭ¨© ᯥªâà
  1281.     calpha      rb 1                      ; åà ­¨¬ ¯à®§à ç­®áâì
  1282.     pnext       rd 1                      ; áç¥â稪 ¯¥à¥ª«î祭¨ï ¯ «¨âàë
  1283.     renmode     rd 1                      ; ०¨¬ ®âà¨á®¢ª¨ (1-梥⮢ ï á奬 ,2-¯¨¯¥âª ,3-ªà㣮¢ ï)
  1284.     params      rb 20                     ; ¯à¨ñ¬ ¯ à ¬¥â஢
  1285.     params_c    rb 9                      ; ¯à¨ñ¬­¨ª ¤«ï 梥â 
  1286.     image           rd 1
  1287.  
  1288.         rd 1024
  1289. stacktop:
  1290.         sys_path rb 1024
  1291. I_MEM: