Subversion Repositories Kolibri OS

Rev

Rev 9025 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4438 Serge 1
format MS COFF
2
 
3
public _get_moviefile
4
 
5
section '.text' align 16
6
 
7
align 4
8
getprocaddress:
9
        mov     edx, [esp + 8] ; hlib
10
        xor     eax, eax
11
        test    edx, edx ; If hlib = 0 then goto .end
12
        jz      .end
13
 
14
.next:
15
        cmp     [edx], dword 0 ; If end of export table then goto .end
16
        jz      .end
17
 
18
        xor     eax, eax
19
        mov     esi, [edx]
20
        mov     edi, [esp + 4] ; name
21
 
22
.next_:
23
        lodsb
24
        scasb
25
        jne     .fail
26
        or      al, al
27
        jnz     .next_
28
        jmp     .ok
29
.fail:
30
        add     edx, 8
31
        jmp     .next
32
 
33
.ok:                  ; return address
34
        mov eax, [edx + 4]
35
.end:
36
        ret 8
37
 
38
 
39
 
40
align 8
41
_get_moviefile:
42
 
43
        pushad
44
        mov     eax, 68
45
        mov     ebx, 19
46
        mov     ecx, sz_proc_lib
47
        int     0x40
48
        mov     [proclib], eax
49
        test    eax, eax
50
        jz      .fail
51
 
52
        push    [proclib]
53
        push    sz_OpenDialog_init
54
        call    getprocaddress
55
        mov     [opendialog_init], eax
56
 
57
        push    dword[proclib]
58
        push    sz_OpenDialog_start
59
        call    getprocaddress
60
        mov     [opendialog_start], eax
61
 
62
        mov     eax, 68
63
        mov     ebx, 12
64
        mov     ecx, 4096*3
65
        int     0x40
66
 
67
        mov     [od.procinfo], eax
68
 
69
        add     eax, 1024
70
        mov     [od.filename_area], eax
71
 
72
        add     eax, 3072
73
        mov     [od.opendir_path], eax
74
 
75
        add     eax, 4096
76
        mov     [od.openfile_path], eax
77
 
78
        push    od
79
        call    [opendialog_init]
80
 
81
        mov     eax, [od.openfile_path]
82
        mov     [eax], byte 0          ; end of ASCIIZ-string(may be don't need?)
83
 
84
        push    od
85
        call    [opendialog_start]
86
 
87
        popad
88
        mov     eax, [od.openfile_path]; selected filePath
89
 
90
        ret
91
.fail:
92
        xor     eax, eax
93
        ret
94
 
95
align 4
96
fake_on_redraw:
97
        ret
98
 
99
section '.rdata' align 16
100
 
101
sz_proc_lib         db "/rd/1/lib/proc_lib.obj",0
102
sz_OpenDialog_init  db "OpenDialog_init",0
103
sz_OpenDialog_start db "OpenDialog_start",0
104
sz_com_area_name    db "FFFFFFFF_open_dialog",0
105
sz_dir_default_path db "/rd/1",0
106
sz_start_path       db "/rd/1/File managers/opendial",0
107
 
108
 
109
section '.data' align 16
110
 
111
od:
112
    .mode             dd 0
113
    .procinfo         dd 0
114
    .com_area_name    dd sz_com_area_name
115
    .com_area         dd 0
116
    .opendir_path     dd 0
117
    .dir_default_path dd sz_dir_default_path
118
    .start_path       dd sz_start_path
119
    .draw_window      dd fake_on_redraw
120
    .status           dd 0
121
    .openfile_path    dd 0
122
    .filename_area    dd 0
123
    .filter_area      dd filefilter
124
    .x_size           dw 512
125
    .x_start          dw 512
126
    .y_size           dw 512
127
    .y_start          dw 512
128
 
129
filefilter:
130
dd filefilter.end - filefilter
131
    db 'avi',0
132
    db 'flv',0
133
    db 'mov',0
134
    db 'mpg',0
135
    db 'mpeg',0
136
    db 'mkv',0
137
    db 'mp4',0
138
    db 'webm',0
139
    db 'wmv',0
140
.end:
141
    db 0
142
 
143
 
144
section '.bss' align 16
145
 
146
proclib          dd ?
147
opendialog_init  dd ?
148
opendialog_start dd ?
149