Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 258 → Rev 259

/programs/develop/tinypad/trunk/tp-draw.asm
10,22 → 10,6
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]
50,49 → 34,71
cmp [p_info.client_box.height],LINEH
jl .exit.2
 
;++ calculate editor bounds ++
mov [tab_bar.Bounds.Left],0
mov [tab_bar.Bounds.Top],ATOPH
mov eax,[p_info.client_box.width]
mov [tab_bar.Bounds.Right],eax
mov eax,[p_info.client_box.height]
sub eax,[bot_dlg_height]
add eax,-STATH-1
mov [tab_bar.Bounds.Bottom],eax
 
call align_editor_in_tab
 
mov [top_ofs],ATOPH;+1
 
mov eax,[p_info.client_box.width]
sub eax,SCRLW+1
sub eax,[left_ofs]
mov eax,[cur_tab.Editor.Bounds.Right]
sub eax,[cur_tab.Editor.Bounds.Left]
sub eax,[cur_tab.Editor.Gutter.Width]
sub eax,SCRLW+LCHGW+4
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
mov eax,[cur_tab.Editor.Bounds.Bottom]
sub eax,[cur_tab.Editor.Bounds.Top]
sub eax,SCRLW+3
cdq
mov ebx,LINEH
div ebx
mov [lines.scr],eax
 
mov eax,[p_info.client_box.height]
add eax,-STATH+1;*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 [do_not_draw],1 ; do_not_draw = true
 
mov ebx,eax
sub ebx,[top_ofs]
sub ebx,SCRLW*3+AMINS+5
js .no_draw
; 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
; 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
;-- horizontal lines for menubar and statusbar --
;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]
 
134,7 → 140,11
@@:
 
.exit:
call draw_file
;-- draw file --
;call draw_file
;++ draw editor control ++
call draw_editor
call draw_tabctl
.exit.2:
mcall 12,2
ret
177,6 → 187,8
inc ebx
mcall 13,,ATOPH-1,[cl_3d_normal]
 
mcall 38,[p_info.client_box.width],<ATOPH-1,ATOPH-1>,[sc.frame];[cl_3d_pushed]
 
mov edx,main_menu
mov ebx,9*65536+ATOPH/2-4
mov ecx,[sc.work_text]
220,6 → 232,9
; EAX = start line
; EBX = end line
;-----------------------------------------------------------------------------
call draw_editor;_text
ret
macro unused {
cmp [p_info.client_box.height],LINEH
jge @f
ret
235,10 → 250,10
cmp eax,ebx
jle @f
xchg eax,ebx
@@: cmp eax,[top_line]
@@: cmp eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
jge @f
mov eax,[top_line]
@@: mov ecx,[top_line]
mov eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
@@: mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
add ecx,[lines.scr]
cmp ebx,ecx
jl @f
258,19 → 273,23
 
mov ebx,[top_ofs]
add ebx,[left_ofs-2]
sub eax,[top_line]
sub eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
imul eax,LINEH
add ebx,eax
 
imul ebp,[left_col],6*65536
imul ebp,[cur_tab.Editor.TopLeft.X],6*65536 ;! ebp,[left_col],6*65536
or [draw_blines],-1
 
jmp draw_file.next_line
}
endf
 
;-----------------------------------------------------------------------------
func draw_file ;//////////////////////////////////////////////////////////////
;-----------------------------------------------------------------------------
call draw_editor;_text
ret
macro unused {
cmp [p_info.client_box.height],LINEH
jge @f
ret
283,7 → 302,7
mov ebx,[top_ofs]
add ebx,[left_ofs-2]
 
mov ecx,[top_line]
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
push ecx
call get_line_offset
 
294,9 → 313,9
jle .exit
add esp,-4
 
imul ebp,[left_col],6*65536
imul ebp,[cur_tab.Editor.TopLeft.X],6*65536 ;! ebp,[left_col],6*65536
mov eax,[lines.scr]
sub eax,[lines]
sub eax,[cur_tab.Editor.Lines] ;! eax,[lines]
mov [draw_blines],eax
 
.next_line:
327,7 → 346,7
cmp eax,[sel.end.y]
je .lp5
.lp2: mov eax,[sel.begin.x]
sub eax,[left_col]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
jle .lp6.2
cmp eax,[columns.scr]
jge .lp6
350,7 → 369,7
cmp eax,[sel.end.y]
je .lp5
.lp4: mov eax,[sel.end.x]
sub eax,[left_col]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
jle .lp6
cmp eax,[columns.scr]
jg .lp6.2
369,7 → 388,7
mov bx,ax
mov [in_sel],3
jmp .lp6
.lp5: mov eax,[left_col]
.lp5: mov eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
cmp eax,[sel.begin.x]
jge .lp4
add eax,[columns.scr]
378,7 → 397,7
mov eax,[sel.begin.x]
cmp eax,[sel.end.x]
je .lp6
sub eax,[left_col]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
imul eax,6
pushad
mov ebx,[sel.end.x]
452,13 → 471,13
 
push esi ebx
mov eax,ebx
sub ebx,[left_col]
sub ebx,[cur_tab.Editor.TopLeft.X] ;! 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]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
jge .qqq
sub edx,eax
add esi,eax
475,7 → 494,7
 
mov eax,[esp] ; ebx
add eax,[esp+4] ; esi
sub eax,[left_col]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
sub eax,[columns.scr]
jle .qweqwe
sub esi,eax
499,7 → 518,7
mov esi,[sel.begin.x]
sub esi,[esp]
pushad
mov ecx,[left_col]
mov ecx,[cur_tab.Editor.TopLeft.X] ;! ecx,[left_col]
sub ecx,[esp+4*8]
jle @f
sub esi,ecx
529,7 → 548,7
sub eax,[esp]
push ebx
mov ebx,[esp+4]
sub ebx,[left_col]
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
jge .ya2.1
add eax,ebx
.ya2.1:
561,7 → 580,7
sub esi,[esp]
push eax
mov eax,[esp+4]
sub eax,[left_col]
sub eax,[cur_tab.Editor.TopLeft.X] ;! eax,[left_col]
jge .nt3.1
add esi,eax
.nt3.1:
642,7 → 661,7
shl ebx,16
add ebx,[top_ofs]
mov edi,[sc.work_text]
mov ecx,[top_line]
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! ecx,[top_line]
inc ecx
mov edx,p_info+100
@@: pushad
660,10 → 679,10
popad
add ebx,LINEH
inc ecx
cmp ecx,[lines]
cmp ecx,[cur_tab.Editor.Lines] ;! ecx,[lines]
jg @f
mov esi,ecx
sub esi,[top_line]
sub esi,[cur_tab.Editor.TopLeft.Y] ;! esi,[top_line]
cmp esi,[lines.scr]
jbe @b
@@: add esp,4*8*2
688,8 → 707,8
add esp,4
cmp [bot_mode],0
jne @f
mov ebx,[pos.x]
sub ebx,[left_col]
mov ebx,[cur_tab.Editor.Caret.X] ;! ebx,[pos.x]
sub ebx,[cur_tab.Editor.TopLeft.X] ;! ebx,[left_col]
js @f
cmp ebx,[columns.scr]
ja @f
699,8 → 718,8
push bx
shl ebx,16
pop bx
mov eax,[pos.y]
sub eax,[top_line]
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
sub eax,[cur_tab.Editor.TopLeft.Y] ;! eax,[top_line]
js @f
cmp eax,[lines.scr]
jge @f
786,15 → 805,15
; sub ebx,1*65536-2
 
push ebx
mov eax,[lines]
mov eax,[cur_tab.Editor.Lines] ;! eax,[lines]
mov ebx,[lines.scr]
mov ecx,[top_line]
mov ecx,[cur_tab.Editor.TopLeft.Y] ;! 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
mov [cur_tab.Editor.VScroll.Top],eax ;! [vscrl_top],eax
mov [cur_tab.Editor.VScroll.Size],ebx ;! [vscrl_size],ebx
pop ebx
 
mov ecx,eax
810,7 → 829,7
; rol ecx,16
; movsx eax,cx
; sar ecx,16
push ebx ecx SCRLW [vscrl_size]
push ebx ecx SCRLW [cur_tab.Editor.VScroll.Size] ;! ebx ecx SCRLW [vscrl_size]
dec dword[esp]
call draw_3d_panel
popad
819,7 → 838,7
inc ebx
 
mov ecx,[top_ofs-2]
mov cx,word[vscrl_top]
mov cx,word[cur_tab.Editor.VScroll.Top] ;! cx,word[vscrl_top]
add ecx,(SCRLW-1)*65536
mov edx,[sc.work];[color_tbl+4*5]
or cx,cx
827,8 → 846,8
mcall 13
@@:
mov ecx,[top_ofs]
add ecx,[vscrl_top]
add ecx,[vscrl_size]
add ecx,[cur_tab.Editor.VScroll.Top] ;! ecx,[vscrl_top]
add ecx,[cur_tab.Editor.VScroll.Size] ;! ecx,[vscrl_size]
add ecx,SCRLW-1
mov di,cx
shl ecx,16
915,20 → 934,20
; inc ecx
 
push ecx
mov eax,[columns]
mov eax,[cur_tab.Editor.Columns] ;! eax,[columns]
mov ebx,[columns.scr]
mov ecx,[left_col]
mov ecx,[cur_tab.Editor.TopLeft.X] ;! 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
mov [cur_tab.Editor.HScroll.Top],eax ;! [hscrl_top],eax
mov [cur_tab.Editor.HScroll.Size],ebx ;! [hscrl_size],ebx
pop ecx
 
mov ebx,eax
add ebx,1+SCRLW
shl ebx,16
mov bx,word[hscrl_size]
mov bx,word[cur_tab.Editor.HScroll.Size] ;! bx,word[hscrl_size]
 
; mcall 13,,,[sc.work_button]
;!!!!!!!!!!!!!!!!!!
944,11 → 963,11
;!!!!!!!!!!!!!!!!!!
 
mov ebx,(1+SCRLW)*65536
mov bx,word[hscrl_top]
mov bx,word[cur_tab.Editor.HScroll.Top] ;! bx,word[hscrl_top]
mcall 13,,,[sc.work];[color_tbl+4*5]
mov ebx,1+SCRLW
add ebx,[hscrl_top]
add ebx,[hscrl_size]
add ebx,[cur_tab.Editor.HScroll.Top] ;! ebx,[hscrl_top]
add ebx,[cur_tab.Editor.HScroll.Size] ;! ebx,[hscrl_size]
mov di,bx
shl ebx,16
mov bx,word[p_info.client_box.width]
978,6 → 997,7
.exit:
popad
ret
}
endf
 
;-----------------------------------------------------------------------------
991,7 → 1011,7
; EDX = string
; ESI = length
;-----------------------------------------------------------------------------
cmp [asm_mode],0
cmp [cur_tab.Editor.AsmMode],0 ;! [asm_mode],0
je .plain.text
xor ebx,ebx
mov edx,ecx
1099,12 → 1119,17
endf
 
;-----------------------------------------------------------------------------
func writepos ;///// WRITE POSITION //////////////////////////////////////////
func draw_statusbar ;///// WRITE POSITION ////////////////////////////////////
;-----------------------------------------------------------------------------
cmp [do_not_draw],1 ; return if drawing is not permitted
jae .exit
pusha
 
mov ecx,[p_info.client_box.height-2]
mov cx,word[p_info.client_box.height]
sub ecx,STATH*65536+STATH
mcall 38,[p_info.client_box.width],,[sc.frame];[cl_3d_pushed]
 
; mcall 9,p_info,-1
 
mov ecx,[p_info.client_box.height-2]
1116,9 → 1141,10
mcall 38,<6*13,6*13>,,[cl_3d_inset]
 
pushad
add ecx,1*65536
; sub ebx,(6*13+1)*65536-1
; sub ebx,[left_ofs]
mov cx,STATH+1
mov cx,STATH
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
1133,7 → 1159,7
and ecx,0x0000FFFF
push ecx
 
mov eax,[pos.y]
mov eax,[cur_tab.Editor.Caret.Y] ;! eax,[pos.y]
inc eax
mov ecx,10
mov edi,p_info+0x100;htext2.pos1
1141,7 → 1167,7
call uint2str
mov al,','
stosb
mov eax,[pos.x]
mov eax,[cur_tab.Editor.Caret.X] ;! eax,[pos.x]
inc eax
call uint2str
 
1156,7 → 1182,7
sub ebx,edi
mcall 4,,[sc.work_text],p_info+0x100
 
cmp [modified],0
cmp [cur_tab.Editor.Modified],0 ;! [modified],0
je @f
and ebx,0x0000FFFF
; add ebx,[left_ofs-2]
1176,58 → 1202,17
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
func draw_framerect ; ebx,ecx,edx
push ebx ecx
; x1 = esp+6
; x2 = esp+4 (width)
; y1 = esp+2
; y2 = esp+0 (height)
 
add bx,[esp+6]
mov cx,[esp+2]
dec ebx
mcall 38,,,[cl_3d_inset]
mcall 38
add cx,[esp]
rol ecx,16
add cx,[esp]
1246,6 → 1231,6
sub ebx,0x00010001
mcall
 
add esp,8
pop ecx ebx
ret
endf