;----------------------------------------------------------------------------- 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 ; 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,,,[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