DEADSOFTWARE

9aa878324dc0159081663f9e56c145e962fdb628
[d2df-sdl.git] / src / nogl / noGLES1.inc
1 implementation
3 uses SDL2;
5 const
6 GL_FLOAT = $1406;
7 GL_VERTEX_ARRAY = $8074;
8 GL_NORMAL_ARRAY = $8075;
9 GL_COLOR_ARRAY = $8076;
10 GL_TEXTURE_COORD_ARRAY = $8078;
11 GL_TRIANGLES = $0004;
12 GL_TEXTURE0 = $84C0;
13 GL_INVALID_ENUM = $0500;
15 const
16 ValPerVertex = 2;
17 ValPerColor = 4;
18 ValPerCoord = 2;
20 type
21 TArrayFloat = array of GLfloat;
23 TCmds = record
24 mode: GLenum;
25 v, c, t: TArrayFloat;
26 end;
28 var
29 cmds: TCmds;
31 var
32 extList: string = '';
34 var
35 es_glVertexPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
36 es_glColorPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
37 es_glTexCoordPointer: procedure (size: GLint; _type: GLenum; stride: GLsizei; pointer: PGLvoid); cdecl;
38 es_glEnableClientState: procedure (arr: GLenum); cdecl;
39 es_glDisableClientState: procedure (arr: GLenum); cdecl;
40 es_glDrawArrays: procedure (mode: GLenum; first: GLint; count: GLsizei); cdecl;
41 // es_glActiveTexture: procedure(texture: GLenum); cdecl;
42 // es_glClientActiveTexture: procedure(texture: GLenum); cdecl;
43 es_glColor4f: procedure(red, green, blue, alpha: GLfloat); cdecl;
45 es_glEnable: procedure (cap: GLenum); cdecl;
46 es_glDisable: procedure (cap: GLenum); cdecl;
47 es_glIsEnabled: function (cap: GLenum): GLBoolean; cdecl;
48 es_glGetString: function (name: GLenum): PChar; cdecl;
49 es_glClearColor: procedure (red, green, blue, alpha: GLclampf); cdecl;
50 es_glClear: procedure (mask: GLbitfield); cdecl;
51 es_glAlphaFunc: procedure (func: GLenum; ref: GLclampf); cdecl;
52 es_glBlendFunc: procedure (sfactor, dfactor: GLenum); cdecl;
53 es_glPointSize: procedure (size: GLfloat); cdecl;
54 es_glLineWidth: procedure (width: GLfloat); cdecl;
55 es_glGetIntegerv: procedure (pname: GLenum; params: PGLint); cdecl;
56 es_glFlush: procedure; cdecl;
57 es_glFinish: procedure; cdecl;
59 es_glLoadIdentity: procedure; cdecl;
60 es_glMatrixMode: procedure (mode: GLenum); cdecl;
61 es_glLoadMatrixf: procedure (m: PGLfloat); cdecl;
62 es_glPushMatrix: procedure; cdecl;
63 es_glPopMatrix: procedure; cdecl;
64 es_glTranslatef: procedure (x, y, z: GLfloat); cdecl;
65 es_glRotatef: procedure (angle, x, y, z: GLfloat); cdecl;
66 es_glScalef: procedure (x, y, z: GLfloat); cdecl;
68 es_glReadPixels: procedure (x, y: GLint; width, height: GLsizei; format,_type: GLenum; pixels: PGLvoid); cdecl;
70 es_glViewport: procedure (x, y: GLint; width, height: GLsizei); cdecl;
71 es_glScissor: procedure (x, y: GLint; width, height: GLsizei); cdecl;
72 es_glStencilMask: procedure (mask: GLuint); cdecl;
73 es_glStencilFunc: procedure (func: GLenum; ref: GLint; mask: GLuint); cdecl;
74 es_glStencilOp: procedure (fail, zfail, zpass: GLenum); cdecl;
75 es_glColorMask: procedure (red: GLboolean; green: GLboolean; blue: GLboolean; alpha: GLboolean); cdecl;
77 es_glBindTexture: procedure (target: GLenum; texture: GLuint); cdecl;
78 es_glGenTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
79 es_glTexEnvi: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
80 es_glTexParameterf: procedure (target: GLenum; pname: GLenum; param: GLfloat); cdecl;
81 es_glTexParameteri: procedure (target: GLenum; pname: GLenum; param: GLint); cdecl;
82 es_glTexImage2D: procedure (target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, _type:GLenum; pixels: PGLvoid); cdecl;
83 es_glTexSubImage2D: procedure (target: GLenum; level: GLint; xoffset, yoffset: GLint; width, height: GLsizei; format, _type: GLenum; pixels: PGLvoid); cdecl;
84 es_glDeleteTextures: procedure (n: GLsizei; textures: PGLuint); cdecl;
86 es_glGenFramebuffers: procedure (n: GLsizei; framebuffers: PGLuint); cdecl;
87 es_glBindFramebuffer: procedure (target: GLenum; framebuffer: GLuint); cdecl;
88 es_glFramebufferTexture2D: procedure (target, attachment, textarget: GLenum; texture: GLuint; level: GLint); cdecl;
89 es_glFramebufferRenderbuffer: procedure (target, attachment, rbotarget: GLenum; rbo: GLuint); cdecl;
90 es_glCheckFramebufferStatus: function (framebuffer: GLuint): GLenum; cdecl;
91 es_glDeleteFramebuffers: procedure (n: GLsizei; const framebuffers: PGLuint); cdecl;
93 es_glGenRenderbuffers: procedure (n: GLsizei; framebuffers: PGLuint); cdecl;
94 es_glBindRenderbuffer: procedure (target: GLenum; renderbuffer: GLuint); cdecl;
95 es_glRenderbufferStorage: procedure (target, internalformat: GLenum; w, h: GLsizei); cdecl;
96 es_glDeleteRenderbuffers: procedure (n: GLsizei; const renderbuffers: PGLuint); cdecl;
98 procedure glEnable(cap: GLenum);
99 begin
100 es_glEnable(cap);
101 end;
103 procedure glDisable(cap: GLenum);
104 begin
105 es_glDisable(cap);
106 end;
108 function glIsEnabled(cap: GLenum): GLboolean;
109 begin
110 result := es_glIsEnabled(cap);
111 end;
113 function glGetString(name: GLenum): PChar;
114 begin
115 result := es_glGetString(name);
116 end;
118 procedure glClearColor(red, green, blue, alpha: GLclampf);
119 begin
120 es_glClearColor(red, green, blue, alpha);
121 end;
123 procedure glClear(mask: GLbitfield);
124 begin
125 es_glClear(mask);
126 end;
128 procedure glAlphaFunc(func: GLenum; ref: GLclampf);
129 begin
130 es_glAlphaFunc(func, ref);
131 end;
133 procedure glBlendFunc(sfactor, dfactor: GLenum);
134 begin
135 es_glBlendFunc(sfactor, dfactor);
136 end;
138 procedure glPointSize(size: GLfloat);
139 begin
140 es_glPointSize(size);
141 end;
143 procedure glLineWidth(width: GLfloat);
144 begin
145 es_glLineWidth(width);
146 end;
148 procedure glGetIntegerv(pname: GLenum; params: PGLint);
149 begin
150 es_glGetIntegerv(pname, params);
151 end;
153 procedure glFlush;
154 begin
155 es_glFlush;
156 end;
158 procedure glFinish;
159 begin
160 es_glFinish;
161 end;
167 procedure glBegin(mode: GLenum);
168 begin
169 assert(cmds.mode = GL_INVALID_ENUM);
170 assert((mode = GL_POINTS) or (mode = GL_LINES) or (mode = GL_QUADS));
171 cmds.mode := mode;
172 SetLength(cmds.v, 0);
173 SetLength(cmds.c, 0);
174 SetLength(cmds.t, 0);
175 end;
177 procedure glEnd;
178 begin
179 assert(cmds.mode <> GL_INVALID_ENUM);
180 assert(Length(cmds.v) mod ValPerVertex = 0);
181 assert(Length(cmds.c) mod ValPerColor = 0);
182 assert(Length(cmds.t) mod ValPerCoord = 0);
183 if Length(cmds.c) <> 0 then
184 assert(Length(cmds.v) div ValPerVertex = Length(cmds.c) div ValPerColor);
185 if Length(cmds.t) <> 0 then
186 assert(Length(cmds.v) div ValPerVertex = Length(cmds.t) div ValPerCoord);
188 es_glVertexPointer(ValPerVertex, GL_FLOAT, 0, @cmds.v[0]);
189 es_glColorPointer(ValPerColor, GL_FLOAT, 0, @cmds.c[0]);
190 es_glTexCoordPointer(ValPerCoord, GL_FLOAT, 0, @cmds.t[0]);
191 es_glEnableClientState(GL_VERTEX_ARRAY);
192 es_glEnableClientState(GL_COLOR_ARRAY);
193 es_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
194 es_glDisableClientState(GL_NORMAL_ARRAY);
196 if Length(cmds.c) = 0 then
197 es_glDisableClientState(GL_COLOR_ARRAY);
198 if Length(cmds.t) = 0 then
199 es_glDisableClientState(GL_TEXTURE_COORD_ARRAY);
201 if cmds.mode = GL_QUADS then
202 es_glDrawArrays(GL_TRIANGLES, 0, Length(cmds.v) div ValPerVertex)
203 else
204 es_glDrawArrays(cmds.mode, 0, Length(cmds.v) div ValPerVertex);
206 SetLength(cmds.v, 0);
207 SetLength(cmds.c, 0);
208 SetLength(cmds.t, 0);
209 cmds.mode := GL_INVALID_ENUM;
210 end;
212 (* ---------- begin internals ---------- *)
214 procedure AddFloatRaw (var x: TArrayFloat; f: GLfloat);
215 var i: Integer;
216 begin
217 i := Length(x);
218 SetLength(x, i + 1);
219 x[i] := f;
220 end;
222 procedure AddFloatX (var x: TArrayFloat; v: array of GLfloat); inline;
223 var i, j, vpx: Integer;
224 begin
225 i := Length(x);
226 vpx := Length(v);
227 if (cmds.mode = GL_QUADS) and (i div vpx mod 4 = 3) then
228 begin
229 for j := 0 to vpx - 1 do
230 AddFloatRaw(x, x[i - 3*vpx + j]);
231 for j := 0 to vpx - 1 do
232 AddFloatRaw(x, x[i - 1*vpx + j]);
233 end;
234 for j := 0 to vpx - 1 do
235 AddFloatRaw(x, v[j]);
236 end;
238 (* ---------- end internals ---------- *)
240 procedure glVertex2f(x, y: GLfloat);
241 begin
242 AddFloatX(cmds.v, [x, y]);
243 end;
245 procedure glVertex2i(x, y: GLint);
246 begin
247 AddFloatX(cmds.v, [x, y]);
248 end;
250 procedure glColor4f(red, green, blue, alpha: GLfloat);
251 begin
252 if cmds.mode = GL_INVALID_ENUM then
253 es_glColor4f(red, green, blue, alpha)
254 else
255 AddFloatX(cmds.c, [red, green, blue, alpha])
256 end;
258 procedure glColor4ub(red, green, blue, alpha: GLubyte);
259 begin
260 glColor4f(red / 255, green / 255, blue / 255, alpha / 255)
261 end;
263 procedure glColor3ub(red, green, blue: GLubyte);
264 begin
265 glColor4f(red / 255, green / 255, blue / 255, 255)
266 end;
268 procedure glTexCoord2f(s, t: GLfloat);
269 begin
270 AddFloatX(cmds.t, [s, t]);
271 end;
273 procedure glTexCoord2i(s, t: GLint);
274 begin
275 AddFloatX(cmds.t, [s, t]);
276 end;
284 procedure glReadPixels(x, y: GLint; width, height: GLsizei; format, atype: GLenum; pixels: Pointer);
285 begin
286 es_glReadPixels(x, y, width, height, format, atype, pixels);
287 end;
294 procedure glLoadIdentity;
295 begin
296 es_glLoadIdentity;
297 end;
299 procedure glMatrixMode(mode: GLenum);
300 begin
301 es_glMatrixMode(mode);
302 end;
304 procedure glLoadMatrixd(const m: PGLdouble);
305 var
306 i: Integer;
307 n: array [0..15] of GLfloat;
308 begin
309 for i := 0 to 15 do
310 n[i] := m[i];
311 es_glLoadMatrixf(@n[0]);
312 end;
314 procedure glPushMatrix;
315 begin
316 es_glPushMatrix;
317 end;
319 procedure glPopMatrix;
320 begin
321 es_glPopMatrix;
322 end;
324 procedure glTranslatef(x, y, z: GLfloat);
325 begin
326 es_glTranslatef(x, y, z);
327 end;
329 procedure glRotatef(angle, x, y, z: GLfloat);
330 begin
331 es_glRotatef(angle, x, y, z);
332 end;
334 procedure glScalef(x, y, z: GLfloat);
335 begin
336 es_glScalef(x, y, z);
337 end;
344 procedure glViewport(x, y: GLint; width, height: GLsizei);
345 begin
346 es_glViewport(x, y, width, height);
347 end;
349 procedure glScissor(x, y: GLint; width, height: GLsizei);
350 begin
351 es_glScissor(x, y, width, height);
352 end;
354 procedure glStencilMask(mask: GLuint);
355 begin
356 es_glStencilMask(mask);
357 end;
359 procedure glStencilFunc(func: GLenum; ref: GLint; mask: GLuint);
360 begin
361 es_glStencilFunc(func, ref, mask);
362 end;
364 procedure glStencilOp(fail, zfail, zpass: GLenum);
365 begin
366 es_glStencilOp(fail, zfail, zpass);
367 end;
369 procedure glColorMask(red, green, blue, alpha: GLboolean);
370 begin
371 es_glColorMask(red, green, blue, alpha);
372 end;
379 procedure glBindTexture(target: GLenum; texture: GLuint);
380 begin
381 es_glBindTexture(target, texture);
382 end;
384 procedure glGenTextures(n: GLsizei; textures: PGLuint);
385 begin
386 es_glGenTextures(n, textures);
387 end;
389 procedure glTexEnvi(target: GLenum; pname: GLenum; param: GLint);
390 begin
391 es_glTexEnvi(target, pname, param);
392 end;
394 procedure glTexParameterf(target: GLenum; pname: GLenum; param: GLfloat);
395 begin
396 es_glTexParameterf(target, pname, param);
397 end;
399 procedure glTexParameteri(target: GLenum; pname: GLenum; param: GLint);
400 begin
401 es_glTexParameteri(target, pname, param);
402 end;
404 procedure glTexImage2D(target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer);
405 begin
406 es_glTexImage2D(target, level, internalformat, width, height, border, format, atype, pixels);
407 end;
409 procedure glTexSubImage2D(target: GLenum; level, xoffset, yoffset: GLint; width, height: GLsizei; format, atype: GLenum; const pixels: Pointer);
410 begin
411 es_glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, atype, pixels);
412 end;
414 procedure glDeleteTextures(n: GLsizei; const textures: PGLuint);
415 begin
416 es_glDeleteTextures(n, textures);
417 end;
424 procedure glGenFramebuffers(n: GLsizei; framebuffers: PGLuint);
425 begin
426 es_glGenFramebuffers(n, framebuffers);
427 end;
429 procedure glBindFramebuffer(target: GLenum; framebuffer: GLuint);
430 begin
431 es_glBindFramebuffer(target, framebuffer);
432 end;
434 procedure glFramebufferTexture2D(target, attachment, textarget: GLenum; texture: GLuint; level: GLint);
435 begin
436 es_glFramebufferTexture2D(target, attachment, textarget, texture, level);
437 end;
439 procedure glFramebufferRenderbuffer(target, attachment, rbotarget: GLenum; rbo: GLuint);
440 begin
441 es_glFramebufferRenderbuffer(target, attachment, rbotarget, rbo);
442 end;
444 function glCheckFramebufferStatus(framebuffer: GLuint): GLenum;
445 begin
446 result := es_glCheckFramebufferStatus(framebuffer);
447 end;
449 procedure glDeleteFramebuffers(n: GLsizei; const framebuffers: PGLuint);
450 begin
451 es_glDeleteFramebuffers(n, framebuffers);
452 end;
454 procedure glGenRenderbuffers(n: GLsizei; renderbuffers: PGLuint);
455 begin
456 es_glGenRenderbuffers(n, renderbuffers);
457 end;
459 procedure glBindRenderbuffer(target: GLenum; renderbuffer: GLuint);
460 begin
461 es_glBindRenderbuffer(target, renderbuffer);
462 end;
464 procedure glRenderbufferStorage(target, internalformat: GLenum; w, h: GLsizei);
465 begin
466 es_glRenderbufferStorage(target, internalformat, w, h);
467 end;
469 procedure glDeleteRenderbuffers(n: GLsizei; const renderbuffers: PGLuint);
470 begin
471 es_glDeleteRenderbuffers(n, renderbuffers);
472 end;
479 procedure nogl_Init;
480 begin
481 es_glVertexPointer := SDL_GL_GetProcAddress('glVertexPointer');
482 es_glColorPointer := SDL_GL_GetProcAddress('glColorPointer');
483 es_glTexCoordPointer := SDL_GL_GetProcAddress('glTexCoordPointer');
484 es_glEnableClientState := SDL_GL_GetProcAddress('glEnableClientState');
485 es_glDisableClientState := SDL_GL_GetProcAddress('glDisableClientState');
486 es_glDrawArrays := SDL_GL_GetProcAddress('glDrawArrays');
487 // es_glActiveTexture := SDL_GL_GetProcAddress('glActiveTexture');
488 // es_glClientActiveTexture := SDL_GL_GetProcAddress('glClientActiveTexture');
489 es_glColor4f := SDL_GL_GetProcAddress('glColor4f');
491 es_glEnable := SDL_GL_GetProcAddress('glEnable');
492 es_glDisable := SDL_GL_GetProcAddress('glDisable');
493 es_glIsEnabled := SDL_GL_GetProcAddress('glIsEnabled');
494 es_glGetString := SDL_GL_GetProcAddress('glGetString');
495 es_glClearColor := SDL_GL_GetProcAddress('glClearColor');
496 es_glClear := SDL_GL_GetProcAddress('glClear');
497 es_glAlphaFunc := SDL_GL_GetProcAddress('glAlphaFunc');
498 es_glBlendFunc := SDL_GL_GetProcAddress('glBlendFunc');
499 es_glPointSize := SDL_GL_GetProcAddress('glPointSize');
500 es_glLineWidth := SDL_GL_GetProcAddress('glLineWidth');
501 es_glGetIntegerv := SDL_GL_GetProcAddress('glGetIntegerv');
502 es_glFlush := SDL_GL_GetProcAddress('glFlush');
503 es_glFinish := SDL_GL_GetProcAddress('glFinish');
505 es_glLoadIdentity := SDL_GL_GetProcAddress('glLoadIdentity');
506 es_glMatrixMode := SDL_GL_GetProcAddress('glMatrixMode');
507 es_glLoadMatrixf := SDL_GL_GetProcAddress('glLoadMatrixf');
508 es_glPushMatrix := SDL_GL_GetProcAddress('glPushMatrix');
509 es_glPopMatrix := SDL_GL_GetProcAddress('glPopMatrix');
510 es_glTranslatef := SDL_GL_GetProcAddress('glTranslatef');
511 es_glRotatef := SDL_GL_GetProcAddress('glRotatef');
512 es_glScalef := SDL_GL_GetProcAddress('glScalef');
514 es_glReadPixels := SDL_GL_GetProcAddress('glReadPixels');
516 es_glViewport := SDL_GL_GetProcAddress('glViewport');
517 es_glScissor := SDL_GL_GetProcAddress('glScissor');
518 es_glStencilMask := SDL_GL_GetProcAddress('glStencilMask');
519 es_glStencilFunc := SDL_GL_GetProcAddress('glStencilFunc');
520 es_glStencilOp := SDL_GL_GetProcAddress('glStencilOp');
521 es_glColorMask := SDL_GL_GetProcAddress('glColorMask');
523 es_glBindTexture := SDL_GL_GetProcAddress('glBindTexture');
524 es_glGenTextures := SDL_GL_GetProcAddress('glGenTextures');
525 es_glTexEnvi := SDL_GL_GetProcAddress('glTexEnvi');
526 es_glTexParameterf := SDL_GL_GetProcAddress('glTexParameterf');
527 es_glTexParameteri := SDL_GL_GetProcAddress('glTexParameteri');
528 es_glTexImage2D := SDL_GL_GetProcAddress('glTexImage2D');
529 es_glTexSubImage2D := SDL_GL_GetProcAddress('glTexSubImage2D');
530 es_glDeleteTextures := SDL_GL_GetProcAddress('glDeleteTextures');
532 es_glGenFramebuffers := SDL_GL_GetProcAddress('glGenFramebuffersOES');
533 es_glBindFramebuffer := SDL_GL_GetProcAddress('glBindFramebufferOES');
534 es_glFramebufferTexture2D := SDL_GL_GetProcAddress('glFramebufferTexture2DOES');;
535 es_glFramebufferRenderbuffer := SDL_GL_GetProcAddress('glFramebufferRenderbufferOES');
536 es_glCheckFramebufferStatus := SDL_GL_GetProcAddress('glCheckFramebufferStatusOES');
537 es_glDeleteFramebuffers := SDL_GL_GetProcAddress('glDeleteFramebuffersOES');
539 es_glGenRenderbuffers := SDL_GL_GetProcAddress('glGenRenderbuffersOES');
540 es_glBindRenderbuffer := SDL_GL_GetProcAddress('glBindRenderbufferOES');
541 es_glRenderbufferStorage := SDL_GL_GetProcAddress('glRenderbufferStorageOES');
542 es_glDeleteRenderbuffers := SDL_GL_GetProcAddress('glDeleteRenderbuffersOES');
544 cmds.mode := GL_INVALID_ENUM
545 end;
547 procedure nogl_Quit;
548 begin
549 es_glVertexPointer := nil;
550 es_glColorPointer := nil;
551 es_glTexCoordPointer := nil;
552 es_glEnableClientState := nil;
553 es_glDisableClientState := nil;
554 es_glDrawArrays := nil;
555 // es_glActiveTexture := nil;
556 // es_glClientActiveTexture := nil;
557 es_glColor4f := nil;
559 es_glEnable := nil;
560 es_glDisable := nil;
561 es_glIsEnabled := nil;
562 es_glGetString := nil;
563 es_glClearColor := nil;
564 es_glClear := nil;
565 es_glAlphaFunc := nil;
566 es_glBlendFunc := nil;
567 es_glPointSize := nil;
568 es_glLineWidth := nil;
569 es_glGetIntegerv := nil;
570 es_glFlush := nil;
571 es_glFinish := nil;
573 es_glLoadIdentity := nil;
574 es_glMatrixMode := nil;
575 es_glLoadMatrixf := nil;
576 es_glPushMatrix := nil;
577 es_glPopMatrix := nil;
578 es_glTranslatef := nil;
579 es_glRotatef := nil;
580 es_glScalef := nil;
582 es_glReadPixels := nil;
584 es_glViewport := nil;
585 es_glScissor := nil;
586 es_glStencilMask := nil;
587 es_glStencilFunc := nil;
588 es_glStencilOp := nil;
589 es_glColorMask := nil;
591 es_glBindTexture := nil;
592 es_glGenTextures := nil;
593 es_glTexEnvi := nil;
594 es_glTexParameterf := nil;
595 es_glTexParameteri := nil;
596 es_glTexImage2D := nil;
597 es_glTexSubImage2D := nil;
598 es_glDeleteTextures := nil;
600 es_glGenFramebuffers := nil;
601 es_glBindFramebuffer := nil;
602 es_glFramebufferTexture2D := nil;
603 es_glFramebufferRenderbuffer := nil;
604 es_glCheckFramebufferStatus := nil;
605 es_glDeleteFramebuffers := nil;
607 es_glGenRenderbuffers := nil;
608 es_glBindRenderbuffer := nil;
609 es_glRenderbufferStorage := nil;
610 es_glDeleteRenderbuffers := nil;
611 end;
613 function nogl_ExtensionSupported(ext: string): Boolean;
614 begin
615 if (extList = '') and Assigned(es_glGetString) then
616 extList := glGetString(GL_EXTENSIONS);
617 result := pos(ext, extList) <> 0;
618 end;
620 initialization