ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/Client.xs
(Generate patch)

Comparing deliantra/Deliantra-Client/Client.xs (file contents):
Revision 1.62 by root, Mon Apr 24 02:41:47 2006 UTC vs.
Revision 1.71 by root, Fri May 5 19:05:47 2006 UTC

40#define FOW_DARKNESS 32 40#define FOW_DARKNESS 32
41 41
42#define MAP_EXTEND_X 32 42#define MAP_EXTEND_X 32
43#define MAP_EXTEND_Y 512 43#define MAP_EXTEND_Y 512
44 44
45#define MIN_FONT_HEIGHT 8 45#define MIN_FONT_HEIGHT 10
46
47#define GL_CALL(type,func,args) \
48 { \
49 static int init_; \
50 static type fptr_; \
51 \
52 if (!init_) \
53 { \
54 init_ = 1; \
55 fptr_ = (type)SDL_GL_GetProcAddress (# func); \
56 } \
57 \
58 if (fptr_) \
59 fptr_ args; \
60 }
46 61
47typedef Mix_Chunk *CFClient__MixChunk; 62typedef Mix_Chunk *CFClient__MixChunk;
48typedef Mix_Music *CFClient__MixMusic; 63typedef Mix_Music *CFClient__MixMusic;
49 64
50typedef PangoFontDescription *CFClient__Font; 65typedef PangoFontDescription *CFClient__Font;
250 SDL_UserEvent ev; 265 SDL_UserEvent ev;
251 266
252 ev.type = SDL_USEREVENT; 267 ev.type = SDL_USEREVENT;
253 ev.code = 0; 268 ev.code = 0;
254 ev.data1 = 0; 269 ev.data1 = 0;
270 ev.data2 = 0;
271
272 SDL_PushEvent ((SDL_Event *)&ev);
273}
274
275static void
276channel_finished (int channel)
277{
278 SDL_UserEvent ev;
279
280 ev.type = SDL_USEREVENT;
281 ev.code = 1;
282 ev.data1 = channel;
255 ev.data2 = 0; 283 ev.data2 = 0;
256 284
257 SDL_PushEvent ((SDL_Event *)&ev); 285 SDL_PushEvent ((SDL_Event *)&ev);
258} 286}
259 287
442 470
443 while (SDL_PollEvent (&ev)) 471 while (SDL_PollEvent (&ev))
444 { 472 {
445 HV *hv = newHV (); 473 HV *hv = newHV ();
446 hv_store (hv, "type", 4, newSViv (ev.type), 0); 474 hv_store (hv, "type", 4, newSViv (ev.type), 0);
475
447 switch (ev.type) 476 switch (ev.type)
448 { 477 {
449 case SDL_KEYDOWN: 478 case SDL_KEYDOWN:
450 case SDL_KEYUP: 479 case SDL_KEYUP:
451 hv_store (hv, "state", 5, newSViv (ev.key.state), 0); 480 hv_store (hv, "state", 5, newSViv (ev.key.state), 0);
471 case SDL_MOUSEBUTTONUP: 500 case SDL_MOUSEBUTTONUP:
472 hv_store (hv, "button", 6, newSViv (ev.button.button), 0); 501 hv_store (hv, "button", 6, newSViv (ev.button.button), 0);
473 hv_store (hv, "state", 5, newSViv (ev.button.state), 0); 502 hv_store (hv, "state", 5, newSViv (ev.button.state), 0);
474 hv_store (hv, "x", 1, newSViv (ev.button.x), 0); 503 hv_store (hv, "x", 1, newSViv (ev.button.x), 0);
475 hv_store (hv, "y", 1, newSViv (ev.button.y), 0); 504 hv_store (hv, "y", 1, newSViv (ev.button.y), 0);
505 break;
476 } 506 }
477 507
478 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv))); 508 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv)));
479 } 509 }
480} 510}
481 511
482int 512int
483Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512) 513Mix_OpenAudio (int frequency = 22050, int format = MIX_DEFAULT_FORMAT, int channels = 1, int chunksize = 512)
484 POSTCALL: 514 POSTCALL:
485 Mix_HookMusicFinished (music_finished); 515 Mix_HookMusicFinished (music_finished);
516 Mix_ChannelFinished (channel_finished);
486 517
487void 518void
488Mix_CloseAudio () 519Mix_CloseAudio ()
489 520
490int 521int
604 PUSHs (sv_2mortal (newSViv (b / y))); 635 PUSHs (sv_2mortal (newSViv (b / y)));
605 PUSHs (sv_2mortal (newSViv (a / y))); 636 PUSHs (sv_2mortal (newSViv (a / y)));
606} 637}
607 638
608void 639void
640error (char *message)
641 CODE:
642#ifdef _WIN32
643 MessageBox (0, message, "Crossfire+ Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
644#else
645 fprintf (stderr, "ERROR: %s\n", message);
646#endif
647
648void
609fatal (char *message) 649fatal (char *message)
610 CODE: 650 CODE:
611#ifdef _WIN32 651#ifdef _WIN32
612 MessageBox (0, message, "Crossfire+ Fatal Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND); 652 MessageBox (0, message, "Crossfire+ Fatal Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
613#else 653#else
616 exit (1); 656 exit (1);
617 657
618MODULE = CFClient PACKAGE = CFClient::Font 658MODULE = CFClient PACKAGE = CFClient::Font
619 659
620CFClient::Font 660CFClient::Font
621new_from_file (SV *class, char *path) 661new_from_file (SV *class, char *path, int id = 0)
622 CODE: 662 CODE:
623{ 663{
624 int count; 664 int count;
625 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, 0, 0, &count); 665 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, id, 0, &count);
626 RETVAL = pango_fc_font_description_from_pattern (pattern, 0); 666 RETVAL = pango_fc_font_description_from_pattern (pattern, 0);
627 FcPatternDestroy (pattern); 667 FcPatternDestroy (pattern);
628} 668}
629 OUTPUT: 669 OUTPUT:
630 RETVAL 670 RETVAL
1324 } *civ, const_iv[] = { 1364 } *civ, const_iv[] = {
1325# define const_iv(name) { # name, (IV)name } 1365# define const_iv(name) { # name, (IV)name }
1326 const_iv (GL_COLOR_MATERIAL), 1366 const_iv (GL_COLOR_MATERIAL),
1327 const_iv (GL_SMOOTH), 1367 const_iv (GL_SMOOTH),
1328 const_iv (GL_FLAT), 1368 const_iv (GL_FLAT),
1369 const_iv (GL_DITHER),
1329 const_iv (GL_BLEND), 1370 const_iv (GL_BLEND),
1371 const_iv (GL_SCISSOR_TEST),
1330 const_iv (GL_AND), 1372 const_iv (GL_AND),
1373 const_iv (GL_ONE),
1374 const_iv (GL_ZERO),
1331 const_iv (GL_SRC_ALPHA), 1375 const_iv (GL_SRC_ALPHA),
1376 const_iv (GL_SRC_ALPHA_SATURATE),
1332 const_iv (GL_ONE_MINUS_SRC_ALPHA), 1377 const_iv (GL_ONE_MINUS_SRC_ALPHA),
1378 const_iv (GL_ONE_MINUS_DST_ALPHA),
1333 const_iv (GL_RGB), 1379 const_iv (GL_RGB),
1334 const_iv (GL_RGBA), 1380 const_iv (GL_RGBA),
1335 const_iv (GL_UNSIGNED_BYTE), 1381 const_iv (GL_UNSIGNED_BYTE),
1336 const_iv (GL_ALPHA4),
1337 const_iv (GL_ALPHA), 1382 const_iv (GL_ALPHA),
1338 const_iv (GL_FLOAT), 1383 const_iv (GL_FLOAT),
1339 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV), 1384 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV),
1340 const_iv (GL_COMPILE), 1385 const_iv (GL_COMPILE),
1341 const_iv (GL_TEXTURE_1D), 1386 const_iv (GL_TEXTURE_1D),
1353 const_iv (GL_NEAREST_MIPMAP_NEAREST), 1398 const_iv (GL_NEAREST_MIPMAP_NEAREST),
1354 const_iv (GL_LINEAR_MIPMAP_NEAREST), 1399 const_iv (GL_LINEAR_MIPMAP_NEAREST),
1355 const_iv (GL_NEAREST_MIPMAP_LINEAR), 1400 const_iv (GL_NEAREST_MIPMAP_LINEAR),
1356 const_iv (GL_LINEAR_MIPMAP_LINEAR), 1401 const_iv (GL_LINEAR_MIPMAP_LINEAR),
1357 const_iv (GL_GENERATE_MIPMAP), 1402 const_iv (GL_GENERATE_MIPMAP),
1358 const_iv (GL_LINEAR),
1359 const_iv (GL_MODULATE), 1403 const_iv (GL_MODULATE),
1404 const_iv (GL_DECAL),
1360 const_iv (GL_REPLACE), 1405 const_iv (GL_REPLACE),
1361 const_iv (GL_COLOR_BUFFER_BIT), 1406 const_iv (GL_COLOR_BUFFER_BIT),
1362 const_iv (GL_PROJECTION), 1407 const_iv (GL_PROJECTION),
1363 const_iv (GL_MODELVIEW), 1408 const_iv (GL_MODELVIEW),
1364 const_iv (GL_COLOR_LOGIC_OP), 1409 const_iv (GL_COLOR_LOGIC_OP),
1410 const_iv (GL_SEPARABLE_2D),
1365 const_iv (GL_CONVOLUTION_2D), 1411 const_iv (GL_CONVOLUTION_2D),
1366 const_iv (GL_CONVOLUTION_BORDER_MODE), 1412 const_iv (GL_CONVOLUTION_BORDER_MODE),
1367 const_iv (GL_CONSTANT_BORDER), 1413 const_iv (GL_CONSTANT_BORDER),
1368 const_iv (GL_LINES), 1414 const_iv (GL_LINES),
1369 const_iv (GL_QUADS), 1415 const_iv (GL_QUADS),
1394 1440
1395void glBlendFunc (int sfactor, int dfactor) 1441void glBlendFunc (int sfactor, int dfactor)
1396 1442
1397void glLogicOp (int opcode) 1443void glLogicOp (int opcode)
1398 1444
1445void glColorMask (int red, int green, int blue, int alpha)
1446
1399void glMatrixMode (int mode) 1447void glMatrixMode (int mode)
1400 1448
1401void glPushMatrix () 1449void glPushMatrix ()
1402 1450
1403void glPopMatrix () 1451void glPopMatrix ()
1404 1452
1405void glLoadIdentity () 1453void glLoadIdentity ()
1406 1454
1455# near and far are due to microsofts buggy c compiler
1407void glOrtho (double left, double right, double bottom, double top, double near, double far) 1456void glOrtho (double left, double right, double bottom, double top, double near_, double far_)
1408 1457
1409void glViewport (int x, int y, int width, int height) 1458void glViewport (int x, int y, int width, int height)
1459
1460void glScissor (int x, int y, int width, int height)
1410 1461
1411void glTranslate (float x, float y, float z = 0.) 1462void glTranslate (float x, float y, float z = 0.)
1412 CODE: 1463 CODE:
1413 glTranslatef (x, y, z); 1464 glTranslatef (x, y, z);
1414 1465
1425void glEnd () 1476void glEnd ()
1426 1477
1427void glColor (float r, float g, float b, float a = 1.0) 1478void glColor (float r, float g, float b, float a = 1.0)
1428 PROTOTYPE: @ 1479 PROTOTYPE: @
1429 CODE: 1480 CODE:
1430 glColor4f (r, g, b, a); 1481 glColor4ub (r * 255., g * 255., b * 255., a * 255.);
1431 1482
1432void glVertex (float x, float y, float z = 0.) 1483void glVertex (float x, float y, float z = 0.)
1433 CODE: 1484 CODE:
1434 glVertex3f (x, y, z); 1485 glVertex3f (x, y, z);
1435 1486
1447 1498
1448void glBindTexture (int target, int name) 1499void glBindTexture (int target, int name)
1449 1500
1450void glConvolutionParameter (int target, int pname, float params) 1501void glConvolutionParameter (int target, int pname, float params)
1451 CODE: 1502 CODE:
1452 glConvolutionParameterf (target, pname, params); 1503 GL_CALL (PFNGLCONVOLUTIONPARAMETERFEXTPROC, glConvolutionParameterf, (target, pname, params));
1453 1504
1454void glConvolutionFilter2D (int target, int internalformat, int width, int height, int format, int type, char *data) 1505void glConvolutionFilter2D (int target, int internalformat, int width, int height, int format, int type, char *data)
1506 CODE:
1507 GL_CALL (PFNGLCONVOLUTIONFILTER2DEXTPROC, glConvolutionFilter2D,
1508 (target, internalformat, width, height, format, type, data));
1509
1510void glSeparableFilter2D (int target, int internalformat, int width, int height, int format, int type, char *row, char *column)
1511 CODE:
1512 GL_CALL (PFNGLSEPARABLEFILTER2DEXTPROC, glSeparableFilter2D,
1513 (target, internalformat, width, height, format, type, row, column));
1455 1514
1456void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data) 1515void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data)
1457 1516
1458void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border) 1517void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)
1518
1519void glRasterPos (int x, int y)
1520 CODE:
1521 glRasterPos2i (x, y);
1522
1523void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR)
1459 1524
1460int glGenTexture () 1525int glGenTexture ()
1461 CODE: 1526 CODE:
1462{ 1527{
1463 GLuint name; 1528 GLuint name;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines