Subversion Repositories Kolibri OS

Rev

Rev 881 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
879 serge 1
 
2
DLL_ENTRY        =  1
3
4
 
5
HS_VERTICAL      =  1
6
HS_FDIAGONAL     =  2
7
HS_BDIAGONAL     =  3
8
HS_CROSS         =  4
9
HS_DIAGCROSS     =  5
10
11
 
12
13
 
14
PX_MEM_LOCAL     =  1
15
PX_MEM_GART      =  2
16
17
 
18
19
 
20
21
 
22
{
23
           pushd fcolor
24
           pushd bkcolor
25
           pushd hatch
26
           call [imp_CreateHatch]
27
           add esp, 3*4
28
}
29
30
 
31
{
32
           pushd brush
33
           call [imp_DestroyBrush]
34
           add esp, 4
35
}
36
37
 
38
{
39
           pushd flags
40
           pushd format
41
           pushd height
42
           pushd width
43
           call [imp_CreatePixmap]
44
           add esp, 4*4
45
}
46
47
 
48
{
49
          pushd pixmap
50
          call [imp_DestroyPixmap]
51
          add esp, 4
52
};
53
54
 
55
{
56
           pushd pixmap
57
           call [imp_LockPixmap]
58
           add esp, 4
59
}
60
61
 
62
{
63
           pushd pixmap
64
           call [imp_UnlockPixmap]
65
           add esp, 4
66
}
67
68
 
69
{
70
           pushd color
71
           pushd pixmap
72
           call [imp_ClearPixmap]
73
           add esp, 2*4
74
}
75
76
 
77
{
78
           pushd color
79
           pushd y1
80
           pushd x1
81
           pushd y0
82
           pushd x0
83
           pushd pixmap
84
           call [imp_Line]
85
           add esp, 6*4
86
};
87
88
 
89
{
90
           pushd border
91
           pushd color
92
           pushd h
93
           pushd w
94
           pushd y
95
           pushd x
96
           pushd pixmap
97
           call [imp_DrawRect]
98
           add esp, 7*4
99
}
100
101
 
102
{
103
           pushd border
104
           pushd brush
105
           pushd h
106
           pushd w
107
           pushd y
108
           pushd x
109
           pushd pixmap
110
           call [imp_FillRect]
111
           add esp, 7*4
112
}
113
114
 
115
{
116
           pushd h
117
           pushd w
118
           pushd srcy
119
           pushd srcx
120
           pushd srcpix
121
           pushd dsty
122
           pushd dstx
123
           pushd dstpix
124
           call [imp_Blit]
125
           add esp, 8*4
126
}
127
128
 
129
{
130
           pushd key
131
           pushd h
132
           pushd w
133
           pushd srcy
134
           pushd srcx
135
           pushd srcpix
136
           pushd dsty
137
           pushd dstx
138
           pushd dstpix
139
           call [imp_TransparentBlit]
140
           add esp, 9*4
141
}
142
143
 
881 serge 144
{
145
          pushd path
146
147
 
148
          push path
149
          call _strrchr
150
151
 
152
153
 
154
          mov ebx, 1
155
          mov ecx, [esp+8]
156
          int 0x40
157
158
 
159
}
160
161
 
9587 vitalkrilo 162
879 serge 163
 
164
szVersion            db  'version',0
165
166
 
167
szDestroyPixmap      db  'DestroyPixmap',0
168
szLockPixmap         db  'LockPixmap',0
169
szUnlockPixmap       db  'UnlockPixmap',0
170
szGetPixmapPitch     db  'GetPixmapPitch',0
171
172
 
173
szCreateMonoBrush    db  'CreateMonoBrush',0
174
szDestroyBrush       db  'DestroyBrush',0
175
176
 
177
szLine               db  'Line',0
178
szDrawRect           db  'DrawRect',0
179
szFillRect           db  'FillRect',0
180
szBlit               db  'Blit',0
181
szTransparentBlit    db  'TransparentBlit',0
182
183
 
184
185
 
186
187
 
188
imp_ver              dd  szVersion
189
190
 
191
imp_DestroyPixmap    dd  szDestroyPixmap
192
imp_LockPixmap       dd  szLockPixmap
193
imp_UnlockPixmap     dd  szUnlockPixmap
194
imp_GetPixmapPitch   dd  szGetPixmapPitch
195
196
 
197
imp_CreateMonoBrush  dd  szCreateMonoBrush
198
imp_DestroyBrush     dd  szDestroyBrush
199
200
 
201
imp_Line             dd  szLine
202
imp_DrawRect         dd  szDrawRect
203
imp_FillRect         dd  szFillRect
204
imp_Blit             dd  szBlit
205
imp_TransparentBlit  dd  szTransparentBlit
206
207
 
208
209
 
210
 
211
;szLineClip           db  'LineClip',0
212
;imp_BlockClip        dd  szBlockClip
213
;imp_LineClip         dd  szLineClip
214
215
 
216
 
217
218
 
219
           mov  eax, 68
220
           mov  ebx, 19
221
           mov  ecx, szPxlib
222
           int  0x40
223
           test eax, eax
224
           jz   .fail
225
226
 
227
           mov  esi, px_import
228
.import_loop:
229
           lodsd
230
           test eax, eax
231
           jz   .import_done
232
           push edx
233
.import_find:
234
           mov ebx, [edx]
235
           test ebx, ebx
236
           jz .fail         ;import_not_found
237
238
 
239
@@:
240
           mov cl, [eax]
241
           cmp cl, [ebx]
242
           jnz .import_find_next
243
244
 
245
           jz .import_found
246
247
 
248
           inc ebx
249
           jmp @b
250
.import_find_next:
251
           pop eax
252
           add edx, 8
253
           jmp .import_find
254
.import_found:
255
           pop eax
256
           mov eax, [edx+4]
257
           mov [esi-4], eax
258
           pop edx
259
           jmp .import_loop
260
.import_done:
261
262
 
263
           jb .fail
264
           cmp word [imp_ver+2], REQ_DLL_VER
265
           ja .fail
266
267
 
268
           call [imp_start]
269
           test eax, eax
270
           jz .fail
271
272
 
273
.fail:
274
           xor eax, eax
275
           ret
276
277
 
881 serge 278
_strrchr:
279
	push	ebp
280
	mov	ebp, esp
281
	push	edi
282
        mov     edi, [8+ebp]
283
        mov     ecx, -1
284
        xor     al, al
285
        cld
286
        repne
287
        scasb
288
        not     ecx
289
        dec     edi
290
        mov     al, [12+ebp]
291
        std
292
        repne
293
        scasb
294
        cld
295
        jne     .failure
296
        lea     eax, [edi+1]
297
        pop     edi
298
        pop     ebp
299
        ret
300
.failure:
301
        xor     eax, eax
302
        pop     edi
303
        pop     ebp
304
        ret
305