2010-07-23 17:28:48 +02:00
|
|
|
|
; RTF READER FOR KOLIBRI >= 0.7.7.0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
; Written in pure assembler by Ivushkin Andrey aka Willow
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; Menu_bar and scroll_bar from box_lib provided by dunkaist
|
2006-01-03 10:43:31 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
M64 equ 64*1024
|
|
|
|
|
N_A equ 0x412f4e
|
|
|
|
|
RTFSIZE equ M64
|
|
|
|
|
RTFSTACKSIZE equ M64
|
|
|
|
|
BGIFONTSIZE equ 120*1024
|
|
|
|
|
ESPSIZE equ M64
|
2010-07-12 11:13:08 +02:00
|
|
|
|
LMARGIN equ 15
|
2006-01-03 10:43:31 +01:00
|
|
|
|
CHARW equ 6
|
|
|
|
|
CHARH equ 11
|
|
|
|
|
WINW equ 600
|
|
|
|
|
WINH equ 450
|
2010-07-12 11:13:08 +02:00
|
|
|
|
WIN_COLOR equ 0x33f0f0f0;0x3f0f0f0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
DEFCOLOR equ 0x303030
|
|
|
|
|
;RENDER equ PIX
|
|
|
|
|
;RENDER equ BGI
|
|
|
|
|
RENDER equ FREE
|
|
|
|
|
|
2007-05-30 16:45:45 +02:00
|
|
|
|
BGIFONT_PATH equ '/sys/fonts/'
|
2006-01-03 10:43:31 +01:00
|
|
|
|
FONT_NAME equ 'LITT'
|
2010-07-12 11:13:08 +02:00
|
|
|
|
TOP = 45
|
2006-01-03 10:43:31 +01:00
|
|
|
|
MODE equ RTF
|
|
|
|
|
INVALHEX equ 0
|
|
|
|
|
RTF_COLORLESS equ 1
|
|
|
|
|
RTF_ALIGNLESS equ 2
|
|
|
|
|
RTF_NO1STLINE equ 4
|
|
|
|
|
RTF_OPENING equ 8
|
|
|
|
|
RTF_HELP equ 16
|
|
|
|
|
RTF_VALID equ 32
|
|
|
|
|
RTF_BLIND equ 64
|
|
|
|
|
RTF_TOEOF equ 128
|
|
|
|
|
RTF_BOTTOM equ 256
|
|
|
|
|
STEPBYSTEP equ 10
|
|
|
|
|
DEBUG_BLOCK equ 10
|
|
|
|
|
SHOWALIGN equ 10
|
|
|
|
|
GUTTER equ 10
|
|
|
|
|
BENCH equ 0;1
|
|
|
|
|
syms equ 12
|
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;-------------------------------
|
|
|
|
|
|
|
|
|
|
scroll_width_size equ 15
|
|
|
|
|
AR_OFFSET equ 10
|
|
|
|
|
|
|
|
|
|
;-------------------------------
|
|
|
|
|
|
2006-08-24 14:33:31 +02:00
|
|
|
|
use32 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ०<><E0A5A6> <20><>ᥬ<EFBFBD><E1A5AC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
org 0x0 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2006-08-24 14:33:31 +02:00
|
|
|
|
db 'MENUET01' ; 8-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> MenuetOS
|
|
|
|
|
dd 0x01 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28>ᥣ<EFBFBD><E1A5A3> 1)
|
|
|
|
|
dd START ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ࢮ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
dd I_END0 ; ࠧ<><E0A0A7><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
|
|
|
|
dd esp_end ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
dd sys_mem ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>設<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
dd fname_buf ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC> (<28><> <20>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
2010-07-03 17:26:02 +02:00
|
|
|
|
dd cur_dir_path ; <20><>१<EFBFBD>ࢨ<E0A2A8><E0AEA2><EFBFBD>
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
include '../../../macros.inc' ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ᥬ<EFBFBD><E1A5AC><EFBFBD><EFBFBD>騪<EFBFBD><E9A8AA>!
|
|
|
|
|
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
|
|
|
|
|
include '../../../develop/libraries/box_lib/load_lib.mac'
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
|
|
|
|
;include 'MACROS.INC'
|
|
|
|
|
;include 'load_lib.mac'
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
|
|
|
|
@use_library
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
include 'debug.inc'
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
if ~ RENDER eq PIX
|
|
|
|
|
TOP=TOP+4
|
|
|
|
|
include 'bgifont.inc'
|
|
|
|
|
end if
|
|
|
|
|
include 'rtf_lite.inc'
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;include 'ascl.inc'
|
2006-01-03 10:43:31 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
help_file:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
file 'reader.rtf'
|
2006-01-03 10:43:31 +01:00
|
|
|
|
help_end:
|
|
|
|
|
|
|
|
|
|
START:
|
2010-02-17 16:15:50 +01:00
|
|
|
|
mcall 68, 11
|
2010-07-12 11:13:08 +02:00
|
|
|
|
mcall 40, 0x27
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
|
|
|
|
load_libraries l_libs_start,end_l_libs
|
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;OpenDialog initialisation
|
|
|
|
|
push dword OpenDialog_data
|
|
|
|
|
call [OpenDialog_Init]
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov [pitch],2
|
|
|
|
|
if ~ RENDER eq PIX
|
|
|
|
|
mov edx,FONT_NAME
|
|
|
|
|
mov edi,save_limit
|
|
|
|
|
BGIfont_Prepare
|
|
|
|
|
end if
|
|
|
|
|
start2:
|
|
|
|
|
cmp byte[fname_buf],0
|
2006-08-24 14:33:31 +02:00
|
|
|
|
je load_file;top_red
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp noactivate
|
|
|
|
|
prep_load:
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov [is_scroll_bar_needed], 0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
; mcall 18,3,dword[prcinfo+30]
|
|
|
|
|
noactivate:
|
|
|
|
|
; and ebp,not RTF_OPENING
|
|
|
|
|
; and ebp,not RTF_HELP
|
|
|
|
|
|
|
|
|
|
; and [mode],not RTF_OPENING
|
|
|
|
|
and [mode],not (RTF_HELP+RTF_OPENING)
|
|
|
|
|
mov ecx,16
|
|
|
|
|
mov edi,fileinfo.name
|
|
|
|
|
mov esi,fname_buf
|
|
|
|
|
rep movsd
|
|
|
|
|
load_file:
|
2006-08-28 15:34:54 +02:00
|
|
|
|
mov eax, 70
|
|
|
|
|
and [fileattr+32], 0
|
|
|
|
|
mov ebx, attrinfo
|
2007-05-10 15:48:35 +02:00
|
|
|
|
mcall
|
2006-08-28 15:34:54 +02:00
|
|
|
|
mov ebx, [fileattr+32]
|
|
|
|
|
test eax, eax
|
|
|
|
|
jz .sizok
|
|
|
|
|
mov dword [fileinfo.name], N_A
|
|
|
|
|
.sizok:
|
2006-01-03 10:43:31 +01:00
|
|
|
|
and [wSave],0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; mov [HClick],-100
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov eax,ebx
|
|
|
|
|
and eax,RTFSIZE-1
|
|
|
|
|
add eax,I_END
|
|
|
|
|
mov [tail],eax
|
|
|
|
|
shr ebx,16
|
|
|
|
|
; dpd ebx
|
|
|
|
|
mov [max_block],ebx
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov ecx,256
|
|
|
|
|
mov edi,fileinfo.name
|
|
|
|
|
repne scasb
|
|
|
|
|
sub edi,fileinfo.name+1
|
|
|
|
|
mov [fname_size],edi
|
|
|
|
|
top_red:
|
|
|
|
|
mov [top],TOP
|
2010-07-12 11:13:08 +02:00
|
|
|
|
mov [scroll_bar_data_vertical.position],0
|
2006-08-24 14:33:31 +02:00
|
|
|
|
red: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|
|
|
|
call draw_window ; <20><><EFBFBD>뢠<EFBFBD><EBA2A0> <20><><EFBFBD>楤<EFBFBD><E6A5A4><EFBFBD> <20><><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2> <20><><EFBFBD><EFBFBD>
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;--- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
still:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
mcall 10 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 10 - <20><><EFBFBD><EFBFBD><EFBFBD> ᮡ<><E1AEA1><EFBFBD><EFBFBD>
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp eax,1 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ<EFBFBD><E1AEA2><EFBFBD> <20><><EFBFBD><EFBFBD> ?
|
|
|
|
|
je red ; <20> <20><> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD> red
|
|
|
|
|
cmp eax,3 ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ?
|
|
|
|
|
je button ; <20> <20><> - <20><> button
|
2010-07-12 11:13:08 +02:00
|
|
|
|
cmp eax,6
|
|
|
|
|
je mouse
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
2006-08-24 14:33:31 +02:00
|
|
|
|
key: ; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
mcall 2 ; <20>㭪<EFBFBD><E3ADAA><EFBFBD> 2 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ᨬ<><E1A8AC><EFBFBD><EFBFBD> (<28> ah)
|
|
|
|
|
cmp ah,104 ; HELP
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jne .nohelp
|
|
|
|
|
.help:
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov [is_scroll_bar_needed], 0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
xor [mode],RTF_HELP
|
|
|
|
|
test [mode],RTF_HELP
|
2006-08-24 14:33:31 +02:00
|
|
|
|
jz load_file
|
2010-07-12 11:13:08 +02:00
|
|
|
|
mov dword[HDoc],200 ; it makes the help page not scroll
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ecx,help_end-help_file
|
|
|
|
|
mov [block_end],ecx
|
|
|
|
|
add [block_end],I_END
|
|
|
|
|
mov [tail],ecx
|
|
|
|
|
add [tail],I_END
|
|
|
|
|
mov esi,help_file
|
|
|
|
|
mov edi,I_END
|
|
|
|
|
rep movsb
|
|
|
|
|
; or [mode],RTF_HELP
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [max_block],eax
|
|
|
|
|
jmp top_red
|
|
|
|
|
.nohelp:
|
|
|
|
|
; test [mode],RTF_HELP
|
|
|
|
|
; jz .nohelp2
|
|
|
|
|
; and [mode],not RTF_HELP
|
|
|
|
|
; cmp dword[fileinfo.name],N_A
|
|
|
|
|
; je still
|
|
|
|
|
; jmp prep_load
|
|
|
|
|
.nohelp2:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,114 ; R - redraw
|
|
|
|
|
je red
|
|
|
|
|
cmp ah,99 ; C - color
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jne .nocolor
|
|
|
|
|
.color:
|
|
|
|
|
xor [mode],RTF_COLORLESS
|
|
|
|
|
jmp red
|
|
|
|
|
.nocolor:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,97 ; A - alignment
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jne .noalign
|
|
|
|
|
.alignment:
|
|
|
|
|
xor [mode],RTF_ALIGNLESS
|
|
|
|
|
jmp red
|
|
|
|
|
.noalign:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,44 ; < - pitch dec
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jne .nopd
|
|
|
|
|
.decp:
|
|
|
|
|
dec [pitch]
|
|
|
|
|
jmp red
|
|
|
|
|
.nopd:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,46 ; < - pitch inc
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jne .nopi
|
|
|
|
|
.incp:
|
|
|
|
|
inc [pitch]
|
|
|
|
|
jmp red
|
|
|
|
|
.nopi:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,180 ; Home
|
|
|
|
|
je top_red
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov ebx,dword[prcinfo+46]
|
|
|
|
|
sub ebx,TOP+15
|
|
|
|
|
cmp ah,183 ;PgDn
|
|
|
|
|
jne .nopgdn
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; sub [top],bx
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
|
|
|
|
mov eax, [scroll_bar_data_vertical.position]
|
|
|
|
|
add eax, AR_OFFSET*7
|
|
|
|
|
mov ebx, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
sub ebx, [scroll_bar_data_vertical.cur_area]
|
|
|
|
|
cmp eax, ebx
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], eax
|
|
|
|
|
jl @f
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], ebx
|
|
|
|
|
@@:
|
|
|
|
|
call Set_position
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp red
|
|
|
|
|
.nopgdn:
|
|
|
|
|
cmp ah,177 ;arrDn
|
|
|
|
|
jne .noardn
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; sub [top],CHARH
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
|
|
|
|
mov eax, [scroll_bar_data_vertical.position]
|
|
|
|
|
add eax, AR_OFFSET
|
|
|
|
|
mov ebx, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
sub ebx, [scroll_bar_data_vertical.cur_area]
|
|
|
|
|
cmp eax, ebx
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], eax
|
|
|
|
|
jl @f
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], ebx
|
|
|
|
|
@@:
|
|
|
|
|
call Set_position
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp red
|
|
|
|
|
.noardn:
|
|
|
|
|
mov cx,[top]
|
|
|
|
|
cmp ah,184 ;PgUp
|
|
|
|
|
jne .nopgup
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; add [top],bx
|
|
|
|
|
; cmp [top],TOP
|
|
|
|
|
; jl red
|
|
|
|
|
; mov [top],TOP
|
|
|
|
|
; cmp cx,[top]
|
|
|
|
|
; je still
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
|
|
|
|
cmp dword[scroll_bar_data_vertical.position], AR_OFFSET*7
|
|
|
|
|
sub dword[scroll_bar_data_vertical.position], AR_OFFSET*7
|
|
|
|
|
jg @f
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], 0
|
|
|
|
|
@@:
|
|
|
|
|
call Set_position
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp red
|
|
|
|
|
.nopgup:
|
|
|
|
|
cmp ah,178 ;arrUp
|
|
|
|
|
jne .noarup
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; add [top],CHARH
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
|
|
|
|
cmp dword[scroll_bar_data_vertical.position], AR_OFFSET
|
|
|
|
|
sub dword[scroll_bar_data_vertical.position], AR_OFFSET
|
|
|
|
|
jg @f
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], 0
|
|
|
|
|
@@:
|
|
|
|
|
call Set_position
|
|
|
|
|
|
|
|
|
|
; cmp [top],TOP
|
|
|
|
|
; jl red
|
|
|
|
|
; mov [top],TOP
|
|
|
|
|
; cmp cx,[top]
|
|
|
|
|
; je still
|
2006-01-03 10:43:31 +01:00
|
|
|
|
jmp red
|
|
|
|
|
.noarup:
|
|
|
|
|
if RENDER eq FREE
|
|
|
|
|
cmp ah,56 ;zoom+
|
|
|
|
|
jne .noplus
|
|
|
|
|
.zplus:
|
|
|
|
|
fld [FreeFontscale]
|
|
|
|
|
fmul [Zoomscale]
|
|
|
|
|
.zoom:
|
|
|
|
|
fstp [FreeFontscale]
|
|
|
|
|
jmp red
|
|
|
|
|
.noplus:
|
|
|
|
|
cmp ah,54 ;zoom-
|
|
|
|
|
jne .nominus
|
|
|
|
|
.zminus:
|
|
|
|
|
fld [FreeFontscale]
|
|
|
|
|
fdiv [Zoomscale]
|
|
|
|
|
jmp .zoom
|
|
|
|
|
.nominus:
|
|
|
|
|
end if
|
2010-07-12 11:13:08 +02:00
|
|
|
|
cmp ah,0xB5 ; end
|
|
|
|
|
jne .pre_file_open
|
|
|
|
|
.end:
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov eax, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
sub eax, [scroll_bar_data_vertical.cur_area]
|
|
|
|
|
mov dword[scroll_bar_data_vertical.position], eax
|
2010-07-12 11:13:08 +02:00
|
|
|
|
call Set_position
|
|
|
|
|
jmp red
|
|
|
|
|
.pre_file_open:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
cmp ah,108 ; L - load
|
2010-07-03 17:26:02 +02:00
|
|
|
|
jne still
|
2006-01-03 10:43:31 +01:00
|
|
|
|
.file_open:
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;OpenDialog_start:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; copy_path open_dialog_name,path,library_path,0
|
|
|
|
|
|
|
|
|
|
push dword OpenDialog_data
|
|
|
|
|
call [OpenDialog_Start]
|
|
|
|
|
|
|
|
|
|
; cmp [OpenDialog_data.status],2 ; OpenDialog does not start
|
|
|
|
|
; je .sysxtree ; some kind of alternative, instead OpenDialog
|
|
|
|
|
cmp [OpenDialog_data.status],1
|
|
|
|
|
je prep_load
|
|
|
|
|
jmp still
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-03 17:26:02 +02:00
|
|
|
|
;.sysxtree:
|
|
|
|
|
; or [mode],RTF_OPENING
|
|
|
|
|
; opendialog draw_window, prep_load, st_1, fname_buf
|
|
|
|
|
; st_1:
|
|
|
|
|
; and [mode],not RTF_OPENING
|
|
|
|
|
; jmp still;red
|
|
|
|
|
; stilld:
|
|
|
|
|
; jmp still
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
|
|
|
|
button:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
mcall 17 ; 17 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䨪<EFBFBD><E4A8AA><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
cmp ah, 1 ; <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 1,
|
|
|
|
|
je .exit
|
|
|
|
|
jmp still
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
.exit:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
mcall -1 ; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;--- MOUSE EVENT PROCESSING ----------------------------------------
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
mouse:
|
|
|
|
|
mcall 37,7
|
|
|
|
|
test eax, eax
|
|
|
|
|
je .menu_bar_1;.mouse
|
|
|
|
|
jmp still
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.menu_bar_1:
|
|
|
|
|
call .set_mouse_flag
|
|
|
|
|
@@:
|
|
|
|
|
push dword menu_data_1 ;mouse event for Menu 1
|
|
|
|
|
call [menu_bar_mouse]
|
|
|
|
|
cmp [menu_data_1.click],dword 1
|
|
|
|
|
jne .menu_bar_2
|
|
|
|
|
cmp [menu_data_1.cursor_out],dword 0
|
|
|
|
|
jne .analyse_out_menu_1
|
|
|
|
|
jmp .menu_bar_1
|
|
|
|
|
.menu_bar_2:
|
|
|
|
|
push dword menu_data_2
|
|
|
|
|
call [menu_bar_mouse]
|
|
|
|
|
cmp [menu_data_2.click],dword 1
|
|
|
|
|
jne .menu_bar_3
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 0
|
|
|
|
|
jne .analyse_out_menu_2
|
|
|
|
|
jmp .menu_bar_1
|
|
|
|
|
.menu_bar_3:
|
|
|
|
|
push dword menu_data_3
|
|
|
|
|
call [menu_bar_mouse]
|
|
|
|
|
cmp [menu_data_3.click],dword 1
|
|
|
|
|
jne .scroll_bar
|
|
|
|
|
cmp [menu_data_3.cursor_out],dword 0
|
|
|
|
|
jne .analyse_out_menu_3
|
|
|
|
|
jmp .menu_bar_1
|
|
|
|
|
|
|
|
|
|
.set_mouse_flag:
|
|
|
|
|
xor eax,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov [menu_data_1.get_mouse_flag],eax
|
|
|
|
|
mov [menu_data_2.get_mouse_flag],eax
|
|
|
|
|
mov [menu_data_3.get_mouse_flag],eax
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
.analyse_out_menu_1:
|
|
|
|
|
cmp [menu_data_1.cursor_out],dword 1
|
|
|
|
|
je key.file_open
|
|
|
|
|
cmp [menu_data_1.cursor_out],dword 2
|
|
|
|
|
je button.exit
|
|
|
|
|
jmp red
|
|
|
|
|
|
|
|
|
|
.analyse_out_menu_2:
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 1
|
|
|
|
|
je key.zplus
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 2
|
|
|
|
|
je key.zminus
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 3
|
|
|
|
|
je key.incp
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 4
|
|
|
|
|
je key.decp
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 5
|
|
|
|
|
je key.alignment
|
|
|
|
|
cmp [menu_data_2.cursor_out],dword 6
|
|
|
|
|
je key.color
|
|
|
|
|
jmp red
|
|
|
|
|
|
|
|
|
|
.analyse_out_menu_3:
|
|
|
|
|
cmp [menu_data_3.cursor_out],dword 1
|
|
|
|
|
je key.help
|
|
|
|
|
jmp red
|
|
|
|
|
|
|
|
|
|
.scroll_bar:
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je still
|
|
|
|
|
.vertical:
|
|
|
|
|
mov eax,[scroll_bar_data_vertical.max_area]
|
|
|
|
|
cmp eax,[scroll_bar_data_vertical.cur_area]
|
|
|
|
|
jbe still
|
|
|
|
|
; mouse event for Vertical ScrollBar
|
|
|
|
|
|
|
|
|
|
push dword scroll_bar_data_vertical
|
|
|
|
|
call [scrollbar_ver_mouse]
|
|
|
|
|
|
|
|
|
|
call Set_position
|
|
|
|
|
|
|
|
|
|
mov eax,scroll_bar_data_vertical.redraw
|
|
|
|
|
xor ebx,ebx
|
|
|
|
|
cmp [eax],ebx
|
|
|
|
|
je @f
|
|
|
|
|
mov [eax],ebx
|
|
|
|
|
jmp red
|
|
|
|
|
@@:
|
|
|
|
|
cmp [scroll_bar_data_vertical.delta2],0
|
|
|
|
|
jne still
|
|
|
|
|
.other:
|
|
|
|
|
jmp still
|
2006-01-03 10:43:31 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ----------------------------------
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
draw_window:
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mcall 9, procinfo2, -1
|
|
|
|
|
mov edx, -1
|
|
|
|
|
mov esi, -1
|
|
|
|
|
|
|
|
|
|
mov eax, [procinfo2.box.width]
|
|
|
|
|
cmp eax, 140
|
|
|
|
|
je @f
|
|
|
|
|
mov [is_scroll_bar_needed], 0
|
|
|
|
|
jg @f
|
|
|
|
|
mov edx, 140
|
|
|
|
|
@@:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov eax, [procinfo2.box.height]
|
|
|
|
|
cmp eax, 80
|
|
|
|
|
je @f
|
|
|
|
|
mov [is_scroll_bar_needed], 0
|
|
|
|
|
jg @f
|
|
|
|
|
mov esi, 80
|
|
|
|
|
@@:
|
|
|
|
|
|
|
|
|
|
mcall 67, -1, -1
|
|
|
|
|
|
|
|
|
|
mcall 12, 1
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x805080D0, 0x005080D0
|
|
|
|
|
; mcall 4, <8,8>, 0x10DDEEFF, title, titlesize-title
|
|
|
|
|
mcall 0, <10,WINW>, <100,WINH>, WIN_COLOR,0x80000000, window_title
|
2010-07-23 17:28:48 +02:00
|
|
|
|
;---------------------------------------------
|
|
|
|
|
cmp [is_scroll_bar_needed], 0
|
|
|
|
|
je @f
|
|
|
|
|
call Set_scroll_position
|
|
|
|
|
xor eax,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov [scroll_bar_data_vertical.all_redraw],eax
|
|
|
|
|
; draw for Vertical ScrollBar
|
|
|
|
|
push dword scroll_bar_data_vertical
|
|
|
|
|
call [scrollbar_ver_draw]
|
|
|
|
|
; reset all_redraw flag
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [scroll_bar_data_vertical.all_redraw],eax
|
|
|
|
|
@@:
|
|
|
|
|
;---------------------------------------------
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov esi,ecx
|
|
|
|
|
mcall 47,0x30000,isymImplemented,<114,8>
|
|
|
|
|
add edx,36 shl 16
|
|
|
|
|
mcall ,,isymMax
|
|
|
|
|
add edx,40 shl 16
|
|
|
|
|
mov esi,0x104e00e7;0x10f27840
|
|
|
|
|
cmp dword[fileinfo.name],N_A
|
|
|
|
|
jne .noNA
|
|
|
|
|
mov esi,0x10ff0000
|
|
|
|
|
.noNA:
|
2010-07-23 17:28:48 +02:00
|
|
|
|
; mcall 4,edx,esi,fileinfo.name,[fname_size]
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov edi,prcinfo
|
|
|
|
|
mcall 9,edi,-1
|
|
|
|
|
and [mode],not RTF_TOEOF
|
|
|
|
|
mov ebx,[edi+42]
|
|
|
|
|
cmp ebx,[wSave]
|
2006-08-24 14:33:31 +02:00
|
|
|
|
je .nochg
|
2006-01-03 10:43:31 +01:00
|
|
|
|
.chg:
|
|
|
|
|
mov [wSave],ebx
|
2006-08-24 14:33:31 +02:00
|
|
|
|
or [mode],RTF_TOEOF
|
2006-01-03 10:43:31 +01:00
|
|
|
|
and [HDoc],0
|
|
|
|
|
and [line_count],0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; mov [HClick],-100
|
2006-01-03 10:43:31 +01:00
|
|
|
|
.nochg:
|
2009-10-04 14:45:50 +02:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;---------------------------------------------
|
2010-07-23 17:28:48 +02:00
|
|
|
|
call Set_scroll_position
|
2009-10-04 14:45:50 +02:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
mov ebx, dword[prcinfo+0x3E]
|
|
|
|
|
mcall 38, , 65536*18+18, 0x8b8b89
|
|
|
|
|
inc ebx
|
|
|
|
|
mcall 13, , 65536*0+18, 0xe9e9e2
|
|
|
|
|
;---------------------------------------------
|
|
|
|
|
; draw for Menu 1
|
|
|
|
|
push dword menu_data_1
|
|
|
|
|
call [menu_bar_draw]
|
|
|
|
|
; draw for Menu 2
|
|
|
|
|
push dword menu_data_2
|
|
|
|
|
call [menu_bar_draw]
|
|
|
|
|
; draw for Menu 3
|
|
|
|
|
push dword menu_data_3
|
|
|
|
|
call [menu_bar_draw]
|
|
|
|
|
;---------------------------------------------
|
2009-10-04 14:45:50 +02:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
sub dword[prcinfo+42],2*LMARGIN+scroll_width_size
|
|
|
|
|
sub dword[prcinfo+46],CHARH+25
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
if GUTTER eq 1
|
|
|
|
|
mov ebx,LMARGIN shl 16+20
|
|
|
|
|
mov ecx,20
|
|
|
|
|
mov eax,4
|
|
|
|
|
mov edx,arrow
|
|
|
|
|
mov esi,1
|
|
|
|
|
.loop1:
|
|
|
|
|
push ecx
|
|
|
|
|
mcall ,,0xff0000
|
|
|
|
|
pop ecx
|
|
|
|
|
add ebx,50 shl 16
|
|
|
|
|
loop .loop1
|
|
|
|
|
end if
|
|
|
|
|
if MODE eq RTF
|
|
|
|
|
test [mode],RTF_OPENING
|
|
|
|
|
jne .ex
|
|
|
|
|
and [mode],not (RTF_BOTTOM);+RTF_TOEOF)
|
|
|
|
|
mov [colorptr],colortbl
|
|
|
|
|
mov eax,DEFCOLOR
|
|
|
|
|
mov edi,colortbl
|
|
|
|
|
mov ecx,16
|
|
|
|
|
rep stosd
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [cGroup],eax
|
|
|
|
|
mov edi,Chp
|
|
|
|
|
mov ecx,SIZE_save
|
|
|
|
|
rep stosb
|
|
|
|
|
mov ax,[top]
|
|
|
|
|
mov word[Free+6],10
|
|
|
|
|
mov word[Free+4],ax
|
|
|
|
|
mov esi,I_END
|
|
|
|
|
call RtfParse
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; dpd eax
|
|
|
|
|
; dps 'Lines='
|
2006-01-03 10:43:31 +01:00
|
|
|
|
mov eax,[line_count]
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; dpd eax
|
|
|
|
|
; newline
|
2006-01-03 10:43:31 +01:00
|
|
|
|
; movzx eax,word[Free+4]
|
|
|
|
|
; dpd eax
|
|
|
|
|
mov eax,dword[prcinfo+42]
|
|
|
|
|
mov edx,WIN_COLOR
|
|
|
|
|
call draw_progress
|
|
|
|
|
if BENCH eq 1
|
|
|
|
|
mcall 26,9
|
|
|
|
|
sub eax,[bench]
|
2010-07-12 11:13:08 +02:00
|
|
|
|
; dps <13,10,'Bench='>
|
|
|
|
|
; dpd eax
|
2006-01-03 10:43:31 +01:00
|
|
|
|
end if
|
|
|
|
|
else
|
|
|
|
|
mov [char],0
|
|
|
|
|
mov ebx,10 shl 16+TOP
|
|
|
|
|
mov ecx,16
|
|
|
|
|
.l0:
|
|
|
|
|
push ecx
|
|
|
|
|
mov ecx,16
|
|
|
|
|
.l1:
|
|
|
|
|
push ecx
|
|
|
|
|
if RENDER eq BGI
|
|
|
|
|
mov edx,char
|
|
|
|
|
mov ecx,0x48000000
|
|
|
|
|
mov esi,1
|
|
|
|
|
BGIfont_Outtext
|
|
|
|
|
else
|
|
|
|
|
mcall 4,,0x10000000,char,1
|
|
|
|
|
end if
|
|
|
|
|
pop ecx
|
|
|
|
|
inc [char]
|
|
|
|
|
add ebx,(CHARW+3) shl 16
|
|
|
|
|
loop .l1
|
|
|
|
|
pop ecx
|
|
|
|
|
add ebx,CHARH+2
|
|
|
|
|
and ebx,0x0000ffff
|
|
|
|
|
add ebx,10 shl 16
|
|
|
|
|
loop .l0
|
|
|
|
|
end if
|
|
|
|
|
.ex:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
call Set_position
|
|
|
|
|
;---------------------------------------------
|
2010-07-23 17:28:48 +02:00
|
|
|
|
cmp dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
je @f
|
|
|
|
|
xor eax,eax
|
|
|
|
|
inc eax
|
|
|
|
|
mov [scroll_bar_data_vertical.all_redraw],eax
|
|
|
|
|
; draw for Vertical ScrollBar
|
|
|
|
|
push dword scroll_bar_data_vertical
|
|
|
|
|
call [scrollbar_ver_draw]
|
|
|
|
|
; reset all_redraw flag
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [scroll_bar_data_vertical.all_redraw],eax
|
|
|
|
|
@@:
|
|
|
|
|
;---------------------------------------------
|
|
|
|
|
mcall 12, 2
|
|
|
|
|
ret
|
2006-01-03 10:43:31 +01:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
Set_position:
|
|
|
|
|
mov eax, dword[prcinfo+46]
|
|
|
|
|
cmp eax, [HDoc]
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov dword[is_scroll_bar_needed], 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
jnl .quit
|
2010-07-23 17:28:48 +02:00
|
|
|
|
mov dword[is_scroll_bar_needed], 1
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
|
|
|
|
mov eax, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
mul dword[prcinfo+46]
|
|
|
|
|
div dword[HDoc]
|
|
|
|
|
cmp eax, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
mov dword[scroll_bar_data_vertical.cur_area],eax
|
|
|
|
|
jng @f
|
|
|
|
|
mov eax, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
mov dword[scroll_bar_data_vertical.cur_area], eax
|
|
|
|
|
@@:
|
|
|
|
|
mov eax, [HDoc]
|
|
|
|
|
cmp eax, dword[prcinfo+46]
|
|
|
|
|
sub eax, dword[prcinfo+46]
|
2010-07-23 17:28:48 +02:00
|
|
|
|
add eax, 20 ; height of clear area under text when you are at the end of document
|
2010-07-12 11:13:08 +02:00
|
|
|
|
jg @f
|
|
|
|
|
mov eax, 0
|
|
|
|
|
@@:
|
|
|
|
|
mul [scroll_bar_data_vertical.position]
|
|
|
|
|
mov ebx, [scroll_bar_data_vertical.max_area]
|
|
|
|
|
sub ebx, [scroll_bar_data_vertical.cur_area]
|
|
|
|
|
div ebx
|
|
|
|
|
|
|
|
|
|
mov dword[top], TOP
|
|
|
|
|
sub dword[top], eax
|
|
|
|
|
|
|
|
|
|
.quit:
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-23 17:28:48 +02:00
|
|
|
|
Set_scroll_position:
|
|
|
|
|
mcall 9, procinfo2, -1
|
|
|
|
|
mov eax, dword[procinfo2+0x3E]
|
|
|
|
|
sub eax, scroll_width_size
|
|
|
|
|
mov word[scroll_bar_data_vertical.start_x], ax
|
|
|
|
|
|
|
|
|
|
mov eax, dword[procinfo2+0x42]
|
|
|
|
|
sub eax, 17
|
|
|
|
|
mov word[scroll_bar_data_vertical.size_y], ax
|
|
|
|
|
|
|
|
|
|
ret
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
if GUTTER eq 1
|
|
|
|
|
arrow db 0x19
|
|
|
|
|
end if
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;--- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ----------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
; <20><><EFBFBD><EFBFBD><EFBFBD>䥩<EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> MACROS.INC (lang fix <20><><EFBFBD><EFBFBD>)
|
2007-05-10 15:48:35 +02:00
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
window_title: db 'RtfRead v1.034',0
|
|
|
|
|
buf_cmd_lin dd 0x0
|
|
|
|
|
is_scroll_bar_needed dd 0x0
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-03 17:26:02 +02:00
|
|
|
|
l_libs_start:
|
|
|
|
|
|
|
|
|
|
library01 l_libs system_dir_ProcLib+9, cur_dir_path, library_path, system_dir_ProcLib, \
|
|
|
|
|
err_message_found_lib2, head_f_l, ProcLib_import, err_message_import2, head_f_i
|
|
|
|
|
|
2010-07-23 17:28:48 +02:00
|
|
|
|
library02 l_libs system_dir_Boxlib+9, cur_dir_path, library_path, system_dir_Boxlib, \
|
2010-07-12 11:13:08 +02:00
|
|
|
|
err_message_found_lib1, head_f_l, Box_lib_import, err_message_import1, head_f_i
|
|
|
|
|
|
2010-07-03 17:26:02 +02:00
|
|
|
|
end_l_libs:
|
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-12 11:13:08 +02:00
|
|
|
|
system_dir_ProcLib db '/sys/lib/proc_lib.obj',0
|
|
|
|
|
system_dir_Boxlib db '/sys/lib/box_lib.obj',0
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
|
|
|
|
head_f_i:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
head_f_l db 'error',0
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
err_message_found_lib1 db 'box_lib.obj - Not found!',0
|
|
|
|
|
err_message_found_lib2 db 'proc_lib.obj - Not found!',0
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
2010-07-12 11:13:08 +02:00
|
|
|
|
err_message_import1 db 'box_lib.obj - Wrong import!',0
|
|
|
|
|
err_message_import2 db 'proc_lib.obj - Wrong import!',0
|
2010-07-03 17:26:02 +02:00
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
ProcLib_import:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
OpenDialog_Init dd aOpenDialog_Init
|
|
|
|
|
OpenDialog_Start dd aOpenDialog_Start
|
|
|
|
|
;OpenDialog__Version dd aOpenDialog_Version
|
2010-07-03 17:26:02 +02:00
|
|
|
|
dd 0
|
|
|
|
|
dd 0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
aOpenDialog_Init db 'OpenDialog_init',0
|
|
|
|
|
aOpenDialog_Start db 'OpenDialog_start',0
|
|
|
|
|
;aOpenDialog_Version db 'Version_OpenDialog',0
|
2010-07-03 17:26:02 +02:00
|
|
|
|
;---------------------------------------------------------------------
|
2010-02-17 16:15:50 +01:00
|
|
|
|
OpenDialog_data:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
.type dd 0
|
|
|
|
|
.procinfo dd procinfo ;+4
|
|
|
|
|
.com_area_name dd communication_area_name ;+8
|
|
|
|
|
.com_area dd 0 ;+12
|
|
|
|
|
.opendir_pach dd temp_dir_pach ;+16
|
|
|
|
|
.dir_default_pach dd communication_area_default_pach ;+20
|
|
|
|
|
.start_path dd open_dialog_path ;+24
|
|
|
|
|
.draw_window dd draw_window ;+28
|
|
|
|
|
.status dd 0 ;+32
|
|
|
|
|
.openfile_pach dd fname_buf ;+36
|
|
|
|
|
.filename_area dd 0 ;+40
|
|
|
|
|
.filter_area dd Filter
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
|
|
|
|
communication_area_name:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
db 'FFFFFFFF_open_dialog',0
|
2010-02-17 16:15:50 +01:00
|
|
|
|
open_dialog_path:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
db '/sys/File Managers/opendial',0
|
2010-02-17 16:15:50 +01:00
|
|
|
|
communication_area_default_pach:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
db '/rd/1',0
|
2010-02-17 16:15:50 +01:00
|
|
|
|
|
|
|
|
|
Filter:
|
2010-03-19 09:21:29 +01:00
|
|
|
|
dd Filter.end - Filter
|
|
|
|
|
.1:
|
2010-02-17 16:15:50 +01:00
|
|
|
|
db 'RTF',0
|
|
|
|
|
.end:
|
|
|
|
|
db 0
|
|
|
|
|
;---------------------------------------------------------------------
|
2006-08-28 15:34:54 +02:00
|
|
|
|
attrinfo:
|
|
|
|
|
dd 5
|
|
|
|
|
dd 0
|
|
|
|
|
dd 0
|
|
|
|
|
dd 0
|
|
|
|
|
dd fileattr
|
|
|
|
|
db 0
|
|
|
|
|
dd fileinfo.name
|
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
fileinfo:
|
|
|
|
|
dd 0
|
|
|
|
|
.block:
|
|
|
|
|
dd 0
|
2006-08-28 15:34:54 +02:00
|
|
|
|
dd 0
|
2006-01-03 10:43:31 +01:00
|
|
|
|
.size dd 1
|
|
|
|
|
dd I_END
|
|
|
|
|
.name:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
; db '/HD/1/RTF/texts/index_ru.RTF',0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
2006-01-03 10:43:31 +01:00
|
|
|
|
rb 256-($-.name)
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
;blind db ?
|
|
|
|
|
if RENDER eq PIX
|
|
|
|
|
; rd 2
|
|
|
|
|
Free rd 9
|
|
|
|
|
else
|
|
|
|
|
if RENDER eq BGI
|
|
|
|
|
FreeFontscale dd 0.07
|
|
|
|
|
else
|
|
|
|
|
Zoomscale dd 1.15
|
|
|
|
|
FreeFontscale dd 0.04
|
|
|
|
|
end if
|
|
|
|
|
Free BGIfree FONT_NAME,0,0,1.0,1.0,char,1,0x44000000,0
|
|
|
|
|
end if
|
2010-07-23 17:28:48 +02:00
|
|
|
|
;I_END0:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
fname_buf:
|
|
|
|
|
rb 1024+16
|
2006-08-28 15:34:54 +02:00
|
|
|
|
fileattr rd 40/4
|
2006-01-03 10:43:31 +01:00
|
|
|
|
if BENCH eq 1
|
|
|
|
|
bench dd ?
|
|
|
|
|
end if
|
|
|
|
|
tail dd ?
|
|
|
|
|
cGroup dd ?
|
|
|
|
|
Chp:
|
|
|
|
|
CHP
|
|
|
|
|
Pap:
|
|
|
|
|
PAP
|
|
|
|
|
Sep:
|
|
|
|
|
SEP
|
|
|
|
|
Dop:
|
|
|
|
|
DOP
|
|
|
|
|
rds db ?
|
|
|
|
|
ris db ?
|
|
|
|
|
cbBin dd ?
|
|
|
|
|
lParam dd ?
|
|
|
|
|
fSkipDestIfUnk db ?
|
|
|
|
|
mode dd ?
|
|
|
|
|
curheight dw ?
|
|
|
|
|
maxheight dw ?
|
|
|
|
|
RetroBlock dd ?
|
|
|
|
|
RetroSave:
|
|
|
|
|
SAVE
|
|
|
|
|
prcinfo rb 1024
|
|
|
|
|
RetroPtr dd ?
|
|
|
|
|
colorptr dd ?
|
|
|
|
|
colortbl rd 16
|
|
|
|
|
ct_end:
|
|
|
|
|
fname_size dd ?
|
|
|
|
|
max_block dd ?
|
|
|
|
|
cur_block dd ?
|
|
|
|
|
HDoc dd ?
|
2010-07-12 11:13:08 +02:00
|
|
|
|
;HClick dd ?
|
2006-01-03 10:43:31 +01:00
|
|
|
|
top dw ?
|
|
|
|
|
line_count dd ?
|
|
|
|
|
par_count dd ?
|
|
|
|
|
char db ?
|
|
|
|
|
pitch db ?
|
|
|
|
|
wSave dd ?
|
|
|
|
|
RetroXY dd ?
|
|
|
|
|
RetroGroup dd ?
|
|
|
|
|
|
|
|
|
|
save_stack:
|
|
|
|
|
rb RTFSTACKSIZE
|
|
|
|
|
save_limit:
|
|
|
|
|
rb BGIFONTSIZE
|
|
|
|
|
|
|
|
|
|
listptr dd ?
|
|
|
|
|
szKeyword rb 31
|
|
|
|
|
szParameter rb 21
|
|
|
|
|
block_end dd ?
|
2010-07-12 11:13:08 +02:00
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
Box_lib_import:
|
|
|
|
|
|
|
|
|
|
menu_bar_draw dd aMenu_bar_draw
|
|
|
|
|
menu_bar_mouse dd aMenu_bar_mouse
|
|
|
|
|
|
|
|
|
|
scrollbar_ver_draw dd aScrollbar_ver_draw
|
|
|
|
|
scrollbar_ver_mouse dd aScrollbar_ver_mouse
|
|
|
|
|
|
|
|
|
|
dd 0
|
|
|
|
|
dd 0
|
|
|
|
|
|
|
|
|
|
aMenu_bar_draw db 'menu_bar_draw',0
|
|
|
|
|
aMenu_bar_mouse db 'menu_bar_mouse',0
|
|
|
|
|
;aVersion_menu_bar db 'version_menu_bar',0
|
|
|
|
|
|
|
|
|
|
aScrollbar_ver_draw db 'scrollbar_v_draw',0
|
|
|
|
|
aScrollbar_ver_mouse db 'scrollbar_v_mouse',0
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
menu_data_1:
|
|
|
|
|
.type: dd 0 ;+0
|
|
|
|
|
.x:
|
|
|
|
|
.size_x dw 40 ;+4
|
|
|
|
|
.start_x dw 2 ;+6
|
|
|
|
|
.y:
|
|
|
|
|
.size_y dw 15 ;+8
|
|
|
|
|
.start_y dw 2 ;+10
|
|
|
|
|
.text_pointer: dd menu_text_area ;0 ;+12
|
|
|
|
|
.pos_pointer: dd menu_text_area.1 ;0 ;+16
|
|
|
|
|
.text_end dd menu_text_area.end ;0 ;+20
|
|
|
|
|
.mouse_pos dd 0 ;+24
|
|
|
|
|
.mouse_keys dd 0 ;+28
|
|
|
|
|
.x1:
|
|
|
|
|
.size_x1 dw 40 ;+32
|
|
|
|
|
.start_x1 dw 2 ;+34
|
|
|
|
|
.y1:
|
|
|
|
|
.size_y1 dw 100 ;+36
|
|
|
|
|
.start_y1 dw 18 ;+38
|
|
|
|
|
.bckg_col dd 0xeeeeee ;+40
|
|
|
|
|
.frnt_col dd 0xff ;+44
|
|
|
|
|
.menu_col dd 0xffffff ;+48
|
|
|
|
|
.select dd 0 ;+52
|
|
|
|
|
.out_select dd 0 ;+56
|
|
|
|
|
.buf_adress dd 0 ;+60
|
|
|
|
|
.procinfo dd 0 ;+64
|
|
|
|
|
.click dd 0 ;+68
|
|
|
|
|
.cursor dd 0 ;+72
|
|
|
|
|
.cursor_old dd 0 ;+76
|
|
|
|
|
.interval dd 16 ;+80
|
|
|
|
|
.cursor_max dd 0 ;+84
|
|
|
|
|
.extended_key dd 0 ;+88
|
|
|
|
|
.menu_sel_col dd 0x00cc00 ;+92
|
|
|
|
|
.bckg_text_col dd 0 ;+96
|
|
|
|
|
.frnt_text_col dd 0xffffff ;+100
|
|
|
|
|
.mouse_keys_old dd 0 ;+104
|
|
|
|
|
.font_height dd 8 ;+108
|
|
|
|
|
.cursor_out dd 0 ;+112
|
|
|
|
|
.get_mouse_flag dd 0 ;+116
|
|
|
|
|
|
|
|
|
|
menu_text_area:
|
|
|
|
|
db 'File',0
|
|
|
|
|
.1:
|
|
|
|
|
db 'Open',0
|
|
|
|
|
db 'Exit',0
|
|
|
|
|
.end:
|
|
|
|
|
db 0
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
menu_data_2:
|
|
|
|
|
.type: dd 0 ;+0
|
|
|
|
|
.x:
|
|
|
|
|
.size_x dw 40 ;+4
|
|
|
|
|
.start_x dw 43 ;+6
|
|
|
|
|
.y:
|
|
|
|
|
.size_y dw 15 ;+8
|
|
|
|
|
.start_y dw 2 ;+10
|
|
|
|
|
.text_pointer: dd menu_text_area_2 ;0 ;+12
|
|
|
|
|
.pos_pointer: dd menu_text_area_2.1 ;0 ;+16
|
|
|
|
|
.text_end dd menu_text_area_2.end ;0 ;+20
|
|
|
|
|
.mouse_pos dd 0 ;+24
|
|
|
|
|
.mouse_keys dd 0 ;+28
|
|
|
|
|
.x1:
|
|
|
|
|
.size_x1 dw 50 ;+32
|
|
|
|
|
.start_x1 dw 43 ;+34
|
|
|
|
|
.y1:
|
|
|
|
|
.size_y1 dw 100 ;+36
|
|
|
|
|
.start_y1 dw 18 ;+38
|
|
|
|
|
.bckg_col dd 0xeeeeee ;+40
|
|
|
|
|
.frnt_col dd 0xff ;+44
|
|
|
|
|
.menu_col dd 0xffffff ;+48
|
|
|
|
|
.select dd 0 ;+52
|
|
|
|
|
.out_select dd 0 ;+56
|
|
|
|
|
.buf_adress dd 0 ;+60
|
|
|
|
|
.procinfo dd 0 ;+64
|
|
|
|
|
.click dd 0 ;+68
|
|
|
|
|
.cursor dd 0 ;+72
|
|
|
|
|
.cursor_old dd 0 ;+76
|
|
|
|
|
.interval dd 16 ;+80
|
|
|
|
|
.cursor_max dd 0 ;+84
|
|
|
|
|
.extended_key dd 0 ;+88
|
|
|
|
|
.menu_sel_col dd 0x00cc00 ;+92
|
|
|
|
|
.bckg_text_col dd 0 ; +96
|
|
|
|
|
.frnt_text_col dd 0xffffff ;+100
|
|
|
|
|
.mouse_keys_old dd 0 ;+104
|
|
|
|
|
.font_height dd 8 ;+108
|
|
|
|
|
.cursor_out dd 0 ;+112
|
|
|
|
|
.get_mouse_flag dd 0 ;+116
|
|
|
|
|
|
|
|
|
|
menu_text_area_2:
|
|
|
|
|
db 'View',0
|
|
|
|
|
.1:
|
|
|
|
|
db 'Zoom +',0
|
|
|
|
|
db 'Zoom -',0
|
2010-07-23 17:28:48 +02:00
|
|
|
|
db ' > >',0
|
|
|
|
|
db ' << ',0
|
2010-07-12 11:13:08 +02:00
|
|
|
|
db 'Align',0
|
|
|
|
|
db 'Color',0
|
|
|
|
|
.end:
|
|
|
|
|
db 0
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
menu_data_3:
|
|
|
|
|
.type: dd 0 ;+0
|
|
|
|
|
.x:
|
|
|
|
|
.size_x dw 40 ;+4
|
|
|
|
|
.start_x dw 84 ;+6
|
|
|
|
|
.y:
|
|
|
|
|
.size_y dw 15 ;+8
|
|
|
|
|
.start_y dw 2 ;+10
|
|
|
|
|
.text_pointer: dd menu_text_area_3 ;0 ;+12
|
|
|
|
|
.pos_pointer: dd menu_text_area_3.1 ;0 ;+16
|
|
|
|
|
.text_end dd menu_text_area_3.end ;0 ;+20
|
|
|
|
|
.mouse_pos dd 0 ;+24
|
|
|
|
|
.mouse_keys dd 0 ;+28
|
|
|
|
|
.x1:
|
|
|
|
|
.size_x1 dw 40 ;+32
|
|
|
|
|
.start_x1 dw 84 ;+34
|
|
|
|
|
.y1:
|
|
|
|
|
.size_y1 dw 100 ;+36
|
|
|
|
|
.start_y1 dw 18 ;+38
|
|
|
|
|
.bckg_col dd 0xeeeeee ;+40
|
|
|
|
|
.frnt_col dd 0xff ;+44
|
|
|
|
|
.menu_col dd 0xffffff ;+48
|
|
|
|
|
.select dd 0 ;+52
|
|
|
|
|
.out_select dd 0 ;+56
|
|
|
|
|
.buf_adress dd 0 ;+60
|
|
|
|
|
.procinfo dd 0 ;+64
|
|
|
|
|
.click dd 0 ;+68
|
|
|
|
|
.cursor dd 0 ;+72
|
|
|
|
|
.cursor_old dd 0 ;+76
|
|
|
|
|
.interval dd 16 ;+80
|
|
|
|
|
.cursor_max dd 0 ;+84
|
|
|
|
|
.extended_key dd 0 ;+88
|
|
|
|
|
.menu_sel_col dd 0x00cc00 ;+92
|
|
|
|
|
.bckg_text_col dd 0 ; +96
|
|
|
|
|
.frnt_text_col dd 0xffffff ;+100
|
|
|
|
|
.mouse_keys_old dd 0 ;+104
|
|
|
|
|
.font_height dd 8 ;+108
|
|
|
|
|
.cursor_out dd 0 ;+112
|
|
|
|
|
.get_mouse_flag dd 0 ;+116
|
|
|
|
|
|
|
|
|
|
menu_text_area_3:
|
|
|
|
|
db 'Help',0
|
|
|
|
|
.1:
|
|
|
|
|
db 'Home',0
|
|
|
|
|
.end:
|
|
|
|
|
db 0
|
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
align 4
|
|
|
|
|
scroll_bar_data_vertical:
|
|
|
|
|
.x:
|
|
|
|
|
.size_x dw scroll_width_size;+0
|
|
|
|
|
.start_x dw WINW-25 ;+2
|
|
|
|
|
.y:
|
|
|
|
|
.size_y dw WINH-45 ;+4
|
|
|
|
|
.start_y dw 19 ;+6
|
|
|
|
|
.btn_high dd scroll_width_size ;+8
|
|
|
|
|
.type dd 1 ;+12
|
|
|
|
|
.max_area dd 300 ;+16
|
|
|
|
|
.cur_area dd 50 ;+20
|
|
|
|
|
.position dd 0 ;+24
|
|
|
|
|
.bckg_col dd 0xAAAAAA ;+28
|
|
|
|
|
.frnt_col dd 0xCCCCCC ;+32
|
|
|
|
|
.line_col dd 0 ;+36
|
|
|
|
|
.redraw dd 0 ;+40
|
|
|
|
|
.delta dw 0 ;+44
|
|
|
|
|
.delta2 dw 0 ;+46
|
|
|
|
|
.run_x:
|
|
|
|
|
.r_size_x dw 0 ;+48
|
|
|
|
|
.r_start_x dw 0 ;+50
|
|
|
|
|
.run_y:
|
|
|
|
|
.r_size_y dw 0 ;+52
|
|
|
|
|
.r_start_y dw 0 ;+54
|
|
|
|
|
.m_pos dd 0 ;+56
|
|
|
|
|
.m_pos_2 dd 0 ;+60
|
|
|
|
|
.m_keys dd 0 ;+64
|
|
|
|
|
.run_size dd 0 ;+68
|
|
|
|
|
.position2 dd 0 ;+72
|
|
|
|
|
.work_size dd 0 ;+76
|
|
|
|
|
.all_redraw dd 0 ;+80
|
|
|
|
|
.ar_offset dd AR_OFFSET ;+84
|
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-23 17:28:48 +02:00
|
|
|
|
I_END0:
|
2006-08-24 14:33:31 +02:00
|
|
|
|
I_END: ; <20><>⪠ <20><><EFBFBD><EFBFBD><EFBFBD> <20>ணࠬ<E0AEA3><E0A0AC>
|
2007-05-10 15:48:35 +02:00
|
|
|
|
|
|
|
|
|
procinfo process_information
|
2006-01-03 10:43:31 +01:00
|
|
|
|
rb RTFSIZE
|
|
|
|
|
esp1:
|
|
|
|
|
rb ESPSIZE
|
2010-07-23 17:28:48 +02:00
|
|
|
|
procinfo2 process_information
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
|
|
|
|
temp_dir_pach:
|
|
|
|
|
rb 4096
|
2010-07-03 17:26:02 +02:00
|
|
|
|
cur_dir_path:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
rb 4096
|
2010-07-03 17:26:02 +02:00
|
|
|
|
library_path:
|
2010-07-12 11:13:08 +02:00
|
|
|
|
rb 4096
|
2010-02-17 16:15:50 +01:00
|
|
|
|
;---------------------------------------------------------------------
|
2010-07-23 17:28:48 +02:00
|
|
|
|
rb ESPSIZE ;stack
|
2006-08-24 14:33:31 +02:00
|
|
|
|
esp_end:
|
2010-07-23 17:28:48 +02:00
|
|
|
|
sys_mem:
|