Subversion Repositories Kolibri OS

Rev

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