Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2046 → Rev 2063

/programs/demos/magnify/trunk/build_en.bat
1,5 → 1,6
@erase lang.inc
@echo lang fix en >lang.inc
@fasm magnify.asm magnify
@kpack magnify
@erase lang.inc
@pause
/programs/demos/magnify/trunk/build_ru.bat
1,5 → 1,6
@erase lang.inc
@echo lang fix ru >lang.inc
@fasm magnify.asm magnify
@kpack magnify
@erase lang.inc
@pause
/programs/demos/magnify/trunk/magnify.asm
1,13 → 1,16
;---------------------------------------------------------------------
; MAGNIFY SCREEN v1.0
;
; MAGNIFY SCREEN
; Version for KolibriOS 2005-2011
;
; Compile with FASM for Menuet
;
 
; Version for Menuet to 2005
;---------------------------------------------------------------------
; last update: 08/18/2011
; changed by: Marat Zakiyanov aka Mario79, aka Mario
; changes: Checking for "rolled up" window
;---------------------------------------------------------------------
use32
 
org 0x0
 
db 'MENUET01' ; 8 byte id
dd 1 ; header version
dd START ; program start
15,22 → 18,21
dd 0x1000 ; required amount of memory
dd 0x1000 ; esp
dd 0, 0 ; no parameters, no path
 
;---------------------------------------------------------------------
include 'lang.inc'
include '..\..\..\macros.inc'
delay equ 20
 
magnify_width = 40
magnify_height = 30
 
;---------------------------------------------------------------------
START: ; start of execution
redraw:
call draw_window
still:
call draw_screen
call draw_magnify
wtevent:
mov eax, 23 ; wait here for event with timeout
mov ebx, delay
mcall
mcall 23,delay ; wait here for event with timeout
dec eax
js still
jz redraw
40,24 → 42,20
mov al, 2
mcall
jmp wtevent
;---------------------------------------------------------------------
button:
; we have only one button, close
or eax, -1
mcall
 
; *********************************************
;---------------------------------------------------------------------
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
 
;---------------------------------------------------------------------
draw_window:
mov eax, 12 ; function 12:tell os about windowdraw
mov ebx, 1 ; 1, start of draw
mcall
mcall 12,1
 
mov al, 48 ; function 48 : graphics parameters
mov bl, 4 ; subfunction 4 : get skin height
mcall
 
; DRAW WINDOW
mov ebx, 100*65536 + 8*magnify_width + 8
lea ecx, [eax + 100*65536 + 8*magnify_height + 3]
66,17 → 64,16
xor eax, eax ; function 0 : define and draw window
mcall
 
 
mov al, 12 ; function 12:tell os about windowdraw
mov ebx, 2 ; 2, end of draw
mcall
 
mcall 12,2
ret
;---------------------------------------------------------------------
draw_magnify:
mcall 9,procinfo,-1
mov eax,[procinfo+70] ;status of window
test eax,100b
jne .end
 
draw_screen:
draw_magnify:
mov eax, 14
mcall ; get screen size
mcall 14 ; get screen size
movzx ecx, ax
inc ecx
mov [size_y], ecx
84,9 → 81,8
inc eax
mov [size_x], eax
 
mov eax, 37
xor ebx, ebx
mcall ; get mouse coordinates
mcall 37 ; get mouse coordinates
mov ecx, eax
shr ecx, 16 ; ecx = x
movzx edx, ax ; edx = y
112,8 → 108,7
mov ebx, edx
imul ebx, [size_x]
add ebx, ecx
mov eax, 35
mcall ; read pixel
mcall 35 ; read pixel
.nopix:
push ecx edx
sub ecx, [m_x]
125,8 → 120,7
shl ecx, 3+16
mov cl, 7
mov edx, eax
mov eax, 13
mcall
mcall 13
pop edx ecx
inc ecx
cmp ecx, [m_xe]
135,12 → 129,18
inc edx
cmp edx, [m_ye]
jnz .loop_y
.end:
ret
 
;---------------------------------------------------------------------
; DATA AREA
 
;---------------------------------------------------------------------
if lang eq ru
labelt:
db 'MAGNIFIER - „‚ˆƒ€‰’… Š“‘Ž Œ›˜ˆ', 0
else
labelt:
db 'MAGNIFIER - MOVE MOUSE POINTER', 0
end if
 
I_END:
align 4
150,3 → 150,7
m_ye dd ?
size_x dd ?
size_y dd ?
;---------------------------------------------------------------------
procinfo:
rb 1024
;---------------------------------------------------------------------