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.193 by root, Sun Jul 1 03:12:34 2007 UTC vs.
Revision 1.200 by root, Tue Jul 17 16:02:13 2007 UTC

587 opengl_fontmap = pango_opengl_font_map_new (); 587 opengl_fontmap = pango_opengl_font_map_new ();
588 pango_opengl_font_map_set_default_substitute ((PangoOpenGLFontMap *)opengl_fontmap, substitute_func, 0, 0); 588 pango_opengl_font_map_set_default_substitute ((PangoOpenGLFontMap *)opengl_fontmap, substitute_func, 0, 0);
589 opengl_context = pango_opengl_font_map_create_context ((PangoOpenGLFontMap *)opengl_fontmap); 589 opengl_context = pango_opengl_font_map_create_context ((PangoOpenGLFontMap *)opengl_fontmap);
590} 590}
591 591
592char *
593SDL_GetError ()
594
592int 595int
593SDL_Init (U32 flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | PARACHUTE) 596SDL_Init (U32 flags = SDL_INIT_VIDEO | SDL_INIT_AUDIO | PARACHUTE)
594 597
595void 598void
596SDL_Quit () 599SDL_Quit ()
597 600
598void 601void
599SDL_ListModes () 602SDL_ListModes (int rgb, int alpha)
600 PPCODE: 603 PPCODE:
601{ 604{
602 SDL_Rect **m; 605 SDL_Rect **m;
603 606
604 SDL_GL_SetAttribute (SDL_GL_RED_SIZE, 5); 607 SDL_GL_SetAttribute (SDL_GL_RED_SIZE , rgb);
605 SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, 5); 608 SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, rgb);
606 SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE, 5); 609 SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE , rgb);
607 SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, 1); 610 SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, alpha);
608 611
609 SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15); 612 SDL_GL_SetAttribute (SDL_GL_BUFFER_SIZE, 15);
610 SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE, 0); 613 SDL_GL_SetAttribute (SDL_GL_DEPTH_SIZE , 0);
611 614
612 SDL_GL_SetAttribute (SDL_GL_ACCUM_RED_SIZE, 0); 615 SDL_GL_SetAttribute (SDL_GL_ACCUM_RED_SIZE , 0);
613 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0); 616 SDL_GL_SetAttribute (SDL_GL_ACCUM_GREEN_SIZE, 0);
614 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE, 0); 617 SDL_GL_SetAttribute (SDL_GL_ACCUM_BLUE_SIZE , 0);
615 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0); 618 SDL_GL_SetAttribute (SDL_GL_ACCUM_ALPHA_SIZE, 0);
616 619
617 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); 620 SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1);
618#if SDL_VERSION_ATLEAST(1,2,10) 621#if SDL_VERSION_ATLEAST(1,2,10)
619 SDL_GL_SetAttribute (SDL_GL_ACCELERATED_VISUAL, 1); 622 SDL_GL_SetAttribute (SDL_GL_ACCELERATED_VISUAL, 1);
620 SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1); 623 SDL_GL_SetAttribute (SDL_GL_SWAP_CONTROL, 1);
621#endif 624#endif
622 625
623 SDL_EnableUNICODE (1);
624 SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
625
626 m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL); 626 m = SDL_ListModes (0, SDL_FULLSCREEN | SDL_OPENGL);
627 627
628 if (m && m != (SDL_Rect **)-1) 628 if (m && m != (SDL_Rect **)-1)
629 while (*m) 629 while (*m)
630 { 630 {
631 if ((*m)->w >= 640 && (*m)->h >= 480)
632 {
631 AV *av = newAV (); 633 AV *av = newAV ();
632 av_push (av, newSViv ((*m)->w)); 634 av_push (av, newSViv ((*m)->w));
633 av_push (av, newSViv ((*m)->h)); 635 av_push (av, newSViv ((*m)->h));
636 av_push (av, newSViv (rgb));
637 av_push (av, newSViv (alpha));
634 XPUSHs (sv_2mortal (newRV_noinc ((SV *)av))); 638 XPUSHs (sv_2mortal (newRV_noinc ((SV *)av)));
639 }
635 640
636 ++m; 641 ++m;
637 } 642 }
638} 643}
639 644
640char *
641SDL_GetError ()
642
643int 645int
644SDL_SetVideoMode (int w, int h, int fullscreen) 646SDL_SetVideoMode (int w, int h, int rgb, int alpha, int fullscreen)
645 CODE: 647 CODE:
648{
649 SDL_EnableUNICODE (1);
650 SDL_EnableKeyRepeat (SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
651
652 SDL_GL_SetAttribute (SDL_GL_RED_SIZE , rgb);
653 SDL_GL_SetAttribute (SDL_GL_GREEN_SIZE, rgb);
654 SDL_GL_SetAttribute (SDL_GL_BLUE_SIZE , rgb);
655 SDL_GL_SetAttribute (SDL_GL_ALPHA_SIZE, alpha);
656
646 RETVAL = !!SDL_SetVideoMode ( 657 RETVAL = !!SDL_SetVideoMode (
647 w, h, 0, SDL_OPENGL | (fullscreen ? SDL_FULLSCREEN : 0) 658 w, h, 0, SDL_OPENGL | (fullscreen ? SDL_FULLSCREEN : 0)
648 ); 659 );
660
649 if (RETVAL) 661 if (RETVAL)
650 { 662 {
651 av_clear (texture_av); 663 av_clear (texture_av);
652 664
653 SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+"); 665 SDL_WM_SetCaption ("Crossfire+ Client " VERSION, "Crossfire+");
654# define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name); 666#define GL_FUNC(ptr,name) gl.name = (ptr)SDL_GL_GetProcAddress ("gl" # name);
655# include "glfunc.h" 667#include "glfunc.h"
656# undef GL_FUNC 668#undef GL_FUNC
657
658 } 669 }
670}
659 OUTPUT: 671 OUTPUT:
660 RETVAL 672 RETVAL
661 673
662void 674void
663SDL_GL_SwapBuffers () 675SDL_GL_SwapBuffers ()
664 676
665char * 677char *
666SDL_GetKeyName (int sym) 678SDL_GetKeyName (int sym)
667 679
680int
681SDL_GetAppState ()
682
668void 683void
669SDL_PollEvent () 684poll_events ()
670 PPCODE: 685 PPCODE:
671{ 686{
672 SDL_Event ev; 687 SDL_Event ev;
673 688
674 while (SDL_PollEvent (&ev)) 689 SDL_PumpEvents ();
690 while (SDL_PeepEvents (&ev, 1, SDL_GETEVENT, SDL_ALLEVENTS) > 0)
675 { 691 {
676 HV *hv = newHV (); 692 HV *hv = newHV ();
677 hv_store (hv, "type", 4, newSViv (ev.type), 0); 693 hv_store (hv, "type", 4, newSViv (ev.type), 0);
678 694
679 switch (ev.type) 695 switch (ev.type)
691 hv_store (hv, "gain", 4, newSViv (ev.active.gain), 0); 707 hv_store (hv, "gain", 4, newSViv (ev.active.gain), 0);
692 hv_store (hv, "state", 5, newSViv (ev.active.state), 0); 708 hv_store (hv, "state", 5, newSViv (ev.active.state), 0);
693 break; 709 break;
694 710
695 case SDL_MOUSEMOTION: 711 case SDL_MOUSEMOTION:
712 {
713 int state = ev.motion.state;
714 int x = ev.motion.x;
715 int y = ev.motion.y;
716 int xrel = ev.motion.xrel;
717 int yrel = ev.motion.yrel;
718
719 /* do simplistic event compression */
720 while (SDL_PeepEvents (&ev, 1, SDL_PEEKEVENT, SDL_EVENTMASK (SDL_MOUSEMOTION)) > 0
721 && state == ev.motion.state)
722 {
723 xrel += ev.motion.xrel;
724 yrel += ev.motion.yrel;
725 x = ev.motion.x;
726 y = ev.motion.y;
727 SDL_PeepEvents (&ev, 1, SDL_GETEVENT, SDL_EVENTMASK (SDL_MOUSEMOTION));
728 }
729
696 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0); 730 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0);
697
698 hv_store (hv, "state", 5, newSViv (ev.motion.state), 0); 731 hv_store (hv, "state", 5, newSViv (state), 0);
699 hv_store (hv, "x", 1, newSViv (ev.motion.x), 0); 732 hv_store (hv, "x", 1, newSViv (x), 0);
700 hv_store (hv, "y", 1, newSViv (ev.motion.y), 0); 733 hv_store (hv, "y", 1, newSViv (y), 0);
701 hv_store (hv, "xrel", 4, newSViv (ev.motion.xrel), 0); 734 hv_store (hv, "xrel", 4, newSViv (xrel), 0);
702 hv_store (hv, "yrel", 4, newSViv (ev.motion.yrel), 0); 735 hv_store (hv, "yrel", 4, newSViv (yrel), 0);
736 }
703 break; 737 break;
704 738
705 case SDL_MOUSEBUTTONDOWN: 739 case SDL_MOUSEBUTTONDOWN:
706 case SDL_MOUSEBUTTONUP: 740 case SDL_MOUSEBUTTONUP:
707 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0); 741 hv_store (hv, "mod", 3, newSViv (SDL_GetModState ()), 0);
1220 flags 1254 flags
1221 ); 1255 );
1222 1256
1223MODULE = CFPlus PACKAGE = CFPlus::Texture 1257MODULE = CFPlus PACKAGE = CFPlus::Texture
1224 1258
1259int minpot (int n)
1260
1225void 1261void
1226pad2pot (SV *data_, SV *w_, SV *h_) 1262pad2pot (SV *data_, SV *w_, SV *h_)
1227 CODE: 1263 CODE:
1228{ 1264{
1229 int ow = SvIV (w_); 1265 int ow = SvIV (w_);
1305 { 1341 {
1306 glDisable (GL_ALPHA_TEST); 1342 glDisable (GL_ALPHA_TEST);
1307 glDisable (GL_BLEND); 1343 glDisable (GL_BLEND);
1308 } 1344 }
1309} 1345}
1346
1347IV texture_valid_2d (GLint internalformat, GLsizei w, GLsizei h, GLenum format, GLenum type)
1348 CODE:
1349{
1350 GLint width;
1351 glTexImage2D (GL_PROXY_TEXTURE_2D, 0, internalformat, w, h, 0, format, type, 0);
1352 glGetTexLevelParameteriv (GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
1353 RETVAL = width > 0;
1354}
1355 OUTPUT:
1356 RETVAL
1310 1357
1311MODULE = CFPlus PACKAGE = CFPlus::Map 1358MODULE = CFPlus PACKAGE = CFPlus::Map
1312 1359
1313CFPlus::Map 1360CFPlus::Map
1314new (SV *class) 1361new (SV *class)
2140 CODE: 2187 CODE:
2141 RETVAL = Mix_VolumeMusic (volume); 2188 RETVAL = Mix_VolumeMusic (volume);
2142 OUTPUT: 2189 OUTPUT:
2143 RETVAL 2190 RETVAL
2144 2191
2192int
2193fade_out (int ms)
2194 CODE:
2195 RETVAL = Mix_FadeOutMusic (ms);
2196 OUTPUT:
2197 RETVAL
2198
2145CFPlus::MixMusic 2199CFPlus::MixMusic
2146new_from_file (SV *class, char *path) 2200new_from_file (SV *class, char *path)
2147 CODE: 2201 CODE:
2148 RETVAL = Mix_LoadMUS (path); 2202 RETVAL = Mix_LoadMUS (path);
2149 OUTPUT: 2203 OUTPUT:
2156 2210
2157int 2211int
2158play (CFPlus::MixMusic self, int loops = -1) 2212play (CFPlus::MixMusic self, int loops = -1)
2159 CODE: 2213 CODE:
2160 RETVAL = Mix_PlayMusic (self, loops); 2214 RETVAL = Mix_PlayMusic (self, loops);
2215 OUTPUT:
2216 RETVAL
2217
2218int
2219fade_in_pos (CFPlus::MixMusic self, int loops, int ms, double position)
2220 CODE:
2221 RETVAL = Mix_FadeInMusicPos (self, loops, ms, position);
2161 OUTPUT: 2222 OUTPUT:
2162 RETVAL 2223 RETVAL
2163 2224
2164MODULE = CFPlus PACKAGE = CFPlus::OpenGL 2225MODULE = CFPlus PACKAGE = CFPlus::OpenGL
2165 2226
2169 static const struct { 2230 static const struct {
2170 const char *name; 2231 const char *name;
2171 IV iv; 2232 IV iv;
2172 } *civ, const_iv[] = { 2233 } *civ, const_iv[] = {
2173# define const_iv(name) { # name, (IV)name } 2234# define const_iv(name) { # name, (IV)name }
2235 const_iv (GL_VENDOR),
2236 const_iv (GL_VERSION),
2237 const_iv (GL_EXTENSIONS),
2174 const_iv (GL_COLOR_MATERIAL), 2238 const_iv (GL_COLOR_MATERIAL),
2175 const_iv (GL_SMOOTH), 2239 const_iv (GL_SMOOTH),
2176 const_iv (GL_FLAT), 2240 const_iv (GL_FLAT),
2177 const_iv (GL_DITHER), 2241 const_iv (GL_DITHER),
2178 const_iv (GL_BLEND), 2242 const_iv (GL_BLEND),
2205 const_iv (GL_LUMINANCE), 2269 const_iv (GL_LUMINANCE),
2206 const_iv (GL_LUMINANCE_ALPHA), 2270 const_iv (GL_LUMINANCE_ALPHA),
2207 const_iv (GL_FLOAT), 2271 const_iv (GL_FLOAT),
2208 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV), 2272 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV),
2209 const_iv (GL_COMPILE), 2273 const_iv (GL_COMPILE),
2274 const_iv (GL_PROXY_TEXTURE_1D),
2275 const_iv (GL_PROXY_TEXTURE_2D),
2210 const_iv (GL_TEXTURE_1D), 2276 const_iv (GL_TEXTURE_1D),
2211 const_iv (GL_TEXTURE_2D), 2277 const_iv (GL_TEXTURE_2D),
2212 const_iv (GL_TEXTURE_ENV), 2278 const_iv (GL_TEXTURE_ENV),
2213 const_iv (GL_TEXTURE_MAG_FILTER), 2279 const_iv (GL_TEXTURE_MAG_FILTER),
2214 const_iv (GL_TEXTURE_MIN_FILTER), 2280 const_iv (GL_TEXTURE_MIN_FILTER),
2280 CODE: 2346 CODE:
2281 RETVAL = (char *)glGetString (GL_EXTENSIONS); 2347 RETVAL = (char *)glGetString (GL_EXTENSIONS);
2282 OUTPUT: 2348 OUTPUT:
2283 RETVAL 2349 RETVAL
2284 2350
2351char *glGetString (GLenum pname)
2352
2353GLint glGetInteger (GLenum pname)
2354 CODE:
2355 glGetIntegerv (pname, &RETVAL);
2356 OUTPUT:
2357 RETVAL
2358
2359GLdouble glGetDouble (GLenum pname)
2360 CODE:
2361 glGetDoublev (pname, &RETVAL);
2362 OUTPUT:
2363 RETVAL
2364
2285int glGetError () 2365int glGetError ()
2286 2366
2287void glFinish () 2367void glFinish ()
2288 2368
2289void glClear (int mask) 2369void glClear (int mask)
2411 2491
2412void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border) 2492void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)
2413 2493
2414void glDrawPixels (int width, int height, int format, int type, char *pixels) 2494void glDrawPixels (int width, int height, int format, int type, char *pixels)
2415 2495
2496void glPixelZoom (float x, float y)
2497
2416void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR) 2498void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR)
2417 2499
2418int glGenTexture () 2500int glGenTexture ()
2419 CODE: 2501 CODE:
2420 RETVAL = gen_texture (); 2502 RETVAL = gen_texture ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines