Palitra v0.7 - Add picker
git-svn-id: svn://kolibrios.org@3453 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
58f7495fc7
commit
6137a14777
@ -31,6 +31,7 @@
|
||||
;; 0.6.0 - „®¡ ¢«¥ ¢®§¬®¦®áâì § ¯ãáª á ¯ à ¬¥âà ¬¨ |
|
||||
;; - „®¡ ¢«¥ ०¨¬ H (hidden) ¯à®¨§¢®¤¨â § ¬¥ã ä® à ¡®ç¥£® á⮫ £à ¤¨¥â®© § «¨¢ª®©. |
|
||||
;; - <20>®«ìè ï ¤¥®¯â¨¬¨§ æ¨ï. |
|
||||
;; 0.7.0 - „®¡ ¢«¥ ¯¨¯¥âª - ¢ë¡®à á।îî ª®¯ªã ¬ëè¨ |
|
||||
;.....................................................................................................
|
||||
;; All rights reserved. |
|
||||
;; |
|
||||
@ -62,13 +63,12 @@
|
||||
;----------------------------------------------------------------------------------------------------/
|
||||
use32
|
||||
org 0x0
|
||||
|
||||
db 'MENUET01'
|
||||
dd 0x01
|
||||
dd START
|
||||
dd I_END
|
||||
dd 0x100000
|
||||
dd 0x1000
|
||||
dd I_END+4096
|
||||
dd I_END+4096
|
||||
dd params
|
||||
dd 0x0
|
||||
|
||||
@ -79,33 +79,13 @@
|
||||
WIN_X equ 250 ; ª®®à¤¨ â å ®ª
|
||||
WIN_Y equ 190 ; ª®®à¤¨ â ã ®ª
|
||||
|
||||
panel:
|
||||
file "panel.raw"
|
||||
|
||||
START:
|
||||
; ®¡à ¡®âª ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨
|
||||
mov edi,params ; 㪠§ ⥫ì áâபã
|
||||
call str_len ; ¯®«ãç ¥¬ ¤«¨ã áâப¨
|
||||
cmp eax,0 ; áâà ¢¨¢ ¥¬ ¤«¨ã á ã«ñ¬
|
||||
je red ; ¥á«¨ ¯ à ¬¥â஢ ¥â â® ã室¨¬
|
||||
call _read_params ; ¨ ç¥ ç¨â ¥¬ ¯ à ¬¥âàë 梥â (®ç¥ì ªà¨¢®)
|
||||
xor eax,eax ; § ã«ï¥¬ ॣ¨áâà
|
||||
mov al,byte [params] ; ç¨â ¥¬ ¯ à ¬¥âà ¬®¤
|
||||
cmp al,'N' ; áà ¢¨¢ ¥¬ á normal mode
|
||||
jne _no_normalmode ; ¥á«¨ ¥â â® ã室¨¬ ¯à®¢¥àªã ¤ «ìè¥
|
||||
mov [runmode],1 ; ¥á«¨ ¤ â® ãáâ ¢«¨¢ ¥¬ ¥£®
|
||||
jmp red ; ¨¤ñ¬ ®âà¨á®¢ªã
|
||||
_no_normalmode: ; ¥á«¨ ¥ normal mode â®
|
||||
cmp al,'H' ; ¢®§¬®¦® hidden mode
|
||||
jne _no_hiddenmode ; ¥á«¨ ¥ ® â® ã室¨¬ ¤ «ìè¥
|
||||
mov [runmode],2 ; ¥á«¨ ® â® ãáâ ¢«¨¢ ¥¬ çâ® íâ® ® ( å?)
|
||||
call set_background ; ¬¥ï¥¬ ä®
|
||||
jmp bexit ; ¨ § ªàë¢ ¥¬ ¯à®£ã
|
||||
_no_hiddenmode: ; ¥á«¨ ¥ hidden mode
|
||||
cmp al,'D' ; ¢®§¬®¦® íâ® color dialog mode
|
||||
jne _no_dialogmode ; ¥á«¨ ¢áñ â ª¨ ¥ ® â® ã室¨¬
|
||||
mov [runmode],3 ; ¨ ç¥ ãª §ë¢ ¥¬ çâ® íâ® â ª¨ ®
|
||||
jmp red ; ¨ ã室¨¬ ¢ë¯®«¥¨¥
|
||||
_no_dialogmode: ; ¥á«¨ íâ® ¨ ®¤¨ ¨§ § ¥ëå ¬®¤®¢
|
||||
mov [runmode],1 ; â® á¡à áë¢ ¥¬ ¤¥ä®«â
|
||||
jmp red ; ¨ à¨á㥬
|
||||
mcall 68,11 ; ¨¨æ¨ «¨§ æ¨ï ªãç¨
|
||||
mcall 40,0x27 ; ãáâ ¢«¨¢ ¥¬ ¬ áªã ᮡë⨩
|
||||
include 'params_init.inc' ; ®¡à ¡®âª ¯ à ¬¥â஢ ª®¬ ¤®© áâப¨
|
||||
|
||||
;#___________________________________________________________________________________________________
|
||||
;****************************************************************************************************|
|
||||
@ -121,6 +101,8 @@ still:
|
||||
je key ; ¥á«¨ ¤ - key
|
||||
cmp eax,3 ; ¦ â ª®¯ª ?
|
||||
je button ; ¥á«¨ ¤ - button
|
||||
cmp eax,6 ; ᮡë⨥ ®â ¬ëè¨ ¢¥ ®ª
|
||||
je mouse ; ¥á«¨ ¤ - button
|
||||
jmp still ; ¥á«¨ ¤à㣮¥ ᮡë⨥ - ¢ ç «® 横«
|
||||
;end_still
|
||||
|
||||
@ -129,6 +111,19 @@ key: ;
|
||||
jmp still ; ¢¥àãâìáï ª ç «ã 横«
|
||||
;end_key
|
||||
|
||||
mouse:
|
||||
mov eax,[renmode]
|
||||
cmp eax,2
|
||||
jnz still
|
||||
call cyrcle_draw
|
||||
mcall 37,2
|
||||
cmp al,100b
|
||||
jne still
|
||||
mov [color],edx
|
||||
call draw_result
|
||||
jmp still ; ¢¥àãâìáï ª ç «ã 横«
|
||||
;end_mouse
|
||||
|
||||
button:
|
||||
mcall 17 ; 17 - ¯®«ãç¨âì ¨¤¥â¨ä¨ª â®à ¦ ⮩ ª®¯ª¨
|
||||
cmp ah, 1 ; ¥á«¨ ¦ â ª®¯ª á ®¬¥à®¬ 1,
|
||||
@ -154,7 +149,7 @@ button:
|
||||
circle_bg:
|
||||
cmp ah, 15 ; Š®¯ª Šà㣮¢ ï ¯ «¨âà
|
||||
jne next_end ; ¥á«¨ ¥ ¦ â â® ¢ë室¨¬
|
||||
;mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
|
||||
mov [renmode],2 ; ¢ª«îç ¥¬ ®âà¨á®¢ªã ªà㣮¢®© ¯ «¨âàë
|
||||
call draw_palitra ; <20>ˆ‘“…Œ <20>€‹ˆ’<CB86>“
|
||||
jmp still ; ¨ ®¦¨¤ ¨¥ ᮡëâ¨ï
|
||||
next_end:
|
||||
@ -303,41 +298,52 @@ draw_main:
|
||||
mov edx,0x6000000C ; ID = 12
|
||||
mov esi,[sc.work_button] ; RGB
|
||||
int 0x40 ; call
|
||||
mov eax,13 ; draw rect
|
||||
mov ebx,266 shl 16+16 ; [x] + [size]
|
||||
mov ecx,9 shl 16+16 ; [y] + [size]
|
||||
mov edx,0x666666 ; RGB
|
||||
push esi ; backup esi
|
||||
mov esi,8 ; counter=8
|
||||
draw_lpanel: ; loop label
|
||||
int 0x40 ; call draw black rect
|
||||
; circle diagram
|
||||
add ecx,19 shl 16 ; move rect
|
||||
dec esi ; decrement counter
|
||||
cmp esi,0 ; if counter!=zero
|
||||
jne draw_lpanel ; then goto label
|
||||
mov esi,8 ; else counter=8
|
||||
mov ebx,267 shl 16+14 ; [x] + [size]
|
||||
mov ecx,10 shl 16+14 ; [y] + [size]
|
||||
mov edx,0xF3F3F3 ; RGB
|
||||
draw_lpanel2: ; 2 loop label
|
||||
int 0x40 ; call draw white rect
|
||||
add ecx,19 shl 16 ; move rect
|
||||
dec esi ; decrement counter
|
||||
cmp esi,0 ; if counter!=0
|
||||
jne draw_lpanel2 ; then goto label2
|
||||
pop esi ; restore esi
|
||||
mov edx,0x6000000F ; ID = 15
|
||||
int 0x40 ; call
|
||||
|
||||
mov eax,7 ; 7 - ®¬¥à äãªæ¨¨
|
||||
mov ebx,panel ; 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR...
|
||||
mov ecx, 16 shl 16 + 149 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y]
|
||||
mov edx,266 shl 16 + 9 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y]
|
||||
int 0x40
|
||||
|
||||
;mov eax,13 ; draw rect
|
||||
;mov ebx,266 shl 16+16 ; [x] + [size]
|
||||
;mov ecx,9 shl 16+16 ; [y] + [size]
|
||||
;mov edx,0x666666 ; RGB
|
||||
;push esi ; backup esi
|
||||
;mov esi,8 ; counter=8
|
||||
;draw_lpanel: ; loop label
|
||||
; int 0x40 ; call draw black rect
|
||||
; add ecx,19 shl 16 ; move rect
|
||||
; dec esi ; decrement counter
|
||||
; cmp esi,0 ; if counter!=zero
|
||||
; jne draw_lpanel ; then goto label
|
||||
; mov esi,8 ; else counter=8
|
||||
; mov ebx,267 shl 16+14 ; [x] + [size]
|
||||
; mov ecx,10 shl 16+14 ; [y] + [size]
|
||||
; mov edx,0xF3F3F3 ; RGB
|
||||
;draw_lpanel2: ; 2 loop label
|
||||
; int 0x40 ; call draw white rect
|
||||
; add ecx,19 shl 16 ; move rect
|
||||
; dec esi ; decrement counter
|
||||
; cmp esi,0 ; if counter!=0
|
||||
; jne draw_lpanel2 ; then goto label2
|
||||
;pop esi ; restore esi
|
||||
; draw_left_arrow for button_next_colorsheme
|
||||
mov eax,4 ; Write string
|
||||
mov ebx,272 shl 16+13 ; [x] + [y]
|
||||
mov ecx,0x0 ; RGB
|
||||
mov edx,larrow ; string pointer
|
||||
mov esi,1 ; count symbol
|
||||
int 0x40 ; call
|
||||
mov eax,38 ; draw line
|
||||
mov ebx,270 shl 16+272 ; [start x] + [end x]
|
||||
mov ecx,16 shl 16+16 ; [start y] + [end y]
|
||||
mov edx,0x0 ; RGB
|
||||
int 0x40 ; call
|
||||
;mov eax,4 ; Write string
|
||||
;mov ebx,272 shl 16+13 ; [x] + [y]
|
||||
;mov ecx,0x0 ; RGB
|
||||
;mov edx,larrow ; string pointer
|
||||
;mov esi,1 ; count symbol
|
||||
;int 0x40 ; call
|
||||
;mov eax,38 ; draw line
|
||||
;mov ebx,270 shl 16+272 ; [start x] + [end x]
|
||||
;mov ecx,16 shl 16+16 ; [start y] + [end y]
|
||||
;mov edx,0x0 ; RGB
|
||||
;int 0x40 ; call
|
||||
ret ; return
|
||||
;.................................................................................................
|
||||
|
||||
@ -456,10 +462,11 @@ desktop_get:
|
||||
int 0x40 ; xsize = à §¬¥à ¯® £®à¨§®â «¨ - 1
|
||||
mov ebx,eax ;
|
||||
shr ebx,16 ; ebx = xsize-1
|
||||
;movzx edx,ax ;; edx = ysize-1 («¨è¨© ª®¤)
|
||||
movzx edx,ax ; edx = ysize-1 («¨è¨© ª®¤)
|
||||
inc ebx ; ebx = xsize
|
||||
;inc edx ;; edx = ysize («¨è¨© ª®¤)
|
||||
inc edx ; edx = ysize («¨è¨© ª®¤)
|
||||
mov [desctop_w],ebx
|
||||
mov [desctop_h],edx
|
||||
ret
|
||||
;end_desktop_get
|
||||
|
||||
@ -504,8 +511,8 @@ draw_palitra:
|
||||
mov edx,[sc.work] ; 梥â
|
||||
int 0x40
|
||||
|
||||
;cmp [renmode],2
|
||||
;je cyrcle_draw
|
||||
cmp [renmode],2
|
||||
je cyrcle_draw
|
||||
;cmp [renmode],1
|
||||
;je picker_draw
|
||||
cmp [renmode],0
|
||||
@ -515,13 +522,125 @@ draw_palitra:
|
||||
;.................................................................................................
|
||||
; Žâà¨á®¢ª ªà㣮¢®© ¤¨ £à ¬¬ë
|
||||
;.................................................................................................
|
||||
;cyrcle_draw:
|
||||
;mov eax,7 ; 7 - ®¬¥à äãªæ¨¨
|
||||
;mov ebx,circle ; 㪠§ â¥«ì ¨§®¡à ¦¥¨¥ ¢ ä®à¬ ⥠BBGGRRBBGGRR...
|
||||
;mov ecx,148 shl 16 + 148 ; [à §¬¥à ¯® ®á¨ x]*65536 + [à §¬¥à ¯® ®á¨ y]
|
||||
;mov edx,110 shl 16 + 9 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y]
|
||||
;int 0x40
|
||||
;ret
|
||||
cyrcle_draw:
|
||||
;mov eax,13
|
||||
;mov edx,0x666666
|
||||
;mov ebx,108*65536+152
|
||||
;mov ecx,125*65536+33
|
||||
;mcall
|
||||
;mov edx,0xF3F3F3
|
||||
;mov ebx,109*65536+150
|
||||
;mov ecx,126*65536+31
|
||||
;mcall
|
||||
|
||||
;mov eax,4 ; 4 - ¢ë¢¥á⨠áâபã ⥪áâ ¢ ®ª®
|
||||
;mov ebx,115 shl 16+131 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y]
|
||||
;mov ecx,0x666666 ; 0xX0RRGGBB (RR, GG, BB § ¤ îâ 梥â ⥪áâ )
|
||||
;mov edx,hint ; 㪠§ ⥫ì ç «® áâப¨
|
||||
;mov esi,24 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
|
||||
;mcall
|
||||
;mov ebx,125 shl 16+144 ; [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [ª®®à¤¨ â ¯® ®á¨ y]
|
||||
;mov edx,hint2 ; 㪠§ ⥫ì ç «® áâப¨
|
||||
;mov esi,21 ; ¢ë¢®¤¨âì esi ᨬ¢®«®¢
|
||||
;mcall
|
||||
|
||||
mov eax,13
|
||||
mov edx,0x666666
|
||||
mov ebx,111*65536+145
|
||||
mov ecx, 9*65536+145
|
||||
mcall
|
||||
;mov edx,[color]
|
||||
;mov ebx,109*65536+150
|
||||
;mov ecx, 10*65536+150
|
||||
;mcall
|
||||
call mouse_local ; ¯®«ãç ¥¬ ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª
|
||||
mov ecx, [mouse_x] ; § ®á¨¬ ¢ ॣ¨áâà
|
||||
mov edx, [mouse_y] ; § ®á¨¬ ¢ ॣ¨áâà
|
||||
cmp ecx, WIN_W-10
|
||||
jg cyrcle_draw_2
|
||||
cmp edx, WIN_H
|
||||
jle end_cyrcle_draw
|
||||
|
||||
cyrcle_draw_2:
|
||||
call desktop_get
|
||||
call mouse_global
|
||||
|
||||
mov ebx,112*65536+11
|
||||
mov esi,0 ; counter=8
|
||||
circle_loop:
|
||||
mov ecx, 10*65536+11
|
||||
mov edi,0
|
||||
circle_loop2:
|
||||
mov eax,13
|
||||
call circle_pixel_read
|
||||
mcall
|
||||
add ecx,11 shl 16
|
||||
inc edi
|
||||
cmp edi,13
|
||||
jne circle_loop2
|
||||
|
||||
add ebx,11 shl 16
|
||||
inc esi
|
||||
cmp esi,13
|
||||
jne circle_loop
|
||||
|
||||
|
||||
mov eax,13
|
||||
mov edx,0x0
|
||||
mov ebx,177*65536+13
|
||||
mov ecx, 76*65536+13
|
||||
mcall
|
||||
mov ecx, [mouse_x]
|
||||
mov edx, [mouse_y]
|
||||
inc ecx
|
||||
inc edx
|
||||
mov ebx, edx
|
||||
imul ebx, [desctop_w]
|
||||
add ebx, ecx
|
||||
mov eax, 35
|
||||
mcall
|
||||
mov edx,eax
|
||||
mov eax,13
|
||||
mov ebx,178*65536+11
|
||||
mov ecx, 77*65536+11
|
||||
mcall
|
||||
end_cyrcle_draw:
|
||||
ret
|
||||
|
||||
circle_pixel_read:
|
||||
push ecx
|
||||
push ebx
|
||||
push eax
|
||||
mov ecx, [mouse_x]
|
||||
mov edx, [mouse_y]
|
||||
inc ecx
|
||||
add ecx, esi
|
||||
cmp ecx, 6
|
||||
jl _cpr_exit
|
||||
sub ecx, 6
|
||||
inc edx
|
||||
add edx, edi
|
||||
cmp edx, 6
|
||||
jl _cpr_exit
|
||||
sub edx, 6
|
||||
|
||||
mov ebx, edx
|
||||
imul ebx, [desctop_w]
|
||||
add ebx, ecx
|
||||
mov eax, 35
|
||||
mcall
|
||||
mov edx,eax
|
||||
pop eax
|
||||
pop ebx
|
||||
pop ecx
|
||||
ret
|
||||
|
||||
_cpr_exit:
|
||||
mov edx,0x00000000
|
||||
pop eax
|
||||
pop ebx
|
||||
pop ecx
|
||||
ret
|
||||
|
||||
;picker_draw:
|
||||
;ret
|
||||
@ -1079,35 +1198,13 @@ str_len:
|
||||
ret
|
||||
;end_str_len
|
||||
|
||||
;.................................................................................................
|
||||
; ¢®§¢à é ¥â 㪠§ â¥«ì ¯¥à¢®¥ ¢å®¦¤¥¨¥ Chr ‚L (¢å®¤->EDI string ; ¢ë室->EAX offset)
|
||||
;.................................................................................................
|
||||
;strscan:
|
||||
; push ecx ; ¤«¨ áâப¨
|
||||
; push ebx ; 㪠§ ⥫ì ᨬ¢®« (bl)
|
||||
; push esi ; ¯à¨£®¤¨âáï
|
||||
; push edi ; 㪠§ ⥫ì áâபã
|
||||
; mov esi, edi
|
||||
; mov al,bl
|
||||
; repne scasb
|
||||
; sub edi, esi
|
||||
; mov eax, edi
|
||||
; dec eax
|
||||
; pop edi
|
||||
; pop esi
|
||||
; pop ebx
|
||||
; pop ecx
|
||||
; ret
|
||||
;end;
|
||||
|
||||
|
||||
|
||||
|
||||
;#___________________________________________________________________________________________________
|
||||
;****************************************************************************************************|
|
||||
; <20>‹ŽŠ <20>…<EFBFBD>…Œ…<C592><E280A6>›• ˆ ŠŽ<C5A0>‘’€<E28099>’ |
|
||||
;----------------------------------------------------------------------------------------------------/
|
||||
|
||||
circle:
|
||||
cm db 12 dup(0)
|
||||
color dd 00000000h ; åà ¨â § 票¥ ¢ë¡à ®£® 梥â
|
||||
color2 dd 00FFFFFFh ; åà ¨â § 票¥ ¢â®à®£® ¢ë¡à ®£® 梥â
|
||||
@ -1115,8 +1212,9 @@ str_len:
|
||||
mouse_y dd 0 ; åà ¨â £«®¡ «ìãî ã ª®®à¤¨ âã ¬ëè¨
|
||||
mouse_f dd 0 ; åà ¨â ¤ ë¥ ® ⮬ ª ª ï ª®¯ª ¬ëè¨ ¡ë« ¦ â
|
||||
desctop_w dd 0 ; åà ¨â è¨à¨ã íªà
|
||||
desctop_h dd 0 ; åà ¨â ¢ëá®âã íªà
|
||||
sc system_colors ; åà ¨â áâàãªâãàã á¨á⥬ëå 梥⮢ ᪨
|
||||
title db 'Palitra v0.6',0 ; åà ¨â ¨¬ï ¯à®£à ¬¬ë
|
||||
title db 'Palitra v0.7',0 ; åà ¨â ¨¬ï ¯à®£à ¬¬ë
|
||||
hidden db 'Hidden',0
|
||||
hex db '#',0 ; ¤«ï ¢ë¢®¤ à¥èñ⪨ ª ª ⥪áâ
|
||||
cname db 'RGBAx' ; åà ¨â à §àï¤ë 梥⮢ (red,green,blue) x-¬¥âª ª®æ
|
||||
@ -1132,6 +1230,9 @@ str_len:
|
||||
runmode dd 1 ; ०¨¬ § ¯ã᪠(1-normal, 2-hidden, 3-colordialog)
|
||||
params db 20 dup(0) ; ¯à¨ñ¬ ¯ à ¬¥â஢
|
||||
params_c db 9 dup(0) ; ¯à¨ñ¬¨ª ¤«ï 梥â
|
||||
|
||||
|
||||
|
||||
I_END:
|
||||
|
||||
|
||||
|
BIN
programs/media/palitra/trunk/panel.raw
Normal file
BIN
programs/media/palitra/trunk/panel.raw
Normal file
Binary file not shown.
25
programs/media/palitra/trunk/params_init.inc
Normal file
25
programs/media/palitra/trunk/params_init.inc
Normal file
@ -0,0 +1,25 @@
|
||||
mov edi,params ; указатель на строку
|
||||
call str_len ; получаем длину строки
|
||||
cmp eax,0 ; стравниваем длину с нулём
|
||||
je red ; если параметров нет то уходим
|
||||
call _read_params ; иначе читаем параметры цвета (очень криво)
|
||||
xor eax,eax ; зануляем регистр
|
||||
mov al,byte [params] ; читаем параметр мода
|
||||
cmp al,'N' ; сравниваем с normal mode
|
||||
jne _no_normalmode ; если нет то уходим на проверку дальше
|
||||
mov [runmode],1 ; если да то устанавливаем его
|
||||
jmp red ; идём на отрисовку
|
||||
_no_normalmode: ; если не normal mode то
|
||||
cmp al,'H' ; возможно hidden mode
|
||||
jne _no_hiddenmode ; если не он то уходим дальше
|
||||
mov [runmode],2 ; если он то устанавливаем что это он (нах?)
|
||||
call set_background ; меняем фон
|
||||
jmp bexit ; и закрываем прогу
|
||||
_no_hiddenmode: ; если не hidden mode
|
||||
cmp al,'D' ; возможно это color dialog mode
|
||||
jne _no_dialogmode ; если всё таки не он то уходим
|
||||
mov [runmode],3 ; иначе указываем что это таки он
|
||||
jmp red ; и уходим на выполнение
|
||||
_no_dialogmode: ; если это ни один из заявленых модов
|
||||
mov [runmode],1 ; то сбрасываем на дефолт
|
||||
jmp red ; и рисуем
|
Loading…
Reference in New Issue
Block a user