Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 879 → Rev 880

/programs/develop/sdk/trunk/pixlib/demo1.asm
0,0 → 1,270
 
include 'proc32.inc'
 
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
 
use32
 
db 'MENUET01'
dd 1
dd start
dd i_end
dd mem
dd mem
dd 0
dd 0
 
include 'pixlib.inc'
 
align 4
start:
call load_pxlib
test eax, eax
jz .fail
 
sub esp, 1024
 
mov eax, 9
mov ebx, esp
mov ecx, -1
int 0x40
 
movzx ecx, word [esp+0x1E]
mov eax, 18
mov ebx, 21
int 0x40
 
mov [slot], eax
 
add esp, 1024
 
mov eax,48 ; get system colors
mov ebx,3
mov ecx,sc
mov edx,10*4
int 0x40
.redraw:
call draw_window
 
.wait_event:
 
mov eax, 18
mov ebx, 7
int 0x40
cmp eax, [slot]
jne .skip_draw
 
sub esp, 1024
 
mov eax, 9
mov ebx, esp
mov ecx, -1
int 0x40
 
mov edx, [esp+0x22]; xwin
mov ecx, [esp+0x26]; ywin
add edx, [esp+0x36]
add ecx, [esp+0x3A]
 
mov eax, [esp+0x3E]
mov ebx, [esp+0x42]
 
add esp, 1024
 
test eax, eax
jle .skip_draw
test ebx, ebx
jle .skip_draw
 
push ebx
push eax
push ecx
push edx
call _Draw
add esp, 16
 
.skip_draw:
 
; mov ebx, 1
; mov eax, 23
; int 0x40
 
mov eax, 11
int 0x40
 
dec eax ; if event = 1
js .wait_event
 
jz .redraw ; jump to redraw handler
dec eax ; else if event = 2
jz .key ; jump to key handler
dec eax
jz .button
 
jmp .wait_event
 
.button: ; button event handler
mov al, 17 ; get button identifier
int 0x40
 
cmp ah, 1
jne .wait_event ; return if button id != 1
.exit:
; restore old screen and cleanup
.fail:
or eax, -1 ; exit application
int 0x40
.key: ; key event handler
mov al, 2 ; get key code
int 0x40
 
jmp .wait_event
 
draw_window:
mov eax, 12 ; start drawing
mov ebx, 1
int 0x40
 
xor eax, eax ; create and draw the window
mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx)
mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy)
mov edx, [sc.work] ; work area color
or edx, 0x33000000 ; & window type 3
mov edi, title ; window title
int 0x40
 
mov eax, 12 ; finish drawing
mov ebx, 2
int 0x40
 
ret
 
DWORD equ dword
PTR equ
 
_Draw:
push ebp
xor edx, edx
push edi
push esi
push ebx
sub esp, 44
imul eax, DWORD PTR [_glSeed], 69069
mov ebp, DWORD PTR [esp+72]
mov ecx, DWORD PTR [esp+76]
inc eax
mov DWORD PTR [esp+32], eax
imul eax, eax, 69069
inc eax
mov DWORD PTR [esp+36], eax
imul eax, eax, 69069
inc eax
mov DWORD PTR [esp+40], eax
imul eax, eax, 69069
lea ebx, [eax+1]
mov eax, ebx
div ebp
imul eax, ebx, 69069
lea ebx, [eax+1]
mov eax, ebx
mov edi, edx
xor edx, edx
div ecx
imul eax, ebx, 69069
lea ebx, [eax+1]
mov eax, ebx
mov esi, edx
xor edx, edx
div ebp
imul eax, ebx, 69069
inc eax
mov DWORD PTR [_glSeed], eax
mov ebp, edx
mov DWORD PTR [esp+28], edx
xor edx, edx
div ecx
cmp ebp, edi
mov ebx, edx
jge L2
mov DWORD PTR [esp+28], edi
mov edi, ebp
L2:
cmp ebx, esi
jge L4
mov ebx, esi
mov esi, edx
L4:
push eax
mov ecx, 255
push -16777216
mov eax, DWORD PTR [esp+40]
xor edx, edx
div ecx
mov eax, DWORD PTR [esp+48]
mov ebp, edx
xor edx, edx
div ecx
mov eax, DWORD PTR [esp+44]
sal ebp, 16
or ebp, -16777216
mov DWORD PTR [esp+8], edx
or ebp, edx
xor edx, edx
div ecx
lea eax, [ebx+1]
sub eax, esi
sal edx, 8
or ebp, edx
push ebp
push eax
mov eax, DWORD PTR [esp+44]
inc eax
sub eax, edi
push eax
mov eax, esi
add eax, DWORD PTR [esp+88]
push eax
mov eax, edi
add eax, DWORD PTR [esp+88]
push eax
push -1
call [imp_DrawRect]
add esp, 76
pop ebx
pop esi
pop edi
pop ebp
ret
align 4
 
count dd 0
_glSeed dd -365387184
 
title db 'Draw rect demo',0
 
i_end:
 
align 4
 
slot rd 1
 
sc system_colors
 
align 16
 
 
rb 2048 ;stack
mem:
 
/programs/develop/sdk/trunk/pixlib/demo2.asm
0,0 → 1,278
 
include 'proc32.inc'
 
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
 
use32
 
db 'MENUET01'
dd 1
dd start
dd i_end
dd mem
dd mem
dd 0
dd 0
 
include 'pixlib.inc'
 
align 4
start:
call load_pxlib
test eax, eax
jz .fail
 
sub esp, 1024
 
mov eax, 9
mov ebx, esp
mov ecx, -1
int 0x40
 
movzx ecx, word [esp+0x1E]
mov eax, 18
mov ebx, 21
int 0x40
 
mov [slot], eax
 
add esp, 1024
 
mov eax,48 ; get system colors
mov ebx,3
mov ecx,sc
mov edx,10*4
int 0x40
 
CreateHatch HS_CROSS, 0xFFFFFFFF, 0xFF000000
mov [br_cross], eax
 
CreateHatch HS_DIAGCROSS, 0xFFFFFFFF, 0xFF000000
mov [br_dcross], eax
 
CreateHatch HS_HORIZONTAL, 0xFFFFFFFF, 0xFF000000
mov [br_horz], eax
 
CreateHatch HS_VERTICAL, 0xFFFFFFFF, 0xFF000000
mov [br_vert], eax
 
CreateHatch HS_FDIAGONAL, 0xFFFFFFFF, 0xFF000000
mov [br_fd], eax
 
CreateHatch HS_BDIAGONAL, 0xFFFFFFFF, 0xFF000000
mov [br_bd], eax
 
.redraw:
call draw_window
 
.wait_event:
 
mov eax, 18
mov ebx, 7
int 0x40
cmp eax, [slot]
jne .skip_draw
 
sub esp, 1024
 
mov eax, 9
mov ebx, esp
mov ecx, -1
int 0x40
 
mov edx, [esp+0x22]; xwin
mov ecx, [esp+0x26]; ywin
add edx, [esp+0x36]
add ecx, [esp+0x3A]
 
mov eax, [esp+0x3E] ;width
mov ebx, [esp+0x42] ;height
 
add esp, 1024
 
cmp eax, 50
jle .skip_draw
 
cmp ebx, 40
jle .skip_draw
 
push ebx
push eax
push ecx
push edx
call _Draw
add esp, 16
 
.skip_draw:
 
mov ebx, 1000
mov eax, 23
int 0x40
 
; mov eax, 11
; int 0x40
 
dec eax ; if event = 1
; js .wait_event
 
jz .redraw ; jump to redraw handler
dec eax ; else if event = 2
jz .key ; jump to key handler
dec eax
jz .button
 
jmp .wait_event
 
.button: ; button event handler
mov al, 17 ; get button identifier
int 0x40
 
cmp ah, 1
jne .wait_event ; return if button id != 1
.exit:
; restore old screen and cleanup
.fail:
or eax, -1 ; exit application
int 0x40
.key: ; key event handler
mov al, 2 ; get key code
int 0x40
 
jmp .wait_event
 
draw_window:
mov eax, 12 ; start drawing
mov ebx, 1
int 0x40
 
xor eax, eax ; create and draw the window
mov ebx, 100*65536+320 ; (window_cx)*65536+(window_sx)
mov ecx, 100*65536+240 ; (window_cy)*65536+(window_sy)
mov edx, [sc.work] ; work area color
or edx, 0x33000000 ; & window type 3
mov edi, title ; window title
int 0x40
 
mov eax, 12 ; finish drawing
mov ebx, 2
int 0x40
 
ret
 
DWORD equ dword
PTR equ
 
_Draw:
push ebp
push edi
push esi
push ebx
mov ebx, 1431655766
sub esp, 44
mov esi, DWORD PTR [esp+72]
mov ecx, DWORD PTR [esp+76]
mov DWORD PTR [esp+24], -16777216
mov DWORD PTR [esp], -1
lea edi, [esi-40]
mov eax, edi
imul ebx
sar edi, 31
lea eax, [ecx-30]
sub ecx, 10
mov ebp, edx
sub ebp, edi
mov edi, eax
shr edi, 31
add edi, eax
lea edx, [esi-20]
lea eax, [ebp+ebp*2]
sub edx, eax
mov esi, edx
shr esi, 31
add esi, edx
sar esi, 1
add esi, DWORD PTR [esp+64]
sar edi, 1
lea eax, [ebp+10+esi]
mov DWORD PTR [esp+32], eax
lea eax, [edi+edi]
sub ecx, eax
mov ebx, ecx
shr ebx, 31
add ebx, ecx
sar ebx, 1
add ebx, DWORD PTR [esp+68]
lea edx, [esi+20+ebp*2]
mov DWORD PTR [esp+36], edx
lea eax, [ebx+10+edi]
mov DWORD PTR [esp+40], eax
 
FillRect -1, esi, ebx,ebp, edi, [br_fd], 0xFF000000
 
mov edx, DWORD PTR [esp+32]
FillRect -1, edx, ebx, ebp, edi, [br_cross], 0xFF000000
 
mov eax, DWORD PTR [esp+36]
FillRect -1, eax, ebx, ebp, edi, [br_horz],0xFF000000
 
mov edx, DWORD PTR [esp+40]
FillRect -1, esi, edx, ebp, edi, [br_bd], 0xFF000000
 
mov edx, DWORD PTR [esp+32]
mov eax, DWORD PTR [esp+40]
FillRect -1, edx, eax, ebp, edi, [br_dcross], 0xFF000000
 
mov edx, DWORD PTR [esp+36]
mov eax, DWORD PTR [esp+40]
FillRect -1, edx, eax, ebp, edi, [br_vert], 0xFF000000
 
call [imp_FillRect]
 
 
add esp, 44
pop ebx
pop esi
pop edi
pop ebp
ret
 
align 4
 
 
count dd 0
 
title db 'Hatches',0
 
i_end:
 
align 4
 
slot rd 1
 
br_fd rd 1
br_bd rd 1
br_cross rd 1
br_dcross rd 1
br_horz rd 1
br_vert rd 1
 
sc system_colors
 
align 16
 
 
rb 2048 ;stack
mem:
 
/programs/develop/sdk/trunk/pixlib/readme.txt
8,8 → 8,15
 
Ñîçäàòü øòðèõîâàííóþ êèñòü ðàçìåðîì 8õ8 ïèêñåëåé
 
hatch òèï øòðèõîâêè
hatch òèï øòðèõîâêè:
 
HS_HORIZONTAL -------
HS_VERTICAL |||||||
HS_FDIAGONAL \\\\\\\
HS_BDIAGONAL ///////
HS_CROSS +++++++
HS_DIAGCROSS xxxxxxx
 
bkcolor öâåò "0"
 
fcolor öâåò "1"
176,10 → 183,10
 
Ñêîïèðîâàòü ïðÿìîóãîëüíóþ îáëàñòü ïèêñåëåé.
 
dst_pixmap ëîãè÷åñêèé íîìåð áèòìàïà â êîòîðûé áóäåò ïðîèçâîäèòñÿ
dst_pixmap ëîãè÷åñêèé íîìåð áèòìàïà â êîòîðûé áóäåò ïðîèçâîäèòñ
êîïèðîâàíèå. SCR_PIXMAP äëÿ ïåðâè÷íîãî ýêðàíà.
 
dst_x, dst_y êîîðäèíàòû ëåâîãî âåðõíåãî óãëà îáëàñòè íàçíà÷åíèÿ
dst_x, dst_y êîîðäèíàòû ëåâîãî âåðõíåãî óãëà îáëàñòè íàçíà÷åíè
 
src_pixmap ëîãè÷åñêèé íîìåð áèòìàïà - èñòî÷íèêà ïèêñåëåé.
SCR_PIXMAP äëÿ ïåðâè÷íîãî ýêðàíà.
201,10 → 208,10
 
Ñêîïèðîâàòü ïðÿìîóãîëüíóþ îáëàñòü ïèêñåëåé èñïîëüçóÿ ïðîçðà÷íûé öâåò.
 
dst_pixmap ëîãè÷åñêèé íîìåð áèòìàïà â êîòîðûé áóäåò ïðîèçâîäèòñÿ
dst_pixmap ëîãè÷åñêèé íîìåð áèòìàïà â êîòîðûé áóäåò ïðîèçâîäèòñ
êîïèðîâàíèå. SCR_PIXMAP äëÿ ïåðâè÷íîãî ýêðàíà.
 
dst_x, dst_y êîîðäèíàòû ëåâîãî âåðõíåãî óãëà îáëàñòè íàçíà÷åíèÿ
dst_x, dst_y êîîðäèíàòû ëåâîãî âåðõíåãî óãëà îáëàñòè íàçíà÷åíè
 
src_pixmap ëîãè÷åñêèé íîìåð áèòìàïà - èñòî÷íèêà ïèêñåëåé.
SCR_PIXMAP äëÿ ïåðâè÷íîãî ýêðàíà.