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.61 by root, Sun Apr 23 21:47:30 2006 UTC vs.
Revision 1.70 by root, Sun Apr 30 09:21: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;
442 457
443 while (SDL_PollEvent (&ev)) 458 while (SDL_PollEvent (&ev))
444 { 459 {
445 HV *hv = newHV (); 460 HV *hv = newHV ();
446 hv_store (hv, "type", 4, newSViv (ev.type), 0); 461 hv_store (hv, "type", 4, newSViv (ev.type), 0);
462
447 switch (ev.type) 463 switch (ev.type)
448 { 464 {
449 case SDL_KEYDOWN: 465 case SDL_KEYDOWN:
450 case SDL_KEYUP: 466 case SDL_KEYUP:
451 hv_store (hv, "state", 5, newSViv (ev.key.state), 0); 467 hv_store (hv, "state", 5, newSViv (ev.key.state), 0);
471 case SDL_MOUSEBUTTONUP: 487 case SDL_MOUSEBUTTONUP:
472 hv_store (hv, "button", 6, newSViv (ev.button.button), 0); 488 hv_store (hv, "button", 6, newSViv (ev.button.button), 0);
473 hv_store (hv, "state", 5, newSViv (ev.button.state), 0); 489 hv_store (hv, "state", 5, newSViv (ev.button.state), 0);
474 hv_store (hv, "x", 1, newSViv (ev.button.x), 0); 490 hv_store (hv, "x", 1, newSViv (ev.button.x), 0);
475 hv_store (hv, "y", 1, newSViv (ev.button.y), 0); 491 hv_store (hv, "y", 1, newSViv (ev.button.y), 0);
492 break;
476 } 493 }
477 494
478 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv))); 495 XPUSHs (sv_2mortal (newRV_noinc ((SV *)hv)));
479 } 496 }
480} 497}
604 PUSHs (sv_2mortal (newSViv (b / y))); 621 PUSHs (sv_2mortal (newSViv (b / y)));
605 PUSHs (sv_2mortal (newSViv (a / y))); 622 PUSHs (sv_2mortal (newSViv (a / y)));
606} 623}
607 624
608void 625void
626error (char *message)
627 CODE:
628#ifdef _WIN32
629 MessageBox (0, message, "Crossfire+ Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
630#else
631 fprintf (stderr, "ERROR: %s\n", message);
632#endif
633
634void
609fatal (char *message) 635fatal (char *message)
610 CODE: 636 CODE:
611#ifdef _WIN32 637#ifdef _WIN32
612 MessageBox (0, message, "Crossfire+ Fatal Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND); 638 MessageBox (0, message, "Crossfire+ Fatal Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
613#else 639#else
616 exit (1); 642 exit (1);
617 643
618MODULE = CFClient PACKAGE = CFClient::Font 644MODULE = CFClient PACKAGE = CFClient::Font
619 645
620CFClient::Font 646CFClient::Font
621new_from_file (SV *class, char *path) 647new_from_file (SV *class, char *path, int id = 0)
622 CODE: 648 CODE:
623{ 649{
624 int count; 650 int count;
625 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, 0, 0, &count); 651 FcPattern *pattern = FcFreeTypeQuery ((const FcChar8 *)path, id, 0, &count);
626 RETVAL = pango_fc_font_description_from_pattern (pattern, 0); 652 RETVAL = pango_fc_font_description_from_pattern (pattern, 0);
627 FcPatternDestroy (pattern); 653 FcPatternDestroy (pattern);
628} 654}
629 OUTPUT: 655 OUTPUT:
630 RETVAL 656 RETVAL
1324 } *civ, const_iv[] = { 1350 } *civ, const_iv[] = {
1325# define const_iv(name) { # name, (IV)name } 1351# define const_iv(name) { # name, (IV)name }
1326 const_iv (GL_COLOR_MATERIAL), 1352 const_iv (GL_COLOR_MATERIAL),
1327 const_iv (GL_SMOOTH), 1353 const_iv (GL_SMOOTH),
1328 const_iv (GL_FLAT), 1354 const_iv (GL_FLAT),
1355 const_iv (GL_DITHER),
1329 const_iv (GL_BLEND), 1356 const_iv (GL_BLEND),
1357 const_iv (GL_SCISSOR_TEST),
1330 const_iv (GL_AND), 1358 const_iv (GL_AND),
1359 const_iv (GL_ONE),
1360 const_iv (GL_ZERO),
1331 const_iv (GL_SRC_ALPHA), 1361 const_iv (GL_SRC_ALPHA),
1362 const_iv (GL_SRC_ALPHA_SATURATE),
1332 const_iv (GL_ONE_MINUS_SRC_ALPHA), 1363 const_iv (GL_ONE_MINUS_SRC_ALPHA),
1364 const_iv (GL_ONE_MINUS_DST_ALPHA),
1333 const_iv (GL_RGB), 1365 const_iv (GL_RGB),
1334 const_iv (GL_RGBA), 1366 const_iv (GL_RGBA),
1335 const_iv (GL_UNSIGNED_BYTE), 1367 const_iv (GL_UNSIGNED_BYTE),
1336 const_iv (GL_ALPHA4),
1337 const_iv (GL_ALPHA), 1368 const_iv (GL_ALPHA),
1338 const_iv (GL_FLOAT), 1369 const_iv (GL_FLOAT),
1339 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV), 1370 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV),
1340 const_iv (GL_COMPILE), 1371 const_iv (GL_COMPILE),
1341 const_iv (GL_TEXTURE_1D), 1372 const_iv (GL_TEXTURE_1D),
1353 const_iv (GL_NEAREST_MIPMAP_NEAREST), 1384 const_iv (GL_NEAREST_MIPMAP_NEAREST),
1354 const_iv (GL_LINEAR_MIPMAP_NEAREST), 1385 const_iv (GL_LINEAR_MIPMAP_NEAREST),
1355 const_iv (GL_NEAREST_MIPMAP_LINEAR), 1386 const_iv (GL_NEAREST_MIPMAP_LINEAR),
1356 const_iv (GL_LINEAR_MIPMAP_LINEAR), 1387 const_iv (GL_LINEAR_MIPMAP_LINEAR),
1357 const_iv (GL_GENERATE_MIPMAP), 1388 const_iv (GL_GENERATE_MIPMAP),
1358 const_iv (GL_LINEAR),
1359 const_iv (GL_MODULATE), 1389 const_iv (GL_MODULATE),
1390 const_iv (GL_DECAL),
1360 const_iv (GL_REPLACE), 1391 const_iv (GL_REPLACE),
1361 const_iv (GL_COLOR_BUFFER_BIT), 1392 const_iv (GL_COLOR_BUFFER_BIT),
1362 const_iv (GL_PROJECTION), 1393 const_iv (GL_PROJECTION),
1363 const_iv (GL_MODELVIEW), 1394 const_iv (GL_MODELVIEW),
1364 const_iv (GL_COLOR_LOGIC_OP), 1395 const_iv (GL_COLOR_LOGIC_OP),
1396 const_iv (GL_SEPARABLE_2D),
1365 const_iv (GL_CONVOLUTION_2D), 1397 const_iv (GL_CONVOLUTION_2D),
1366 const_iv (GL_CONVOLUTION_BORDER_MODE), 1398 const_iv (GL_CONVOLUTION_BORDER_MODE),
1367 const_iv (GL_CONSTANT_BORDER), 1399 const_iv (GL_CONSTANT_BORDER),
1368 const_iv (GL_LINES), 1400 const_iv (GL_LINES),
1369 const_iv (GL_QUADS), 1401 const_iv (GL_QUADS),
1394 1426
1395void glBlendFunc (int sfactor, int dfactor) 1427void glBlendFunc (int sfactor, int dfactor)
1396 1428
1397void glLogicOp (int opcode) 1429void glLogicOp (int opcode)
1398 1430
1431void glColorMask (int red, int green, int blue, int alpha)
1432
1399void glMatrixMode (int mode) 1433void glMatrixMode (int mode)
1400 1434
1401void glPushMatrix () 1435void glPushMatrix ()
1402 1436
1403void glPopMatrix () 1437void glPopMatrix ()
1404 1438
1405void glLoadIdentity () 1439void glLoadIdentity ()
1406 1440
1441# near and far are due to microsofts buggy c compiler
1407void glOrtho (double left, double right, double bottom, double top, double near, double far) 1442void glOrtho (double left, double right, double bottom, double top, double near_, double far_)
1408 1443
1409void glViewport (int x, int y, int width, int height) 1444void glViewport (int x, int y, int width, int height)
1445
1446void glScissor (int x, int y, int width, int height)
1410 1447
1411void glTranslate (float x, float y, float z = 0.) 1448void glTranslate (float x, float y, float z = 0.)
1412 CODE: 1449 CODE:
1413 glTranslatef (x, y, z); 1450 glTranslatef (x, y, z);
1414 1451
1415void glScale (float x, float y, float z) 1452void glScale (float x, float y, float z = 1.)
1416 CODE: 1453 CODE:
1417 glScalef (x, y, z); 1454 glScalef (x, y, z);
1418 1455
1419void glRotate (float angle, float x, float y, float z) 1456void glRotate (float angle, float x, float y, float z)
1420 CODE: 1457 CODE:
1425void glEnd () 1462void glEnd ()
1426 1463
1427void glColor (float r, float g, float b, float a = 1.0) 1464void glColor (float r, float g, float b, float a = 1.0)
1428 PROTOTYPE: @ 1465 PROTOTYPE: @
1429 CODE: 1466 CODE:
1430 glColor4f (r, g, b, a); 1467 glColor4ub (r * 255., g * 255., b * 255., a * 255.);
1431 1468
1432void glVertex (float x, float y, float z = 0.) 1469void glVertex (float x, float y, float z = 0.)
1433 CODE: 1470 CODE:
1434 glVertex3f (x, y, z); 1471 glVertex3f (x, y, z);
1435 1472
1447 1484
1448void glBindTexture (int target, int name) 1485void glBindTexture (int target, int name)
1449 1486
1450void glConvolutionParameter (int target, int pname, float params) 1487void glConvolutionParameter (int target, int pname, float params)
1451 CODE: 1488 CODE:
1452 glConvolutionParameterf (target, pname, params); 1489 GL_CALL (PFNGLCONVOLUTIONPARAMETERFEXTPROC, glConvolutionParameterf, (target, pname, params));
1453 1490
1454void glConvolutionFilter2D (int target, int internalformat, int width, int height, int format, int type, char *data) 1491void glConvolutionFilter2D (int target, int internalformat, int width, int height, int format, int type, char *data)
1492 CODE:
1493 GL_CALL (PFNGLCONVOLUTIONFILTER2DEXTPROC, glConvolutionFilter2D,
1494 (target, internalformat, width, height, format, type, data));
1495
1496void glSeparableFilter2D (int target, int internalformat, int width, int height, int format, int type, char *row, char *column)
1497 CODE:
1498 GL_CALL (PFNGLSEPARABLEFILTER2DEXTPROC, glSeparableFilter2D,
1499 (target, internalformat, width, height, format, type, row, column));
1455 1500
1456void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data) 1501void glTexImage2D (int target, int level, int internalformat, int width, int height, int border, int format, int type, char *data)
1457 1502
1458void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border) 1503void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)
1504
1505void glRasterPos (int x, int y)
1506 CODE:
1507 glRasterPos2i (x, y);
1508
1509void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR)
1459 1510
1460int glGenTexture () 1511int glGenTexture ()
1461 CODE: 1512 CODE:
1462{ 1513{
1463 GLuint name; 1514 GLuint name;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines