Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4116 → Rev 4115

/programs/develop/libraries/box_lib/trunk/progressbar.mac
1,36 → 1,46
macro use_progressbar
{
pb equ [esp + 4 + 8*4]
pb equ [ebp + 4 + 8*4]
align 16
progressbar_draw:
pushad
mov ebp, esp
; draw frame
push ebp
mov [.last_esp], esp
mov eax, pb
mov edx, [eax + PB_FRAME_COLOR]
mov ebx, [eax + PB_LEFT]
mov esi, [eax + PB_LEFT]
mov edi, [eax + PB_TOP]
mov ebp, [eax + PB_WIDTH]
mov esi, [eax + PB_HEIGHT]
add ebp, ebx
add esi, edi
add ebp, esi
dec ebp
dec esi
mov esp, [eax + PB_HEIGHT]
add esp, edi
dec esp
mov edx, [eax + PB_FRAME_COLOR]
mov eax, 38
mov ebx, esi
shl ebx, 16
mov bx, bp
shrd ecx, edi, 16
mov cx, di
add ebx, ebp
mov ecx, edi
shl ecx, 16
add ecx, edi
int 64
shrd ecx, esi, 16
mov cx, si
mov ecx, esp
shl ecx, 16
add ecx, esp
int 64
shld esi, ebx, 16
mov bx, si
shrd ecx, edi, 16
mov ecx, edi
shl ecx, 16
add ecx, esp
int 64
shrd ebx, ebp, 16
mov bx, bp
mov ebx, ebp
shl ebx, 16
add ebx, ebp
int 64
mov esp, [.last_esp]
pop ebp
; if min > max then .skip
mov eax, pb
mov edx, [eax + PB_MAX]
45,17 → 55,17
mov edi, eax
mov eax, pb
mov ebx, [eax + PB_LEFT]
inc ebx
shl ebx, 16
add ebx, edi
mov ecx, [eax + PB_TOP]
mov edx, [eax + PB_PROGRESS_COLOR]
inc ebx
inc ecx
shl ebx, 16
shl ecx, 16
add ebx, edi
add ecx, [eax + PB_HEIGHT]
dec ecx
dec ecx
mov edx, [eax + PB_PROGRESS_COLOR]
mov eax, 13
dec ecx
int 64
; draw last part of non-progress rectangle
; edi = pW, esi = W - 2
70,15 → 80,17
; .skip:
popad
ret 4
.last_esp dd 0
 
 
align 16
get_progress_width:
; pW = (W-2)(value - min) / (max - min)
mov esi, [eax + PB_WIDTH]
dec esi
dec esi
mov eax, [eax + PB_VALUE]
dec esi
sub eax, ecx
dec esi
imul eax, esi
neg ecx
add ecx, edx
86,9 → 98,11
div ecx
ret
 
 
align 16
progressbar_progress:
pushad
mov ebp, esp
; if min > max then .skip
mov eax, pb
mov edx, [eax + PB_MAX]
102,8 → 116,8
mov edi, eax
; increase value
mov eax, pb
mov edx, [eax + PB_MAX]
mov ecx, [eax + PB_VALUE]
mov edx, [eax + PB_MAX]
inc ecx
; if value > max then value = max
cmp ecx, edx
123,19 → 137,19
; edi = last pW, esi = new pW
mov eax, pb
mov ebx, [eax + PB_LEFT]
inc ebx
add ebx, edi
shl ebx, 16
add ebx, esi
sub ebx, edi
mov ecx, [eax + PB_TOP]
mov edx, [eax + PB_PROGRESS_COLOR]
inc ebx
inc ecx
add ebx, edi
shl ecx, 16
shl ebx, 16
add ecx, [eax + PB_HEIGHT]
add ebx, esi
dec ecx
sub ebx, edi
dec ecx
mov edx, [eax + PB_PROGRESS_COLOR]
mov eax, 13
dec ecx
int 64
; .skip:
popad