Subversion Repositories Kolibri OS

Rev

Rev 9541 | 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.   include 'draw_sliders.inc'
  78.   include 'draw_utils.inc'
  79.   include 'draw_palitra.inc'
  80.  
  81.  
  82.  
  83.   WIN_W  = 374            ; è¨à¨­  ®ª­ 
  84.   WIN_H  = 251            ; ¢ëá®â  ®ª­ 
  85.   WIN_X  = 250            ; ª®®à¤¨­ â  å ®ª­ 
  86.   WIN_Y  = 190            ; ª®®à¤¨­ â  ã ®ª­ 
  87.  
  88.   Left_Border=4
  89.   SliderPanel_W = 110
  90.   DRAWY  = 9
  91.  
  92.   CELLW  = 11; 11            ; not used yet, but has to be :)
  93.  
  94.   ICONX  = WIN_W - 39
  95.   ICONS  = 18             ; icon size  
  96.   SLIDEW = 25
  97.  
  98.   palitra_x = Left_Border+SliderPanel_W+12
  99.   palitra_w = CELLW*(8)+8+1
  100.   palitra_xw = palitra_x shl 16 + palitra_w
  101.   palitra_yw = DRAWY shl 16 + palitra_w
  102.  
  103. START:
  104.     mcall   SF_SYS_MISC,SSF_HEAP_INIT ; ¨­¨æ¨ «¨§ æ¨ï ªãç¨
  105.     mcall SF_SYS_MISC, SSF_MEM_OPEN, i18_name
  106.     mov [icons18], eax
  107.     mcall SF_SYS_MISC, SSF_MEM_OPEN, i18bg_name
  108.     mov [icons18bg], eax
  109.  
  110.     stdcall dll.Load, @IMPORT
  111.     or      eax,eax
  112.     jnz     bexit
  113.     mcall   SF_SET_EVENTS_MASK,EVM_REDRAW+EVM_KEY+EVM_BUTTON+EVM_MOUSE ; ãáâ ­ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
  114.     include 'params_init.inc'             ; ®¡à ¡®âª  ¯ à ¬¥â஢ ª®¬ ­¤­®© áâப¨
  115.  
  116. ;#___________________________________________________________________________________________________
  117. ;****************************************************************************************************|
  118. ; Ž‘Ž‚Ž‰ –ˆŠ‹ Žƒ€ŒŒ› - Ž€Ž’Š€ ‘Ž›’ˆ‰                                                        |
  119. ;----------------------------------------------------------------------------------------------------/
  120. red:
  121.     call draw_main                        ; ¢ë§ë¢ ¥¬ ¯¥à¥à¨á®¢ªã ®ª­  ¯à¨«®¦¥­¨ï
  122. still:
  123.     mcall   SF_WAIT_EVENT         ; äã­ªæ¨ï 10 - ¦¤ âì ᮡëâ¨ï
  124.     cmp     eax,EV_REDRAW                 ; ¯¥à¥à¨á®¢ âì ®ª­® ?
  125.     je      red                           ; ¥á«¨ ¤  - ­  ¬¥âªã red
  126.     cmp     eax,EV_KEY                    ; ­ ¦ â  ª« ¢¨è  ?
  127.     je      key                           ; ¥á«¨ ¤  - ­  key
  128.     cmp     eax,EV_BUTTON                 ; ­ ¦ â  ª­®¯ª  ?
  129.     je      button                        ; ¥á«¨ ¤  - ­  button
  130.     cmp     eax,EV_MOUSE                  ; ᮡë⨥ ®â ¬ëè¨ ¢­¥ ®ª­ 
  131.     je      mouse                         ; ¥á«¨ ¤  - ­  button
  132.     jmp     still                         ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ­ ç «® 横« 
  133. ;end_still
  134.  
  135. key:                                      ; ­ ¦ â  ª« ¢¨è  ­  ª« ¢¨ âãà¥
  136.     mcall   SF_GET_KEY    ; äã­ªæ¨ï 2 - áç¨â âì ª®¤ ᨬ¢®«  (¢ ah) (âãâ ¢ ¯à¨­æ¨¯¥ ­¥ ­ã¦­ )
  137.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  138. ;end_key
  139.  
  140. mouse:
  141.     cmp     [renmode],2
  142.     jne     left
  143.     call    cyrcle_draw
  144.     jmp     center
  145.   left:
  146.     mcall   SF_MOUSE_GET,SSF_BUTTON
  147.     cmp     al,1b
  148.     jne     right
  149.     mov     [mouse_f],1
  150.     jmp     still
  151.   right:
  152.     cmp     al,10b
  153.     jne     still
  154.     mov     [mouse_f],2
  155.     jmp     still
  156.   center:
  157.     mcall   SF_MOUSE_GET,SSF_BUTTON
  158.     cmp     al,100b
  159.     jne     still
  160.     mov     [mouse_f],3
  161.     mov     [color],edx
  162.     call    draw_result
  163.     jmp     still                         ; ¢¥à­ãâìáï ª ­ ç «ã 横« 
  164. ;end_mouse
  165.  
  166. button:
  167.     mcall   SF_GET_BUTTON         ; 17 - ¯®«ãç¨âì ¨¤¥­â¨ä¨ª â®à ­ ¦ â®© ª­®¯ª¨
  168.     cmp     ah, 1                         ; ¥á«¨ ­ ¦ â  ª­®¯ª  á ­®¬¥à®¬ 1,
  169.     jz      bexit                         ; ¢ë室¨¬
  170.   ;®¡à ¡®âª  ª­®¯ª¨ Next
  171.     cmp     ah, 12                        ; ¥á«¨ ­ ¦ â  ª­®¯ª  NEXT
  172.     jne     next_bg                       ; ¢ë室¨¬
  173.     inc     [pnext]                       ; 㢥«¨ç¨¢ ¥¬ ¯à¨ ­ ¦ â¨¨ ­®¬¥à ¯ «¨âàë
  174.     mov     [renmode],0                   ; ¢ª«îç ¥¬ æ¢¥â®¢ë¥ á奬ë
  175.     mov     eax,[pnext]                   ; § ­®á¨¬ §­ ç¥­¨¥ ¢ ¥ å
  176.     cmp     al,6                          ; áà ¢­¨¢ ¥¬ á § ï¢«¥­­ë¬ ª®«¨ç¥á⢮¬ ¯ «¨âà
  177.     jne     next_redraw                   ; ¥á«¨ ­¥ ¡®«ìè¥ ¬ ªá¨¬ã¬  â® ­  ¢ë§®¢ ®âà¨á®¢ª¨
  178.     xor     eax,eax                       ; ¨­ ç¥ § ­ã«ï¥¬ ¯ «¨âàã ­  default
  179.     mov     [pnext],eax                   ; ¨ § ¯®¬¨­ ¥¬ çâ® á¡à®á¨«¨ ¯ «¨âàã ­  default
  180.   next_redraw:
  181.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  182.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  183.   next_bg:
  184.     cmp     ah, 14                        ; Š­®¯ª  BACKGROUND
  185.     jne     next_bg2                      ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  186.     call    set_background                ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
  187.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  188.   next_bg2:
  189.     cmp     ah, 16                        ; Š­®¯ª  BACKGROUND
  190.     jne     circle_bg                     ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  191.     call    set_background2               ; ¨­ ç¥ ãáâ ­ ¢«¨¢ ¥¬ ä®­
  192.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  193.   circle_bg:
  194.     cmp     ah, 15                        ; Š­®¯ª  Šà㣮¢ ï ¯ «¨âà 
  195.     jne     next_end                      ; ¥á«¨ ­¥ ­ ¦ â  â® ¢ë室¨¬
  196.     mov     [renmode],2                   ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
  197.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  198.     jmp     still                         ; ¨ ­  ®¦¨¤ ­¨¥ ᮡëâ¨ï
  199.   next_end:
  200.     cmp     ah,13                         ; COLOR SWAP
  201.     jne     color_swap_end
  202.     push    [color2]
  203.     push    [color]
  204.     pop     [color2]
  205.     pop     [color]
  206.     call    draw_result
  207.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  208.   color_swap_end:
  209.     cmp     ah, 7                         ; à®¢¥à塞 ­ ¦ â  ª­®¯ª  á ID=7
  210.     jne     color_button                  ; …᫨ ­¥ ­ ¦ â , â® ¨¤ñ¬ ¤ «ìè¥
  211.     call    mouse_get                     ; ˆ­ ç¥ ¢ª«îç ¥¬ ®¡à ¡®â稪 ¬ëè¨, ç⮡ë áç¨â âì §­ ç¥­¨¥ æ¢¥â  á ¯ «¨âàë
  212.     jmp     still                         ; ˆ ã室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  213.   color_button:                           ; €‘—ð’ ª®®à¤¨­ â ¤«ï ¯®«§ã­ª®¢ RGBA
  214.     push    eax                           ; § ¯®¬¨­ ¥¬ ¥ å
  215.     call    mouse_local                   ; ¯®«ãç ¥¬ «®ª «ì­ë¥ ª®®à¤¨­ âë
  216.     mov     ebx, 188;137                       ; ­¨¦­ïï £à ­¨æ  ¯®«§ã­ª  ¯® “
  217.     mov     ecx,[mouse_y]                 ; § ­¨á¨¬ ¢ ¥áå §­ ç¥­¨¥ ªãàá®à  ¯® “
  218.     sub     ebx,ecx                       ; ­ å®¤¨¬ à §­®áâì (â.¥. ªã¤  ᬥ頥âáï ¯®«§ã­®ª)
  219.     mov     ecx, 2;3                         ; § ­®á¨¬ ¢ ¥áå æ¨äàã 3 (256/3=85, £¤¥ 85-¢ëá®â  ¯®«§ã­ª®¢)
  220.     imul    ecx,ebx                       ; ­ å®¤¨¬ ¨á⨭­ë© ¯ à ¬¥âà æ¢¥â  á ãçñ⮬ ¬ áèâ ¡  ¯®«§ã­ª ---+
  221.     pop     eax                           ; ¢®ááâ ­ ¢«¨¢ ¥¬ ¥ å                                          :
  222.   ;red_button:                            ; Šà á­ë© ’४¡ à                                              :
  223.     cmp     ah, 8                         ; ID=8                                                         :
  224.     jne     green_button                  ; ¥á«¨ ­¥â, â® ¯à®¢¥à塞 §¥«ñ­ë© â४¡ à                       :
  225.     mov     [cred],cl                     ; ¨­ ç¥ ¯à¨á¢ ¨¢ ¥¬ §­ ç¥­¨¥, ªà á­®¬ã 梥âã ᯥªâà     <------+
  226.     call    set_spectr                    ; ãáâ ­ ¢«¨¢ ¥¬ ᯥªâà
  227.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  228.   green_button:
  229.     cmp     ah, 9
  230.     jne     blue_button
  231.     mov     [cgreen],cl
  232.     call    set_spectr
  233.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  234.   blue_button:
  235.     cmp     ah, 10
  236.     jne     alpha_button
  237.     mov     [cblue],cl
  238.     call    set_spectr
  239.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  240.   alpha_button:
  241.     cmp     ah, 11
  242.     jne     still
  243.     mov     [calpha],cl
  244.     call    set_spectr
  245.     jmp     still                         ; “室¨¬ ­  ®¦¨¤ ­¨¥ ¤à㣮£® ᮡëâ¨ï
  246.   bexit:
  247.     mcall SF_TERMINATE_PROCESS ; ¨­ ç¥ ª®­¥æ ¯à®£à ¬¬ë
  248. ;end_button
  249.  
  250. ;#___________________________________________________________________________________________________
  251. ;****************************************************************************************************|
  252. ; ƒ‹€‚›‰ ŒŽ„“‹œ Ž’ˆ‘Ž‚Šˆ ŽŠ€ ˆ ‹…Œ…’Ž‚ ˆ‹Ž†…ˆŸ                                               |
  253. ;----------------------------------------------------------------------------------------------------/
  254. draw_main:
  255.     ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  256.     mcall   SF_REDRAW,SSF_BEGIN_DRAW
  257.  
  258.     ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  259.     mcall   SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
  260.  
  261.     ; ”ã­ªæ¨ï 48 - á⨫¨ ®â®¡à ¦¥­¨ï ®ª®­
  262.     mcall   SF_STYLE_SETTINGS,SSF_GET_SKIN_HEIGHT
  263.     mov     ecx,eax                       ; ‡ ¯®¬¨­ ¥¬ ¢ëá®âã ᪨­ 
  264.  
  265.     mov     edi,[runmode]
  266.     cmp     edi,2
  267.     jne     no_hiddenmode
  268.     mov     edi,hidden
  269.     jmp     set_title
  270.   no_hiddenmode:
  271.     cmp     edi,3
  272.     jne     no_dialogmode
  273.     mov     edi,hidden
  274.     jmp     set_title
  275.   no_dialogmode:
  276.     mov     edi,title                     ; ‡ £®«®¢®ª ®ª­ 
  277.   set_title:
  278.  
  279.     xor     eax,eax                       ; Žç¨é ¥¬ eax (mov eax,0) (”ã­ªæ¨ï 0)
  280.     mov     ebx,WIN_X shl 16+WIN_W        ; [ª®®à¤¨­ â  ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ x]
  281.     add     ecx,WIN_Y shl 16+WIN_H        ; ‚ëá®â  ᪨­  + [ª®®à¤¨­ â  ¯® y]*65536 + [à §¬¥à ¯® y] (168 ¤«ï ¢¥àᨨ 0.2)
  282.     mov     edx,[sc.work]                 ; ‚¨¤¨¬® áâ¨«ì ®ª­  ¯® ¤¥ä®«âã
  283.     or      edx,0x34000000                ; ˆ«¨ ®ª­® ᮠ᪨­®¬ 䨪á¨à®¢ ­­ëå à §¬¥à®¢
  284.  
  285.     int     0x40                          ; à¥à뢠­¨¥
  286.  
  287.  
  288.     call    draw_palitra                  ; ˆ‘“…Œ €‹ˆ’“
  289.     call    draw_result                   ; ˆ‘“…Œ …‡“‹œ’€’
  290.  
  291.     mcall   SF_DEFINE_BUTTON, <palitra_x,palitra_w*2+1  > , <DRAWY,palitra_w*2+2>, 7+BT_HIDE ; palitra
  292.  
  293.     inc     edx
  294.     mcall   , <10,22>, <56,128>           ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ red
  295.     add     ebx,25*65536                  ; „®¡ ¢«ï¥¬
  296.     inc     edx                           ; ID = 9
  297.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ green
  298.     add     ebx,25*65536                  ; „®¡ ¢«ï¥¬
  299.     inc     edx                           ; ID = 10
  300.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ blue
  301.     add     ebx,25*65536                  ; „®¡ ¢«ï¥¬
  302.     inc     edx                           ; ID = 11
  303.     int     0x40                          ; ¨á㥬 ­¥¢¨¤¨¬ãî ª­®¯ªã ¯®¤ á« ©¤¥à®¬ alpha
  304.  
  305.     ; ”ã­ªæ¨ï 8 - ®¯à¥¤¥«¨âì/㤠«¨âì ª­®¯ªã (‘Œ…€ –‚…’€)
  306.     mcall   , <13,19>, <20,18>, 0x0D+BT_HIDE
  307.  
  308.     call    draw_bottom_panel
  309.     call    draw_left_panel
  310.  
  311.     ; äã­ªæ¨ï 12: ®§­ ç ¥â, çâ® ¡ã¤¥â à¨á®¢ âìáï ®ª­®
  312.     mcall SF_REDRAW,SSF_END_DRAW
  313.     ret
  314.  
  315.  
  316.  
  317. ;#___________________________________________________________________________________________________
  318. ;****************************************************************************************************|
  319. ; ‹ŽŠ ‚‘ŽŒŽƒ€’…‹œ›• Ž–…„“ ˆ ”“Š–ˆ‰ ˆ‹Ž†…ˆŸ                                                 |
  320. ;----------------------------------------------------------------------------------------------------/
  321.  
  322.  
  323.     ;------------------------------------------------------------------------------------------------+
  324.     draw_left_panel:                      ; Žâà¨á®¢ª  ¡®ª®¢®© ¯ ­¥«¨  SL97:   á ¬®¬ ¤¥«¥ ¯à ¢®©.
  325.     ;.................................................................................................
  326.     ; button_next_colorsheme
  327.     mcall   SF_DEFINE_BUTTON, <ICONX,ICONS+3>, <DRAWY,ICONS+3>, 12+BT_HIDE
  328.  
  329.     ; palitra button                    ; ID = 14
  330.     mcall , ,(DRAWY+150) shl 16 + ICONS+3, 14+BT_HIDE
  331.  
  332.     ; pipet button                        ; ID = 15
  333.     mcall , , (DRAWY+150) shl 16 + ICONS+3, 15+BT_HIDE
  334.  
  335.     mov     ebx,[icons18bg]
  336.     add     ebx,ICONS*ICONS*4*53
  337.     mcall   SF_PUT_IMAGE_EXT, ebx, <ICONS,ICONS>, <ICONX+2,DRAWY+2>, 32, 0, 0
  338.  
  339.     add     ebx,ICONS*ICONS*4*(39-53)
  340.     mov     edx,(ICONX+2)*65536+WIN_H-90
  341.     mcall
  342.  
  343.     mov     ebx,[icons18]
  344.     add     ebx,ICONS*ICONS*4*(53-1)
  345.     sub     edx,40
  346.     mcall
  347.  
  348.     stdcall DrawDeepRectangle, ICONX-1, DRAWY-1,   ICONS+5, ICONS+5, [sc.work_graph], [sc.work_graph]
  349.     stdcall DrawDeepRectangle, ICONX,   DRAWY,     ICONS+3, ICONS+3, [sc.work_light], [sc.work_dark]
  350.  
  351.     stdcall DrawDeepRectangle, ICONX-1, DRAWY+109, ICONS+5, ICONS+5, [sc.work_graph], [sc.work_graph]
  352.     stdcall DrawDeepRectangle, ICONX,   DRAWY+110, ICONS+3, ICONS+3, [sc.work_dark], [sc.work_light]
  353.     stdcall DrawDeepRectangle, ICONX+1, DRAWY+111, ICONS+1, ICONS+1, 0xFFFfff, 0xFFFfff
  354.  
  355.     stdcall DrawDeepRectangle, ICONX-1, DRAWY+149, ICONS+5, ICONS+5, [sc.work_graph], [sc.work_graph]
  356.     stdcall DrawDeepRectangle, ICONX,   DRAWY+150, ICONS+3, ICONS+3, [sc.work_light], [sc.work_dark]
  357.  
  358.     ;stdcall DrawRectangle3D, ICONX, DRAWY, 22, 22, [sc.work_light], [sc.work_dark]   ;Leency: draw rectangle around the button, buggy now
  359.  
  360.     ;mov     eax,13                        ; draw rect
  361.     ;mov     ebx,266 shl 16+16             ; [x] + [size]
  362.     ;mov     ecx,9 shl 16+16               ; [y] + [size]
  363.     ;mov     edx,0x666666                  ; RGB
  364.     ;push    esi                           ; backup esi
  365.     ;mov     esi,8                         ; counter=8
  366.     ;draw_lpanel:                          ; loop label
  367.     ;  int     0x40                        ; call draw black rect
  368.     ;  add     ecx,19 shl 16               ; move rect
  369.     ;  dec     esi                         ; decrement counter
  370.     ;  cmp     esi,0                       ; if counter!=zero
  371.     ;  jne     draw_lpanel                 ; then goto label
  372.     ;  mov     esi,8                       ; else counter=8
  373.     ;  mov     ebx,267 shl 16+14           ; [x] + [size]
  374.     ;  mov     ecx,10 shl 16+14            ; [y] + [size]
  375.     ;  mov     edx,0xF3F3F3                ; RGB
  376.     ;draw_lpanel2:                         ; 2 loop label
  377.     ;  int     0x40                        ; call draw white rect
  378.     ;  add     ecx,19 shl 16               ; move rect
  379.     ;  dec     esi                         ; decrement counter
  380.     ;  cmp     esi,0                       ; if counter!=0
  381.     ;  jne     draw_lpanel2                ; then goto label2
  382.     ;pop     esi                           ; restore esi
  383.     ; draw_left_arrow for button_next_colorsheme
  384.     ;mov     eax,4                         ; Write string
  385.     ;mov     ebx,272 shl 16+13             ; [x] + [y]
  386.     ;mov     ecx,0x0                       ; RGB
  387.     ;mov     edx,larrow                    ; string pointer
  388.     ;mov     esi,1                         ; count symbol
  389.     ;int     0x40                          ; call
  390.     ;mov     eax,38                        ; draw line
  391.     ;mov     ebx,270 shl 16+272            ; [start x] + [end x]
  392.     ;mov     ecx,16 shl 16+16              ; [start y] + [end y]
  393.     ;mov     edx,0x0                       ; RGB
  394.     ;int     0x40                          ; call
  395.     ret                                   ; return
  396.     ;.................................................................................................
  397.  
  398.  
  399.     ;------------------------------------------------------------------------------------------------+
  400.     draw_bottom_panel:                    ; Žâà¨á®¢ª  ­¨¦­¥© ¯ ­¥«¨
  401.     ;.................................................................................................
  402.     mcall   SF_DEFINE_BUTTON, <129,90>, <WIN_H-27,16>, 16, [sc.work_button]
  403.  
  404.     add     ebx, 100 shl 16
  405.     add     edx, 2
  406.     int     0x40
  407.  
  408.     ; Write string
  409.     mov     ecx,[sc.work_text]            ; RGB
  410.     add     ecx, 0x90000000
  411.     mcall   SF_DRAW_TEXT, <35, WIN_H-26>, ,bground
  412.  
  413.     mov     ecx, [sc.work_button_text]
  414.     add     ecx, 0x90000000
  415.     add     ebx, 107 shl 16
  416.     mov     edx, bground1
  417.     mcall
  418.  
  419.     add     ebx, 113 shl 16
  420.     mov     edx, bground2
  421.     mcall
  422.  
  423.     mcall SF_DRAW_LINE, <4, WIN_W-14>, <WIN_H-35, WIN_H-35>, [sc.work_graph]
  424.     ret
  425.     ;.................................................................................................
  426.  
  427. mouse_global:
  428.     ;.................................................................................................
  429.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨
  430.     ;.................................................................................................
  431.     mcall   SF_MOUSE_GET,SSF_SCREEN_POSITION
  432.     ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  433.     mov     ecx,eax                       ;
  434.     shr     ecx,16                        ; ecx = x+1
  435.     movzx   edx,ax                        ; edx = y+1
  436.     dec     ecx                           ; ecx = x
  437.     dec     edx                           ; edx = y
  438.     mov     [mouse_x],ecx                 ; mouse_x = x
  439.     mov     [mouse_y],edx                 ; mouse_y = y
  440.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  441. ;end_mouse_global
  442.  
  443. mouse_local:
  444.     ;.................................................................................................
  445.     ; ®«ãç ¥¬ ª®®à¤¨­ âë ¬ëè¨ ®â­®á¨â¥«ì­® ®ª­ 
  446.     ;.................................................................................................
  447.     mcall   SF_MOUSE_GET,SSF_WINDOW_POSITION
  448.         ; eax = x*65536 + y, (x,y)=ª®®à¤¨­ âë ªãàá®à  ¬ëè¨
  449.     mov     ecx,eax                       ;
  450.     shr     ecx,16                        ; ecx = x+1
  451.     movzx   edx,ax                        ; edx = y+1
  452.     dec     ecx                           ; ecx = x
  453.     dec     edx                           ; edx = y
  454.     mov     [mouse_x],ecx                 ; mouse_x = x
  455.     mov     [mouse_y],edx                 ; mouse_y = y
  456.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  457. ;end_mouse_local
  458.  
  459. set_background:
  460.     ;.................................................................................................
  461.     ; “áâ ­ ¢«¨¢ ¥â ä®­ à ¡®ç¥£® á⮫ 
  462.     ;.................................................................................................
  463.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  464.     ; ®¤äã­ªæ¨ï 4 - ãáâ ­®¢¨âì ०¨¬ ®âà¨á®¢ª¨ ä®­ .
  465.     ; ¥¦¨¬ ®âà¨á®¢ª¨ - § ¬®áâ¨âì (1), à áâï­ãâì (2)
  466.     mcall   SF_BACKGROUND_SET,SSF_MODE_BG,2
  467.  
  468.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  469.     ; ®¤äã­ªæ¨ï 1 - ãáâ ­®¢¨âì à §¬¥à ä®­®¢®£® ¨§®¡à ¦¥­¨ï.
  470.     mcall   SF_BACKGROUND_SET,SSF_SIZE_BG,2,2
  471.  
  472.     mov     eax,[color]
  473.     mov     [cm+0],al
  474.     mov     [cm+9],al
  475.     shr     eax,8
  476.     mov     [cm+1],al
  477.     mov     [cm+10],al
  478.     shr     eax,8
  479.     mov     [cm+2],al
  480.     mov     [cm+11],al
  481.  
  482.     mov     eax,[color2]
  483.     mov     [cm+3],al
  484.     mov     [cm+6],al
  485.     shr     eax,8
  486.     mov     [cm+4],al
  487.     mov     [cm+7],al
  488.     shr     eax,8
  489.     mov     [cm+5],al
  490.     mov     [cm+8],al
  491.  
  492.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  493.     ; ®¤äã­ªæ¨ï 5 - ¯®¬¥áâ¨âì ¡«®ª ¯¨ªá¥«¥© ­  ä®­.
  494.     ; - “ª § â¥«ì ­  ¤ ­­ë¥ ¢ ä®à¬ â¥ BBGGRRBBGGRR
  495.     ; - C¬¥é¥­¨¥ ¢ ¤ ­­ëå ä®­®¢®£® ¨§®¡à ¦¥­¨ï
  496.     ; -  §¬¥à ¤ ­­ëå ¢ ¡ ©â å = 3 * ç¨á«® ¯¨ªá¥«¥©
  497.     mcall   SF_BACKGROUND_SET,SSF_IMAGE_BG,cm,0,3*4
  498.  
  499.     ; ”ã­ªæ¨ï 15 - à ¡®â  á ä®­®¢®© £à ä¨ª®©
  500.     ; ®¤äã­ªæ¨ï 3 - ¯¥à¥à¨á®¢ âì ä®­.
  501.     mcall   SF_BACKGROUND_SET,SSF_REDRAW_BG
  502.  
  503.     stdcall save_eskin_ini, 'H '
  504.  
  505.     ret
  506. ;end_set_background
  507.  
  508. desktop_get:
  509.     ;.................................................................................................
  510.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­ 
  511.     ;.................................................................................................
  512.     ; Ž¯à¥¤¥«ï¥¬ è¨à¨­ã íªà ­  (eax = [xsize]*65536 + [ysize])
  513.     mcall   SF_GET_SCREEN_SIZE ; xsize = à §¬¥à ¯® £®à¨§®­â «¨ - 1
  514.     mov     ebx,eax                       ;
  515.     shr     ebx,16                        ; ebx = xsize-1
  516.     movzx   edx,ax                        ; edx = ysize-1 («¨è­¨© ª®¤)
  517.     inc     ebx                           ; ebx = xsize
  518.     inc     edx                           ; edx = ysize («¨è­¨© ª®¤)
  519.     mov     [desctop_w],ebx
  520.     mov     [desctop_h],edx
  521.     ret
  522. ;end_desktop_get
  523.  
  524. mouse_get:
  525.     mov     esi,2                         ; ŠŽ‘’›‹œ: ä« £ ¤«ï ¨§¡¥¦ ­¨ï § æ¨ª«¨¢ ­¨ï
  526.     call    mouse_global
  527.     call    desktop_get
  528.     re_mouse_loop:                        ; ŠŽ‘’›‹œ: ¬¥âª  ¤«ï ¢®§¢à â  ¥á«¨ ¯®¯ «¨ ¢ á¥âªã
  529.       mov     ebx,[desctop_w]
  530.       imul    ebx,[mouse_y]               ; ebx = y*xsize
  531.       add     ebx,[mouse_x]               ; ebx = y*xsize+x
  532.  
  533.       ;.................................................................................................
  534.       ; ¥à¥¬ 梥â á ¯ «¨âàë ¢ ¯¥à¥¬¥­­ãî
  535.       ;.................................................................................................
  536.        ;mov     ebx,ecx                    ;; ebx = y*xsize+x («¨è­¨© ª®¤)
  537.       mcall   SF_GET_PIXEL    ; ®«ãç ¥¬ 梥⠢ eax
  538.       cmp     eax,[sc.work]               ; ‘à ¢­¨¢ ¥¬ á ä®­®¬ ¯à¨«®¦¥­¨ï
  539.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  540.       cmp     eax,0x222222                ; ‘à ¢­¨¢ ¥¬ á 梥⮬ á¥âª¨
  541.       je      mouse_err                   ; …᫨ íâ® ®­ - â® ­¨ç¥£® ­¥ ¤¥« ¥¬
  542.       jmp     mouse_set                   ; ŠŽ‘’›‹œ: ¯à룠¥¬ çâ®¡ë ­¥ ¡à âì 梥â á¥âª¨
  543.     mouse_err:                            ; ŠŽ‘’›‹œ: ¥á«¨ ¯®¯ «¨ ¢ á¥âªã ¨«¨ ä®­
  544.       inc     [mouse_y]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ á­ ç «  ¯® å
  545.       inc     [mouse_x]                   ; ŠŽ‘’›‹œ: ᬥ頥¬ ¯® ¤¨ £®­ «¨ ¯®â®¬ ¯® ã
  546.       dec     esi                         ; ŠŽ‘’›‹œ: “¬¥­ìè ¥¬ ä« £
  547.       cmp     esi,0                       ; ŠŽ‘’›‹œ: ‘à ¢­¨¢ ¥¬ á ­ã«¥¬
  548.     jz        mouse_exit                  ; ŠŽ‘’›‹œ: …᫨ ­®«ì ⮠ᤥ« «¨ ¢áñ çâ® ¬®£«¨
  549.     jmp    re_mouse_loop                  ; ŠŽ‘’›‹œ: …᫨ ­¥ ­®«ì â® ¯®¯à®¡ã¥¬ ¢§ïâì á®á¥«­¨© ¯¨ªá¥«ì
  550.     mouse_set:                            ; ˆ­ ç¥ § ¯®¬¨­ ¥¬ ­®¢ë© 梥â
  551.       cmp     [mouse_f],1
  552.       jne     was_right
  553.       mov     [color],eax
  554.       call    draw_result
  555.       jmp     mouse_exit
  556.     was_right:
  557.       cmp     [mouse_f],2
  558.       jne     mouse_exit
  559.       mov     [color2],eax
  560.       call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  561.     mouse_exit:
  562.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  563. ;end_mouse_get----------------------------------------------------------------------------------------
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570. draw_value:
  571.     ;.................................................................................................
  572.     ; ‚뢮¤ ç¨á«  ¨§ áâப¨ ¢ 㪠§ ­­®© ®¡« áâ¨
  573.     ;.................................................................................................
  574.     push    ebx                           ; á®å࠭塞 ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  575.     mov     ebx,10                        ; ãáâ ­ ¢«¨¢ ¥¬ ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  576.     mov     edi,buff              ; 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  577.         call    int2ascii         ; ª®­¢¥àâ¨à㥬 ç¨á«® ¨ «®¦¨¬ ª ª áâப㠢 ¡ãä¥à + esi ¤«¨­ 
  578.     mov     eax,SF_DRAW_TEXT  ; äã­ªæ¨ï 4: ­ ¯¨á âì ⥪áâ ¢ ®ª­¥
  579.     pop     ebx                           ; ¤®áâ ¥¬ ¨§ á⥪  ¯à¨á« ­­ë¥ ª®®à¤¨­ âë
  580.     cmp     esi,2                         ; –…’ˆŽ‚€ˆ… ’…Š‘’€
  581.     jne     draw_value_1
  582.     add     ebx,4 shl 16
  583.     jmp     draw_value_e
  584.   draw_value_1:
  585.     cmp     esi,1
  586.     jne     draw_value_e
  587.     add     ebx,7 shl 16
  588.   draw_value_e:
  589.     mov     ecx,0x0;0x10000000                 ; 梥â ⥪áâ  RRGGBB
  590.     add     ecx,[sc.work_text]
  591.     mov     edx,buff                      ; 㪠§ â¥«ì ­  ­ ç «® ⥪áâ 
  592.     int     0x40
  593.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  594. ;end_draw_value
  595.  
  596.   _read_params:
  597.  
  598.       mov eax,dword[params+2]
  599.       mov dword[params_c+0],eax
  600.  
  601.       mov eax,dword[params+6]
  602.       mov dword[params_c+4],eax
  603.  
  604.       mov   esi,params_c
  605.       mov   ecx,16
  606.       call  ascii2int
  607.       mov   [color],eax
  608.  
  609.       mov eax,dword[params+11]
  610.       mov dword[params_c+0],eax
  611.  
  612.       mov eax,dword[params+15]
  613.       mov dword[params_c+4],eax
  614.  
  615.       mov   esi,params_c
  616.       mov   ecx,16
  617.       call  ascii2int
  618.       mov   [color2],eax
  619.  
  620.       ret
  621.  
  622. hex_digit:
  623.     ;.................................................................................................
  624.     ; à¥®¡à §®¢ ­¨¥ ¢ ASCII (¢­¥ § ¢¨á¨¬®á⨠®â á¨á⥬ë áç¨á«¥­¨ï)
  625.     ;.................................................................................................
  626.     cmp    dl,10                          ; ¢ dl ®¦¨¤ ¥âáï ç¨á«® ®â 0 ¤® 15
  627.     jb     .less                          ; ¥á«¨ dl<10 â® ¯¥à¥å®¤¨¬
  628.     add    dl,'A'-10                      ; 10->A 11->B 12->C ...
  629.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  630.     .less:
  631.     or     dl,'0'                         ; …᫨ á¨á⥬  áç¨á«¥­¨ï 10-ï ¨ ¬¥­¥¥
  632.     ret                                   ; ‚®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  633. ;end_hex_digit
  634.  
  635. int2ascii:
  636.     ;.................................................................................................
  637.     ; à¥®¡à §®¢ ­¨¥ ç¨á«  ¢ áâபã
  638.     ;.................................................................................................
  639.     ; eax - 32-å §­ ç­®¥ ç¨á«®
  640.     ; ebx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  641.     ; edi - 㪠§ â¥«ì ­  áâப㠡ãä¥à 
  642.     ; ‚®§¢à é ¥â § ¯®«­¥­­ë© ¡ãä¥à ¨ esi - ¤«¨­  áâப¨
  643.     push    edi
  644.     xor     esi,esi                       ; § ­ã«ï¥¬ áç¥â稪 ᨬ¢®«®¢
  645.     convert_loop:
  646.     xor     edx,edx                       ; § ­ã«ï¥¬ ॣ¨áâà ¯®¤ ®áâ â®ª
  647.     div     ebx                           ; eax/ebx - ®áâ â®ª ¢ edx
  648.     call    hex_digit                     ; ¯à¥®¡à §ã¥¬ ᨬ¢®«
  649.     push    edx                           ; «®¦¨¬ ¢ á⥪
  650.     inc     esi                           ; 㢥«¨ç¨¢ ¥¬ áç¥â稪
  651.     test    eax,eax                       ; ¥á«¨ ¥é¥ ¬®¦­® ¤¥«¨âì
  652.     jnz     convert_loop                  ; â® ¤¥«¨¥¬ ¥é¥
  653.     cld                                   ; ŽŸ‡€’…‹œŽ á¡à á뢠¥¬ ä« £ ­ ¯à ¢«¥­¨ï DF (§ ¯¨áì ¢¯¥àñ¤)
  654.     write_loop:                           ; ¨­ ç¥
  655.     pop     eax                           ; ¤®áâ ¥¬ ¨§ á⥪  ¢ ¥ å
  656.     stosb                                 ; § ¯¨á뢠¥¬ ¢ ¡ãä¥à ¯®  ¤à¥áã ES:(E)DI
  657.     dec     esi                           ; 㬥­ìè ¥¬ áç¥â稪
  658.     test    esi,esi                       ; ¥á«¨ ¥áâì çâ® ¤®áâ ¢ âì ¨§ á⥪ 
  659.     jnz     write_loop                    ; â® ¤®áâ ñ¬
  660.     mov     byte [edi],0                  ; ¨­ ç¥ ¤®¯¨áë뢠¥¬ ­ã«¥¢®© ¡ ©â
  661.     pop     edi
  662.     ; ª®¤ ­¨¦¥ ­¥ ¨¬¥¥â ­¨ç¥£® ®¡é¥£® ª ä㭪樨, ¯à®áâ® ¢®§¢à é ¥â ¥é¥ ¤«¨­­ã ¯®«ã祭­®© áâப¨
  663.     call    str_len
  664.     mov     esi,eax
  665.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  666. ;end_int2ascii
  667.  
  668. char2byte:
  669.     sub al,'0'
  670.     cmp al,10
  671.     jb  done
  672.     add al,'0'
  673.     and al,0x5f
  674.     sub al,'A'-10
  675.     and al,0x0f
  676.     done:
  677.     ret
  678. ;end_char2byte
  679.  
  680. ascii2int:
  681.     ;.................................................................................................
  682.     ; à¥®¡à §®¢ ­¨¥ áâப¨ ¢ ç¨á«®
  683.     ;.................................................................................................
  684.     ; esi - 㪠§ â¥«ì ­  ­ã«ìâ¥à¬¨­¨à®¢ ­­ãî áâபã
  685.     ; ecx - ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï
  686.     ; ‚®§¢à é ¥â eax - ç¨á«®
  687.     push esi
  688.     xor eax,eax
  689.     xor ebx,ebx
  690.     cmp byte [esi],'-'
  691.     jnz .next
  692.     inc esi
  693.     .next:
  694.     lodsb
  695.     or al,al
  696.     jz .done
  697.     call char2byte
  698.     imul ebx,ecx
  699.     add ebx,eax
  700.     jmp .next
  701.     .done:
  702.     xchg ebx,eax
  703.     pop esi
  704.     cmp byte [esi],'-'
  705.     jz .negate
  706.     ret
  707.     .negate:
  708.     neg eax
  709.     ret
  710. ;end_ascii2int
  711.  
  712. get_spectr:
  713.     ;.................................................................................................
  714.     ; ¢®§¢à é ¥â r,g,b á®á⮢«ïî騥 梥â 
  715.     ;.................................................................................................
  716.     mov     ecx,[color]
  717.     mov     [cblue],cl
  718.     shr     ecx,8
  719.     mov     [cgreen],cl
  720.     shr     ecx,8
  721.     mov     [cred],cl
  722.     shr     ecx,8
  723.     mov     [calpha],cl
  724.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  725. ;end_get_spectr
  726.  
  727. set_spectr:
  728.     ;.................................................................................................
  729.     ; ãáâ ­ ¢«¨¢ ¥â ¨§ r,g,b 梥â
  730.     ;.................................................................................................
  731.     movzx   eax,[calpha]
  732.     shl     eax,8
  733.     mov     al,[cred]
  734.     shl     eax,8
  735.     mov     al,[cgreen]
  736.     shl     eax,8
  737.     mov     al,[cblue]
  738.     mov     [color],eax
  739.     call    draw_result                   ; ‚뢮¤¨¬ १ã«ìâ â
  740.     ret                                   ; ¨ ¢®§¢à é ¥¬ ã¯à ¢«¥­¨¥
  741. ;end_get_spectr
  742.  
  743. str_len:
  744.     ;.................................................................................................
  745.     ; ®¯à¥¤¥«ï¥â ¤«¨­ã áâப¨ (¢å®¤->EDI ZS offset ; ¢ë室->EAX ZS length)
  746.     ;.................................................................................................
  747.         push ecx esi edi
  748.  
  749.         cld
  750.         xor   al, al
  751.         mov ecx, 0FFFFFFFFh
  752.         mov esi, edi
  753.         repne scasb
  754.         sub edi, esi
  755.         mov eax, edi
  756.         dec eax
  757.  
  758.         pop edi esi ecx
  759.  
  760.         ret
  761. ;end_str_len
  762.  
  763.  
  764.  ;-------------------------------
  765.  
  766.  proc random uses ebx ecx edx, max_value
  767.     mov     ebx, 0
  768.     mov     eax, ebx
  769.     or      eax, eax
  770.     jnz     @f
  771.     rdtsc
  772.     xor     eax, edx
  773.     mov     ebx, eax
  774.  
  775.  @@:
  776.     xor     edx, edx
  777.     mov     ecx, 127773
  778.     div     ecx
  779.     mov     ecx, eax
  780.     mov     eax, 16807
  781.     mul     edx
  782.     mov     edx, ecx
  783.     mov     ecx, eax
  784.     mov     eax, 2836
  785.     mul     edx
  786.     sub     ecx, eax
  787.     xor     edx, edx
  788.     mov     eax, ecx
  789.     mov     ebx, ecx
  790.     mov     ecx, 100000
  791.     div     ecx
  792.     mov     eax, edx
  793.  
  794.     xor     edx, edx
  795.     mov     ebx, [max_value]
  796.     div     ebx
  797.     mov     eax, edx
  798.  
  799.     ret
  800.  endp
  801.  
  802. set_background2:
  803.     mcall   SF_SYS_MISC, SSF_HEAP_INIT
  804.     mcall   SF_SYS_MISC, SSF_MEM_ALLOC, 256 * 256 * 3
  805.     mov     [bgimg_buf], eax
  806.  
  807.     mov     edx, eax
  808.     mov     ecx, 256 * 256
  809.   @@:
  810.     stdcall random, 15 + 1
  811.     sub     al, 15 / 2
  812.  
  813.     mov     bh, byte [color + 0]
  814.     add     bh, al
  815.     mov     [edx + 0], bh
  816.     mov     bh, byte [color + 1]
  817.     add     bh, al
  818.     mov     [edx + 1], bh
  819.     mov     bh, byte [color + 2]
  820.     add     bh, al
  821.     mov     [edx + 2], bh
  822.     add     edx, 3
  823.     loop    @b
  824.  
  825.     mcall   SF_BACKGROUND_SET, SSF_SIZE_BG, 256, 256
  826.     mcall   SF_BACKGROUND_SET, SSF_MODE_BG, 1
  827.     mcall   SF_BACKGROUND_SET, SSF_IMAGE_BG, [bgimg_buf], 0, 256 * 256 * 3
  828.     mcall   SF_BACKGROUND_SET, SSF_REDRAW_BG
  829.  
  830.     mcall   SF_SYS_MISC, SSF_MEM_FREE, [bgimg_buf]
  831.     stdcall save_eskin_ini, 'B '
  832. ret
  833.  
  834. align 4
  835. proc save_eskin_ini, opt_HB:dword
  836.         ;save to file eskin.ini
  837.         xor     al,al
  838.         mov     ecx,1024
  839.         mov     edi,sys_path+2
  840.         repne   scasb
  841.         sub     edi,sys_path+3
  842.         invoke  ini_set_str, inifileeskin, amain, aprogram, sys_path+2, edi
  843.         ;add param 'H '
  844.         mov     eax,[opt_HB]
  845.         mov     word[params],ax
  846.         mov     eax,[color]
  847.         or      eax,0xf ;¤«ï ¨§¡¥¦ ­¨ï ¢¥ç­®£® 横«  ¥á«¨ eax=0
  848.         mov     edi,params+2
  849.         @@:
  850.         rol     eax,8
  851.         or      al,al
  852.         jnz     @f
  853.         mov     word[edi],'00' ;­ã«¨ ¯¥à¥¤ ç¨á«®¬
  854.         add     edi,2
  855.         jmp     @b
  856.         @@:
  857.         and     al,0xf0
  858.         jnz     @f
  859.         mov     byte[edi],'0'
  860.         inc     edi
  861.         @@:
  862.         mov     eax,[color]
  863.         mov     ebx,16
  864.         call    int2ascii
  865.         mov     byte[params+10],' '
  866.         ;add color2
  867.         mov     eax,[color2]
  868.         or      eax,0xf ;¤«ï ¨§¡¥¦ ­¨ï ¢¥ç­®£® 横«  ¥á«¨ eax=0
  869.         mov     edi,params+11
  870.         @@:
  871.         rol     eax,8
  872.         or      al,al
  873.         jnz     @f
  874.         mov     word[edi],'00' ;­ã«¨ ¯¥à¥¤ ç¨á«®¬
  875.         add     edi,2
  876.         jmp     @b
  877.         @@:
  878.         and     al,0xf0
  879.         jnz     @f
  880.         mov     byte[edi],'0'
  881.         inc     edi
  882.         @@:
  883.         mov     eax,[color2]
  884.         mov     ebx,16
  885.         call    int2ascii
  886.  
  887.         invoke  ini_set_str, inifileeskin, amain, aparam, params, 19
  888.         ret
  889. endp
  890.  
  891. ;#___________________________________________________________________________________________________
  892. ;****************************************************************************************************|
  893. ; ‹ŽŠ ……Œ…›• ˆ ŠŽ‘’€’                                                                         |
  894. ;----------------------------------------------------------------------------------------------------/
  895. circle:
  896.     title       db 'Palitra v0.77',0      ; åà ­¨â ¨¬ï ¯à®£à ¬¬ë
  897.     hidden      db 'Hidden',0
  898. ;    hex         db '#',0                 ; ¤«ï ¢ë¢®¤  à¥èñ⪨ ª ª ⥪áâ 
  899.     cname       db 'RGBAx'                ; åà ­¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª  ª®­æ 
  900.     larrow      db 0x1A,0
  901.     buff        db '000',0
  902.     bground     db 'Background',0         ; ¨¬ï ª­®¯ª¨ - 14
  903.     bground1    db 'Gradient',0           ; ¨¬ï ª­®¯ª¨ - 15
  904.     bground2    db 'Noisy',0              ; ¨¬ï ª­®¯ª¨ - 16
  905.     runmode     dd 1                      ; ०¨¬ § ¯ã᪠ (1-normal, 2-hidden, 3-colordialog)
  906.     color2      dd 00FFFFFFh              ; åà ­¨â §­ ç¥­¨¥ ¢â®à®£® ¢ë¡à ­­®£® 梥â 
  907.  
  908.     inifileeskin db '/sys/settings/system.ini',0
  909.     amain       db 'style',0
  910.     aprogram    db 'bg_program',0
  911.     aparam      db 'bg_param',0
  912.  
  913.     i18_name    db 'ICONS18',0
  914.     i18bg_name  db 'ICONS18W',0
  915.  
  916.  
  917. align 16
  918. @IMPORT:
  919.  
  920. library \
  921.     libini , 'libini.obj'
  922.  
  923. import  libini, \
  924.         ini_set_str, 'ini_set_str'
  925.  
  926. I_END:
  927.     cm          rb 12
  928.     color       rd 1                      ; åà ­¨â §­ ç¥­¨¥ ¢ë¡à ­­®£® 梥â 
  929.     mouse_x     rd 1                      ; åà ­¨â £«®¡ «ì­ãî å ª®®à¤¨­ âã ¬ëè¨
  930.     mouse_y     rd 1                      ; åà ­¨â £«®¡ «ì­ãî ã ª®®à¤¨­ âã ¬ëè¨
  931.     mouse_f     rd 1                      ; åà ­¨â ¤ ­­ë¥ ® ⮬ ª ª ï ª­®¯ª  ¬ëè¨ ¡ë«  ­ ¦ â 
  932.     desctop_w   rd 1                      ; åà ­¨â è¨à¨­ã íªà ­ 
  933.     desctop_h   rd 1                      ; åà ­¨â ¢ëá®âã íªà ­ 
  934.     sc          system_colors             ; åà ­¨â áâàãªâãàã á¨á⥬­ëå 梥⮢ ᪨­ 
  935.     cred        rb 1                      ; åà ­¨¬ ªà á­ë© ᯥªâà
  936.     cgreen      rb 1                      ; åà ­¨¬ §¥«¥­ë© ᯥªâà
  937.     cblue       rb 1                      ; åà ­¨¬ ᨭ¨© ᯥªâà
  938.     calpha      rb 1                      ; åà ­¨¬ ¯à®§à ç­®áâì
  939.     pnext       rd 1                      ; áç¥â稪 ¯¥à¥ª«î祭¨ï ¯ «¨âàë
  940.     renmode     rd 1                      ; ०¨¬ ®âà¨á®¢ª¨ (1-梥⮢ ï á奬 ,2-¯¨¯¥âª ,3-ªà㣮¢ ï)
  941.     params      rb 20                     ; ¯à¨ñ¬ ¯ à ¬¥â஢
  942.     params_c    rb 9                      ; ¯à¨ñ¬­¨ª ¤«ï 梥â 
  943.     bgimg_buf   rd 1                      ; buffer for a generated image
  944.     icons18     dd ?                      ; pointer to a shared memory of icons18.png
  945.     icons18bg   dd ?                      ; pointer to a shared memory of icons18.png with filled bg
  946.  
  947.         rd 1024
  948. stacktop:
  949.         sys_path rb 1024
  950. I_MEM: