forked from KolibriOS/kolibrios
keybi, simple paint: use skinned windows
git-svn-id: svn://kolibrios.org@6165 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -21,20 +21,29 @@
|
||||
;******************************************************************************
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>砥<EFBFBD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
include 'macros.inc'
|
||||
include '../../../macros.inc'
|
||||
|
||||
;******************************************************************************
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
meos_app_start
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ; 8 byte id
|
||||
dd 0x01 ; title version
|
||||
dd START ; start of code
|
||||
dd I_END ; size of image
|
||||
dd E_END ; memory for app
|
||||
dd E_END ; esp
|
||||
dd 0x0,0x0 ; I_Param , I_Icon
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
code
|
||||
START:
|
||||
mov eax,40 ; ᮮ<>騬 <20><><EFBFBD>⥬<EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20><>ࠡ<EFBFBD><E0A0A1>뢠<EFBFBD><EBA2A0>
|
||||
mov ebx,0100101b ; <20><>᪠ ᮡ<>⨩ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> (1) + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (3) + <20><><EFBFBD><EFBFBD> (6
|
||||
int 0x40 ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>㭪<EFBFBD><E3ADAA><EFBFBD>
|
||||
|
||||
mov [workarea.cx],10 ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> ࠡ<>祩 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov [workarea.cy],45 ; <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD>
|
||||
mov [workarea.cx],5 ; <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> ࠡ<>祩 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov [workarea.cy],30 ; <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD>
|
||||
|
||||
red:
|
||||
call draw_window ; <20><><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
@@ -152,9 +161,7 @@ still: ;
|
||||
mov [mouse_pressed],1
|
||||
|
||||
; <20><><EFBFBD><EFBFBD>稬 <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28>⭮<EFBFBD><E2ADAE>⥫쭮 <20><><EFBFBD><EFBFBD>)
|
||||
mov eax,37 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 37 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﭨ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
mov ebx,1 ; <20><><EFBFBD><EFBFBD>㭪<EFBFBD><E3ADAA><EFBFBD> 1
|
||||
int 0x40
|
||||
mcall 37,1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ﭨ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
; <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><> ⠪, <20>⮡<EFBFBD> <20><><EFBFBD> <20>뫨 <20> ࠧ<><E0A0A7><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20>.<2E>. eax <20> ebx
|
||||
mov ebx,eax
|
||||
@@ -202,9 +209,9 @@ still: ;
|
||||
;******************************************************************************
|
||||
|
||||
save_canvas:
|
||||
mov eax,[process.x_size]
|
||||
mov eax,[proc_info.box.width]
|
||||
add eax,[workarea.cx]
|
||||
mov ebx,[process.y_size]
|
||||
mov ebx,[proc_info.box.height]
|
||||
add ebx,[workarea.cy]
|
||||
|
||||
jmp still
|
||||
@@ -217,71 +224,35 @@ save_canvas:
|
||||
|
||||
draw_window:
|
||||
|
||||
mov eax,48 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,3
|
||||
mov ecx,sc
|
||||
mov edx,sizeof.system_colors
|
||||
int 0x40
|
||||
mcall 48,3,sc,sizeof.system_colors ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mcall 12, 1 ; <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x33000000
|
||||
mcall 0, (100 shl 16)+400, (100 shl 16)+300, , , title ; <20><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD>
|
||||
mcall 12, 1
|
||||
|
||||
mcall 9,proc_info,-1 ; <20><><EFBFBD><EFBFBD>稬 <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <><E1A2AE> <20><>⮪<EFBFBD>
|
||||
|
||||
mov eax,12 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 12: ᮮ<><E1AEAE><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov ebx,1 ; 1, <20><>稭<EFBFBD><EFBFBD><EFBFBD> <20><>ᮢ<EFBFBD><EFBFBD><EFBFBD>
|
||||
int 0x40
|
||||
mov eax,[proc_info.box.width] ; <20><><EFBFBD><EFBFBD>ந<EFBFBD> ࠧ<><E0A0A7><EFBFBD> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sub eax,20 ; (<28> ࠧ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - 20)
|
||||
mov [workarea.sx],eax
|
||||
mov eax,[proc_info.box.height]
|
||||
sub eax,63 ; (<28> ࠧ<><E0A0A7><EFBFBD> - 63)
|
||||
mov [workarea.sy],eax
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
mov eax,0 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 0 : <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
mov ebx,100*65536+400 ; [x <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [x ࠧ<><E0A0A7><EFBFBD>]
|
||||
mov ecx,100*65536+300 ; [y <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [y ࠧ<><E0A0A7><EFBFBD>]
|
||||
mov edx,[sc.work] ; 梥<> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RRGGBB,8->color gl
|
||||
or edx,0x02000000
|
||||
mov esi,[sc.grab] ; 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RRGGBB,8->color gl
|
||||
or esi,0x80000000
|
||||
mov edi,[sc.frame] ; 梥<> ࠬ<><E0A0AC> RRGGBB
|
||||
int 0x40
|
||||
|
||||
mov eax,9 ; <20><><EFBFBD><EFBFBD>稬 <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> ᥡ<>
|
||||
mov ebx,process
|
||||
mov ecx,-1
|
||||
int 0x40
|
||||
|
||||
mov eax,[process.x_size] ; <20><><EFBFBD><EFBFBD>ந<EFBFBD> ࠧ<><E0A0A7><EFBFBD> ࠡ<>祩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
add eax,-20 ; (<28> ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD> - 20)
|
||||
mov [workarea.sx],eax ;
|
||||
mov eax,[process.y_size] ;
|
||||
add eax,-60 ; (<28> ࠧ<><E0A0A7><EFBFBD> - 60)
|
||||
mov [workarea.sy],eax ;
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
mov eax,4 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 4 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> ⥪<><E2A5AA>
|
||||
mov ebx,8*65536+8 ; [x] *65536 + [y]
|
||||
mov ecx,[sc.grab_text] ; 梥<>
|
||||
or ecx,0x10000000 ; <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov edx,header ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
||||
mov esi,header_len ; <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
int 0x40
|
||||
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
mov eax,8 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 8 : <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; mov ebx,(300-19)*65536+12 ; [x <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [x ࠧ<><E0A0A7><EFBFBD>]
|
||||
mov ebx,[process.x_size]
|
||||
add ebx,-19
|
||||
shl ebx,16
|
||||
add ebx,12
|
||||
mov ecx,5*65536+12 ; [y <20><><EFBFBD><EFBFBD><EFBFBD>] *65536 + [y ࠧ<><E0A0A7><EFBFBD>]
|
||||
mov edx,1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
mov esi,[sc.grab_button] ; 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RRGGBB
|
||||
int 0x40
|
||||
|
||||
cmp [process.y_size],80
|
||||
cmp [proc_info.box.height],80
|
||||
jb .finish
|
||||
|
||||
|
||||
mov eax, 8
|
||||
mov edx, 1
|
||||
; ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>롮<EFBFBD><EBA1AE> 梥<><E6A2A5>:
|
||||
mov ebx,10*65536+10 ; <20><>砫쭠<E7A0AB> x <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20> ࠧ<><E0A0A7><EFBFBD>
|
||||
mov ecx,27*65536+10 ; <20><>砫쭠<E7A0AB> y <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> & size
|
||||
mov ebx,10*65536+15 ; <20><>砫쭠<E7A0AB> x <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> <20> ࠧ<><E0A0A7><EFBFBD>
|
||||
mov ecx, 7*65536+15 ; <20><>砫쭠<E7A0AB> y <20><><EFBFBD>न<EFBFBD><E0A4A8><EFBFBD><EFBFBD> & size
|
||||
.new_button:
|
||||
inc edx ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD>++;
|
||||
mov esi,[btn_colors-8+edx*4] ; 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int 0x40 ; <20>⠢<EFBFBD><E2A0A2> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
add ebx,12*65536 ; <><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> <20><> 12
|
||||
add ebx,18*65536 ; <><E1ABA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> <20><> 12
|
||||
cmp edx,9 ; <20>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> edx (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD>) <20> 9
|
||||
jbe .new_button ; <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ࠢ<><E0A0A2> -> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
@@ -293,25 +264,20 @@ draw_window:
|
||||
add ebx,[workarea.sx]
|
||||
add ecx,[workarea.sy]
|
||||
mov edx,0xffffff
|
||||
int 0x40
|
||||
mcall 13
|
||||
|
||||
.finish:
|
||||
mov eax,12 ; ᮮ<>頥<EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>襭<EFBFBD><E8A5AD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
||||
mov ebx,2
|
||||
int 0x40
|
||||
|
||||
ret
|
||||
|
||||
;******************************************************************************
|
||||
; <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>樠<EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
; <20> <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD>樠<EFBFBD><E6A8A0><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD>", <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
; <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E1A2AE><EFBFBD> <20><>砫쭮<E7A0AB> <20><><EFBFBD>祭<EFBFBD><E7A5AD>
|
||||
data
|
||||
|
||||
header: ; <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
db 'PAINT v0.2 for MenuetOS'
|
||||
header_len = $ - header ; <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
;data
|
||||
|
||||
title db 'Simple Paint v0.3',0
|
||||
|
||||
mouse_pressed db 0 ; <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>뫠 <20><><EFBFBD><EFBFBD> <20> <20>।<EFBFBD><E0A5A4><EFBFBD>騩 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
; 梥<><E6A2A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
@@ -343,7 +309,7 @@ colors:
|
||||
; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20><> <20><><EFBFBD><EFBFBD><E1A2AE><EFBFBD>. <20> <20>⫨稥 <20><> <20><><EFBFBD><EFBFBD>., <20><> 㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> ࠧ<><E0A0A7><EFBFBD>
|
||||
; 䠩<><E4A0A9>
|
||||
|
||||
udata
|
||||
I_END:
|
||||
|
||||
active_color dd ? ; <20><>⨢<EFBFBD><E2A8A2><EFBFBD> 梥<>
|
||||
|
||||
@@ -357,9 +323,9 @@ udata
|
||||
.sy dd ?
|
||||
|
||||
sc system_colors ; <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5>
|
||||
process process_information ; <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
proc_info process_information ; <20><><EFBFBD><EFBFBD>ଠ<EFBFBD><E0ACA0><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
restflag dd ?
|
||||
canvas rb 800*600*3
|
||||
|
||||
meos_app_end
|
||||
E_END:
|
||||
|
2
programs/media/paint/trunk/build.bat
Normal file
2
programs/media/paint/trunk/build.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
@fasm paint.asm paint
|
||||
@pause
|
@@ -1,3 +1,5 @@
|
||||
fasm keybi.asm keybi
|
||||
kpack keybi
|
||||
pause
|
||||
@erase lang.inc
|
||||
@echo lang fix en >lang.inc
|
||||
@fasm keybi.asm keybi
|
||||
@erase lang.inc
|
||||
@pause
|
@@ -81,23 +81,9 @@ align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
xor eax,eax
|
||||
mov ebx,(10 shl 16)+100
|
||||
mov ecx,(10 shl 16)+75
|
||||
mov edx,[sc.work]
|
||||
or edx,(2 shl 24)+0x10000000+0x20000000
|
||||
mov edi,[sc.grab] ;[sc.frame]
|
||||
mov esi,[sc.grab]
|
||||
int 0x40
|
||||
|
||||
mov eax,8
|
||||
mov ebx,(80 shl 16)+10
|
||||
mov cx,-15
|
||||
shl ecx,16
|
||||
mov cx,10
|
||||
mov edx,1
|
||||
mov esi,[sc.grab_button]
|
||||
int 0x40
|
||||
mov edx, [sc.work]
|
||||
or edx, 0x34000000
|
||||
mcall 0, (10 shl 16)+100, (10 shl 16)+75
|
||||
|
||||
stdcall [check_box_draw], ch1
|
||||
stdcall [check_box_draw], ch2
|
||||
|
Reference in New Issue
Block a user