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.198 by root, Sun Jul 15 21:42:02 2007 UTC vs.
Revision 1.201 by root, Tue Jul 17 17:39:06 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 ()
1242 flags 1254 flags
1243 ); 1255 );
1244 1256
1245MODULE = CFPlus PACKAGE = CFPlus::Texture 1257MODULE = CFPlus PACKAGE = CFPlus::Texture
1246 1258
1259int minpot (int n)
1260
1247void 1261void
1248pad2pot (SV *data_, SV *w_, SV *h_) 1262pad2pot (SV *data_, SV *w_, SV *h_)
1249 CODE: 1263 CODE:
1250{ 1264{
1251 int ow = SvIV (w_); 1265 int ow = SvIV (w_);
1327 { 1341 {
1328 glDisable (GL_ALPHA_TEST); 1342 glDisable (GL_ALPHA_TEST);
1329 glDisable (GL_BLEND); 1343 glDisable (GL_BLEND);
1330 } 1344 }
1331} 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
1332 1357
1333MODULE = CFPlus PACKAGE = CFPlus::Map 1358MODULE = CFPlus PACKAGE = CFPlus::Map
1334 1359
1335CFPlus::Map 1360CFPlus::Map
1336new (SV *class) 1361new (SV *class)
1949 glDisable (GL_BLEND); 1974 glDisable (GL_BLEND);
1950 glDisable (GL_TEXTURE_2D); 1975 glDisable (GL_TEXTURE_2D);
1951} 1976}
1952 1977
1953void 1978void
1954fow_texture (CFPlus::Map self, int mx, int my, int sw, int sh) 1979fow_texture (CFPlus::Map self, int mx, int my, int sw, int sh, int smoothing, const char *matrix)
1955 PPCODE: 1980 PPCODE:
1956{ 1981{
1957 int x, y; 1982 int x, y;
1958 int sw4 = (sw + 3) & ~3; 1983 int sw4 = (sw + 3) & ~3;
1959 SV *darkness_sv = sv_2mortal (newSV (sw4 * sh)); 1984 SV *darkness_sv = sv_2mortal (newSV (sw4 * sh));
1979 darkness[y * sw4 + x] = cell->darkness 2004 darkness[y * sw4 + x] = cell->darkness
1980 ? 255 - (cell->darkness - 1) 2005 ? 255 - (cell->darkness - 1)
1981 : 255 - FOW_DARKNESS; 2006 : 255 - FOW_DARKNESS;
1982 } 2007 }
1983 } 2008 }
2009
2010 if (smoothing)
2011 {
2012 SV *darkness2_sv = sv_2mortal (newSV (sw4 * sh));
2013 uint8_t *darkness2 = (uint8_t *)SvPVX (darkness2_sv);
2014
2015 SvPOK_only (darkness2_sv);
2016 SvCUR_set (darkness2_sv, sw4 * sh);
2017
2018 for (y = 0; y < sh; ++y)
2019 for (x = 0; x < sw4; ++x)
2020 {
2021 float *f = (float *)matrix;
2022 int dx, dy;
2023 float sum = 0.f;
2024
2025 for (dy = -1; dy <= 1; ++dy)
2026 for (dx = -1; dx <= 1; ++dx)
2027 {
2028 unsigned int x2 = x + dx;
2029 unsigned int y2 = y + dy;
2030
2031 sum += (x2 < sw && y2 < sh ? darkness [y2 * sw4 + x2] : 255) * *f++;
2032 }
2033
2034 darkness2 [y * sw4 + x] = sum > 255. ? 255. : sum;
2035 }
2036
2037 darkness_sv = darkness2_sv;
2038 }
1984 2039
1985 EXTEND (SP, 3); 2040 EXTEND (SP, 3);
1986 PUSHs (sv_2mortal (newSViv (sw4))); 2041 PUSHs (sv_2mortal (newSViv (sw4)));
1987 PUSHs (sv_2mortal (newSViv (sh))); 2042 PUSHs (sv_2mortal (newSViv (sh)));
1988 PUSHs (darkness_sv); 2043 PUSHs (darkness_sv);
2205 static const struct { 2260 static const struct {
2206 const char *name; 2261 const char *name;
2207 IV iv; 2262 IV iv;
2208 } *civ, const_iv[] = { 2263 } *civ, const_iv[] = {
2209# define const_iv(name) { # name, (IV)name } 2264# define const_iv(name) { # name, (IV)name }
2265 const_iv (GL_VENDOR),
2266 const_iv (GL_VERSION),
2267 const_iv (GL_EXTENSIONS),
2210 const_iv (GL_COLOR_MATERIAL), 2268 const_iv (GL_COLOR_MATERIAL),
2211 const_iv (GL_SMOOTH), 2269 const_iv (GL_SMOOTH),
2212 const_iv (GL_FLAT), 2270 const_iv (GL_FLAT),
2213 const_iv (GL_DITHER), 2271 const_iv (GL_DITHER),
2214 const_iv (GL_BLEND), 2272 const_iv (GL_BLEND),
2241 const_iv (GL_LUMINANCE), 2299 const_iv (GL_LUMINANCE),
2242 const_iv (GL_LUMINANCE_ALPHA), 2300 const_iv (GL_LUMINANCE_ALPHA),
2243 const_iv (GL_FLOAT), 2301 const_iv (GL_FLOAT),
2244 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV), 2302 const_iv (GL_UNSIGNED_INT_8_8_8_8_REV),
2245 const_iv (GL_COMPILE), 2303 const_iv (GL_COMPILE),
2304 const_iv (GL_PROXY_TEXTURE_1D),
2305 const_iv (GL_PROXY_TEXTURE_2D),
2246 const_iv (GL_TEXTURE_1D), 2306 const_iv (GL_TEXTURE_1D),
2247 const_iv (GL_TEXTURE_2D), 2307 const_iv (GL_TEXTURE_2D),
2248 const_iv (GL_TEXTURE_ENV), 2308 const_iv (GL_TEXTURE_ENV),
2249 const_iv (GL_TEXTURE_MAG_FILTER), 2309 const_iv (GL_TEXTURE_MAG_FILTER),
2250 const_iv (GL_TEXTURE_MIN_FILTER), 2310 const_iv (GL_TEXTURE_MIN_FILTER),
2316 CODE: 2376 CODE:
2317 RETVAL = (char *)glGetString (GL_EXTENSIONS); 2377 RETVAL = (char *)glGetString (GL_EXTENSIONS);
2318 OUTPUT: 2378 OUTPUT:
2319 RETVAL 2379 RETVAL
2320 2380
2381const char *glGetString (GLenum pname)
2382
2383GLint glGetInteger (GLenum pname)
2384 CODE:
2385 glGetIntegerv (pname, &RETVAL);
2386 OUTPUT:
2387 RETVAL
2388
2389GLdouble glGetDouble (GLenum pname)
2390 CODE:
2391 glGetDoublev (pname, &RETVAL);
2392 OUTPUT:
2393 RETVAL
2394
2321int glGetError () 2395int glGetError ()
2322 2396
2323void glFinish () 2397void glFinish ()
2324 2398
2325void glClear (int mask) 2399void glClear (int mask)
2447 2521
2448void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border) 2522void glCopyTexImage2D (int target, int level, int internalformat, int x, int y, int width, int height, int border)
2449 2523
2450void glDrawPixels (int width, int height, int format, int type, char *pixels) 2524void glDrawPixels (int width, int height, int format, int type, char *pixels)
2451 2525
2526void glPixelZoom (float x, float y)
2527
2452void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR) 2528void glCopyPixels (int x, int y, int width, int height, int type = GL_COLOR)
2453 2529
2454int glGenTexture () 2530int glGenTexture ()
2455 CODE: 2531 CODE:
2456 RETVAL = gen_texture (); 2532 RETVAL = gen_texture ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines