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.112 by root, Mon Jun 12 14:55:41 2006 UTC vs.
Revision 1.115 by root, Wed Jun 14 18:59:30 2006 UTC

300 ev.code = 1; 300 ev.code = 1;
301 ev.data1 = (void *)(long)channel; 301 ev.data1 = (void *)(long)channel;
302 ev.data2 = 0; 302 ev.data2 = 0;
303 303
304 SDL_PushEvent ((SDL_Event *)&ev); 304 SDL_PushEvent ((SDL_Event *)&ev);
305}
306
307static unsigned int
308minpot (unsigned int n)
309{
310 if (!n)
311 return 0;
312
313 --n;
314
315 n |= n >> 1;
316 n |= n >> 2;
317 n |= n >> 4;
318 n |= n >> 8;
319 n |= n >> 16;
320
321 return n + 1;
305} 322}
306 323
307MODULE = CFClient PACKAGE = CFClient 324MODULE = CFClient PACKAGE = CFClient
308 325
309PROTOTYPES: ENABLE 326PROTOTYPES: ENABLE
464 SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 5); 481 SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 5);
465 SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5); 482 SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5);
466 SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, 1); 483 SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, 1);
467 484
468 SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15); 485 SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15);
469 SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 16); 486 SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 0);
470 487
471 SDL_GL_SetAttribute (SDL_GL_ACCUM_RED_SIZE, 0); 488 SDL_GL_SetAttribute (SDL_GL_ACCUM_RED_SIZE, 0);
472 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0); 489 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0);
473 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE, 0); 490 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE, 0);
474 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0); 491 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0);
656 PUSHs (sv_2mortal (newSViv (surface2->w))); 673 PUSHs (sv_2mortal (newSViv (surface2->w)));
657 PUSHs (sv_2mortal (newSViv (surface2->h))); 674 PUSHs (sv_2mortal (newSViv (surface2->h)));
658 SDL_LockSurface (surface2); 675 SDL_LockSurface (surface2);
659 PUSHs (sv_2mortal (newSVpvn (surface2->pixels, surface2->h * surface2->pitch))); 676 PUSHs (sv_2mortal (newSVpvn (surface2->pixels, surface2->h * surface2->pitch)));
660 SDL_UnlockSurface (surface2); 677 SDL_UnlockSurface (surface2);
661 PUSHs (sv_2mortal (newSViv (surface->flags & (SDL_SRCCOLORKEY | SDL_SRCALPHA) ? GL_RGBA : GL_RGB))); 678 PUSHs (sv_2mortal (newSViv (surface->flags & (SDL_SRCCOLORKEY | SDL_SRCALPHA) ? GL_RGBA8 : GL_RGB8)));
662 PUSHs (sv_2mortal (newSViv (GL_RGBA))); 679 PUSHs (sv_2mortal (newSViv (GL_RGBA)));
663 PUSHs (sv_2mortal (newSViv (GL_UNSIGNED_BYTE))); 680 PUSHs (sv_2mortal (newSViv (GL_UNSIGNED_BYTE)));
664 681
665 SDL_FreeSurface (surface); 682 SDL_FreeSurface (surface);
666 SDL_FreeSurface (surface2); 683 SDL_FreeSurface (surface2);
950 967
951 EXTEND (SP, 5); 968 EXTEND (SP, 5);
952 PUSHs (sv_2mortal (newSViv (w))); 969 PUSHs (sv_2mortal (newSViv (w)));
953 PUSHs (sv_2mortal (newSViv (h))); 970 PUSHs (sv_2mortal (newSViv (h)));
954 PUSHs (sv_2mortal (retval)); 971 PUSHs (sv_2mortal (retval));
955 PUSHs (sv_2mortal (newSViv (GL_RGBA))); 972 PUSHs (sv_2mortal (newSViv (GL_RGBA8)));
956 PUSHs (sv_2mortal (newSViv (GL_RGBA))); 973 PUSHs (sv_2mortal (newSViv (GL_RGBA)));
957 } 974 }
958 else 975 else
959 { 976 {
960 FT_Bitmap bitmap; 977 FT_Bitmap bitmap;
984} 1001}
985 1002
986MODULE = CFClient PACKAGE = CFClient::Texture 1003MODULE = CFClient PACKAGE = CFClient::Texture
987 1004
988void 1005void
1006pad2pot (SV *data_, SV *w_, SV *h_)
1007 CODE:
1008{
1009 int ow = SvIV (w_);
1010 int oh = SvIV (h_);
1011
1012 if (ow && oh)
1013 {
1014 int nw = minpot (ow);
1015 int nh = minpot (oh);
1016
1017 if (nw != ow || nh != oh)
1018 {
1019 if (SvOK (data_))
1020 {
1021 STRLEN datalen;
1022 char *data = SvPVbyte (data_, datalen);
1023 int bpp = datalen / (ow * oh);
1024 SV *result_ = sv_2mortal (newSV (nw * nh * bpp));
1025
1026 SvPOK_only (result_);
1027 SvCUR_set (result_, nw * nh * bpp);
1028
1029 memset (SvPVX (result_), 0, nw * nh * bpp);
1030 while (oh--)
1031 memcpy (SvPVX (result_) + oh * nw * bpp, data + oh * ow * bpp, ow * bpp);
1032
1033 sv_setsv (data_, result_);
1034 }
1035
1036 sv_setiv (w_, nw);
1037 sv_setiv (h_, nh);
1038 }
1039 }
1040}
1041
1042void
989draw_quad (SV *self, float x, float y, float w = 0, float h = 0) 1043draw_quad (SV *self, float x, float y, float w = 0., float h = 0.)
990 PROTOTYPE: $$$;$$ 1044 PROTOTYPE: $$$;$$
991 ALIAS: 1045 ALIAS:
992 draw_quad_alpha = 1 1046 draw_quad_alpha = 1
993 draw_quad_alpha_premultiplied = 2 1047 draw_quad_alpha_premultiplied = 2
994 CODE: 1048 CODE:
1584 const_iv (GL_ONE_MINUS_SRC_ALPHA), 1638 const_iv (GL_ONE_MINUS_SRC_ALPHA),
1585 const_iv (GL_ONE_MINUS_DST_ALPHA), 1639 const_iv (GL_ONE_MINUS_DST_ALPHA),
1586 const_iv (GL_SRC_ALPHA_SATURATE), 1640 const_iv (GL_SRC_ALPHA_SATURATE),
1587 const_iv (GL_RGB), 1641 const_iv (GL_RGB),
1588 const_iv (GL_RGBA), 1642 const_iv (GL_RGBA),
1643 const_iv (GL_RGBA4),
1644 const_iv (GL_RGBA8),
1645 const_iv (GL_RGB5_A1),
1589 const_iv (GL_UNSIGNED_BYTE), 1646 const_iv (GL_UNSIGNED_BYTE),
1590 const_iv (GL_UNSIGNED_SHORT), 1647 const_iv (GL_UNSIGNED_SHORT),
1591 const_iv (GL_UNSIGNED_INT), 1648 const_iv (GL_UNSIGNED_INT),
1592 const_iv (GL_ALPHA), 1649 const_iv (GL_ALPHA),
1593 const_iv (GL_INTENSITY), 1650 const_iv (GL_INTENSITY),
1667 OUTPUT: 1724 OUTPUT:
1668 RETVAL 1725 RETVAL
1669 1726
1670int glGetError () 1727int glGetError ()
1671 1728
1729void glFinish ()
1730
1672void glClear (int mask) 1731void glClear (int mask)
1673 1732
1674void glClearColor (float r, float g, float b, float a = 1.0) 1733void glClearColor (float r, float g, float b, float a = 1.0)
1675 PROTOTYPE: @ 1734 PROTOTYPE: @
1676 1735

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines