/programs/system/icon_new/@icon.asm |
---|
1,41 → 1,43 |
;¨®£¤ ¥¢¥à® ®¯à¥¤¥«ï¥âáï è¨à¨ ¬¥î誨 |
ICONS_DAT equ '/rd/1/icons.dat' |
ICON_STRIP equ '/rd/1/iconstrp.png' |
ICON_SIZE equ 68 |
IMG_SIZE equ 32 |
TEXT_BOTTOM_Y equ 14 |
IMAGE_TOP_Y equ 10 ;>=1 |
ALIGN_SIZE equ 68 |
NAME_LENGTH equ 11 |
MIN_NO_MOVING equ 8 |
;¤«ï ¤¨ «®£ ᮧ¤ ¨ï/। ªâ¨à®¢ ¨ï |
ICONSX equ 20 |
ICONSY equ 80 |
ICONS_DAT equ '/rd/1/icons.dat' |
ICON_STRIP equ '/rd/1/iconstrp.png' |
ICON_SIZE equ 68 |
IMG_SIZE equ 32 |
TEXT_BOTTOM_Y equ 14 |
IMAGE_TOP_Y equ 10 ;>=1 |
ALIGN_SIZE equ 68 |
NAME_LENGTH equ 11 |
MIN_NO_MOVING equ 8 |
;¤«ï ¤¨ «®£ ᮧ¤ ¨ï/। ªâ¨à®¢ ¨ï |
ICONSX equ 20 |
ICONSY equ 80 |
ICONS_DRAW_COUNTW equ 10 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ è¨à¨ã |
ICONS_DRAW_COUNTH equ 2 ;ª®«¨ç¥á⢮ ¨ª®®ª ¢ ¢ëá®âã |
SPCW equ 3 ;¯à®¡¥« ¬¥¦¤ã ¨ª®ª ¬¨ ¯® £®à¨§®â «¨ |
SPCH equ 3 |
SPCW equ 3 ;¯à®¡¥« ¬¥¦¤ã ¨ª®ª ¬¨ ¯® £®à¨§®â «¨ |
SPCH equ 3 |
END_ICONS_AREAW equ ICONSX+(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
END_ICONS_AREAH equ ICONSY+(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
SizeData equ bufStdIco+32 |
BegData equ fiStdIco.point |
SizeData equ bufStdIco+32 |
BegData equ fiStdIco.point |
;------------------------------------------------------------------------------ |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd ENDMEM ; memory for app |
dd stack_main ; esp |
dd 0 ; boot parameters |
dd 0 ; path |
use32 |
org 0x0 |
db 'MENUET01' ; 8 byte id |
dd 0x01 ; header version |
dd START ; start of code |
dd I_END ; size of image |
dd ENDMEM ; memory for app |
dd stack_main ; esp |
dd 0 ; boot parameters |
dd 0 ; path |
;------------------------------------------------------------------------------ |
include 'lang.inc' |
include 'lang.inc' |
include '../../macros.inc' |
include '../../proc32.inc' |
include '../../develop/libraries/box_lib/trunk/box_lib.mac' |
43,239 → 45,239 |
;include '../../debug.inc' |
;------------------------------------------------------------------------------ |
START: ; start of execution |
mcall 68,11 |
stdcall dll.Load,IMPORTS |
test eax,eax |
jnz ErrLoadLibs |
START: ; start of execution |
mcall 68,11 |
stdcall dll.Load,IMPORTS |
test eax,eax |
jnz ErrLoadLibs |
; unpack deflate |
mov eax,[unpack_DeflateUnpack2] |
mov [deflate_unpack],eax |
mov eax,[unpack_DeflateUnpack2] |
mov [deflate_unpack],eax |
;--------------------------------------------------------------------- |
; get size of file ICONSTRP.PNG |
mcall 70,fiStdIco |
test eax,eax |
jnz ErrorStrp |
mcall 70,fiStdIco |
test eax,eax |
jnz ErrorStrp |
; get memory for ICONSTRP.PNG |
mov ecx,dword[bufStdIco+32] |
mov [fiStdIco.size],ecx |
mov [img_size],ecx |
mcall 68,12 |
mov [fiStdIco.point],eax |
mov [image_file],eax |
mov ecx,dword[bufStdIco+32] |
mov [fiStdIco.size],ecx |
mov [img_size],ecx |
mcall 68,12 |
mov [fiStdIco.point],eax |
mov [image_file],eax |
; load ICONSTRP.PNG |
mov dword[fiStdIco],0 |
mcall 70,fiStdIco |
test eax,eax |
jnz close |
mov dword[fiStdIco],0 |
mcall 70,fiStdIco |
test eax,eax |
jnz close |
; convert PNG to RAW |
xor eax,eax |
mov [return_code],eax |
xor eax,eax |
mov [return_code],eax |
;int3 |
push image_file |
call [cnv_png_import.Start] |
push image_file |
call [cnv_png_import.Start] |
mov eax,[raw_pointer] |
mov ebx,[eax+32] |
mov [strip_file_size],ebx |
mov eax,[eax+28] |
add eax,[raw_pointer] |
mov [strip_file],eax |
mov eax,[raw_pointer] |
mov ebx,[eax+32] |
mov [strip_file_size],ebx |
mov eax,[eax+28] |
add eax,[raw_pointer] |
mov [strip_file],eax |
; back memory to system |
mcall 68,13,[fiStdIco.point] |
mcall 68,13,[fiStdIco.point] |
mov eax,[raw_pointer] |
mov eax,[eax+8] |
shr eax,5 |
mov [icon_count],eax |
mov eax,[raw_pointer] |
mov eax,[eax+8] |
shr eax,5 |
mov [icon_count],eax |
and eax,0x7 |
mov [cur_band_compensation],eax |
and eax,0x7 |
mov [cur_band_compensation],eax |
;########## § £à㦠¥¬ ¤ ë¥ ¨ª®®ª ¢ ¯ ¬ïâì ########################## |
mcall 70,fiIni ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç®© ¤«ï åà ¥¨ï ini ä ©« . ñ â®ç® å¢ â¨â ¤«ï åà ¥¨ï ¤ ëå ®¡ ¨ª®ª å |
test eax,eax |
jnz ErrorIni |
mcall 70,fiIni ;¢ë¤¥«ï¥¬ ¯ ¬ïâì, ¤®áâ â®ç®© ¤«ï åà ¥¨ï ini ä ©« . ñ â®ç® å¢ â¨â ¤«ï åà ¥¨ï ¤ ëå ®¡ ¨ª®ª å |
test eax,eax |
jnz ErrorIni |
cmp dword[bufIni+32],0 |
je ErrorIni |
mcall 68,12,dword[bufIni+32] |
mov dword[BegData],eax |
jmp NoErrIni |
cmp dword[bufIni+32],0 |
je ErrorIni |
mcall 68,12,dword[bufIni+32] |
mov dword[BegData],eax |
jmp NoErrIni |
ErrorIni: |
mcall 70,fiRunProg |
mcall -1 |
mcall 70,fiRunProg |
mcall -1 |
NoErrIni: |
m2m [PIcoDB],[BegData] |
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,LoadIconsData |
stdcall [ini_enum_sections],IconIni,LoadIconsData |
;int3 |
mov eax,dword[PIcoDB] |
sub eax,[BegData] |
mov dword[SizeData],eax |
mov eax,[BegData] |
cmp eax,[PIcoDB] |
jne @f |
mov dword[eax],0 |
mov dword[SizeData],0 |
mov eax,dword[PIcoDB] |
sub eax,[BegData] |
mov dword[SizeData],eax |
mov eax,[BegData] |
cmp eax,[PIcoDB] |
jne @f |
mov dword[eax],0 |
mov dword[SizeData],0 |
@@: |
;###################################################################### |
call FillIconsOffs ;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
call FillIconsOffs ;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
mcall 40,0100000b ;ã¦ë ⮫쪮 ᮡëâ¨ï ¬ëè¨, ¯¥à¥à¨á®¢ª ¨ª®®ª ¡ã¤¥â ¢ ¤à㣮¬ ¯®â®ª¥ |
mcall 40,0100000b ;ã¦ë ⮫쪮 ᮡëâ¨ï ¬ëè¨, ¯¥à¥à¨á®¢ª ¨ª®®ª ¡ã¤¥â ¢ ¤à㣮¬ ¯®â®ª¥ |
mov eax,[icon_count] |
mov bl,ICONS_DRAW_COUNTH |
div bl |
test ah,ah |
jz @f |
inc al |
mov eax,[icon_count] |
mov bl,ICONS_DRAW_COUNTH |
div bl |
test ah,ah |
jz @f |
inc al |
@@: |
and eax,0FFh |
mov [sbIcons.max_area],eax |
and eax,0FFh |
mov [sbIcons.max_area],eax |
mcall 51,1,BGRedrawThread,stack_bredraw ;§ ¯ã᪠¥¬ ¯®â®ª ¯¥à¥à¨á®¢ª¨ ¨ª®®ª |
stdcall [OpenDialog_Init],OpenDialog_data |
mcall 51,1,BGRedrawThread,stack_bredraw ;§ ¯ã᪠¥¬ ¯®â®ª ¯¥à¥à¨á®¢ª¨ ¨ª®®ª |
stdcall [OpenDialog_Init],OpenDialog_data |
messages: |
mcall 10 |
sub eax,6 |
jz MSGMouse |
mcall 10 |
sub eax,6 |
jz MSGMouse |
jmp messages |
jmp messages |
MSGMouse: |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
mcall 34 |
cmp eax,1 |
jne messages |
mcall 34 |
cmp eax,1 |
jne messages |
cmp [RButtonActiv],1 |
je messages |
cmp [RButtonActiv],1 |
je messages |
mov [MouseY],ecx |
mov [MouseX],ebx |
mov [MouseY],ecx |
mov [MouseX],ebx |
mcall 37,2 |
test al,001b |
jnz LButtonPress |
test al,010b |
jnz RButtonPress |
jmp messages |
mcall 37,2 |
test al,001b |
jnz LButtonPress |
test al,010b |
jnz RButtonPress |
jmp messages |
ErrLoadLibs: |
;dps '¥ 㤠«®áì § £à㧨âì ¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨' |
;debug_newline |
jmp close |
;dps '¥ 㤠«®áì § £à㧨âì ¥®¡å®¤¨¬ë¥ ¡¨¡«¨®â¥ª¨' |
;debug_newline |
jmp close |
ErrorStrp: |
;dps '訡ª ®âªàëâ¨ï iconstrp.png' |
;debug_newline |
;dps '訡ª ®âªàëâ¨ï iconstrp.png' |
;debug_newline |
close: |
mcall -1 |
mcall -1 |
LButtonPress: |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
;int3 |
cmp eax,-1 |
jnz @f |
cmp eax,-1 |
jnz @f |
WaitLB1: |
mcall 37,2 |
test al,001b |
jz messages |
;Yield |
mcall 5,1 |
jmp WaitLB1 |
mcall 37,2 |
test al,001b |
jz messages |
;Yield |
mcall 5,1 |
jmp WaitLB1 |
@@: |
push eax |
stdcall DrawIcon,eax,1 |
push eax |
stdcall DrawIcon,eax,1 |
WaitLB: |
mcall 37,2 |
test al,001b |
jz endWaitLB |
mcall 37,2 |
test al,001b |
jz endWaitLB |
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
sub eax,[MouseX] |
jns @f |
neg eax |
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
sub eax,[MouseX] |
jns @f |
neg eax |
@@: |
sub ebx,[MouseY] |
jns @f |
neg ebx |
sub ebx,[MouseY] |
jns @f |
neg ebx |
@@: |
cmp [bFixIcons],0 |
jne @f |
cmp eax,MIN_NO_MOVING |
ja MovingIcon |
cmp ebx,MIN_NO_MOVING |
ja MovingIcon |
cmp [bFixIcons],0 |
jne @f |
cmp eax,MIN_NO_MOVING |
ja MovingIcon |
cmp ebx,MIN_NO_MOVING |
ja MovingIcon |
@@: |
;Yield |
mcall 5,1 ;Sleep 1 |
;Yield |
mcall 5,1 ;Sleep 1 |
jmp WaitLB |
jmp WaitLB |
endWaitLB: |
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
mov [MouseX],ebx |
mov [MouseY],ecx |
mcall 37,0 |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mov ecx,ebx |
mov ebx,eax |
mov [MouseX],ebx |
mov [MouseY],ecx |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
cmp eax,[esp] ;[esp] = ®¬¥à ¨ª®ª¨ |
jne @f |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
cmp eax,[esp] ;[esp] = ®¬¥à ¨ª®ª¨ |
jne @f |
mov edi,[IconsOffs+eax*4] |
or ecx,-1 |
xor al,al |
repne scasb |
mov ebx,edi |
repne scasb |
;run program |
mov dword[fiRunProg+8],edi |
mov dword[fiRunProg+21],ebx |
mcall 70,fiRunProg |
test eax,80000000h |
jz @f |
mov edi,[IconsOffs+eax*4] |
or ecx,-1 |
xor al,al |
repne scasb |
mov ebx,edi |
repne scasb |
;run program |
mov dword[fiRunProg+8],edi |
mov dword[fiRunProg+21],ebx |
mcall 70,fiRunProg |
test eax,80000000h |
jz @f |
mov dword[fiRunProg+8],ErrRunProg |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov dword[fiRunProg+8],ErrRunProg |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
@@: |
pop eax |
stdcall RestoreBackgrnd,eax |
jmp messages |
pop eax |
stdcall RestoreBackgrnd,eax |
jmp messages |
;------------------------------------------------------------------------------- |
MovingIcon: |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
mov [SelIcon],eax |
mov [IconNoDraw],eax |
stdcall RestoreBackgrnd,[SelIcon] |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
mov [SelIcon],eax |
mov [IconNoDraw],eax |
stdcall RestoreBackgrnd,[SelIcon] |
; mov ecx,[MaxNumIcon] |
; xor ebx,ebx |
340,795 → 342,756 |
;qweqwe: |
mov [MovingActiv],1 |
mcall 51,1,MovingWnd,stack_mov ;CreateThread MovingWnd,stack_dlg |
mov [MovingActiv],1 |
mcall 51,1,MovingWnd,stack_mov ;CreateThread MovingWnd,stack_dlg |
.WaitLB: |
mcall 37,2 ;GetMouseKey |
test al,001b |
jz .endWaitLB |
mcall 37,2 ;GetMouseKey |
test al,001b |
jz .endWaitLB |
;Yield |
mcall 5,1 ;Sleep 1 |
jmp .WaitLB |
;Yield |
mcall 5,1 ;Sleep 1 |
jmp .WaitLB |
.endWaitLB: |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax |
shr eax,16 |
sub eax,1+ICON_SIZE/2 |
jnc @f |
xor eax,eax |
@@: |
add ebx,7 |
dec eax |
sub ebx,ICON_SIZE/2-7 |
jnc @f |
xor ebx,ebx |
sub eax,ICON_SIZE/2 |
jns @f |
xor eax,eax |
@@: |
cmp ax,[wsX] |
jae @f |
mov ax,[wsX] |
sub ebx,ICON_SIZE/2 |
jns @f |
xor ebx,ebx |
@@: |
cmp bx,[wsY] |
jae @f |
mov bx,[wsY] |
@@: ;eax,ebx - ॠ«ì ï ª®®à¤¨ â . ᥠª®®à¤¨ âë ¢ ¯à®£¥ ®â®á¨â¥«ì® «¥¢®£® ¢¥à奣® 㣫 à ¡®ç¥© ®¡« á⨠|
xor edx,edx |
mov dx,[wsXe] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
movzx edx,[ScreenX] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
@@: |
mov dx,[wsYe] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
movzx edx,[ScreenY] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
@@: |
xor edx,edx ;¯à¥®¡à §®¢ë¢ ¥¬ ¢ ®â®á¨â¥«ìë¥ |
mov dx,[wsW] |
shr edx,1 |
add dx,[wsX] |
cmp eax,edx |
jbe @f |
sub ax,[wsXe] |
inc ax |
jmp .mov1 |
xor edx,edx |
mov dx,[ScreenX] |
shr edx,1 |
cmp eax,edx |
jbe @f |
sub ax,[ScreenX] |
inc ax |
@@: |
sub ax,[wsX] |
.mov1: |
xor edx,edx |
mov dx,[wsH] |
shr edx,1 |
add dx,[wsY] |
cmp ebx,edx |
jbe @f |
sub bx,[wsYe] |
inc bx |
jmp .mov2 |
xor edx,edx |
mov dx,[ScreenY] |
shr edx,1 |
cmp ebx,edx |
jbe @f |
sub bx,[ScreenY] |
inc bx |
@@: |
sub bx,[wsY] |
.mov2: |
stdcall SetPosition,[SelIcon],eax,ebx |
stdcall SetPosition,[SelIcon],eax,ebx |
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,Ini_SavePos ;in RButton.inc |
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,Ini_SavePos ;in RButton.inc |
mov [bNotSave],1 |
mov [IconNoDraw],-1 |
mov [bNotSave],1 |
mov [IconNoDraw],-1 |
mov [MovingActiv],0 ;⮫쪮 ⥯¥àì ®âª«îç ¥¬ ®ª® á ¬ëèìî |
mov [MovingActiv],0 ;⮫쪮 ⥯¥àì ®âª«îç ¥¬ ®ª® á ¬ëèìî |
jmp messages |
jmp messages |
;------------------------------------------------------------------------------- |
RButtonPress: |
cmp [RButtonActiv],1 |
je messages |
mov [RButtonActiv],1 |
cmp [RButtonActiv],1 |
je messages |
mov [RButtonActiv],1 |
@@: |
mcall 37,2 ;GetMouseKey |
test al,010b |
jz @f |
mcall 5,1 ;Yield |
jmp @b |
mcall 37,2 ;GetMouseKey |
test al,010b |
jz @f |
mcall 5,1 ;Yield |
jmp @b |
@@: |
mcall 51,1,RButtonWin,stack_rmenu ;CreateThread RButtonWin,stack_rmenu |
mcall 51,1,RButtonWin,stack_rmenu ;CreateThread RButtonWin,stack_rmenu |
jmp messages |
jmp messages |
;############################################################################### |
;ret eax = 1/0 = 㤠ç /®è¨¡ª |
proc DrawIcon NumIcon:DWORD,Activ:DWORD ;NumIcon = 0..n |
local IconData:DWORD |
push ebx edi esi |
local IconData:DWORD |
; int3 |
push ebx edi esi |
mov ecx,ICON_SIZE*ICON_SIZE |
xor eax,eax |
mov edi,IconArea |
rep stosd |
mov ecx,ICON_SIZE*ICON_SIZE |
xor eax,eax |
;mov eax,0FFFFFFFh |
mov edi,IconArea |
rep stosd |
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop esi edi ebx |
ret |
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop esi edi ebx |
ret |
@@: |
mov esi,[IconsOffs+eax*4] |
mov [IconData],esi |
mov esi,[IconsOffs+eax*4] |
mov [IconData],esi |
;à¨á㥬 ⥪áâ |
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
mov edx,esi |
mov eax,edi |
sub eax,esi |
dec eax |
shl eax,1 ;*6 |
lea eax,[eax*2+eax] |
mov ebx,ICON_SIZE |
sub ebx,eax |
shr ebx,1 ;ebx = x ⥪áâ |
shl ebx,16 |
mov bx,ICON_SIZE |
sub bx,TEXT_BOTTOM_Y |
mov ecx,88000000h |
mov edi,IconAreaH |
add ebx,-1*10000h+0 |
mcall 4 |
add ebx,2*10000h+0 |
mcall ;4 |
add ebx,-1*10000h-1 |
mcall ;4 |
add ebx,0*10000h+2 |
mcall ;4 |
add ebx,1*10000h+0 |
mcall ;4 |
inc ebx;add ebx,0*10000h+1 |
mcall ;4 |
add ebx,-1*10000h+0 |
mcall ;4 |
add ebx,0*10000h-2 |
mov ecx,88FFFFFFh |
mcall ;4 |
;à¨á㥬 ª à⨪ã |
;à¨á㥬 ⥪áâ |
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
mov edx,esi |
mov eax,edi |
sub eax,esi |
dec eax |
shl eax,1 ;*6 |
lea eax,[eax*2+eax] |
mov ebx,ICON_SIZE |
sub ebx,eax |
shr ebx,1 ;ebx = x ⥪áâ |
shl ebx,16 |
mov bx,ICON_SIZE |
sub bx,TEXT_BOTTOM_Y |
mov ecx,88000000h |
mov edi,IconAreaH |
add ebx,-1*10000h+0 |
mcall 4 |
add ebx,2*10000h+0 |
mcall 4 |
add ebx,-1*10000h-1 |
mcall 4 |
add ebx,0*10000h+2 |
mcall 4 |
add ebx,1*10000h+0 |
mcall 4 |
add ebx,0*10000h+1 |
mcall 4 |
add ebx,-1*10000h+0 |
mcall 4 |
add ebx,0*10000h-2 |
mov ecx,88FFFFFFh |
mcall 4 |
;à¨á㥬 ª à⨪ã |
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
mov al,[edi] |
cmp al,'9' |
ja PathToIcon |
cmp al,'/' |
jne GetIconInd |
mov edi,esi |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
mov al,[edi] |
cmp al,'9' |
ja PathToIcon |
cmp al,'/' |
jne GetIconInd |
PathToIcon: |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
jmp CopyToMem |
jmp CopyToMem |
GetIconInd: |
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
@@: |
test eax,eax |
je DI1 |
mov ecx,eax |
xor eax,eax |
test eax,eax |
je DI1 |
mov ecx,eax |
xor eax,eax |
@@: |
add eax,IMG_SIZE*IMG_SIZE*4 |
loop @b |
add eax,IMG_SIZE*IMG_SIZE*4 |
loop @b |
DI1: |
add eax,[raw_pointer] |
add eax,0+4*11 |
mov esi,eax |
mov esi,eax |
add esi,[raw_pointer] |
add esi,0+4*11 |
CopyToMem: |
mov edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4 |
mov edi,IconArea+((IMAGE_TOP_Y*ICON_SIZE)+((ICON_SIZE-IMG_SIZE)/2))*4 |
mov eax,IMG_SIZE |
mov edx,eax |
mov eax,IMG_SIZE |
mov edx,eax |
@@: |
mov ecx,eax |
rep movsd |
add edi,(ICON_SIZE-IMG_SIZE)*4 |
dec edx |
jnz @b |
mov ecx,eax |
rep movsd |
add edi,(ICON_SIZE-IMG_SIZE)*4 |
dec edx |
jnz @b |
;----------------- |
;¥á«¨ ¤®, â® à¨á㥬 ®¡¢®¤ªã |
cmp [Activ],0 |
je .NoSelect |
;¥á«¨ ¤®, â® à¨á㥬 ®¡¢®¤ªã |
cmp [Activ],0 |
je .NoSelect |
mov edi,IconArea |
mov eax,0FF000000h |
mov ecx,ICON_SIZE |
rep stosd |
;mov edi,IconArea+ICON_SIZE*1 |
mov edi,IconArea |
mov eax,0FF000000h |
mov ecx,ICON_SIZE |
rep stosd |
;mov edi,IconArea+ICON_SIZE*1 |
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*2*4-4 |
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*2*4-4 |
mov ecx,ICON_SIZE-1 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4 |
mov ecx,ICON_SIZE-2 |
rep stosd |
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-1)*4+4 |
mov ecx,ICON_SIZE-2 |
rep stosd |
mov edi,IconArea+ICON_SIZE*4+4 |
mov eax,0FFFFFFFFh |
mov ecx,ICON_SIZE-2 |
rep stosd |
mov edi,IconArea+ICON_SIZE*4+4 |
mov eax,0FFFFFFFFh |
mov ecx,ICON_SIZE-2 |
rep stosd |
mov edi,IconArea+ICON_SIZE*4+4 |
mov ecx,ICON_SIZE-2 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*4+4 |
mov ecx,ICON_SIZE-2 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*2*4-4*2 |
mov ecx,ICON_SIZE-3 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*2*4-4*2 |
mov ecx,ICON_SIZE-3 |
@@: mov dword[edi],eax |
add edi,(ICON_SIZE)*4 |
loop @b |
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2 |
mov ecx,ICON_SIZE-3 |
rep stosd |
mov edi,IconArea+ICON_SIZE*(ICON_SIZE-2)*4+4*2 |
mov ecx,ICON_SIZE-3 |
rep stosd |
;-------------- |
.NoSelect: |
mov edi,[IconData] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov edx,[edi] |
mov edi,[IconData] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov edx,[edi] |
test edx,00008000h |
jz @f |
add dx,[wsYe] |
jmp .DI11 |
test edx,00008000h |
jz @f |
add dx,[ScreenY] |
@@: |
add dx,[wsY] |
.DI11: |
test edx,80000000h |
jz @f |
mov ax,[wsXe] |
shl eax,16 |
add edx,eax |
jmp .DI12 |
test edx,80000000h |
jz @f |
rol edx,16 |
add dx,[ScreenX] |
rol edx,16 |
@@: |
mov ax,[wsX] |
shl eax,16 |
add edx,eax |
.DI12: |
mov ebx,IconArea |
mov ecx,ICON_SIZE*10000h+ICON_SIZE |
mcall 25 |
mov ebx,IconArea |
mov ecx,ICON_SIZE*10000h+ICON_SIZE |
mcall 25 |
; mov eax,1 |
pop esi edi ebx |
ret |
pop esi edi ebx |
ret |
endp |
proc RestoreBackgrnd,NumIcon:DWORD |
push ebx edi |
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop edi ebx |
ret |
push ebx edi |
mov eax,[NumIcon] |
cmp eax,[MaxNumIcon] |
jb @f |
xor eax,eax |
pop edi ebx |
ret |
@@: |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
add ax,[wsXe] |
jmp .rbg1 |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
add ax,[ScreenX] |
@@: |
add ax,[wsX] |
.rbg1: |
mov bx,[edi] |
test bx,8000h |
jz @f |
add bx,[wsYe] |
jmp .rbg2 |
mov bx,[edi] |
test bx,8000h |
jz @f |
add bx,[ScreenY] |
@@: |
add bx,[wsY] |
.rbg2: |
mov cx,ax |
shl ecx,16 |
add ax,ICON_SIZE |
mov cx,ax |
mov dx,bx |
shl edx,16 |
add bx,ICON_SIZE |
mov dx,bx |
dec ecx |
dec edx |
mcall 15,9 |
pop edi ebx |
ret |
mov cx,ax |
shl ecx,16 |
add ax,ICON_SIZE |
mov cx,ax |
mov dx,bx |
shl edx,16 |
add bx,ICON_SIZE |
mov dx,bx |
dec ecx |
dec edx |
mcall 15,9 |
pop edi ebx |
ret |
endp |
;ret eax=numIcon |
proc AddIcon stdcall,x,y,lpIcon,lpName,lpExeFile,lpParams |
push ebx edi esi |
push ebx edi esi |
mov eax,[x] |
mov ebx,[y] |
mov eax,[x] |
mov ebx,[y] |
xor edx,edx |
test eax,8000h |
jnz @f |
mov dx,[wsW] ;¥á«¨ ¤®, â® ¯à¥®¡à §®¢ë¢ ¥¬ ¢ |
shr edx,1 ;®âà¨æ ⥫ìë¥ ª®®à¤¨ âë |
add dx,[wsX] |
cmp eax,edx |
jbe @f |
sub ax,[wsW] |
inc eax |
xor edx,edx |
test eax,8000h |
jnz @f |
mov dx,[ScreenX] ;¥á«¨ ¤®, â® ¯à¥®¡à §®¢ë¢ ¥¬ ¢ |
shr edx,1 ;®âà¨æ ⥫ìë¥ ª®®à¤¨ âë |
cmp eax,edx |
jbe @f |
sub ax,[ScreenX] |
inc eax |
@@: |
test ebx,8000h |
jnz @f |
mov dx,[wsY] |
shr edx,1 |
add dx,[wsH] |
cmp ebx,edx |
jbe @f |
sub bx,[wsH] |
inc ebx |
test ebx,8000h |
jnz @f |
mov dx,[ScreenY] |
shr edx,1 |
cmp ebx,edx |
jbe @f |
sub bx,[ScreenY] |
inc ebx |
@@: |
;¯®¯à ¢ª á«ãç © ¢ë室 § ªà © íªà |
;¯®¯à ¢ª á«ãç © ¢ë室 § ªà © íªà |
test eax,8000h |
jnz @f |
mov dx,[wsXe] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
test eax,8000h |
jnz @f |
mov dx,[ScreenX] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
@@: |
test ebx,8000h |
jnz @f |
mov dx,[wsYe] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
test ebx,8000h |
jnz @f |
mov dx,[ScreenY] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
@@: |
mov [x],eax |
mov [y],ebx |
mov [x],eax |
mov [y],ebx |
xor al,al |
or ecx,-1 |
mov edi,[lpName] |
repne scasb |
sub edi,[lpName] |
mov ebx,edi |
mov edi,[lpExeFile] |
repne scasb |
sub edi,[lpExeFile] |
add ebx,edi |
mov edi,[lpParams] |
repne scasb |
sub edi,[lpParams] |
add ebx,edi |
mov edi,[lpIcon] |
repne scasb |
sub edi,[lpIcon] |
add ebx,edi |
add ebx,4 |
mov ecx,dword[SizeData] |
add ecx,ebx |
mov edx,[IconsOffs] |
mcall 68,20 |
xor al,al |
or ecx,-1 |
mov edi,[lpName] |
repne scasb |
sub edi,[lpName] |
mov ebx,edi |
mov edi,[lpExeFile] |
repne scasb |
sub edi,[lpExeFile] |
add ebx,edi |
mov edi,[lpParams] |
repne scasb |
sub edi,[lpParams] |
add ebx,edi |
mov edi,[lpIcon] |
repne scasb |
sub edi,[lpIcon] |
add ebx,edi |
add ebx,4 |
mov ecx,dword[SizeData] |
add ecx,ebx |
mov edx,[IconsOffs] |
mcall 68,20 |
mov edx,dword[SizeData] |
mov dword[SizeData],ecx |
mov dword[BegData],eax |
mov edi,eax |
add edi,edx |
mov esi,[lpName] |
mov edx,dword[SizeData] |
mov dword[SizeData],ecx |
mov dword[BegData],eax |
mov edi,eax |
add edi,edx |
mov esi,[lpName] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov esi,[lpExeFile] |
mov esi,[lpExeFile] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov esi,[lpParams] |
mov esi,[lpParams] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov esi,[lpIcon] |
mov esi,[lpIcon] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov eax,[x] |
mov ebx,[y] |
shl eax,16 |
mov ax,bx |
mov dword[edi],eax |
mov eax,[x] |
mov ebx,[y] |
shl eax,16 |
mov ax,bx |
mov dword[edi],eax |
stdcall FillIconsOffs |
stdcall FillIconsOffs |
pop esi edi ebx |
ret |
pop esi edi ebx |
ret |
endp |
proc EditIcon stdcall,NumIcon,lpIcon,lpName,lpExeFile,lpParams |
push edi |
mov eax,[NumIcon] |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
push dword[edi] |
stdcall DelIcon,[NumIcon] |
pop edx |
xor eax,eax |
mov ax,dx |
shr edx,16 |
stdcall AddIcon,edx,eax,DAreaIcon,DAreaName,DAreaPath,DAreaParams |
pop edi |
ret |
push edi |
mov eax,[NumIcon] |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
push dword[edi] |
stdcall DelIcon,[NumIcon] |
pop edx |
xor eax,eax |
mov ax,dx |
shr edx,16 |
stdcall AddIcon,edx,eax,DAreaIcon,DAreaName,DAreaPath,DAreaParams |
pop edi |
ret |
endp |
proc SetPosition stdcall,NumIcon,x,y |
push edi |
mov eax,[NumIcon] |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov eax,[x] |
shl eax,16 |
mov ax,word[y] |
mov dword[edi],eax |
pop edi |
ret |
push edi |
mov eax,[NumIcon] |
mov edi,[IconsOffs+eax*4] |
xor al,al |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov eax,[x] |
shl eax,16 |
mov ax,word[y] |
mov dword[edi],eax |
pop edi |
ret |
endp |
proc GetNumIcon stdcall,x,y,NumIconI ;®¬¥à ¨ª®ª¨, ª®â®àë© ¯à®¢¥àïâì ¥ ¤® ¨«¨ -1 |
local posX:WORD,\ |
posY:WORD |
push ebx edi |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jnz @f |
or eax,-1 |
pop edi ebx |
ret |
push ebx edi |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jnz @f |
or eax,-1 |
pop edi ebx |
ret |
@@: |
mov ebx,ecx |
dec ebx |
mov ebx,ecx |
dec ebx |
.TestIcon: |
cmp dword[NumIconI],-1 |
je @f |
cmp dword[NumIconI],-1 |
je @f |
cmp ebx,[NumIconI] |
jne @f |
dec ebx |
dec ecx |
test ecx,ecx |
jz .NoIcon |
cmp ebx,[NumIconI] |
jne @f |
dec ebx |
dec ecx |
test ecx,ecx |
jz .NoIcon |
@@: |
push ecx |
push ecx |
or ecx,-1 |
xor al,al |
mov edi,[IconsOffs+ebx*4] |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
or ecx,-1 |
xor al,al |
mov edi,[IconsOffs+ebx*4] |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
add ax,[wsXe] |
jmp .gni1 |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
add ax,[ScreenX] |
@@: |
add ax,[wsX] |
.gni1: |
mov [posX],ax |
mov [posX],ax |
mov ax,[edi] |
test ax,8000h |
jz @f |
add ax,[wsYe] |
jmp .gni2 |
mov ax,[edi] |
test ax,8000h |
jz @f |
add ax,[ScreenY] |
@@: |
add ax,[wsY] |
.gni2: |
mov [posY],ax |
mov [posY],ax |
mov eax,[x] |
mov edx,[y] |
mov eax,[x] |
mov edx,[y] |
cmp ax,[posX] |
jb @f |
add word[posX],ICON_SIZE |
cmp ax,[posX] |
ja @f |
cmp ax,[posX] |
jb @f |
add word[posX],ICON_SIZE |
cmp ax,[posX] |
ja @f |
cmp dx,[posY] |
jb @f |
add word[posY],ICON_SIZE |
cmp dx,[posY] |
ja @f |
cmp dx,[posY] |
jb @f |
add word[posY],ICON_SIZE |
cmp dx,[posY] |
ja @f |
jmp .OkIcon |
jmp .OkIcon |
@@: |
dec ebx |
pop ecx |
dec ebx |
pop ecx |
;loop .TestIcon |
dec ecx |
jnz .TestIcon |
jmp .NoIcon |
loop .TestIcon |
;dec ecx |
;jnz .TestIcon |
jmp .NoIcon |
.OkIcon: |
mov eax,ebx |
pop edi ebx |
ret |
mov eax,ebx |
pop edi ebx |
ret |
.NoIcon: |
or eax,-1 |
pop edi ebx |
ret |
or eax,-1 |
pop edi ebx |
ret |
endp |
proc DelIcon stdcall,NumIcon |
push ebx edi esi |
push ebx edi esi |
cmp [MaxNumIcon],0 |
je .end |
cmp [MaxNumIcon],0 |
je .end |
cmp [MaxNumIcon],1 |
je .OhneIco |
cmp [MaxNumIcon],1 |
je .OhneIco |
mov ebx,[NumIcon] |
mov ebx,[NumIcon] |
mov eax,[MaxNumIcon] |
dec eax |
mov [MaxNumIcon],eax |
cmp ebx,eax |
je @f |
mov eax,[MaxNumIcon] |
dec eax |
mov [MaxNumIcon],eax |
cmp ebx,eax |
je @f |
shl ebx,2 |
shl ebx,2 |
mov ecx,dword[BegData] |
add ecx,dword[SizeData] |
sub ecx,[IconsOffs+4+ebx] |
mov ecx,dword[BegData] |
add ecx,dword[SizeData] |
sub ecx,[IconsOffs+4+ebx] |
mov edx,[IconsOffs+4+ebx] |
sub edx,[IconsOffs+ebx] |
sub dword[SizeData],edx |
mov edx,[IconsOffs+4+ebx] |
sub edx,[IconsOffs+ebx] |
sub dword[SizeData],edx |
mov esi,[IconsOffs+4+ebx] |
mov edi,[IconsOffs+ebx] |
rep movsb |
jmp .endDel |
mov esi,[IconsOffs+4+ebx] |
mov edi,[IconsOffs+ebx] |
rep movsb |
jmp .endDel |
@@: |
mov ecx,dword[BegData] |
add ecx,dword[SizeData] |
sub ecx,[IconsOffs+ebx*4] |
sub dword[SizeData],ecx |
mov ecx,dword[BegData] |
add ecx,dword[SizeData] |
sub ecx,[IconsOffs+ebx*4] |
sub dword[SizeData],ecx |
.endDel: |
stdcall FillIconsOffs |
jmp .end |
stdcall FillIconsOffs |
jmp .end |
.OhneIco: |
mov edi,[BegData] |
mov [SizeData],0 |
mov dword[edi],0 |
mov [MaxNumIcon],0 |
mov dword[IconsOffs],0 |
mov edi,[BegData] |
mov [SizeData],0 |
mov dword[edi],0 |
mov [MaxNumIcon],0 |
mov dword[IconsOffs],0 |
.end: |
mcall 15,3 |
pop esi edi ebx |
ret |
mcall 15,3 |
pop esi edi ebx |
ret |
endp |
;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
;§ ¯®«ï¥â MaxNumIcon,IconsOffs |
proc FillIconsOffs |
push ebx edi |
mov edi,[BegData] |
mov dword[MaxNumIcon],0 |
cmp dword[edi],0 |
jne @f |
mov dword[IconsOffs],0 |
pop edi ebx |
ret |
push ebx edi |
mov edi,[BegData] |
mov dword[MaxNumIcon],0 |
cmp dword[edi],0 |
jne @f |
mov dword[IconsOffs],0 |
pop edi ebx |
ret |
@@: |
mov [IconsOffs],edi |
xor al,al |
xor edx,edx |
mov ebx,dword[SizeData] |
add ebx,dword[BegData] |
or ecx,-1 |
mov [IconsOffs],edi |
xor al,al |
xor edx,edx |
mov ebx,dword[SizeData] |
add ebx,dword[BegData] |
or ecx,-1 |
.CalcNumIc: |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
add edi,4 |
mov dword[IconsOffs+edx+4],edi |
inc dword[MaxNumIcon] |
add edx,4 |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
add edi,4 |
mov dword[IconsOffs+edx+4],edi |
inc dword[MaxNumIcon] |
add edx,4 |
cmp edi,ebx |
jae @f |
jmp .CalcNumIc |
cmp edi,ebx |
jae @f |
jmp .CalcNumIc |
@@: |
mov dword[IconsOffs+edx],0 |
pop edi ebx |
ret |
mov dword[IconsOffs+edx],0 |
pop edi ebx |
ret |
endp |
proc LoadIconsData stdcall,f_name,sec_name |
push ebx esi edi |
push ebx esi edi |
mov edi,secRButt |
mov esi,[sec_name] |
mov edi,secRButt |
mov esi,[sec_name] |
@@: lodsb |
scasb |
jnz .lid1 |
test al,al |
jnz @b |
scasb |
jnz .lid1 |
test al,al |
jnz @b |
mov eax,1 |
pop edi esi ebx |
ret |
mov eax,1 |
pop edi esi ebx |
ret |
.lid1: |
mov edi,[PIcoDB] |
mov esi,[sec_name] |
mov edi,[PIcoDB] |
mov esi,[sec_name] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
stdcall [ini_get_str],[f_name],[sec_name],keyPath,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
xor al,al |
or ecx,-1 |
repne scasb |
stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
stdcall [ini_get_str],[f_name],[sec_name],keyParams,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
xor al,al |
or ecx,-1 |
repne scasb |
stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
stdcall [ini_get_str],[f_name],[sec_name],keyIco,edi,4096,0 |
test eax,eax |
jz @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
xor al,al |
or ecx,-1 |
repne scasb |
xor al,al |
or ecx,-1 |
repne scasb |
stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
stdcall [ini_get_int],[f_name],[sec_name],keyX,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
mov word[edi+2],ax |
mov word[edi+2],ax |
stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
stdcall [ini_get_int],[f_name],[sec_name],keyY,80000000h |
cmp eax,80000000h |
jne @f |
xor eax,eax |
pop edi esi ebx |
ret |
@@: |
mov word[edi],ax |
add edi,4 |
mov [PIcoDB],edi |
mov word[edi],ax |
add edi,4 |
mov [PIcoDB],edi |
mov eax,1 |
pop edi esi ebx |
ret |
mov eax,1 |
pop edi esi ebx |
ret |
endp |
include 'bgredraw.inc' |
1157,94 → 1120,94 |
align 4 |
fiStdIco: |
dd 5 |
dd 0 |
dd 0 |
.size dd 0 |
.point dd bufStdIco |
db ICON_STRIP,0 |
dd 5 |
dd 0 |
dd 0 |
.size dd 0 |
.point dd bufStdIco |
db ICON_STRIP,0 |
align 4 |
fiRunProg: ;¤«ï § ¯ã᪠¯à®£à ¬¬ |
dd 7 |
dd 0 |
dd 0 |
dd 0 |
dd ErrNotFoundIni |
db 0 |
dd pthNotify |
fiRunProg: ;¤«ï § ¯ã᪠¯à®£à ¬¬ |
dd 7 |
dd 0 |
dd 0 |
dd 0 |
dd ErrNotFoundIni |
db 0 |
dd pthNotify |
fiIni dd 5 ;¤«ï ini ä ©« |
dd 0 |
dd 0 |
dd 0 |
dd bufIni |
db '/rd/1/settings/icon.ini',0 |
fiIni dd 5 ;¤«ï ini ä ©« |
dd 0 |
dd 0 |
dd 0 |
dd bufIni |
db '/rd/1/settings/icon.ini',0 |
IconsFile db ICON_STRIP,0 |
NameIconsDat db ICONS_DAT,0 |
IconsFile db ICON_STRIP,0 |
NameIconsDat db ICONS_DAT,0 |
align 4 |
MaxNumIcon dd 0 ;ª®«¨ç¥á⢮ ¨ª®®ª |
IconNoDraw dd -1 ;-1 «¨¡® ®¬¥à ¨ª®ª¨, ª®â®àãî ¥ ¤® à¨á®¢ âì( ª®£¤ ¥ñ â ᪠îâ :)) |
MaxNumIcon dd 0 ;ª®«¨ç¥á⢮ ¨ª®®ª |
IconNoDraw dd -1 ;-1 «¨¡® ®¬¥à ¨ª®ª¨, ª®â®àãî ¥ ¤® à¨á®¢ âì( ª®£¤ ¥ñ â ᪠îâ :)) |
bFixIcons dd 1 |
bNotSave dd 0 |
bFixIcons dd 1 |
bNotSave dd 0 |
LButtonActiv dd 0 |
RButtonActiv dd 0 |
MovingActiv dd 0 |
DlgAddActiv dd 0 |
LButtonActiv dd 0 |
RButtonActiv dd 0 |
MovingActiv dd 0 |
DlgAddActiv dd 0 |
IconIni db '/rd/1/settings/icon.ini',0 |
IconIni db '/rd/1/settings/icon.ini',0 |
pthNotify db '/rd/1/@notify',0 |
pthNotify db '/rd/1/@notify',0 |
;keyName db 'name',0 |
keyPath db 'path',0 |
keyParams db 'param',0 |
keyIco db 'ico',0 |
keyX db 'x',0 |
keyY db 'y',0 |
keyPath db 'path',0 |
keyParams db 'param',0 |
keyIco db 'ico',0 |
keyX db 'x',0 |
keyY db 'y',0 |
;------------------------------------------------------------------------------- |
IMPORTS: |
library cnv_png,'cnv_png.obj',\ |
archiver,'archiver.obj',\ |
box_lib,'box_lib.obj',\ |
proc_lib,'proc_lib.obj',\ |
libini,'libini.obj' |
archiver,'archiver.obj',\ |
box_lib,'box_lib.obj',\ |
proc_lib,'proc_lib.obj',\ |
libini,'libini.obj' |
import cnv_png,\ |
cnv_png_import.Start,'START',\ |
cnv_png_import.Version,'version',\ |
cnv_png_import.Check,'Check_Header',\ |
cnv_png_import.Assoc,'Associations' |
import cnv_png,\ |
cnv_png_import.Start,'START',\ |
cnv_png_import.Version,'version',\ |
cnv_png_import.Check,'Check_Header',\ |
cnv_png_import.Assoc,'Associations' |
import archiver,\ |
unpack_DeflateUnpack2,'deflate_unpack2' |
import archiver,\ |
unpack_DeflateUnpack2,'deflate_unpack2' |
import box_lib,\ |
edit_box_draw,'edit_box',\ |
edit_box_key,'edit_box_key',\ |
edit_box_mouse,'edit_box_mouse',\ |
scrollbar_h_draw,'scrollbar_h_draw',\ |
scrollbar_h_mouse,'scrollbar_h_mouse' |
import box_lib,\ |
edit_box_draw,'edit_box',\ |
edit_box_key,'edit_box_key',\ |
edit_box_mouse,'edit_box_mouse',\ |
scrollbar_h_draw,'scrollbar_h_draw',\ |
scrollbar_h_mouse,'scrollbar_h_mouse' |
import proc_lib,\ |
OpenDialog_Init,'OpenDialog_init',\ |
OpenDialog_Start,'OpenDialog_start' |
import proc_lib,\ |
OpenDialog_Init,'OpenDialog_init',\ |
OpenDialog_Start,'OpenDialog_start' |
import libini,\ |
ini_enum_sections,'ini_enum_sections',\ |
ini_enum_keys,'ini_enum_keys',\ |
ini_get_str,'ini_get_str',\ |
ini_set_str,'ini_set_str',\ |
ini_get_color,'ini_get_color',\ |
ini_get_int,'ini_get_int',\ |
ini_set_int,'ini_set_int',\ |
ini_del_section,'ini_del_section' |
import libini,\ |
ini_enum_sections,'ini_enum_sections',\ |
ini_enum_keys,'ini_enum_keys',\ |
ini_get_str,'ini_get_str',\ |
ini_set_str,'ini_set_str',\ |
ini_get_color,'ini_get_color',\ |
ini_get_int,'ini_get_int',\ |
ini_set_int,'ini_set_int',\ |
ini_del_section,'ini_del_section' |
;ini.get_str (f_name, sec_name, key_name, buffer, buf_len, def_val) |
1254,38 → 1217,38 |
;------------------------------------------------------------------------------- |
;----- RButton.inc ------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
secRButt db 'rbmenu',0 |
secRButt db 'rbmenu',0 |
PredItem dd -1 |
PredItem dd -1 |
if lang eq ru |
RMenuRedrawFon db '¥à¥à¨á®¢ âì',0 |
RMenuAlign db 'ë஢ïâì ¯® á¥âª¥',0 |
RMenuAlign db 'ë஢ïâì ¯® á¥âª¥',0 |
RMenuOffMoving db ' ªà¥¯¨âì ¨ª®ª¨',0 |
RMenuOnMoving db 'âªà¥¯¨âì ¨ª®ª¨',0 |
RMenuAdd db '®¡ ¢¨âì',0 |
RMenuDel db '¤ «¨âì',0 |
RMenuProp db '¢®©á⢠',0 |
RMenuOnMoving db 'âªà¥¯¨âì ¨ª®ª¨',0 |
RMenuAdd db '®¡ ¢¨âì',0 |
RMenuDel db '¤ «¨âì',0 |
RMenuProp db '¢®©á⢠',0 |
else |
RMenuRedrawFon db 'Redraw',0 |
RMenuAlign db 'Snap to Grid',0 |
RMenuAlign db 'Snap to Grid',0 |
RMenuOffMoving db 'Fix the icons',0 |
RMenuOnMoving db 'Unfix the icons',0 |
RMenuAdd db 'Add',0 |
RMenuDel db 'Delete',0 |
RMenuProp db 'Properties',0 |
RMenuOnMoving db 'Unfix the icons',0 |
RMenuAdd db 'Add',0 |
RMenuDel db 'Delete',0 |
RMenuProp db 'Properties',0 |
end if |
if lang eq ru |
ErrRunProg db '訡ª § ¯ã᪠¯à®£à ¬¬ë',0 |
WarningSave db '¥ § ¡ã¤ì⥠á®åà ¨âì ¨§¬¥¥¨ï, § ¯ãáâ¨âì RDSave',0 |
ErrRunProg db '訡ª § ¯ã᪠¯à®£à ¬¬ë',0 |
WarningSave db '¥ § ¡ã¤ì⥠á®åà ¨âì ¨§¬¥¥¨ï, § ¯ãáâ¨âì RDSave',0 |
ErrNotFoundIni db '¥ ©¤¥ icon.ini',0 |
ErrName db '¬ï "rbmenu" § १¥à¢¨à®¢ ®',0 |
ErrName db '¬ï "rbmenu" § १¥à¢¨à®¢ ®',0 |
else |
ErrRunProg db 'Error runing program',0 |
WarningSave db 'Do not forget to save the changes, run the RDSave',0 |
ErrRunProg db 'Error runing program',0 |
WarningSave db 'Do not forget to save the changes, run the RDSave',0 |
ErrNotFoundIni db 'icon.ini not found',0 |
ErrName db 'The name "rbmenu" reserved',0 |
ErrName db 'The name "rbmenu" reserved',0 |
end if |
;------------------------------------------------------------------------------- |
1292,50 → 1255,50 |
;------- AddDlg.inc --------------------------------------------------------------- |
;------------------------------------------------------------------------------- |
if lang eq ru |
DTitleAdd db '®¡ ¢¨âì ¨ª®ªã',0 |
DTitleProp db '§¬¥¨âì ¨ª®ªã',0 |
DTitleAdd db '®¡ ¢¨âì ¨ª®ªã',0 |
DTitleProp db '§¬¥¨âì ¨ª®ªã',0 |
DCaptName db '•',0 |
DCaptPath db 'ãâì',0 |
DCaptParams db ' à ¬¥âàë',0 |
DCaptIcon db 'ª®ª ',0 |
DCaptName db '•',0 |
DCaptPath db 'ãâì',0 |
DCaptParams db ' à ¬¥âàë',0 |
DCaptIcon db 'ª®ª ',0 |
;DCaptChange db '.',0 |
DCaptCreate db '®§¤ âì',0 |
DCaptCreate db '®§¤ âì',0 |
DCaptProperties db '§¬¥¨âì',0 |
DCaptCancel db '⬥¨âì',0 |
DCaptCancel db '⬥¨âì',0 |
else |
DTitleAdd db 'Add icon',0 |
DTitleProp db 'Change icon',0 |
DTitleAdd db 'Add icon',0 |
DTitleProp db 'Change icon',0 |
DCaptName db 'Name',0 |
DCaptPath db 'Path',0 |
DCaptParams db 'Parameters',0 |
DCaptIcon db 'Icon',0 |
DCaptCreate db 'Create',0 |
DCaptName db 'Name',0 |
DCaptPath db 'Path',0 |
DCaptParams db 'Parameters',0 |
DCaptIcon db 'Icon',0 |
DCaptCreate db 'Create',0 |
DCaptProperties db 'Change',0 |
DCaptCancel db 'Cancel',0 |
DCaptCancel db 'Cancel',0 |
end if |
;/¥ ¬¥ïâì ¯®«®¦¥¨¥ |
edtName edit_box NAME_LENGTH*6+4,70+20+IMG_SIZE,6,0FFFFFFh,06F9480h,0FFh,0h,0,NAME_LENGTH,\ |
DAreaName,mouse_dd,0,0,0 |
DAreaName,mouse_dd,0,0,0 |
edtExePath edit_box 281-3-20-IMG_SIZE,70+20+IMG_SIZE,26,0FFFFFFh,06F9480h,0FFh,0h,0,256,\ |
DAreaPath,mouse_dd,0,0,0 |
DAreaPath,mouse_dd,0,0,0 |
edtParams edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,46,0FFFFFFh,06F9480h,0FFh,0h,0,256,\ |
DAreaParams,mouse_dd,0,0,0 |
DAreaParams,mouse_dd,0,0,0 |
edtIcon edit_box 295-20-IMG_SIZE,70+20+IMG_SIZE,66,0FFFFFFh,06F9480h,0FFh,0h,0,256,\ |
DAreaIcon,mouse_dd,0,0,0 |
DAreaIcon,mouse_dd,0,0,0 |
endEdits: |
;\ |
sbIcons: |
dw END_ICONS_AREAW-ICONSX |
dw ICONSX |
dw 15 |
dw END_ICONS_AREAH+3 |
dd 0 |
dd 1 |
dw END_ICONS_AREAW-ICONSX |
dw ICONSX |
dw 15 |
dw END_ICONS_AREAH+3 |
dd 0 |
dd 1 |
.max_area dd 0 |
.cur_area dd ICONS_DRAW_COUNTW |
.position dd 0 |
1361,34 → 1324,34 |
;------------------------------------------------------------------------------- |
OpenDialog_data: |
.type dd 0 |
.procinfo dd RBProcInfo ;+4 |
.com_area_name dd communication_area_name ;+8 |
.com_area dd 0 ;+12 |
.opendir_pach dd temp_dir_pach ;+16 |
.dir_default_pach dd communication_area_default_pach ;+20 |
.start_path dd open_dialog_path ;+24 |
.draw_window dd DRedrawWin;draw_window_for_OD ;+28 |
.status dd 0 ;+32 |
.openfile_pach dd DAreaPath;fname_Info ;+36 |
.filename_area dd 0;DAreaPath ;+40 |
.filter_area dd Filter |
.type dd 0 |
.procinfo dd RBProcInfo ;+4 |
.com_area_name dd communication_area_name ;+8 |
.com_area dd 0 ;+12 |
.opendir_pach dd temp_dir_pach ;+16 |
.dir_default_pach dd communication_area_default_pach ;+20 |
.start_path dd open_dialog_path ;+24 |
.draw_window dd DRedrawWin;draw_window_for_OD ;+28 |
.status dd 0 ;+32 |
.openfile_pach dd DAreaPath;fname_Info ;+36 |
.filename_area dd 0;DAreaPath ;+40 |
.filter_area dd Filter |
.x: |
.x_size dw 420 ;+48 ; Window X size |
.x_start dw 100 ;+50 ; Window X position |
.x_size dw 420 ;+48 ; Window X size |
.x_start dw 100 ;+50 ; Window X position |
.y: |
.y_size dw 320 ;+52 ; Window y size |
.y_start dw 100 ;+54 ; Window Y position |
.y_size dw 320 ;+52 ; Window y size |
.y_start dw 100 ;+54 ; Window Y position |
communication_area_name: |
db 'FFFFFFFF_open_dialog',0 |
db 'FFFFFFFF_open_dialog',0 |
open_dialog_path: |
db '/sys/File managers/opendial',0 |
db '/sys/File managers/opendial',0 |
communication_area_default_pach: |
db '/sys',0 |
db '/sys',0 |
Filter dd 0 |
Filter dd 0 |
;open_dialog db 0 |
;------------------------------------------------------------------------------- |
1395,89 → 1358,81 |
;/¥ à §¤¥«ïâì |
align 4 |
IconAreaH dd ICON_SIZE,ICON_SIZE |
IconAreaH dd ICON_SIZE,ICON_SIZE |
I_END: |
;##### UDATA ################################################################### |
IconArea rb 4*ICON_SIZE*ICON_SIZE |
IconArea rb 4*ICON_SIZE*ICON_SIZE |
;\ |
sc system_colors |
sc.workL rd 1 |
sc.workH rd 1 |
sc system_colors |
sc.workL rd 1 |
sc.workH rd 1 |
align 4 |
ScreenX rw 1 |
ScreenY rw 1 |
ScreenW rw 1 |
ScreenH rw 1 |
wsX rw 1 |
wsY rw 1 |
wsXe rw 1 |
wsYe rw 1 |
wsW rw 1 |
wsH rw 1 |
MouseX rd 1 |
MouseY rd 1 |
RBSlot rd 1 |
MouseX rd 1 |
MouseY rd 1 |
AddX rd 1 |
AddY rd 1 |
RBSlot rd 1 |
SelIcon rd 1 |
DlgSelIcon rd 1 |
slotDlgAdd rd 1 |
DlgBufImg rb IMG_SIZE*IMG_SIZE*3 |
AddX rd 1 |
AddY rd 1 |
SelIcon rd 1 |
DlgSelIcon rd 1 |
slotDlgAdd rd 1 |
DlgBufImg rb IMG_SIZE*IMG_SIZE*3 |
bufStdIco rb 40 |
IconsOffs rd 100 |
PIcoDB rd 1 |
bufStdIco rb 40 |
IconsOffs rd 100 |
PIcoDB rd 1 |
align 4 |
icon_count rd 1 |
strip_file rd 1 |
icon_count rd 1 |
strip_file rd 1 |
strip_file_size rd 1 |
cur_band_compensation rd 1 |
;---- RButton ----------------------------------------------------------------------- |
MinRMenuW rd 1 |
MinRMenuW rd 1 |
bufIni rb 40 |
NumMenuButt rd 1 |
RBMenuCP rd MAX_USER_BUTTONS*2 ;㪠§ ⥫¨ ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ ᮩ (dd) ¤«ï § ¢¥àè î饣® ã«ï |
RMenuW rw 1 |
RMenuH rw 1 |
bufIni rb 40 |
NumMenuButt rd 1 |
RBMenuCP rd MAX_USER_BUTTONS*2 ;㪠§ ⥫¨ ¯®¤¯¨áì ¨ ¯ãâì á ¯à®£®© (Caption(dd), Path(dd)) ¨ § ¯ ᮩ (dd) ¤«ï § ¢¥àè î饣® ã«ï |
RMenuW rw 1 |
RMenuH rw 1 |
MaxPage rd 1 |
mouse_dd rd 1 |
MaxPage rd 1 |
mouse_dd rd 1 |
DAreaName rb NAME_LENGTH+1 |
DAreaPath rb 256+1 |
DAreaParams rb 256+1 |
DAreaIcon rb 256+1 |
DAreaName rb NAME_LENGTH+1 |
DAreaPath rb 256+1 |
DAreaParams rb 256+1 |
DAreaIcon rb 256+1 |
align 4 |
RBProcInfo rb 1024 |
RBProcInfo rb 1024 |
align 4 |
;------ OpenDialog ------------------------------- |
temp_dir_pach rb 1024 |
fname_Info rb 1024 |
temp_dir_pach rb 1024 |
fname_Info rb 1024 |
;------------------------------------------------------------------------------- |
rb 512 |
stack_mov: ;®¤®¢à¥¬¥® â ᪠âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥îèªã ¥¢®§¬®¦® |
rb 512 |
stack_mov: ;®¤®¢à¥¬¥® â ᪠âì ¨ ¤¥à¦ âì ®âªàëâë¬ ¬¥îèªã ¥¢®§¬®¦® |
stack_rmenu: |
rb 512 |
rb 512 |
stack_dlg: |
rb 512 |
rb 512 |
stack_bredraw: |
rb 512 |
rb 512 |
stack_main: |
;------------------------------------------------------------------------------ |
ENDMEM: |
/programs/system/icon_new/RButton.inc |
---|
1,4 → 1,11 |
;idbRRedrawFon equ 100 |
;idbRAlign equ 101 |
;idbRFixIcons equ 102 |
;idbRAdd equ 103 |
;idbRDel equ 104 |
;idbRProp equ 105 |
DELTA_COLOR equ 70 |
COLOR_SEL_BUT equ 00F7092Dh |
MAX_USER_BUTTONS equ 30 |
6,520 → 13,520 |
;---- thread for rbutton ----------------------------------------------------------------------- |
RButtonWin: |
if lang eq ru |
mov [MinRMenuW],18*6+10 |
mov [MinRMenuW],18*6+10 |
else |
mov [MinRMenuW],15*6+10 |
mov [MinRMenuW],15*6+10 |
end if |
mcall 40,100101b ;SetMaskMessage 100101b |
mcall 48,3,sc,40 |
mcall 40,100101b ;SetMaskMessage 100101b |
mcall 48,3,sc,40 |
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ᢥ⫥¥ ä®®¢®£® |
rol eax,16 |
add al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ᢥ⫥¥ ä®®¢®£® |
rol eax,16 |
add al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
@@: |
rol eax,16 |
add al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
rol eax,16 |
add al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
@@: |
add ah,DELTA_COLOR |
jnc @f |
mov ah,0FFh |
add ah,DELTA_COLOR |
jnc @f |
mov ah,0FFh |
@@: |
mov [sc.workH],eax |
mov [sc.workH],eax |
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ⥬¥¥ ä®®¢®£® |
rol eax,16 |
sub al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
mov eax,[sc.work] ;¢ëç¨á«ï¥¬ 梥â ⥬¥¥ ä®®¢®£® |
rol eax,16 |
sub al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
@@: |
rol eax,16 |
sub al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
rol eax,16 |
sub al,DELTA_COLOR |
jnc @f |
mov al,0FFh |
@@: |
sub ah,DELTA_COLOR |
jnc @f |
mov ah,0FFh |
sub ah,DELTA_COLOR |
jnc @f |
mov ah,0FFh |
@@: |
mov [sc.workL],eax |
mov [sc.workL],eax |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
mov [SelIcon],eax |
stdcall GetNumIcon,[MouseX],[MouseY],-1 |
mov [SelIcon],eax |
;¢ëáâ ¢«ï¥¬ ¯¥à¢® ç «ìë¥ § 票ï |
m2m [RMenuW],[MinRMenuW] |
;¢ëáâ ¢«ï¥¬ ¯¥à¢® ç «ìë¥ § 票ï |
m2m [RMenuW],[MinRMenuW] |
cmp [SelIcon],-1 |
jne .RBW1 |
cmp [SelIcon],-1 |
jne .RBW1 |
;----------- ¥á«¨ ª«¨ª ¥ ¯® ¨ª®ª¥ ------------------------------------------------ |
mov [NumMenuButt],0 |
mov [NumMenuButt],0 |
mcall 70,fiIni |
mcall 68,12,dword[bufIni+32] ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¯®¤¯¨á¥© ¨ ¯ã⥩ § ¯ã᪠|
mov [RBMenuCP],eax ;GetUserBut ¡¥àñâ ®âáî¤ ¯¥à¢® ç «ìë© ãª § â¥«ì ¯ ¬ïâì |
stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut |
mcall 70,fiIni |
mcall 68,12,dword[bufIni+32] ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¯®¤¯¨á¥© ¨ ¯ã⥩ § ¯ã᪠|
mov [RBMenuCP],eax ;GetUserBut ¡¥àñâ ®âáî¤ ¯¥à¢® ç «ìë© ãª § â¥«ì ¯ ¬ïâì |
stdcall [ini_enum_keys],IconIni,secRButt,GetUserBut |
mov ebx,[NumMenuButt] |
add [NumMenuButt],4 |
mov ebx,[NumMenuButt] |
add [NumMenuButt],4 |
mov [RBMenuCP+ebx*8],RMenuRedrawFon |
mov [RBMenuCP+ebx*8+8],RMenuAlign |
cmp [bFixIcons],1 |
je @f |
mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
jmp .RBW11 |
mov [RBMenuCP+ebx*8],RMenuRedrawFon |
mov [RBMenuCP+ebx*8+8],RMenuAlign |
cmp [bFixIcons],1 |
je @f |
mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
jmp .RBW11 |
@@: |
mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
.RBW11: |
mov [RBMenuCP+ebx*8+24],RMenuAdd |
mov [RBMenuCP+ebx*8+24],RMenuAdd |
mov [RBMenuCP+ebx*8+4],0 |
mov [RBMenuCP+ebx*8+8+4],0 |
mov [RBMenuCP+ebx*8+16+4],0 |
mov [RBMenuCP+ebx*8+24+4],0 |
mov [RBMenuCP+ebx*8+4],0 |
mov [RBMenuCP+ebx*8+8+4],0 |
mov [RBMenuCP+ebx*8+16+4],0 |
mov [RBMenuCP+ebx*8+24+4],0 |
jmp .RBW2 |
jmp .RBW2 |
;----------- ¥á«¨ ª«¨ª ¯® ¨ª®ª¥ ------------------------------------------------ |
.RBW1: |
xor ebx,ebx |
mov [NumMenuButt],5 |
xor ebx,ebx |
mov [NumMenuButt],5 |
mov [RBMenuCP+ebx*8],RMenuRedrawFon |
mov [RBMenuCP+ebx*8+8],RMenuAlign |
cmp [bFixIcons],1 |
je @f |
mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
jmp .RBW21 |
mov [RBMenuCP+ebx*8],RMenuRedrawFon |
mov [RBMenuCP+ebx*8+8],RMenuAlign |
cmp [bFixIcons],1 |
je @f |
mov [RBMenuCP+ebx*8+16],RMenuOffMoving |
jmp .RBW21 |
@@: |
mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
mov [RBMenuCP+ebx*8+16],RMenuOnMoving |
.RBW21: |
mov [RBMenuCP+ebx*8+24],RMenuDel |
mov [RBMenuCP+ebx*8+32],RMenuProp |
mov [RBMenuCP+ebx*8+24],RMenuDel |
mov [RBMenuCP+ebx*8+32],RMenuProp |
mov [RBMenuCP+ebx*8+4],0 |
mov [RBMenuCP+ebx*8+8+4],0 |
mov [RBMenuCP+ebx*8+16+4],0 |
mov [RBMenuCP+ebx*8+24+4],0 |
mov [RBMenuCP+ebx*8+32+4],0 |
mov [RBMenuCP+ebx*8+4],0 |
mov [RBMenuCP+ebx*8+8+4],0 |
mov [RBMenuCP+ebx*8+16+4],0 |
mov [RBMenuCP+ebx*8+24+4],0 |
mov [RBMenuCP+ebx*8+32+4],0 |
;------------------------------------------------------------------------------- |
.RBW2: |
cmp [SelIcon],-1 |
jne @f |
mov eax,[NumMenuButt] |
shl eax,4 |
mov [RMenuH],ax |
jmp .rbw1 |
cmp [SelIcon],-1 |
jne @f |
mov eax,[NumMenuButt] |
shl eax,4 |
mov [RMenuH],ax |
jmp .rbw1 |
@@: |
mov [RMenuH],16*5 |
mov [RMenuH],16*5 |
.rbw1: |
add [RMenuW],3 ; à ¬ªã |
add [RMenuH],3 ; à ¬ªã |
add [RMenuW],3 ; à ¬ªã |
add [RMenuH],3 ; à ¬ªã |
RBWRedraw: |
mcall 12,1 ;RedrawWinBeg |
mov ebx,[MouseX] |
shl ebx,16 |
mov bx,[RMenuW] |
mcall 12,1 ;RedrawWinBeg |
mov ebx,[MouseX] |
shl ebx,16 |
mov bx,[RMenuW] |
mov ecx,[MouseY] |
shl ecx,16 |
mov cx,[RMenuH] |
mov ecx,[MouseY] |
shl ecx,16 |
mov cx,[RMenuH] |
mov edx,01000000h |
mov esi,01000000h |
xor eax,eax |
int 40h |
mov edx,01000000h |
mov esi,01000000h |
xor eax,eax |
int 40h |
and ebx,0FFFFh ;ä®®¢ë© ¯àאַ㣮«ì¨ª |
inc bx |
and ecx,0FFFFh |
inc cx |
mcall 13,,,[sc.work] |
and ebx,0FFFFh ;ä®®¢ë© ¯àאַ㣮«ì¨ª |
inc bx |
and ecx,0FFFFh |
inc cx |
mcall 13,,,[sc.work] |
;----------- ®¯à¥¤¥«ï¥¬ ¨ à¨á㥬 ª®¯ª¨ |
mov ecx,[NumMenuButt] |
mov ecx,[NumMenuButt] |
.DrawUB: |
push ecx |
push ecx |
mov eax,[NumMenuButt] |
sub eax,ecx |
mov edx,eax ;button ID = ®â 0 ¤® NumMenuButt |
or edx,60000000h |
shl eax,4+16 ;*16*10000h |
mov ecx,eax |
mov cx,16 |
mov eax,[NumMenuButt] |
sub eax,ecx |
mov edx,eax ;button ID = ®â 0 ¤® NumMenuButt |
or edx,60000000h |
shl eax,4+16 ;*16*10000h |
mov ecx,eax |
mov cx,16 |
xor ebx,ebx |
mov bx,[RMenuW] |
mov esi,[sc.work] |
mcall 8 ;®¯à¥¤¥«¨«¨ |
xor ebx,ebx |
mov bx,[RMenuW] |
mov esi,[sc.work] |
mcall 8 ;®¯à¥¤¥«¨«¨ |
mov ebx,70000h |
shr ecx,16 |
mov bx,cx |
add bx,7 |
mov ebx,70000h |
shr ecx,16 |
mov bx,cx |
add bx,7 |
mov ecx,[sc.work_text] |
or ecx,80000000h |
mov ecx,[sc.work_text] |
or ecx,80000000h |
mov eax,[NumMenuButt] |
sub eax,[esp] |
mov edx,[RBMenuCP+eax*8] |
mcall 4 |
mov eax,[NumMenuButt] |
sub eax,[esp] |
mov edx,[RBMenuCP+eax*8] |
mcall 4 |
pop ecx |
loop .DrawUB |
pop ecx |
loop .DrawUB |
;--------------- |
; ®¡à ¬«ïî騩 ¯àאַ㣮«ì¨ª |
xor ebx,ebx ;¢¥àå |
mov bx,[RMenuW] |
xor ecx,ecx |
mcall 38,,,[sc.workL] |
xor ebx,ebx ;¢¥àå |
mov bx,[RMenuW] |
xor ecx,ecx |
mcall 38,,,[sc.workL] |
mov bx,[RMenuW] ;¯à ¢® |
shl ebx,16 |
mov bx,[RMenuW] |
xor ecx,ecx |
mov cx,[RMenuH] |
mcall |
mov bx,[RMenuW] ;¯à ¢® |
shl ebx,16 |
mov bx,[RMenuW] |
xor ecx,ecx |
mov cx,[RMenuH] |
mcall |
xor ebx,ebx ;¨§ |
mov bx,[RMenuW] |
mov cx,[RMenuH] |
shl ecx,16 |
mov cx,[RMenuH] |
mcall |
xor ebx,ebx ;¨§ |
mov bx,[RMenuW] |
mov cx,[RMenuH] |
shl ecx,16 |
mov cx,[RMenuH] |
mcall |
xor ebx,ebx ;«¥¢® |
xor ecx,ecx |
mov cx,[RMenuH] |
mcall |
xor ebx,ebx ;«¥¢® |
xor ecx,ecx |
mov cx,[RMenuH] |
mcall |
; ᢥâ«ë© «¥¢ë© ¢¥à娩 㣮« |
xor ebx,ebx |
mov bx,[RMenuW] |
add ebx,1*10000h-1 |
mov ecx,00010001h |
mcall ,,,[sc.workH] |
xor ebx,ebx |
mov bx,[RMenuW] |
add ebx,1*10000h-1 |
mov ecx,00010001h |
mcall ,,,[sc.workH] |
mov ebx,00010001h |
xor ecx,ecx |
mov cx,[RMenuH] |
add ecx,1*10000h-1 |
mcall |
mov ebx,00010001h |
xor ecx,ecx |
mov cx,[RMenuH] |
add ecx,1*10000h-1 |
mcall |
;ª®¥æ à¨á®¢ ¨ï |
mcall 12,2 ;RedrawWinEnd |
mcall 12,2 ;RedrawWinEnd |
;------------------------------------------------------------------- |
mcall 9,RBProcInfo,-1 ;GetThreadInfo RBProcInfo,-1 |
mcall 18,21,dword[RBProcInfo+30] |
m2m dword[RBSlot],eax |
mcall 9,RBProcInfo,-1 ;GetThreadInfo RBProcInfo,-1 |
mcall 18,21,dword[RBProcInfo+30] |
m2m dword[RBSlot],eax |
RBWMessages: |
mcall 10 ;WaitMessage |
dec eax |
jz RBWRedraw |
sub eax,2 |
jz RBWButton |
sub eax,3 |
jz RBWMouse |
jmp RBWMessages |
mcall 10 ;WaitMessage |
dec eax |
jz RBWRedraw |
sub eax,2 |
jz RBWButton |
sub eax,3 |
jz RBWMouse |
jmp RBWMessages |
RBWButton: |
mcall 17 ;GetButtonPressed |
shr eax,8 |
mcall 17 ;GetButtonPressed |
shr eax,8 |
mov ebx,eax |
mov eax,[RBMenuCP+ebx*8+4] ;¥á«¨ ᤥáì 0, â® ª«¨ª ¯® áâ ¤ à⮩ ª®¯ª¥(ª®â®à ï ¥ ¢ ini) |
test eax,eax |
jnz .RBWB |
mov eax,[RBMenuCP+ebx*8] ;ᬮâਬ, 㪠§ â¥«ì ª ªãî ¤¯¨áì ¢ ¯®¤¯¨á¨ |
cmp eax,RMenuRedrawFon ; ¨ ¯® ¥© ¢ë¡¨à ¥¬ ¤¥©á⢨¥ |
jz RBRedrawFon |
cmp eax,RMenuAlign |
jz RBAlign |
cmp eax,RMenuOffMoving |
jz RBFixIcons |
cmp eax,RMenuOnMoving |
jz RBFixIcons |
cmp eax,RMenuAdd |
jz RBAdd |
cmp eax,RMenuDel |
jz RBDelete |
cmp eax,RMenuProp |
jz RBPropeties |
mov ebx,eax |
mov eax,[RBMenuCP+ebx*8+4] ;¥á«¨ ᤥáì 0, â® ª«¨ª ¯® áâ ¤ à⮩ ª®¯ª¥(ª®â®à ï ¥ ¢ ini) |
test eax,eax |
jnz .RBWB |
mov eax,[RBMenuCP+ebx*8] ;ᬮâਬ, 㪠§ â¥«ì ª ªãî ¤¯¨áì ¢ ¯®¤¯¨á¨ |
cmp eax,RMenuRedrawFon ; ¨ ¯® ¥© ¢ë¡¨à ¥¬ ¤¥©á⢨¥ |
jz RBRedrawFon |
cmp eax,RMenuAlign |
jz RBAlign |
cmp eax,RMenuOffMoving |
jz RBFixIcons |
cmp eax,RMenuOnMoving |
jz RBFixIcons |
cmp eax,RMenuAdd |
jz RBAdd |
cmp eax,RMenuDel |
jz RBDelete |
cmp eax,RMenuProp |
jz RBPropeties |
jmp RBWExit |
jmp RBWExit |
.RBWB: |
mov dword[fiRunProg+8],0 |
mov dword[fiRunProg+21],eax |
mcall 70,fiRunProg |
mov dword[fiRunProg+8],0 |
mov dword[fiRunProg+21],eax |
mcall 70,fiRunProg |
jmp RBWExit |
jmp RBWExit |
RBWMouse: |
call MouseInWin |
jnc .RBWMnoInWin ;¥á«¨ ¢¥ ®ª , â® ¯à®áâ® ¢®ááâ ¢«¨¢ ¥¬ ¯à¥¤ë¤ãéãî ª®¯ªã |
call MouseInWin |
jnc .RBWMnoInWin ;¥á«¨ ¢¥ ®ª , â® ¯à®áâ® ¢®ááâ ¢«¨¢ ¥¬ ¯à¥¤ë¤ãéãî ª®¯ªã |
mcall 37,1 ;¯®«®¦¥¨¥ ¬ëè¨ ®â®á¨â¥«ì® ®ª |
and eax,0FFF0h ;㦥 ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñë© ¤® ¢¥à奩 â®çª¨ ªà ⮩ 16(¢ëá®â ª®¯ª¨) |
cmp [PredItem],eax |
je .RBWMendLightBut |
mcall 37,1 ;¯®«®¦¥¨¥ ¬ëè¨ ®â®á¨â¥«ì® ®ª |
and eax,0FFF0h ;㦥 ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñë© ¤® ¢¥à奩 â®çª¨ ªà ⮩ 16(¢ëá®â ª®¯ª¨) |
cmp [PredItem],eax |
je .RBWMendLightBut |
shr eax,4 ;¥á«¨ ¬ëèì ¨¦¥© à ¬ª¥, â® â ª¦¥ ⮫쪮 ¢®ááâ ®¢¨âì ¯à¥¤ë¤ãéãî ª®¯ªã |
cmp eax,[NumMenuButt] |
jae .RBWMnoInWin |
shr eax,4 ;¥á«¨ ¬ëèì ¨¦¥© à ¬ª¥, â® â ª¦¥ ⮫쪮 ¢®ááâ ®¢¨âì ¯à¥¤ë¤ãéãî ª®¯ªã |
cmp eax,[NumMenuButt] |
jae .RBWMnoInWin |
cmp [PredItem],-1 ;¢®ááâ ®¢«¥¨¥ ¯à¥¤ë¤ã饩 ª®¯ª¨ |
je @f |
cmp [PredItem],-1 ;¢®ááâ ®¢«¥¨¥ ¯à¥¤ë¤ã饩 ª®¯ª¨ |
je @f |
stdcall DrawRBLine,[PredItem],0 |
stdcall DrawRBLine,[PredItem],0 |
@@: |
call MouseInWin |
jnc @f |
mcall 37,1 ;¯®«®¦¥¨¥ ¬ëè¨ ®â®á¨â¥«ì® ®ª |
and eax,0FFF0h ;㦥 ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñë© ¤® ¢¥à奩 â®çª¨ ªà ⮩ 16(¢ëá®â ª®¯ª¨) |
mov [PredItem],eax |
stdcall DrawRBLine,eax,1 |
call MouseInWin |
jnc @f |
mcall 37,1 ;¯®«®¦¥¨¥ ¬ëè¨ ®â®á¨â¥«ì® ®ª |
and eax,0FFF0h ;㦥 ⮫쪮 Y, ¯à¨çñ¬ ®ªà㣫ñë© ¤® ¢¥à奩 â®çª¨ ªà ⮩ 16(¢ëá®â ª®¯ª¨) |
mov [PredItem],eax |
stdcall DrawRBLine,eax,1 |
@@: |
jmp .RBWMendLightBut |
jmp .RBWMendLightBut |
.RBWMnoInWin: |
cmp [PredItem],-1 ;¢®ááâ ®¢«¥¨¥ ¯à¥¤ë¤ã饩 ª®¯ª¨ |
je .RBWMendLightBut |
cmp [PredItem],-1 ;¢®ááâ ®¢«¥¨¥ ¯à¥¤ë¤ã饩 ª®¯ª¨ |
je .RBWMendLightBut |
stdcall DrawRBLine,[PredItem],0 |
mov [PredItem],-1 |
stdcall DrawRBLine,[PredItem],0 |
mov [PredItem],-1 |
.RBWMendLightBut: |
mcall 37,2 ;GetMouseKey |
test eax,111b |
jz RBWMessages |
mcall 37,2 ;GetMouseKey |
test eax,111b |
jz RBWMessages |
call MouseInWin |
jc RBWMessages |
call MouseInWin |
jc RBWMessages |
RBWExit: |
cmp [SelIcon],-1 |
jne @f |
mcall 68,13,[RBMenuCP] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì á ¯®¤¯¨áﬨ ¨ ¯ãâﬨ ª ¯à®£ ¬ |
cmp [SelIcon],-1 |
jne @f |
mcall 68,13,[RBMenuCP] ;®á¢®¡®¦¤ ¥¬ ¯ ¬ïâì á ¯®¤¯¨áﬨ ¨ ¯ãâﬨ ª ¯à®£ ¬ |
@@: |
mov [RButtonActiv],0 |
mcall -1 ;ExitProcess |
mov [RButtonActiv],0 |
mcall -1 ;ExitProcess |
RBRedrawFon: |
mcall 15,3 |
jmp RBWExit |
mcall 15,3 |
jmp RBWExit |
RBAlign: |
call AlignIcons |
call AlignIcons |
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,Ini_SavePos |
m2m [PIcoDB],[BegData] |
stdcall [ini_enum_sections],IconIni,Ini_SavePos |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
jmp RBRedrawFon |
jmp RBRedrawFon |
RBFixIcons: |
xor dword[bFixIcons],1 |
xor dword[bFixIcons],1 |
cmp [bNotSave],0 |
je @f |
cmp [bNotSave],0 |
je @f |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
@@: |
jmp RBWExit |
jmp RBWExit |
RBAdd: |
cmp [DlgAddActiv],1 |
je RBWSetActivWin |
mov [DlgAddActiv],1 |
cmp [DlgAddActiv],1 |
je RBWSetActivWin |
mov [DlgAddActiv],1 |
mcall 51,1,DlgAdd,stack_dlg ;CreateThread DlgAdd,stack_dlg |
jmp RBWExit |
mcall 51,1,DlgAdd,stack_dlg ;CreateThread DlgAdd,stack_dlg |
jmp RBWExit |
RBDelete: |
mov eax,[SelIcon] |
mov eax,[IconsOffs+eax*4] |
stdcall [ini_del_section],IconIni,eax |
mov eax,[SelIcon] |
mov eax,[IconsOffs+eax*4] |
stdcall [ini_del_section],IconIni,eax |
stdcall DelIcon,[SelIcon] |
stdcall DelIcon,[SelIcon] |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov [bNotSave],0 |
jmp RBRedrawFon |
jmp RBRedrawFon |
RBPropeties: |
cmp [DlgAddActiv],1 |
je RBWSetActivWin |
mov [DlgAddActiv],1 |
cmp [DlgAddActiv],1 |
je RBWSetActivWin |
mov [DlgAddActiv],1 |
mcall 51,1,DlgProp,stack_dlg ;CreateThread DlgProp,stack_dlg |
jmp RBWExit |
mcall 51,1,DlgProp,stack_dlg ;CreateThread DlgProp,stack_dlg |
jmp RBWExit |
RBWSetActivWin: |
mcall 18,3,[slotDlgAdd] |
jmp RBWExit |
mcall 18,3,[slotDlgAdd] |
jmp RBWExit |
proc DrawRBLine y,active |
xor ebx,ebx |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov ecx,[y] |
add ecx,2 |
shl ecx,16 |
mov cx,16;-1-2 |
cmp [active],1 |
jne @f |
mov edx,[sc.work_button] |
jmp .L1 |
xor ebx,ebx |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov ecx,[y] |
add ecx,2 |
shl ecx,16 |
mov cx,16;-1-2 |
cmp [active],1 |
jne @f |
mov edx,[sc.work_button] |
jmp .L1 |
@@: |
mov edx,[sc.work] |
mov edx,[sc.work] |
.L1: |
mcall 13 |
mcall 13 |
;---------------------------------------------- |
xor ebx,ebx ;¢¥àå |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h |
xor ebx,ebx ;¢¥àå |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h |
cmp [active],1 |
jne @f |
mov edx,[sc.workL] |
jmp .L3 |
cmp [active],1 |
jne @f |
mov edx,[sc.workL] |
jmp .L3 |
@@: |
mov edx,[sc.work] |
mov edx,[sc.work] |
.L3: |
mcall 38 |
mcall 38 |
mov ebx,00020002h ;«¥¢® |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h+16 |
mov ebx,00020002h ;«¥¢® |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h+16 |
cmp [active],1 |
jne @f |
mov edx,[sc.workL] |
cmp [active],1 |
jne @f |
mov edx,[sc.workL] |
@@: |
mcall |
mcall |
xor ebx,ebx ;¨§ |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,16*10000h+16+00020002h |
xor ebx,ebx ;¨§ |
mov bx,[RMenuW] |
add ebx,2*10000h-3 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,16*10000h+16+00020002h |
cmp [active],1 |
jne @f |
mov edx,[sc.workH] |
cmp [active],1 |
jne @f |
mov edx,[sc.workH] |
@@: |
mcall |
mcall |
mov bx,[RMenuW] ;¯à ¢® |
shl ebx,16 |
mov bx,[RMenuW] |
add ebx,-2*10000h-2 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h+16 |
mov bx,[RMenuW] ;¯à ¢® |
shl ebx,16 |
mov bx,[RMenuW] |
add ebx,-2*10000h-2 |
mov cx,word[y] |
shl ecx,16 |
mov cx,word[y] |
add ecx,00020002h+16 |
cmp [active],1 |
jne @f |
mov edx,[sc.workH] |
cmp [active],1 |
jne @f |
mov edx,[sc.workH] |
@@: |
mcall |
mcall |
mov eax,[y] |
shr eax,4 |
mov edx,[RBMenuCP+eax*8] |
mov eax,[y] |
shr eax,4 |
mov edx,[RBMenuCP+eax*8] |
xor ebx,ebx |
mov ebx,[y] |
add ebx,7*10000h+7 |
xor ebx,ebx |
mov ebx,[y] |
add ebx,7*10000h+7 |
cmp [active],1 |
jne @f |
mov ecx,[sc.work_button_text] |
jmp .L2 |
cmp [active],1 |
jne @f |
mov ecx,[sc.work_button_text] |
jmp .L2 |
@@: |
mov ecx,[sc.work_text] |
mov ecx,[sc.work_text] |
.L2: |
or ecx,80000000h |
or ecx,80000000h |
mcall 4 |
mcall 4 |
ret |
ret |
endp |
proc MouseInWin ;Carry flag = 1, ¥á«¨ ª«¨ª ¢ ®ª¥ |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax ;y |
shr eax,16 ;x |
mcall 37,0 ;GetMousePos |
xor ebx,ebx |
mov bx,ax ;y |
shr eax,16 ;x |
xor ecx,ecx |
mov cx,bx |
mov bx,ax |
xor ecx,ecx |
mov cx,bx |
mov bx,ax |
mcall 34 |
cmp eax,[RBSlot] |
jne @f |
stc |
ret |
mcall 34 |
cmp eax,[RBSlot] |
jne @f |
stc |
ret |
@@: |
clc |
ret |
clc |
ret |
endp |
529,240 → 536,238 |
negatX:WORD,\ |
negatY:WORD |
xor ebx,ebx |
xor ebx,ebx |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jnz .AlignIco |
ret |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jnz .AlignIco |
ret |
.AlignIco: |
push ecx |
or ecx,-1 |
mov edi,dword[IconsOffs+ebx] |
xor eax,eax |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
push ecx |
or ecx,-1 |
mov edi,dword[IconsOffs+ebx] |
xor eax,eax |
repne scasb |
repne scasb |
repne scasb |
repne scasb |
mov dword[negatX],0 |
mov dword[negatX],0 |
;-------- ¯à¥®¡à §ã¥¬ ª®®à¤¨ âë ¢ ¯®«®¦¨â¥«ìë¥ |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
neg ax |
mov word[negatX],1 |
mov ax,[edi+2] |
test ax,8000h |
jz @f |
neg ax |
mov word[negatX],1 |
@@: |
mov [posX],ax |
mov [posX],ax |
mov ax,[edi] |
test ax,8000h |
jz @f |
neg ax |
mov word[negatY],1 |
mov ax,[edi] |
test ax,8000h |
jz @f |
neg ax |
mov word[negatY],1 |
@@: |
mov [posY],ax |
mov [posY],ax |
;----- |
mov ax,[posY] |
mov dx,ALIGN_SIZE |
mov ax,[posY] |
mov dx,ALIGN_SIZE |
cmp ax,dx |
jb .AI0 |
@@: sub ax,dx |
cmp ax,dx |
jae @b |
cmp ax,dx |
jb .AI0 |
@@: sub ax,dx |
cmp ax,dx |
jae @b |
.AI0: |
mov dx,ax |
cmp dx,ALIGN_SIZE/2 |
jb .AI1 |
mov dx,ax |
cmp dx,ALIGN_SIZE/2 |
jb .AI1 |
mov ax,ALIGN_SIZE |
sub ax,dx |
add [posY],ax |
mov ax,ALIGN_SIZE |
sub ax,dx |
add [posY],ax |
jmp .AI2 |
jmp .AI2 |
.AI1: |
sub [posY],dx |
sub [posY],dx |
.AI2: |
;----- |
mov ax,[posX] |
mov dx,ALIGN_SIZE |
mov ax,[posX] |
mov dx,ALIGN_SIZE |
cmp ax,dx |
jb .AI3 |
@@: sub ax,dx |
cmp ax,dx |
jae @b |
cmp ax,dx |
jb .AI3 |
@@: sub ax,dx |
cmp ax,dx |
jae @b |
.AI3: |
mov dx,ax |
cmp dx,ALIGN_SIZE/2 |
jb .AI4 |
mov dx,ax |
cmp dx,ALIGN_SIZE/2 |
jb .AI4 |
mov ax,ALIGN_SIZE |
sub ax,dx |
add [posX],ax |
mov ax,ALIGN_SIZE |
sub ax,dx |
add [posX],ax |
jmp .AI5 |
jmp .AI5 |
.AI4: |
sub [posX],dx |
sub [posX],dx |
.AI5: |
;----- ¯à¥®¡à §®¢ ¨¥ § ¤ ¨ ¯®¯à ¢ª ¢ ®âà¨æ ⥫ìëå ª®®à¤¨ â |
mov ax,[posX] |
mov ax,[posX] |
cmp [negatX],1 |
jne @f |
neg ax |
inc ax |
jmp .AI6 |
cmp [negatX],1 |
jne @f |
neg ax |
inc ax |
jmp .AI6 |
@@: |
mov dx,[wsW] |
shr dx,1 |
add dx,[wsX] |
cmp ax,dx |
jbe .AI6 |
sub ax,[wsW] |
mov dx,[ScreenX] |
shr dx,1 |
cmp ax,dx |
jbe .AI6 |
sub ax,[ScreenX] |
.AI6: |
mov word[edi+2],ax |
mov word[edi+2],ax |
mov ax,[posY] |
cmp [negatY],1 |
jne @f |
neg ax |
inc ax |
jmp .AI7 |
mov ax,[posY] |
cmp [negatY],1 |
jne @f |
neg ax |
inc ax |
jmp .AI7 |
@@: |
mov dx,[wsH] |
shr dx,1 |
add dx,[wsY] |
cmp ax,dx |
jbe .AI7 |
sub ax,[wsH] |
mov dx,[ScreenY] |
shr dx,1 |
cmp ax,dx |
jbe .AI7 |
sub ax,[ScreenY] |
.AI7: |
mov word[edi],ax |
mov word[edi],ax |
;-------- |
pop ecx |
add ebx,4 |
dec ecx |
jnz .AlignIco |
pop ecx |
add ebx,4 |
dec ecx |
jnz .AlignIco |
; loop .AlignIco |
; mov dword[fInfo],2 |
; mcall 70,fInfo |
ret |
ret |
endp |
;------------------------------------------------------------------------------- |
proc GetUserBut stdcall,f_name,sec_name,key_name,key_value |
cmp [NumMenuButt],MAX_USER_BUTTONS |
jne @f |
ret |
cmp [NumMenuButt],MAX_USER_BUTTONS |
jne @f |
ret |
@@: |
push ebx esi edi |
push ebx esi edi |
mov edi,[key_name] ;®¯à¥¤¥«ï¥¬ è¨à¨ã ¬¥î |
xor eax,eax |
or ecx,-1 |
repne scasb |
sub edi,[key_name] |
mov eax,edi |
shl eax,1 |
lea eax,[eax*2+eax+5*2] |
cmp ax,[RMenuW] |
jbe @f |
mov [RMenuW],ax |
mov edi,[key_name] ;®¯à¥¤¥«ï¥¬ è¨à¨ã ¬¥î |
xor eax,eax |
or ecx,-1 |
repne scasb |
sub edi,[key_name] |
mov eax,edi |
shl eax,1 |
lea eax,[eax*2+eax+5*2] |
cmp ax,[RMenuW] |
jbe @f |
mov [RMenuW],ax |
@@: |
mov ebx,[NumMenuButt] |
mov ebx,[NumMenuButt] |
mov esi,[key_name] |
mov edi,[RBMenuCP+ebx*8] |
mov esi,[key_name] |
mov edi,[RBMenuCP+ebx*8] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov [RBMenuCP+ebx*8+4],edi |
mov esi,[key_value] |
mov [RBMenuCP+ebx*8+4],edi |
mov esi,[key_value] |
@@: lodsb |
stosb |
test al,al |
jnz @b |
stosb |
test al,al |
jnz @b |
mov [RBMenuCP+ebx*8+8],edi |
mov [RBMenuCP+ebx*8+8],edi |
inc [NumMenuButt] |
inc [NumMenuButt] |
pop edi esi ebx |
mov eax,1 |
ret |
pop edi esi ebx |
mov eax,1 |
ret |
endp |
proc Ini_SavePos stdcall,f_name,sec_name |
push ebx edi esi |
push ebx edi esi |
xor ebx,ebx |
xor ebx,ebx |
.SearchSect: |
mov edi,[IconsOffs+ebx*4] |
mov esi,[sec_name] |
mov edi,[IconsOffs+ebx*4] |
mov esi,[sec_name] |
@@: |
lodsb |
scasb |
jne @f |
test al,al |
jnz @b |
lodsb |
scasb |
jne @f |
test al,al |
jnz @b |
jmp .IcoDataFound |
jmp .IcoDataFound |
@@: |
inc ebx |
cmp ebx,[MaxNumIcon] |
jb .SearchSect |
inc ebx |
cmp ebx,[MaxNumIcon] |
jb .SearchSect |
mov eax,1 |
pop esi edi ebx |
ret |
mov eax,1 |
pop esi edi ebx |
ret |
.IcoDataFound: |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
or ecx,-1 |
repne scasb |
repne scasb |
repne scasb |
;int3 |
movzx eax,word[edi+2] |
test eax,8000h |
jz @f |
or eax,0FFFF0000h |
movzx eax,word[edi+2] |
test eax,8000h |
jz @f |
or eax,0FFFF0000h |
@@: |
stdcall [ini_set_int],[f_name],[sec_name],keyX,eax |
stdcall [ini_set_int],[f_name],[sec_name],keyX,eax |
movzx eax,word[edi] |
test eax,8000h |
jz @f |
or eax,0FFFF0000h |
movzx eax,word[edi] |
test eax,8000h |
jz @f |
or eax,0FFFF0000h |
@@: |
stdcall [ini_set_int],[f_name],[sec_name],keyY,eax |
stdcall [ini_set_int],[f_name],[sec_name],keyY,eax |
mov eax,1 |
pop esi edi ebx |
ret |
mov eax,1 |
pop esi edi ebx |
ret |
endp |
/programs/system/icon_new/DlgAdd.inc |
---|
1,266 → 1,210 |
idbChange equ 2 |
idbCreate equ 3 |
idbLeft equ 4 |
idbRight equ 5 |
idbCancel equ 1 |
idbChange equ 2 |
idbCreate equ 3 |
idbLeft equ 4 |
idbRight equ 5 |
idbCancel equ 1 |
DlgAdd: |
DlgProp: |
mov eax,[SelIcon] |
mov [DlgSelIcon],eax |
cmp eax,-1 |
jne SetProp |
mov eax,[SelIcon] |
mov [DlgSelIcon],eax |
cmp eax,-1 |
jne SetProp |
;----------- |
mov eax,[MouseX] |
mov ebx,[MouseY] |
m2m dword[AddX],dword[MouseX] |
m2m dword[AddY],dword[MouseY] |
cmp ax,[wsX] |
jae @f |
mov ax,[wsX] |
@@: |
mov ecx,NAME_LENGTH |
mov edi,DAreaName |
xor al,al |
rep stosb |
mov dword[edtName.size],0 |
mov dword[edtName.pos],0 |
cmp bx,[wsY] |
jae @f |
mov bx,[wsY] |
@@: ;eax,ebx - ॠ«ì ï ª®®à¤¨ â . ᥠª®®à¤¨ âë ¢ ¯à®£¥ ®â®á¨â¥«ì® «¥¢®£® ¢¥à奣® 㣫 à ¡®ç¥© ®¡« á⨠|
mov ecx,256 |
mov edi,DAreaPath |
rep stosb |
mov dword[edtExePath.size],0 |
mov dword[edtExePath.pos],0 |
xor edx,edx |
mov dx,[wsXe] |
sub edx,ICON_SIZE |
cmp eax,edx |
jbe @f |
mov eax,edx |
@@: |
mov ecx,256 |
mov edi,DAreaParams |
rep stosb |
mov dword[edtParams.size],0 |
mov dword[edtParams.pos],0 |
mov dx,[wsYe] |
sub edx,ICON_SIZE |
cmp ebx,edx |
jbe @f |
mov ebx,edx |
@@: |
mov ecx,256 |
mov edi,DAreaIcon |
rep stosb |
mov dword[edtIcon.size],0 |
mov dword[edtIcon.pos],0 |
xor edx,edx ;¯à¥®¡à §®¢ë¢ ¥¬ ¢ ®â®á¨â¥«ìë¥ |
mov dx,[wsW] |
shr edx,1 |
add dx,[wsX] |
cmp eax,edx |
jbe @f |
sub ax,[wsXe] |
inc ax |
jmp .dlg1 |
@@: |
sub ax,[wsX] |
.dlg1: |
xor edx,edx |
mov dx,[wsH] |
shr edx,1 |
add dx,[wsY] |
cmp ebx,edx |
jbe @f |
sub bx,[wsYe] |
inc bx |
jmp .dlg2 |
@@: |
sub bx,[wsY] |
.dlg2: |
mov [AddX],eax |
mov [AddY],ebx |
;----------- |
mov ecx,NAME_LENGTH |
mov edi,DAreaName |
xor al,al |
rep stosb |
mov dword[edtName.size],0 |
mov dword[edtName.pos],0 |
mov ecx,256 |
mov edi,DAreaPath |
rep stosb |
mov dword[edtExePath.size],0 |
mov dword[edtExePath.pos],0 |
mov ecx,256 |
mov edi,DAreaParams |
rep stosb |
mov dword[edtParams.size],0 |
mov dword[edtParams.pos],0 |
mov ecx,256 |
mov edi,DAreaIcon |
rep stosb |
mov dword[edtIcon.size],0 |
mov dword[edtIcon.pos],0 |
jmp startDlg |
jmp startDlg |
;-------- |
SetProp: |
mov esi,[IconsOffs+eax*4] |
mov edi,DAreaName |
xor ecx,ecx |
mov esi,[IconsOffs+eax*4] |
mov edi,DAreaName |
xor ecx,ecx |
@@: |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtName.size],ecx |
mov dword[edtName.pos],ecx |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtName.size],ecx |
mov dword[edtName.pos],ecx |
xor ecx,ecx |
mov edi,DAreaPath |
xor ecx,ecx |
mov edi,DAreaPath |
@@: |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtExePath.size],ecx |
mov dword[edtExePath.pos],ecx |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtExePath.size],ecx |
mov dword[edtExePath.pos],ecx |
xor ecx,ecx |
mov edi,DAreaParams |
xor ecx,ecx |
mov edi,DAreaParams |
@@: |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtParams.size],ecx |
mov dword[edtParams.pos],ecx |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtParams.size],ecx |
mov dword[edtParams.pos],ecx |
xor ecx,ecx |
mov edi,DAreaIcon |
xor ecx,ecx |
mov edi,DAreaIcon |
@@: |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtIcon.size],ecx |
mov dword[edtIcon.pos],ecx |
lodsb |
stosb |
inc ecx |
test al,al |
jnz @b |
dec ecx |
mov dword[edtIcon.size],ecx |
mov dword[edtIcon.pos],ecx |
startDlg: |
mcall 9,RBProcInfo,-1 |
mcall 18,21,dword[RBProcInfo+30] |
mov [slotDlgAdd],eax |
mcall 9,RBProcInfo,-1 |
mcall 18,21,dword[RBProcInfo+30] |
mov [slotDlgAdd],eax |
or [edtName.flags],ed_focus |
or [edtName.flags],ed_focus |
mcall 40,100111b ;SetMaskMessage 100111b |
xor eax,eax |
mov dword[MaxPage],0 |
mcall 40,100111b ;SetMaskMessage 100111b |
xor eax,eax |
mov dword[MaxPage],0 |
@@: |
add eax,ICONS_DRAW_COUNTW |
inc dword[MaxPage] |
cmp eax,[icon_count] |
jb @b |
dec dword[MaxPage] |
cmp dword[MaxPage],0 |
jne @f |
mov dword[MaxPage],1 |
add eax,ICONS_DRAW_COUNTW |
inc dword[MaxPage] |
cmp eax,[icon_count] |
jb @b |
dec dword[MaxPage] |
cmp dword[MaxPage],0 |
jne @f |
mov dword[MaxPage],1 |
@@: |
DReDraw: |
mcall 48,3,sc,40 |
mcall 48,3,sc,40 |
mov eax,[sc.work] |
rol eax,16 |
add al,9 |
jnc @f |
mov al,0FFh |
mov eax,[sc.work] |
rol eax,16 |
add al,9 |
jnc @f |
mov al,0FFh |
@@: |
rol eax,16 |
add al,9 |
jnc @f |
mov al,0FFh |
rol eax,16 |
add al,9 |
jnc @f |
mov al,0FFh |
@@: |
add ah,9 |
jnc @f |
mov ah,0FFh |
add ah,9 |
jnc @f |
mov ah,0FFh |
@@: |
mov [sbIcons.bckg_col],eax |
m2m [sbIcons.frnt_col],[sc.work] |
m2m [sbIcons.line_col],[sc.work_graph] |
mov [sbIcons.bckg_col],eax |
m2m [sbIcons.frnt_col],[sc.work] |
m2m [sbIcons.line_col],[sc.work_graph] |
edit_boxes_set_sys_color edtName,edtExePath,sc |
edit_boxes_set_sys_color edtExePath,edtParams,sc |
edit_boxes_set_sys_color edtParams,edtIcon,sc |
;edit_boxes_set_sys_color edtIcon,endEdits,sc |
edit_boxes_set_sys_color edtName,edtExePath,sc |
edit_boxes_set_sys_color edtExePath,edtParams,sc |
edit_boxes_set_sys_color edtParams,edtIcon,sc |
;edit_boxes_set_sys_color edtIcon,endEdits,sc |
call DRedrawWin |
call DRedrawWin |
DMessages: |
mcall 10 ;WaitMessage |
mcall 10 ;WaitMessage |
dec eax |
jz DReDraw |
dec eax |
jz DKey |
dec eax |
jz DButton |
sub eax,3 |
jz DMouse |
dec eax |
jz DReDraw |
dec eax |
jz DKey |
dec eax |
jz DButton |
sub eax,3 |
jz DMouse |
jmp DMessages |
jmp DMessages |
;--------------------------------------------------------------------- |
DKey: |
mcall 2 ;GetKeyPressed |
cmp ah,1Bh |
je DExit |
cmp ah,9 ;Tab |
je DNextEdit |
stdcall [edit_box_key],edtName |
stdcall [edit_box_key],edtExePath |
stdcall [edit_box_key],edtParams |
;stdcall [edit_box_key],edtIcon |
mcall 2 ;GetKeyPressed |
cmp ah,1Bh |
je DExit |
cmp ah,9 ;Tab |
je DNextEdit |
stdcall [edit_box_key],edtName |
stdcall [edit_box_key],edtExePath |
stdcall [edit_box_key],edtParams |
;stdcall [edit_box_key],edtIcon |
jmp DMessages |
jmp DMessages |
DNextEdit: |
test [edtName.flags],ed_focus |
jne .DNE1 |
test [edtExePath.flags],ed_focus |
jne .DNE2 |
test [edtParams.flags],ed_focus |
jne .DNE3 |
;test [edtIcon.flags],ed_focus |
;jne .DNE4 |
jmp DMessages |
test [edtName.flags],ed_focus |
jne .DNE1 |
test [edtExePath.flags],ed_focus |
jne .DNE2 |
test [edtParams.flags],ed_focus |
jne .DNE3 |
;test [edtIcon.flags],ed_focus |
;jne .DNE4 |
jmp DMessages |
.DNE1: |
and [edtName.flags],not ed_focus |
or [edtExePath.flags],ed_focus |
stdcall [edit_box_draw],edtName |
stdcall [edit_box_draw],edtExePath |
jmp DMessages |
and [edtName.flags],not ed_focus |
or [edtExePath.flags],ed_focus |
stdcall [edit_box_draw],edtName |
stdcall [edit_box_draw],edtExePath |
jmp DMessages |
.DNE2: |
and [edtExePath.flags],not ed_focus |
or [edtParams.flags],ed_focus |
stdcall [edit_box_draw],edtExePath |
stdcall [edit_box_draw],edtParams |
jmp DMessages |
and [edtExePath.flags],not ed_focus |
or [edtParams.flags],ed_focus |
stdcall [edit_box_draw],edtExePath |
stdcall [edit_box_draw],edtParams |
jmp DMessages |
.DNE3: |
and [edtParams.flags],not ed_focus |
or [edtName.flags],ed_focus |
stdcall [edit_box_draw],edtParams |
stdcall [edit_box_draw],edtName |
jmp DMessages |
and [edtParams.flags],not ed_focus |
or [edtName.flags],ed_focus |
stdcall [edit_box_draw],edtParams |
stdcall [edit_box_draw],edtName |
jmp DMessages |
;.DNE4: |
; and [edtIcon.flags],not ed_focus |
270,101 → 214,101 |
; jmp DMessages |
;--------------------------------------------------------------------- |
DButton: |
mcall 17 ;GetButtonPressed |
cmp ah, idbCancel |
je DExit |
cmp ah,idbChange |
je DSetExePath |
cmp ah,idbCreate |
je DSaveIcon |
mcall 17 ;GetButtonPressed |
cmp ah, idbCancel |
je DExit |
cmp ah,idbChange |
je DSetExePath |
cmp ah,idbCreate |
je DSaveIcon |
jmp DMessages |
jmp DMessages |
;------------------------------------------------------------------------------- |
DMouse: |
stdcall [edit_box_mouse],edtName |
stdcall [edit_box_mouse],edtExePath |
stdcall [edit_box_mouse],edtParams |
stdcall [edit_box_mouse],edtName |
stdcall [edit_box_mouse],edtExePath |
stdcall [edit_box_mouse],edtParams |
; stdcall [edit_box_mouse],edtIcon |
push [sbIcons.position] |
stdcall [scrollbar_h_mouse],sbIcons |
pop eax |
cmp eax,[sbIcons.position] |
je @f |
call DrawStdIcons |
push [sbIcons.position] |
stdcall [scrollbar_h_mouse],sbIcons |
pop eax |
cmp eax,[sbIcons.position] |
je @f |
call DrawStdIcons |
@@: |
mcall 37,2 ;GetMouseKey |
test eax,1 |
jz DMessages |
mcall 37,1 ;GetMouseWinPos |
mcall 37,2 ;GetMouseKey |
test eax,1 |
jz DMessages |
mcall 37,1 ;GetMouseWinPos |
test eax,10001000h |
jne DMessages |
xor edx,edx |
mov dx,ax ;y |
shr eax,16 ;x |
test eax,10001000h |
jne DMessages |
xor edx,edx |
mov dx,ax ;y |
shr eax,16 ;x |
sub eax,ICONSX |
js DMessages |
sub edx,ICONSY |
js DMessages |
sub eax,ICONSX |
js DMessages |
sub edx,ICONSY |
js DMessages |
cmp eax,(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
ja DMessages |
cmp edx,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
ja DMessages |
cmp eax,(IMG_SIZE+SPCW)*ICONS_DRAW_COUNTW-SPCW |
ja DMessages |
cmp edx,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH-SPCH |
ja DMessages |
xor ebx,ebx |
mov ecx,[sbIcons.position] |
test ecx,ecx |
jz .DM |
xor ebx,ebx |
mov ecx,[sbIcons.position] |
test ecx,ecx |
jz .DM |
@@: |
add ebx,ICONS_DRAW_COUNTH |
loop @b |
add ebx,ICONS_DRAW_COUNTH |
loop @b |
.DM: |
sub eax,IMG_SIZE+SPCW |
js .DM1 |
sub eax,IMG_SIZE+SPCW |
js .DM1 |
@@: |
add ebx,ICONS_DRAW_COUNTH |
sub eax,IMG_SIZE+SPCW |
jns @b |
add ebx,ICONS_DRAW_COUNTH |
sub eax,IMG_SIZE+SPCW |
jns @b |
.DM1: |
sub edx,IMG_SIZE+SPCH |
js .DM2 |
sub edx,IMG_SIZE+SPCH |
js .DM2 |
@@: |
inc ebx |
sub edx,IMG_SIZE+SPCH |
jns @b |
inc ebx |
sub edx,IMG_SIZE+SPCH |
jns @b |
.DM2: |
mov eax,ebx |
mov eax,ebx |
cmp eax,[icon_count] |
jae DMessages |
cmp eax,[icon_count] |
jae DMessages |
mov bl,10 |
div bl |
mov bl,10 |
div bl |
add ah,30h |
test al,al |
jz @f |
add ah,30h |
test al,al |
jz @f |
add al,30h |
mov byte[DAreaIcon],al |
mov byte[DAreaIcon+1],ah |
mov byte[DAreaIcon+2],0 |
mov dword[edtIcon.size],2 |
jmp .RedrawNum |
add al,30h |
mov byte[DAreaIcon],al |
mov byte[DAreaIcon+1],ah |
mov byte[DAreaIcon+2],0 |
mov dword[edtIcon.size],2 |
jmp .RedrawNum |
@@: |
mov byte[DAreaIcon],ah |
mov byte[DAreaIcon+1],0 |
mov dword[edtIcon.size],1 |
jmp .RedrawNum |
mov byte[DAreaIcon],ah |
mov byte[DAreaIcon+1],0 |
mov dword[edtIcon.size],1 |
jmp .RedrawNum |
.RedrawNum: |
371,157 → 315,157 |
; stdcall [edit_box_draw],edtIcon |
call DrawSelIcon |
jmp DReDraw;DMessages; |
call DrawSelIcon |
jmp DReDraw;DMessages; |
;------------------------------------------------------------------------------- |
DSetExePath: |
stdcall [OpenDialog_Start],OpenDialog_data |
mov edi,DAreaPath |
xor al,al |
or ecx,-1 |
repne scasb |
sub edi,DAreaPath |
dec edi |
mov dword[edtExePath+12*4],edi |
stdcall [OpenDialog_Start],OpenDialog_data |
mov edi,DAreaPath |
xor al,al |
or ecx,-1 |
repne scasb |
sub edi,DAreaPath |
dec edi |
mov dword[edtExePath+12*4],edi |
jmp DMessages;DReDraw; |
jmp DMessages;DReDraw; |
DSaveIcon: |
mov edi,DAreaName |
mov esi,secRButt |
mov edi,DAreaName |
mov esi,secRButt |
@@: lodsb |
scasb |
jne @f |
test al,al |
jnz @b |
scasb |
jne @f |
test al,al |
jnz @b |
mov dword[fiRunProg+8],ErrName |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov dword[fiRunProg+8],ErrName |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
jmp DMessages |
jmp DMessages |
@@: |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
mov dword[fiRunProg+8],WarningSave |
mov dword[fiRunProg+21],pthNotify |
mcall 70,fiRunProg |
cmp [DlgSelIcon],-1 |
je @f |
;㤠«ï¥¬ ¨§ ini áâ àãî ¨ª®ªã |
mov ebx,[DlgSelIcon] |
mov eax,[IconsOffs+ebx*4] |
stdcall [ini_del_section],IconIni,eax |
cmp [DlgSelIcon],-1 |
je @f |
;㤠«ï¥¬ ¨§ ini áâ àãî ¨ª®ªã |
mov ebx,[DlgSelIcon] |
mov eax,[IconsOffs+ebx*4] |
stdcall [ini_del_section],IconIni,eax |
stdcall EditIcon,[DlgSelIcon],DAreaIcon,DAreaName,DAreaPath,DAreaParams |
jmp DExitAndSave |
stdcall EditIcon,[DlgSelIcon],DAreaIcon,DAreaName,DAreaPath,DAreaParams |
jmp DExitAndSave |
@@: |
stdcall AddIcon,[AddX],[AddY],DAreaIcon,DAreaName,DAreaPath,DAreaParams |
;jmp DExitAndSave |
stdcall AddIcon,[AddX],[AddY],DAreaIcon,DAreaName,DAreaPath,DAreaParams |
;jmp DExitAndSave |
;------------------------------------------------------------------------------- |
DExitAndSave: |
stdcall [ini_set_str],IconIni,DAreaName,keyPath,DAreaPath,dword[edtExePath.size] |
stdcall [ini_set_str],IconIni,DAreaName,keyParams,DAreaParams,dword[edtParams.size] |
stdcall [ini_set_str],IconIni,DAreaName,keyIco,DAreaIcon,dword[edtIcon.size] |
stdcall [ini_set_int],IconIni,DAreaName,keyX,[MouseX] |
stdcall [ini_set_int],IconIni,DAreaName,keyY,[MouseY] |
stdcall [ini_set_str],IconIni,DAreaName,keyPath,DAreaPath,dword[edtExePath.size] |
stdcall [ini_set_str],IconIni,DAreaName,keyParams,DAreaParams,dword[edtParams.size] |
stdcall [ini_set_str],IconIni,DAreaName,keyIco,DAreaIcon,dword[edtIcon.size] |
stdcall [ini_set_int],IconIni,DAreaName,keyX,[MouseX] |
stdcall [ini_set_int],IconIni,DAreaName,keyY,[MouseY] |
DExit: |
mov [DlgAddActiv],0 |
mov [slotDlgAdd],0 |
mcall -1 ;ExitThread |
mov [DlgAddActiv],0 |
mov [slotDlgAdd],0 |
mcall -1 ;ExitThread |
;################################################################## |
proc DRedrawWin |
mcall 12,1 ;RedrawWinBeg |
mov edx,[sc.work] |
or edx,34000000h |
cmp [DlgSelIcon],-1 |
jne @f |
mov edi,DTitleAdd |
jmp .l1 |
mcall 12,1 ;RedrawWinBeg |
mov edx,[sc.work] |
or edx,34000000h |
cmp [DlgSelIcon],-1 |
jne @f |
mov edi,DTitleAdd |
jmp .l1 |
@@: |
mov edi,DTitleProp |
mov edi,DTitleProp |
.l1: |
mcall 0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+165>,,, |
mcall 0,<100,400>,<100,(IMG_SIZE+SPCH)*ICONS_DRAW_COUNTH+165>,,, |
stdcall [edit_box_draw],edtName |
stdcall [edit_box_draw],edtExePath |
stdcall [edit_box_draw],edtParams |
stdcall [edit_box_draw],edtName |
stdcall [edit_box_draw],edtExePath |
stdcall [edit_box_draw],edtParams |
; stdcall [edit_box_draw],edtIcon |
call DrawStdIcons |
call DrawStdIcons |
stdcall [scrollbar_h_draw],sbIcons |
mcall 38,<ICONSX+1,END_ICONS_AREAW-2>,\ |
<END_ICONS_AREAH+3,END_ICONS_AREAH+3>,\ |
[sc.work_graph] |
mcall ,<ICONSX+1,END_ICONS_AREAW-2>,\ |
<END_ICONS_AREAH+3+15,END_ICONS_AREAH+3+15>,\ |
[sc.work_graph] |
stdcall [scrollbar_h_draw],sbIcons |
mcall 38,<ICONSX+1,END_ICONS_AREAW-2>,\ |
<END_ICONS_AREAH+3,END_ICONS_AREAH+3>,\ |
[sc.work_graph] |
mcall ,<ICONSX+1,END_ICONS_AREAW-2>,\ |
<END_ICONS_AREAH+3+15,END_ICONS_AREAH+3+15>,\ |
[sc.work_graph] |
mcall ,<ICONSX,ICONSX>,\ |
<END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\ |
[sc.work_graph] |
mcall ,<END_ICONS_AREAW-1,END_ICONS_AREAW-1>,\ |
<END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\ |
[sc.work_graph] |
mcall ,<ICONSX,ICONSX>,\ |
<END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\ |
[sc.work_graph] |
mcall ,<END_ICONS_AREAW-1,END_ICONS_AREAW-1>,\ |
<END_ICONS_AREAH+3+1,END_ICONS_AREAH+3+15-1>,\ |
[sc.work_graph] |
;BUTTONS |
mcall 8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button] |
mcall ,<305,54>, ,idbCancel |
mcall ,<351,14>,<26,14> ,idbChange |
;BUTTONS |
mcall 8,<250,49>,<30+END_ICONS_AREAH,16>,idbCreate,[sc.work_button] |
mcall ,<305,54>, ,idbCancel |
mcall ,<351,14>,<26,14> ,idbChange |
;CAPTIONS |
mov ecx,[sc.work_text] |
or ecx,80000000h |
mcall 4,<30+IMG_SIZE,10>,,DCaptName |
mcall ,<30+IMG_SIZE,30>,,DCaptPath |
mcall ,<30+IMG_SIZE,50>,,DCaptParams |
;mcall ,<30+IMG_SIZE,70>,,DCaptIcon |
;CAPTIONS |
mov ecx,[sc.work_text] |
or ecx,80000000h |
mcall 4,<30+IMG_SIZE,10>,,DCaptName |
mcall ,<30+IMG_SIZE,30>,,DCaptPath |
mcall ,<30+IMG_SIZE,50>,,DCaptParams |
;mcall ,<30+IMG_SIZE,70>,,DCaptIcon |
if lang eq ru |
mov ecx,[sc.work_button_text] |
or ecx,80000000h |
mcall ,<309,35+END_ICONS_AREAH>,,DCaptCancel |
mov ecx,[sc.work_button_text] |
or ecx,80000000h |
mcall ,<309,35+END_ICONS_AREAH>,,DCaptCancel |
cmp [DlgSelIcon],-1 |
jne @f |
mpack ebx,255,35+END_ICONS_AREAH |
mov edx,DCaptCreate |
jmp .DRD1 |
cmp [DlgSelIcon],-1 |
jne @f |
mpack ebx,255,35+END_ICONS_AREAH |
mov edx,DCaptCreate |
jmp .DRD1 |
@@: |
mpack ebx,252,35+END_ICONS_AREAH |
mov edx,DCaptProperties |
mpack ebx,252,35+END_ICONS_AREAH |
mov edx,DCaptProperties |
.DRD1: |
else |
mov ecx,[sc.work_button_text] |
or ecx,80000000h |
mcall ,<315,35+END_ICONS_AREAH>,,DCaptCancel |
mov ecx,[sc.work_button_text] |
or ecx,80000000h |
mcall ,<315,35+END_ICONS_AREAH>,,DCaptCancel |
cmp [DlgSelIcon],-1 |
jne @f |
mpack ebx,257,35+END_ICONS_AREAH |
mov edx,DCaptCreate |
jmp .DRD1 |
cmp [DlgSelIcon],-1 |
jne @f |
mpack ebx,257,35+END_ICONS_AREAH |
mov edx,DCaptCreate |
jmp .DRD1 |
@@: |
mpack ebx,257,35+END_ICONS_AREAH |
mov edx,DCaptProperties |
mpack ebx,257,35+END_ICONS_AREAH |
mov edx,DCaptProperties |
.DRD1: |
end if |
mcall |
mcall |
mcall 1,351+4 ,26+10,[sc.work_button_text] |
mcall ,351+4+3,26+10, |
mcall ,351+4+6,26+10, |
mcall 1,351+4 ,26+10,[sc.work_button_text] |
mcall ,351+4+3,26+10, |
mcall ,351+4+6,26+10, |
call DrawSelIcon |
call DrawSelIcon |
mcall 12,2 ;RedrawWinEnd |
ret |
mcall 12,2 ;RedrawWinEnd |
ret |
endp |
530,187 → 474,187 |
IcoY:DWORD,\ |
iIcon:DWORD |
mov ecx,[sbIcons.position] |
xor eax,eax |
m2m dword[iIcon],0 |
mov ecx,[sbIcons.position] |
xor eax,eax |
m2m dword[iIcon],0 |
test ecx,ecx |
jz .DST1 |
test ecx,ecx |
jz .DST1 |
@@: |
add [iIcon],ICONS_DRAW_COUNTH |
add eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH |
loop @b |
add [iIcon],ICONS_DRAW_COUNTH |
add eax,IMG_SIZE*IMG_SIZE*4*ICONS_DRAW_COUNTH |
loop @b |
.DST1: |
lea esi,[eax+44] |
add esi,[raw_pointer] |
lea esi,[eax+44] |
add esi,[raw_pointer] |
mov [IcoX],ICONSX |
mov [IcoX],ICONSX |
mov ecx,ICONS_DRAW_COUNTW |
mov ecx,ICONS_DRAW_COUNTW |
.DrawIcons: |
push ecx |
push ecx |
mov [IcoY],ICONSY |
mov [IcoY],ICONSY |
mov ecx,ICONS_DRAW_COUNTH |
mov ecx,ICONS_DRAW_COUNTH |
.DrawIcoStolb: |
push ecx |
push ecx |
mov edi,DlgBufImg |
mov edx,IMG_SIZE |
mov edi,DlgBufImg |
mov edx,IMG_SIZE |
.DrawLine: |
mov ecx,IMG_SIZE |
mov ecx,IMG_SIZE |
.DrawPix: |
lodsd |
test eax,0FF000000h |
jnz @f |
mov eax,[sc.work] |
lodsd |
test eax,0FF000000h |
jnz @f |
mov eax,[sc.work] |
@@: |
mov [edi],ax |
shr eax,16 |
mov [edi+2],al |
add edi,3 |
mov [edi],ax |
shr eax,16 |
mov [edi+2],al |
add edi,3 |
loop .DrawPix |
loop .DrawPix |
dec edx |
jnz .DrawLine |
dec edx |
jnz .DrawLine |
mov edx,[IcoX] |
shl edx,16 |
mov dx,word[IcoY] |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE> |
mov edx,[IcoX] |
shl edx,16 |
mov dx,word[IcoY] |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE> |
inc [iIcon] |
mov eax,[iIcon] |
cmp eax,[icon_count] |
jae .endDrawIcon |
inc [iIcon] |
mov eax,[iIcon] |
cmp eax,[icon_count] |
jae .endDrawIcon |
add dword[IcoY],IMG_SIZE+SPCH |
pop ecx |
loop .DrawIcoStolb |
add dword[IcoY],IMG_SIZE+SPCH |
pop ecx |
loop .DrawIcoStolb |
add dword[IcoX],IMG_SIZE+SPCW |
pop ecx |
loop .DrawIcons |
jmp .endProc |
add dword[IcoX],IMG_SIZE+SPCW |
pop ecx |
loop .DrawIcons |
jmp .endProc |
.endDrawIcon: |
mov ecx,IMG_SIZE*IMG_SIZE |
mov edi,DlgBufImg |
mov eax,[sc.work] |
mov ebx,eax |
shr ebx,16 |
mov ecx,IMG_SIZE*IMG_SIZE |
mov edi,DlgBufImg |
mov eax,[sc.work] |
mov ebx,eax |
shr ebx,16 |
@@: |
mov word[edi],ax |
mov [edi+2],bl |
add edi,3 |
loop @b |
mov word[edi],ax |
mov [edi+2],bl |
add edi,3 |
loop @b |
;§ â¨à ¨¥ ¥ ¨á¯®«ì§®¢ ëå ¬¥áâ |
jmp .Dalee |
;§ â¨à ¨¥ ¥ ¨á¯®«ì§®¢ ëå ¬¥áâ |
jmp .Dalee |
.DrawIcons2: |
push ecx |
push ecx |
mov [IcoY],ICONSY |
mov ecx,ICONS_DRAW_COUNTH |
mov [IcoY],ICONSY |
mov ecx,ICONS_DRAW_COUNTH |
.DrawIcoStolb2: |
push ecx |
push ecx |
mov edx,[IcoX] |
shl edx,16 |
mov dx,word[IcoY] |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE> |
mov edx,[IcoX] |
shl edx,16 |
mov dx,word[IcoY] |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE> |
.Dalee: |
add dword[IcoY],IMG_SIZE+SPCH |
pop ecx |
loop .DrawIcoStolb2 |
add dword[IcoY],IMG_SIZE+SPCH |
pop ecx |
loop .DrawIcoStolb2 |
add dword[IcoX],IMG_SIZE+SPCW |
pop ecx |
loop .DrawIcons2 |
add dword[IcoX],IMG_SIZE+SPCW |
pop ecx |
loop .DrawIcons2 |
.endProc: |
ret |
ret |
endp |
proc DrawSelIcon |
mov edi,DAreaIcon |
cmp byte[edi],0 |
jne @f |
ret |
mov edi,DAreaIcon |
cmp byte[edi],0 |
jne @f |
ret |
@@: |
mov al,[edi] |
cmp al,'9' |
ja .PathToIcon |
cmp al,'/' |
jne .GetIconInd |
mov al,[edi] |
cmp al,'9' |
ja .PathToIcon |
cmp al,'/' |
jne .GetIconInd |
.PathToIcon: |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
mov al,30h ;§ £«ãèª !!!!!!!!!!!!! |
mov byte[edi+1],0 |
.GetIconInd: |
;int3 |
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
sub al,30h |
cmp byte[edi+1],0 |
je @f |
shl eax,1 |
lea eax,[eax*4+eax] |
xor edx,edx |
mov dl,[edi+1] |
sub dl,30h |
add eax,edx |
@@: ;eax=num icon |
cmp eax,[icon_count] |
jb @f |
xor eax,eax |
@@: |
test eax,eax |
je .DI1 |
mov ecx,eax |
xor eax,eax |
test eax,eax |
je .DI1 |
mov ecx,eax |
xor eax,eax |
@@: |
add eax,IMG_SIZE*IMG_SIZE*4 |
loop @b |
add eax,IMG_SIZE*IMG_SIZE*4 |
loop @b |
.DI1: |
mov esi,eax |
add esi,[raw_pointer] |
add esi,44 |
mov esi,eax |
add esi,[raw_pointer] |
add esi,44 |
mov edi,DlgBufImg |
mov edx,IMG_SIZE |
mov edi,DlgBufImg |
mov edx,IMG_SIZE |
.DrawLine: |
mov ecx,IMG_SIZE |
mov ecx,IMG_SIZE |
.DrawPix: |
lodsd |
test eax,0FF000000h |
jnz @f |
mov eax,[sc.work] |
lodsd |
test eax,0FF000000h |
jnz @f |
mov eax,[sc.work] |
@@: |
mov word[edi],ax |
shr eax,16 |
mov [edi+2],al |
add edi,3 |
mov word[edi],ax |
shr eax,16 |
mov [edi+2],al |
add edi,3 |
loop .DrawPix |
loop .DrawPix |
dec edx |
jnz .DrawLine |
dec edx |
jnz .DrawLine |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE>,<15,15> |
mcall 7,DlgBufImg,<IMG_SIZE,IMG_SIZE>,<15,15> |
ret |
ret |
endp |
/programs/system/icon_new/bgredraw.inc |
---|
1,50 → 1,38 |
BGRedrawThread: |
mcall 40,010000b |
mcall 40,010000b |
BGRTRedrawIcons: |
mcall 48,5 |
mcall 48,5 |
mov dx,ax |
shr eax,16 |
sub dx,ax |
mov [ScreenX],dx |
mov ax,bx |
shr ebx,16 |
sub ax,bx |
mov [ScreenY],ax |
mov [wsXe],ax |
mov [wsYe],bx |
mov dx,ax |
shr eax,16 |
mov [wsX],ax |
sub dx,ax |
mov [wsW],dx |
mov ax,bx |
shr ebx,16 |
mov [wsY],bx |
sub ax,bx |
mov [wsH],ax |
mcall 14 |
mov [ScreenH],ax |
shr eax,16 |
mov [ScreenW],ax |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jz .NoDraw |
xor ebx,ebx |
@@: push ecx |
cmp [IconNoDraw],ebx |
je .nd |
stdcall DrawIcon,ebx,0 |
mov ecx,[MaxNumIcon] |
test ecx,ecx |
jz .NoDraw |
xor ebx,ebx |
@@: push ecx |
cmp [IconNoDraw],ebx |
je .nd |
stdcall DrawIcon,ebx,0 |
.nd: |
inc ebx |
pop ecx |
loop @b |
inc ebx |
pop ecx |
loop @b |
.NoDraw: |
BGRTmessages: |
mcall 10 |
sub eax,5 |
jz BGRTRedrawIcons |
mcall 10 |
sub eax,5 |
jz BGRTRedrawIcons |
jmp BGRTmessages |
jmp BGRTmessages |