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.91 by root, Mon May 22 03:28:54 2006 UTC vs.
Revision 1.99 by root, Mon May 29 02:11:03 2006 UTC

486 RETVAL 486 RETVAL
487 487
488void 488void
489SDL_GL_SwapBuffers () 489SDL_GL_SwapBuffers ()
490 490
491char *
492SDL_GetKeyName (int sym)
493
491void 494void
492SDL_PollEvent () 495SDL_PollEvent ()
493 PPCODE: 496 PPCODE:
494{ 497{
495 SDL_Event ev; 498 SDL_Event ev;
513 hv_store (hv, "gain", 4, newSViv (ev.active.gain), 0); 516 hv_store (hv, "gain", 4, newSViv (ev.active.gain), 0);
514 hv_store (hv, "state", 5, newSViv (ev.active.state), 0); 517 hv_store (hv, "state", 5, newSViv (ev.active.state), 0);
515 break; 518 break;
516 519
517 case SDL_MOUSEMOTION: 520 case SDL_MOUSEMOTION:
521 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0);
522
518 hv_store (hv, "state", 5, newSViv (ev.motion.state), 0); 523 hv_store (hv, "state", 5, newSViv (ev.motion.state), 0);
519 hv_store (hv, "x", 1, newSViv (ev.motion.x), 0); 524 hv_store (hv, "x", 1, newSViv (ev.motion.x), 0);
520 hv_store (hv, "y", 1, newSViv (ev.motion.y), 0); 525 hv_store (hv, "y", 1, newSViv (ev.motion.y), 0);
521 hv_store (hv, "xrel", 4, newSViv (ev.motion.xrel), 0); 526 hv_store (hv, "xrel", 4, newSViv (ev.motion.xrel), 0);
522 hv_store (hv, "yrel", 4, newSViv (ev.motion.yrel), 0); 527 hv_store (hv, "yrel", 4, newSViv (ev.motion.yrel), 0);
523 break; 528 break;
524 529
525 case SDL_MOUSEBUTTONDOWN: 530 case SDL_MOUSEBUTTONDOWN:
526 case SDL_MOUSEBUTTONUP: 531 case SDL_MOUSEBUTTONUP:
532 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0);
533
527 hv_store (hv, "button", 6, newSViv (ev.button.button), 0); 534 hv_store (hv, "button", 6, newSViv (ev.button.button), 0);
528 hv_store (hv, "state", 5, newSViv (ev.button.state), 0); 535 hv_store (hv, "state", 5, newSViv (ev.button.state), 0);
529 hv_store (hv, "x", 1, newSViv (ev.button.x), 0); 536 hv_store (hv, "x", 1, newSViv (ev.button.x), 0);
530 hv_store (hv, "y", 1, newSViv (ev.button.y), 0); 537 hv_store (hv, "y", 1, newSViv (ev.button.y), 0);
531 break; 538 break;
557lowdelay (int fd, int val = 1) 564lowdelay (int fd, int val = 1)
558 CODE: 565 CODE:
559#ifndef _WIN32 566#ifndef _WIN32
560 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof (val)); 567 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, &val, sizeof (val));
561#endif 568#endif
562
563char *
564gl_version ()
565 CODE:
566 RETVAL = (char *)glGetString (GL_VERSION);
567 OUTPUT:
568 RETVAL
569
570char *
571gl_extensions ()
572 CODE:
573 RETVAL = (char *)glGetString (GL_EXTENSIONS);
574 OUTPUT:
575 RETVAL
576 569
577void 570void
578add_font (char *file) 571add_font (char *file)
579 CODE: 572 CODE:
580 FcConfigAppFontAddFile (0, (const FcChar8 *)file); /* no idea wether this is required */ 573 FcConfigAppFontAddFile (0, (const FcChar8 *)file); /* no idea wether this is required */
717 710
718CFClient::Layout 711CFClient::Layout
719new (SV *class, int rgba = 0) 712new (SV *class, int rgba = 0)
720 CODE: 713 CODE:
721#if _WIN32 714#if _WIN32
722 rgba = 0;//D 715 //rgba = 0;//D make stext nicer, breaks TextView
723#endif 716#endif
724 New (0, RETVAL, 1, struct cf_layout); 717 New (0, RETVAL, 1, struct cf_layout);
725 718
726 RETVAL->pl = pango_layout_new (rgba ? cairo_context : ft2_context); 719 RETVAL->pl = pango_layout_new (rgba ? cairo_context : ft2_context);
727 RETVAL->rgba = rgba; 720 RETVAL->rgba = rgba;
974{ 967{
975 HV *hv = (HV *)SvRV (self); 968 HV *hv = (HV *)SvRV (self);
976 float s = SvNV (*hv_fetch (hv, "s", 1, 1)); 969 float s = SvNV (*hv_fetch (hv, "s", 1, 1));
977 float t = SvNV (*hv_fetch (hv, "t", 1, 1)); 970 float t = SvNV (*hv_fetch (hv, "t", 1, 1));
978 int name = SvIV (*hv_fetch (hv, "name", 4, 1)); 971 int name = SvIV (*hv_fetch (hv, "name", 4, 1));
979 int wrap_mode = SvIV (*hv_fetch (hv, "wrap_mode", 9, 1));
980 972
981 if (items < 5) 973 if (items < 5)
982 { 974 {
983 w = SvNV (*hv_fetch (hv, "w", 1, 1)); 975 w = SvNV (*hv_fetch (hv, "w", 1, 1));
984 h = SvNV (*hv_fetch (hv, "h", 1, 1)); 976 h = SvNV (*hv_fetch (hv, "h", 1, 1));
991 glEnable (GL_ALPHA_TEST); 983 glEnable (GL_ALPHA_TEST);
992 glAlphaFunc (GL_GREATER, 0.01f); 984 glAlphaFunc (GL_GREATER, 0.01f);
993 } 985 }
994 986
995 glBindTexture (GL_TEXTURE_2D, name); 987 glBindTexture (GL_TEXTURE_2D, name);
996
997 if (wrap_mode)
998 {
999 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
1000 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
1001 }
1002 988
1003 glBegin (GL_QUADS); 989 glBegin (GL_QUADS);
1004 glTexCoord2f (0, 0); glVertex2f (x , y ); 990 glTexCoord2f (0, 0); glVertex2f (x , y );
1005 glTexCoord2f (0, t); glVertex2f (x , y + h); 991 glTexCoord2f (0, t); glVertex2f (x , y + h);
1006 glTexCoord2f (s, t); glVertex2f (x + w, y + h); 992 glTexCoord2f (s, t); glVertex2f (x + w, y + h);
1083 tex->r = r; 1069 tex->r = r;
1084 tex->g = g; 1070 tex->g = g;
1085 tex->b = b; 1071 tex->b = b;
1086 tex->a = a; 1072 tex->a = a;
1087 } 1073 }
1074
1075 // somewhat hackish, but for textures that require it, it really
1076 // improves the look, and most others don't suffer.
1077 glBindTexture (GL_TEXTURE_2D, name);
1078 //glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
1079 //glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
1080 // use uglier nearest interpolation because linear suffers
1081 // from transparent color bleeding and ugly wrapping effects.
1082 glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
1088} 1083}
1089 1084
1090int 1085int
1091ox (CFClient::Map self) 1086ox (CFClient::Map self)
1092 ALIAS: 1087 ALIAS:
1563 const_iv (GL_TEXTURE_MAG_FILTER), 1558 const_iv (GL_TEXTURE_MAG_FILTER),
1564 const_iv (GL_TEXTURE_MIN_FILTER), 1559 const_iv (GL_TEXTURE_MIN_FILTER),
1565 const_iv (GL_TEXTURE_ENV_MODE), 1560 const_iv (GL_TEXTURE_ENV_MODE),
1566 const_iv (GL_TEXTURE_WRAP_S), 1561 const_iv (GL_TEXTURE_WRAP_S),
1567 const_iv (GL_TEXTURE_WRAP_T), 1562 const_iv (GL_TEXTURE_WRAP_T),
1563 const_iv (GL_REPEAT),
1568 const_iv (GL_CLAMP), 1564 const_iv (GL_CLAMP),
1569 const_iv (GL_REPEAT), 1565 const_iv (GL_CLAMP_TO_EDGE),
1570 const_iv (GL_NEAREST), 1566 const_iv (GL_NEAREST),
1571 const_iv (GL_LINEAR), 1567 const_iv (GL_LINEAR),
1572 const_iv (GL_NEAREST_MIPMAP_NEAREST), 1568 const_iv (GL_NEAREST_MIPMAP_NEAREST),
1573 const_iv (GL_LINEAR_MIPMAP_NEAREST), 1569 const_iv (GL_LINEAR_MIPMAP_NEAREST),
1574 const_iv (GL_NEAREST_MIPMAP_LINEAR), 1570 const_iv (GL_NEAREST_MIPMAP_LINEAR),
1604 1600
1605 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; ) 1601 for (civ = const_iv + sizeof (const_iv) / sizeof (const_iv [0]); civ-- > const_iv; )
1606 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv)); 1602 newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv));
1607} 1603}
1608 1604
1605char *
1606gl_vendor ()
1607 CODE:
1608 RETVAL = (char *)glGetString (GL_VENDOR);
1609 OUTPUT:
1610 RETVAL
1611
1612char *
1613gl_version ()
1614 CODE:
1615 RETVAL = (char *)glGetString (GL_VERSION);
1616 OUTPUT:
1617 RETVAL
1618
1619char *
1620gl_extensions ()
1621 CODE:
1622 RETVAL = (char *)glGetString (GL_EXTENSIONS);
1623 OUTPUT:
1624 RETVAL
1625
1609int glGetError () 1626int glGetError ()
1610 1627
1611void glClear (int mask) 1628void glClear (int mask)
1612 1629
1613void glClearColor (float r, float g, float b, float a = 1.0) 1630void glClearColor (float r, float g, float b, float a = 1.0)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines