0,0 → 1,1251 |
;----------------------------------------------------------------------------- |
func drawwindow ;///// DRAW WINDOW /////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
|
cmp [just_from_popup],1 |
jne @f |
ret |
@@: |
|
mcall 48,3,sc,sizeof.system_colors |
call calc_3d_colors |
|
test [options],OPTS_LINENUMS |
jnz @f |
mov eax,2+LCHGW |
jmp .lp1 |
@@: mov edi,p_info+100 |
mov eax,[lines] |
mov ecx,10 |
call uint2str |
lea eax,[edi-p_info-100] |
cmp eax,3 |
jae @f |
mov eax,3 |
@@: imul eax,6 |
add eax,2+4+LCHGW |
.lp1: mov [left_ofs],eax |
|
mcall 12,1 |
|
push [color_tbl+4*5] |
pop [sc.work] |
|
mov edx,[sc.work] |
add edx,0x33000000 |
mov ebx,[mainwnd_pos.x-2] |
mov bx,word[mainwnd_pos.w] |
mov ecx,[mainwnd_pos.y-2] |
mov cx,word[mainwnd_pos.h] |
mcall 0,,,,,s_title |
|
mcall 9,p_info,-1 |
mov esi,p_info.box.left |
mov edi,mainwnd_pos |
mov ecx,4 |
cld |
rep movsd |
|
; mcall 9,p_info,-1 |
cmp [p_info.client_box.height],LINEH |
jl .exit.2 |
|
mov [top_ofs],ATOPH;+1 |
|
mov eax,[p_info.client_box.width] |
sub eax,SCRLW+1 |
sub eax,[left_ofs] |
cdq |
mov ebx,6 |
div ebx |
mov [columns.scr],eax |
|
mov eax,[p_info.client_box.height] ; calculate buttons position |
add eax,-STATH;*3-2-2 |
sub eax,[bot_dlg_height] |
mov [bot_ofs],eax |
|
call draw_bottom_dialog |
|
mov [do_not_draw],1 ; do_not_draw = true |
|
mov ebx,eax |
sub ebx,[top_ofs] |
sub ebx,SCRLW*3+AMINS+5 |
js .no_draw |
|
dec [do_not_draw] ; do_not_draw = false |
sub eax,SCRLW+3 |
sub eax,[top_ofs] |
cdq |
mov ebx,LINEH |
div ebx |
mov [lines.scr],eax |
|
mov ebx,[p_info.client_box.width] |
mov ecx,[top_ofs-2] |
mov cx,word[top_ofs] |
sub ecx,1*65536+1 |
mcall 38,,,[cl_3d_inset];[sc.work_text] |
mov ecx,[p_info.client_box.height] |
sub ecx,STATH+1 |
push cx |
shl ecx,16 |
pop cx |
mcall |
|
inc [top_ofs] |
|
call draw_main_menu |
|
jmp .exit |
|
.no_draw: |
mov [top_ofs],2 |
mov eax,[p_info.client_box.height] |
inc eax |
mov [bot_ofs],eax |
sub eax,2 |
push eax |
add eax,-2-SCRLW |
cdq |
mov ebx,LINEH |
idiv ebx |
mov [lines.scr],eax |
pop eax |
|
mov ebx,[p_info.client_box.height] |
sub ebx,SCRLW*3+AMINS+2 |
jns @f |
|
inc [do_not_draw] |
|
dec eax |
cdq |
mov ebx,LINEH |
idiv ebx |
mov [lines.scr],eax |
|
mov eax,[p_info.client_box.width] |
cdq |
mov ebx,6 |
idiv ebx |
mov [columns.scr],eax |
@@: |
|
.exit: |
call draw_file |
.exit.2: |
mcall 12,2 |
ret |
endf |
|
;----------------------------------------------------------------------------- |
func draw_bottom_dialog ;///////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
cmp [bot_dlg_height],0 |
je .exit |
pushad |
mov ebx,[p_info.client_box.width] |
mov ecx,[bot_ofs] |
dec ecx |
push cx |
shl ecx,16 |
pop cx |
mcall 38,,,[cl_3d_inset] |
mov ecx,[bot_ofs-2] |
mov cx,word[bot_dlg_height] |
dec ecx |
mov ebx,[p_info.client_box.width] |
inc ebx |
mcall 13,,,[cl_3d_normal] |
mov al,1 |
call [bot_dlg_handler] |
popad |
|
.exit: |
ret |
endf |
|
mi_sel dd ? |
mi_cur dd -1 |
|
;----------------------------------------------------------------------------- |
func draw_main_menu ;///////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
mov ebx,[p_info.client_box.width] |
inc ebx |
mcall 13,,ATOPH-1,[cl_3d_normal] |
|
mov edx,main_menu |
mov ebx,9*65536+ATOPH/2-4 |
mov ecx,[sc.work_text] |
mov [mi_sel],0 |
mov edi,[mi_cur] |
@@: inc [mi_sel] |
cmp [mi_sel],main_menu.cnt_item |
ja .exit |
cmp edi,[mi_sel] |
jne .lp1 |
pushad |
push edx |
mcall 13,[edx+0],[edx+4],[cl_3d_pushed] |
mov edx,[esp] |
mov bx,[edx+2] |
mcall 38,,,[cl_3d_inset] |
pop edx |
movzx eax,word[edx] |
add ebx,eax |
shl eax,16 |
add ebx,eax |
mcall 38,,,[cl_3d_inset] |
popad |
.lp1: add edx,8+1 |
movzx esi,byte[edx-1] |
mcall 4 |
add edx,esi |
add esi,2 |
imul esi,6*65536 |
add ebx,esi |
jmp @b |
|
.exit: |
ret |
endf |
|
;----------------------------------------------------------------------------- |
func draw_file.ex ;/////////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
; Input: |
; EAX = start line |
; EBX = end line |
;----------------------------------------------------------------------------- |
cmp [p_info.client_box.height],LINEH |
jge @f |
ret |
@@: |
call init_sel_vars |
call check_bottom_right |
|
pushad |
|
cmp [lines.scr],0 |
jle draw_file.exit |
|
cmp eax,ebx |
jle @f |
xchg eax,ebx |
@@: cmp eax,[top_line] |
jge @f |
mov eax,[top_line] |
@@: mov ecx,[top_line] |
add ecx,[lines.scr] |
cmp ebx,ecx |
jl @f |
dec ecx |
mov ebx,ecx |
@@: cmp eax,ebx |
jg draw_file.exit |
|
mov ecx,eax |
push eax |
call get_line_offset |
|
.start: |
mov ecx,ebx |
sub ecx,eax |
inc ecx |
|
mov ebx,[top_ofs] |
add ebx,[left_ofs-2] |
sub eax,[top_line] |
imul eax,LINEH |
add ebx,eax |
|
imul ebp,[left_col],6*65536 |
or [draw_blines],-1 |
|
jmp draw_file.next_line |
endf |
|
;----------------------------------------------------------------------------- |
func draw_file ;////////////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
cmp [p_info.client_box.height],LINEH |
jge @f |
ret |
@@: |
call init_sel_vars |
call check_bottom_right |
|
pushad |
|
mov ebx,[top_ofs] |
add ebx,[left_ofs-2] |
|
mov ecx,[top_line] |
push ecx |
call get_line_offset |
|
.start: |
add esp,4 |
mov ecx,[lines.scr] |
or ecx,ecx |
jle .exit |
add esp,-4 |
|
imul ebp,[left_col],6*65536 |
mov eax,[lines.scr] |
sub eax,[lines] |
mov [draw_blines],eax |
|
.next_line: |
|
push ecx ebx |
|
mov ecx,ebx |
shl ecx,16 |
mov cl,LINEH |
mov ebx,[p_info.client_box.width] |
add ebx,-SCRLW |
add ebx,[left_ofs-2] |
sub ebx,[left_ofs] |
add ebx,-1*65536+1 |
|
; selection (text background) |
mov [in_sel],0 |
mov edx,[color_tbl+4*5] |
mov eax,[esp+4*2] |
cmp eax,[sel.begin.y] |
jl .lp6 |
je .lp1 |
cmp eax,[sel.end.y] |
jg .lp6 |
je .lp3 |
jmp .lp6.2 |
.lp1: mov eax,[sel.begin.y] |
cmp eax,[sel.end.y] |
je .lp5 |
.lp2: mov eax,[sel.begin.x] |
sub eax,[left_col] |
jle .lp6.2 |
cmp eax,[columns.scr] |
jge .lp6 |
imul eax,6 |
pushad |
sub bx,ax |
rol ebx,16 |
mov bx,ax |
add ebx,[left_ofs];OLEFT-1 |
dec ebx |
rol ebx,16 |
mov edx,[color_tbl+4*7] |
mcall 13 |
popad |
; inc eax |
mov bx,ax |
mov [in_sel],2 |
jmp .lp6 |
.lp3: mov eax,[sel.begin.y] |
cmp eax,[sel.end.y] |
je .lp5 |
.lp4: mov eax,[sel.end.x] |
sub eax,[left_col] |
jle .lp6 |
cmp eax,[columns.scr] |
jg .lp6.2 |
imul eax,6 |
pushad |
sub bx,ax |
rol ebx,16 |
add eax,[left_ofs];OLEFT-1 |
dec eax |
mov bx,ax |
rol ebx,16 |
; inc ebx |
mcall 13 |
popad |
mov edx,[color_tbl+4*7] |
mov bx,ax |
mov [in_sel],3 |
jmp .lp6 |
.lp5: mov eax,[left_col] |
cmp eax,[sel.begin.x] |
jge .lp4 |
add eax,[columns.scr] |
cmp eax,[sel.end.x] |
jl .lp2 |
mov eax,[sel.begin.x] |
cmp eax,[sel.end.x] |
je .lp6 |
sub eax,[left_col] |
imul eax,6 |
pushad |
mov ebx,[sel.end.x] |
sub ebx,[sel.begin.x] |
; inc ebx |
imul ebx,6 |
sal ebx,16 |
dec eax |
add eax,[left_ofs] |
mov bx,ax |
rol ebx,16 |
mov edx,[color_tbl+4*7] |
mcall 13 |
movzx eax,bx |
sar ebx,16 |
add eax,ebx |
mov ebx,eax |
sal ebx,16 |
sub ax,[esp+4*4] |
neg ax |
add ax,word[left_ofs] |
mov bx,ax |
mov edx,[color_tbl+4*5] |
mcall 13 |
popad |
mov bx,ax |
mov [in_sel],4 |
jmp .lp6 |
|
.lp6.2: |
mov edx,[color_tbl+4*7] |
inc [in_sel] |
.lp6: |
mcall 13 |
|
lodsd |
|
pushad |
mov edx,[color_tbl+4*5] |
test eax,0x00010000 |
jz @f |
mov edx,[color_tbl+4*8] |
test eax,0x00020000 |
jz @f |
mov edx,[color_tbl+4*9] |
@@: mov ebx,[left_ofs] |
add ebx,-4 |
shl ebx,16 |
mov bx,LCHGW |
mcall 13 |
popad |
|
|
xor ecx,ecx |
and eax,0x0000FFFF |
mov [cur_line_len],eax |
|
or eax,eax |
ja .next_block |
add esp,4*2 |
jmp .draw_cursor |
|
.next_block: |
|
push esi ecx |
call get_next_part |
pop ebx |
|
push ecx |
mov ecx,eax |
|
push esi ebx |
mov eax,ebx |
sub ebx,[left_col] |
cmp ebx,[columns.scr] |
jge .skip_t |
add ebx,esi |
jle .skip_t |
mov ebx,[esp+8+4*2] ;// 4*2=esi+ebx |
sub eax,[left_col] |
jge .qqq |
sub edx,eax |
add esi,eax |
; mov eax,OLEFT*65536 |
xor eax,eax |
jmp .qqq2 |
.qqq: |
; inc eax |
imul eax,6*65536 |
.qqq2: |
and ebx,0x0000FFFF |
add eax,[left_ofs-2];OLEFT*65536 |
add ebx,eax |
|
mov eax,[esp] ; ebx |
add eax,[esp+4] ; esi |
sub eax,[left_col] |
sub eax,[columns.scr] |
jle .qweqwe |
sub esi,eax |
.qweqwe: |
|
mov al,[in_sel] |
cmp al,0 |
je .draw_t |
dec al |
jz .ya4 |
.nt1: dec al |
jnz .nt2 |
mov eax,[esp] |
cmp eax,[sel.begin.x] |
jge .ya4 |
add eax,[esp+4] |
cmp eax,[sel.begin.x] |
jl .draw_t |
;---[ selection crosses block from the right ]-(- |
.ya1: mov eax,esi |
mov esi,[sel.begin.x] |
sub esi,[esp] |
pushad |
mov ecx,[left_col] |
sub ecx,[esp+4*8] |
jle @f |
sub esi,ecx |
sub [esp+4],ecx |
@@: sub eax,esi |
add edx,esi |
imul esi,6 |
rol ebx,16 |
add bx,si |
rol ebx,16 |
mov esi,eax |
mov ecx,[color_tbl+4*6] |
mcall 4 |
popad |
jmp .draw_t |
;----------------------------------------------)- |
.nt2: dec al |
jnz .nt3 |
mov eax,[esp] |
cmp eax,[sel.end.x] |
jge .draw_t |
add eax,[esp+4] |
cmp eax,[sel.end.x] |
jl .ya4 |
;---[ selection crosses block from the left ]--(- |
.ya2: mov eax,[sel.end.x] |
sub eax,[esp] |
push ebx |
mov ebx,[esp+4] |
sub ebx,[left_col] |
jge .ya2.1 |
add eax,ebx |
.ya2.1: |
pop ebx |
pushad |
mov esi,eax |
mov ecx,[color_tbl+4*6] |
mcall 4 |
popad |
sub esi,eax |
add edx,eax |
imul eax,6*65536 |
add ebx,eax |
jmp .draw_t |
;----------------------------------------------)- |
.nt3: mov eax,[esp] |
cmp eax,[sel.end.x] |
jge .draw_t |
cmp eax,[sel.begin.x] |
jge @f |
add eax,[esp+4] |
cmp eax,[sel.begin.x] |
jl .draw_t |
cmp eax,[sel.end.x] |
jl .ya1 |
;---[ selection inside block ]-----------------(- |
mov eax,esi |
mov esi,[sel.begin.x] |
sub esi,[esp] |
push eax |
mov eax,[esp+4] |
sub eax,[left_col] |
jge .nt3.1 |
add esi,eax |
.nt3.1: |
pop eax |
sub eax,esi |
pushad |
add edx,esi |
imul esi,6*65536 |
add ebx,esi |
mov esi,[sel.end.x] |
sub esi,[sel.begin.x] |
mov ecx,[color_tbl+4*6] |
sub eax,esi |
push eax |
mcall 4 |
add edx,esi |
imul esi,6*65536 |
add ebx,esi |
pop esi |
mov ecx,[esp+4*6] |
mcall 4 |
popad |
jmp .draw_t |
;----------------------------------------------)- |
@@: add eax,esi |
dec eax |
cmp eax,[sel.end.x] |
jge .ya2 |
;---[ block inside selection ]-----------------(- |
.ya4: mov ecx,[color_tbl+4*6] |
;----------------------------------------------)- |
|
.draw_t: |
mcall 4;[esp+8] |
.skip_t: |
pop eax eax ; ebx esi |
imul eax,6 |
add [esp+4*2+2],ax |
pop ecx esi |
cmp ecx,[cur_line_len];LINE_WIDTH |
jl .next_block |
|
pop ebx ecx |
and ebx,0x0000FFFF |
add ebx,[left_ofs-2] |
add ebx,LINEH |
add esi,[cur_line_len];LINE_WIDTH |
inc dword[esp] |
dec ecx |
jg .next_line |
|
;------------------------------------------------ |
.draw_cursor: |
|
;------------------------------------------------ |
mov ebx,[left_ofs] |
cmp ebx,2+LCHGW |
je .no_gutter |
add esp,-4*8*2 |
sub ebx,3+LCHGW |
mov ecx,[top_ofs] |
dec ecx |
shl ecx,16 |
add ecx,[bot_ofs] |
sub ecx,[top_ofs] |
sub ecx,SCRLW |
mcall 13,,,[cl_3d_normal] |
|
push bx |
shl ebx,16 |
pop bx |
add ecx,[top_ofs] |
dec ecx |
mcall 38,,,[cl_3d_inset] |
|
mov ebx,[left_ofs] |
add ebx,-3-LCHGW |
shl ebx,16 |
add ebx,[top_ofs] |
mov edi,[sc.work_text] |
mov ecx,[top_line] |
inc ecx |
mov edx,p_info+100 |
@@: pushad |
push eax edx edi |
mov eax,ecx |
mov ecx,10 |
mov edi,edx |
call uint2str |
mov esi,edi |
pop edi edx eax |
sub esi,edx |
imul eax,esi,6*65536 |
sub ebx,eax |
mcall 4,,edi |
popad |
add ebx,LINEH |
inc ecx |
cmp ecx,[lines] |
jg @f |
mov esi,ecx |
sub esi,[top_line] |
cmp esi,[lines.scr] |
jbe @b |
@@: add esp,4*8*2 |
|
.no_gutter: |
;------------------------------------------------ |
|
mov ebx,[draw_blines] |
or ebx,ebx |
js @f |
imul ebx,LINEH |
mov ecx,[esp-8] |
shl ecx,16 |
mov cx,bx |
mov ebx,[p_info.client_box.width] |
add ebx,[left_ofs-2] |
sub ebx,[left_ofs] |
add ebx,-1*65536-SCRLW+1 ; <OLEFT-1,LINE_WIDTH*6+2> |
mcall 13,,,[color_tbl+4*5] |
@@: |
|
add esp,4 |
cmp [bot_mode],0 |
jne @f |
mov ebx,[pos.x] |
sub ebx,[left_col] |
js @f |
cmp ebx,[columns.scr] |
ja @f |
imul ebx,6 |
add ebx,[left_ofs] |
dec ebx |
push bx |
shl ebx,16 |
pop bx |
mov eax,[pos.y] |
sub eax,[top_line] |
js @f |
cmp eax,[lines.scr] |
jge @f |
imul eax,LINEH |
add eax,[top_ofs] |
; inc eax |
mov esi,eax |
shl esi,16 |
add eax,LINEH-2 |
mov si,ax |
mov ecx,2 |
cmp [ins_mode],0 |
jne .lp8 |
add cl,4 |
.lp8: push ecx |
mcall 38,,esi,0x01000000 |
add ebx,0x00010001 |
pop ecx |
loop .lp8 |
@@: |
;------------------------------------------------ |
cmp [do_not_draw],2 |
je .exit |
|
; mov ebx,[p_info.x_size] |
; shl ebx,16 |
; add ebx,(-SCRLW-5+2)*65536+SCRLW-2 |
; mov ecx,[top_ofs-2] |
; mov cx,SCRLW-1 |
; mcall 8,,,'UP',[sc.work_button] |
;!!!!!!!!!!!!!!!!!! |
mov ebx,[p_info.client_box.width] |
shl ebx,16 |
add ebx,(-SCRLW)*65536+SCRLW |
mov ecx,[top_ofs-2] |
mov cx,SCRLW |
sub ecx,0x00020000 |
mcall 8,,,'UP' or 0x40000000 |
pushad |
sar ebx,16 |
sar ecx,16 |
push ebx ecx SCRLW SCRLW |
call draw_3d_panel |
popad |
mov eax,8 |
;!!!!!!!!!!!!!!!!!! |
|
pushad |
push 0x18 |
shr ecx,16 |
mov bx,cx |
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3 |
mcall 4,,[sc.work_text],esp,1 |
add esp,4 |
popad |
|
; mov ecx,[bot_ofs] |
; shl ecx,16 |
; add ecx,(-SCRLW*2-1)*65536+SCRLW-1 |
; mcall ,,,'DN' |
;!!!!!!!!!!!!!!!!!! |
mov ecx,[bot_ofs] |
shl ecx,16 |
add ecx,(-SCRLW*2-1)*65536+SCRLW |
mcall ,,,'DN' or 0x40000000 |
pushad |
sar ebx,16 |
sar ecx,16 |
push ebx ecx SCRLW SCRLW |
call draw_3d_panel |
popad |
mov eax,8 |
;!!!!!!!!!!!!!!!!!! |
|
pushad |
push 0x19 |
shr ecx,16 |
mov bx,cx |
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3 |
mcall 4,,[sc.work_text],esp,1 |
add esp,4 |
popad |
; sub ebx,1*65536-2 |
|
push ebx |
mov eax,[lines] |
mov ebx,[lines.scr] |
mov ecx,[top_line] |
mov edx,[bot_ofs] |
sub edx,[top_ofs] |
add edx,-SCRLW*3+1 |
call get_scroll_vars |
mov [vscrl_top],eax |
mov [vscrl_size],ebx |
pop ebx |
|
mov ecx,eax |
add ecx,[top_ofs] |
add ecx,SCRLW-1 |
; shl ecx,16 |
; mov cx,word[vscrl_size] |
|
; mcall 13,,,[sc.work_button] |
;!!!!!!!!!!!!!!!!!! |
pushad |
sar ebx,16 |
; rol ecx,16 |
; movsx eax,cx |
; sar ecx,16 |
push ebx ecx SCRLW [vscrl_size] |
dec dword[esp] |
call draw_3d_panel |
popad |
mov eax,13 |
;!!!!!!!!!!!!!!!!!! |
inc ebx |
|
mov ecx,[top_ofs-2] |
mov cx,word[vscrl_top] |
add ecx,(SCRLW-1)*65536 |
mov edx,[sc.work];[color_tbl+4*5] |
or cx,cx |
jle @f |
mcall 13 |
@@: |
mov ecx,[top_ofs] |
add ecx,[vscrl_top] |
add ecx,[vscrl_size] |
add ecx,SCRLW-1 |
mov di,cx |
shl ecx,16 |
mov cx,word[bot_ofs] |
sub cx,di |
sub cx,SCRLW*2+1 |
jle @f |
mcall |
@@: |
;----------------------- |
; mov eax,ebx |
; shr eax,16 |
; add bx,ax |
; mov ecx,[top_ofs-2] |
; mov cx,word[top_ofs] |
; add ecx,SCRLW*65536+SCRLW |
; mcall 38,,,[sc.work_graph];[sc.work_text] |
; mov ecx,[bot_ofs-2] |
; mov cx,word[bot_ofs] |
; sub ecx,(SCRLW*2+2)*65536+(SCRLW*2+2) |
; mcall |
rol ebx,16 |
push bx |
rol ebx,16 |
pop bx |
mov ecx,[top_ofs-2] |
mov cx,word[bot_ofs] |
add ecx,(SCRLW-1)*65536-SCRLW*2-2 |
mcall 38,,,[cl_3d_inset] |
;------------------------------------------------ |
; mov ebx,5*65536+SCRLW-1 |
; mov ecx,[bot_ofs] |
; shl ecx,16 |
; add ecx,(-SCRLW)*65536+SCRLW-2 |
; mcall 8,,,'LT',[sc.work_button] |
;!!!!!!!!!!!!!!!!!! |
mov ebx,SCRLW |
mov ecx,[bot_ofs] |
shl ecx,16 |
add ecx,(-SCRLW-1)*65536+SCRLW |
mcall 8,,,'LT' or 0x40000000 |
pushad |
sar ebx,16 |
sar ecx,16 |
push ebx ecx SCRLW SCRLW |
call draw_3d_panel |
popad |
;!!!!!!!!!!!!!!!!!! |
|
pushad |
push 0x1B |
shr ecx,16 |
mov bx,cx |
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3 |
mcall 4,,[sc.work_text],esp,1 |
add esp,4 |
popad |
|
; mov ebx,[p_info.x_size] |
; shl ebx,16 |
; add ebx,(-SCRLW*2-5)*65536+SCRLW |
; mcall ,,,'RT' |
;!!!!!!!!!!!!!!!!!! |
mov ebx,[p_info.client_box.width] |
shl ebx,16 |
add ebx,(-SCRLW*2)*65536+SCRLW |
mcall 8,,,'RT' or 0x40000000 |
pushad |
sar ebx,16 |
sar ecx,16 |
push ebx ecx SCRLW SCRLW |
call draw_3d_panel |
popad |
;!!!!!!!!!!!!!!!!!! |
|
pushad |
push 0x1A |
shr ecx,16 |
mov bx,cx |
add ebx,(SCRLW/2-2)*65536+SCRLW/2-3 |
mcall 4,,[sc.work_text],esp,1 |
add esp,4 |
popad |
; inc ecx |
|
push ecx |
mov eax,[columns] |
mov ebx,[columns.scr] |
mov ecx,[left_col] |
mov edx,[p_info.client_box.width] |
add edx,-(SCRLW*3) |
call get_scroll_vars |
mov [hscrl_top],eax |
mov [hscrl_size],ebx |
pop ecx |
|
mov ebx,eax |
add ebx,1+SCRLW |
shl ebx,16 |
mov bx,word[hscrl_size] |
|
; mcall 13,,,[sc.work_button] |
;!!!!!!!!!!!!!!!!!! |
pushad |
sar ecx,16 |
rol ebx,16 |
movsx eax,bx |
sar ebx,16 |
dec ebx |
push eax ecx ebx SCRLW |
call draw_3d_panel |
popad |
;!!!!!!!!!!!!!!!!!! |
|
mov ebx,(1+SCRLW)*65536 |
mov bx,word[hscrl_top] |
mcall 13,,,[sc.work];[color_tbl+4*5] |
mov ebx,1+SCRLW |
add ebx,[hscrl_top] |
add ebx,[hscrl_size] |
mov di,bx |
shl ebx,16 |
mov bx,word[p_info.client_box.width] |
sub bx,di |
sub bx,SCRLW*2 |
jle @f |
mcall |
@@: |
; mov eax,ebx |
; shr eax,16 |
; add bx,ax |
; mov ecx,[bot_ofs-2] |
; mov cx,word[bot_ofs] |
; sub ecx,SCRLW*65536+2 |
; mcall 38,<OLEFT+SCRLW-1,OLEFT+SCRLW-1>,,[sc.work_graph];[sc.work_text] |
; mov ebx,[p_info.x_size-2] |
; mov bx,word[p_info.x_size] |
; sub ebx,(SCRLW*2+6)*65536+(SCRLW*2+6) |
; mcall |
mov ebx,[p_info.client_box.width] |
; add ebx,5*65536-5 |
mov ecx,[bot_ofs-2] |
mov cx,word[bot_ofs] |
sub ecx,(SCRLW+1)*65536+(SCRLW+1) |
mcall 38,,,[cl_3d_inset] |
;------------------------------------------------ |
.exit: |
popad |
ret |
endf |
|
;----------------------------------------------------------------------------- |
func get_next_part ;////////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
; Input: |
; ECX = current letter |
; ESI = string |
; Output: |
; ECX = color |
; EDX = string |
; ESI = length |
;----------------------------------------------------------------------------- |
cmp [asm_mode],0 |
je .plain.text |
xor ebx,ebx |
mov edx,ecx |
add esi,ecx |
mov edi,symbols |
mov al,[esi] |
cmp al,';' |
je .comment |
mov ecx,symbols.size |
repne scasb |
je .symbol |
cmp al,'$' |
jne @f |
mov edi,symbols |
mov al,[esi+1] |
mov ecx,symbols.size |
repne scasb |
je .not_symbol |
jmp .number |
@@: cmp al,'0' |
jb @f |
cmp al,'9' |
jbe .number |
@@: cmp al,"'" |
je .string |
cmp al,'"' |
je .string |
.not_symbol: |
inc ebx |
inc edx |
cmp edx,[cur_line_len];LINE_WIDTH |
jge @f |
mov edi,symbols |
mov al,[esi+ebx] |
cmp al,';' |
je @f |
mov ecx,symbols.size |
repne scasb |
jne .not_symbol |
@@: mov ecx,edx |
mov edx,esi |
mov esi,ebx |
mov eax,[color_tbl+4*0] |
ret |
.symbol: |
inc ebx |
inc edx |
cmp edx,[cur_line_len];LINE_WIDTH |
jge @f |
mov edi,symbols |
mov al,[esi+ebx] |
mov ecx,symbols.size |
repne scasb |
je .symbol |
@@: mov ecx,edx |
mov edx,esi |
mov esi,ebx |
mov eax,[color_tbl+4*4] |
ret |
.comment: |
neg edx |
add edx,[cur_line_len];LINE_WIDTH |
xchg edx,esi |
mov ecx,[cur_line_len];LINE_WIDTH |
mov eax,[color_tbl+4*3] |
ret |
.number: |
inc ebx |
inc edx |
cmp edx,[cur_line_len];LINE_WIDTH |
jge @f |
mov edi,symbols |
mov al,[esi+ebx] |
cmp al,';' |
je @f |
mov ecx,symbols.size |
repne scasb |
jne .number |
@@: mov ecx,edx |
mov edx,esi |
mov esi,ebx |
mov eax,[color_tbl+4*1] |
ret |
.string: |
inc ebx |
inc edx |
cmp edx,[cur_line_len];LINE_WIDTH |
jge @f |
cmp [esi+ebx],al |
jne .string |
inc ebx |
inc edx |
@@: |
mov ecx,edx |
mov edx,esi |
mov esi,ebx |
mov eax,[color_tbl+4*2] |
ret |
.plain.text: |
mov edx,[cur_line_len];LINE_WIDTH |
xchg edx,esi |
mov ecx,[cur_line_len];LINE_WIDTH |
mov eax,[color_tbl+4*0] |
ret |
endf |
|
;----------------------------------------------------------------------------- |
func writepos ;///// WRITE POSITION ////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
cmp [do_not_draw],1 ; return if drawing is not permitted |
jae .exit |
pusha |
|
; mcall 9,p_info,-1 |
|
mov ecx,[p_info.client_box.height-2] |
mov cx,word[p_info.client_box.height] |
sub ecx,STATH*65536 |
; mpack ebx,6*13,6*13 |
; add ebx,[left_ofs-2] |
; add ebx,[left_ofs] |
mcall 38,<6*13,6*13>,,[cl_3d_inset] |
|
pushad |
; sub ebx,(6*13+1)*65536-1 |
; sub ebx,[left_ofs] |
mov cx,STATH+1 |
mcall 13,<0,6*13>,,[cl_3d_normal] |
mcall ,<6*13+1,6*(s_modified.size+2)-1> |
mov ebx,(6*(s_modified.size+15)+1)*65536 |
mov bx,word[p_info.client_box.width] |
sub bx,6*(s_modified.size+15) |
mcall |
popad |
|
add ebx,6*(s_modified.size+2)*65536+6*(s_modified.size+2) |
mcall |
|
and ecx,0x0000FFFF |
push ecx |
|
mov eax,[pos.y] |
inc eax |
mov ecx,10 |
mov edi,p_info+0x100;htext2.pos1 |
cld |
call uint2str |
mov al,',' |
stosb |
mov eax,[pos.x] |
inc eax |
call uint2str |
|
pop ebx |
|
lea esi,[edi-p_info-0x100] |
lea edi,[esi*3] |
shl edi,16 |
|
; add ebx,[left_ofs-2] |
add ebx,(1+6*6+3)*65536-STATH/2-3 |
sub ebx,edi |
mcall 4,,[sc.work_text],p_info+0x100 |
|
cmp [modified],0 |
je @f |
and ebx,0x0000FFFF |
; add ebx,[left_ofs-2] |
add ebx,(1+12*6+12+1)*65536 |
mcall ,,,s_modified,s_modified.size |
|
@@: cmp [s_status],0 |
je @f |
and ebx,0x0000FFFF |
add ebx,6*(s_modified.size+16)*65536 |
or ecx, 80000000h |
mcall ,,,[s_status] |
|
@@: popa |
|
.exit: |
ret |
endf |
|
;----------------------------------------------------------------------------- |
func print_text ;///////////////////////////////////////////////////////////// |
;----------------------------------------------------------------------------- |
pusha |
; mov ebx,(LBTNW+5+2)*65536 |
mov bx,word[p_info.box.width] |
; sub bx,LBTNW+RBTNW+10+3 |
mov ecx,[ya-2] |
; mov cx,ABTNH+1 |
mcall 13,,,[sc.work] |
; mov ebx,(LBTNW+5+2+4)*65536+ABTNH/2-3 |
add ebx,[ya] |
mov eax,[p_info.box.width] |
; sub eax,LBTNW+RBTNW+10+8 |
push eax |
cdq |
mov ecx,6 |
div ecx |
cmp eax,PATHL |
jbe @f |
mov eax,PATHL |
@@: mov esi,eax |
mcall 4,,[color_tbl+0],[addr] |
|
mov eax,[ya] |
mov ebx,eax |
; add eax,ABTNH/2-6 |
shl eax,16 |
add eax,ebx |
; add eax,ABTNH/2-6+11 |
mov ecx,eax |
imul eax,[temp],6 |
pop ebx |
cmp eax,ebx |
jae @f |
; add eax,LBTNW+5+2+4 |
mov ebx,eax |
shl eax,16 |
add ebx,eax |
mcall 38,,,[color_tbl+0] |
|
@@: popa |
ret |
endf |
|
func draw_framerect ; ebx,ecx |
push ebx ecx |
|
add bx,[esp+6] |
mov cx,[esp+2] |
dec ebx |
mcall 38,,,[cl_3d_inset] |
add cx,[esp] |
rol ecx,16 |
add cx,[esp] |
sub ecx,0x00010001 |
mcall |
|
mov ebx,[esp+4] |
mov ecx,[esp] |
mov bx,[esp+6] |
add cx,[esp+2] |
dec ecx |
mcall |
add bx,[esp+4] |
rol ebx,16 |
add bx,[esp+4] |
sub ebx,0x00010001 |
mcall |
|
add esp,8 |
ret |
endf |