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.211 by root, Sat Jul 28 00:45:28 2007 UTC vs.
Revision 1.215 by root, Tue Jul 31 00:50:04 2007 UTC

25#include <math.h> 25#include <math.h>
26#include <string.h> 26#include <string.h>
27#include <stdio.h> 27#include <stdio.h>
28#include <stdlib.h> 28#include <stdlib.h>
29 29
30#define USE_RWOPS 1 // for SDL_mixer:LoadMUS_RW
31
30#include <SDL.h> 32#include <SDL.h>
31#include <SDL_thread.h> 33#include <SDL_thread.h>
32#include <SDL_endian.h> 34#include <SDL_endian.h>
33#include <SDL_image.h> 35#include <SDL_image.h>
34#include <SDL_mixer.h> 36#include <SDL_mixer.h>
112 114
113#include "pango-font.c" 115#include "pango-font.c"
114#include "pango-fontmap.c" 116#include "pango-fontmap.c"
115#include "pango-render.c" 117#include "pango-render.c"
116 118
119typedef IV CFPlus__Channel;
120typedef SDL_RWops *CFPlus__RW;
117typedef Mix_Chunk *CFPlus__MixChunk; 121typedef Mix_Chunk *CFPlus__MixChunk;
118typedef Mix_Music *CFPlus__MixMusic; 122typedef Mix_Music *CFPlus__MixMusic;
119 123
120typedef PangoFontDescription *CFPlus__Font; 124typedef PangoFontDescription *CFPlus__Font;
121 125
811Mix_CloseAudio () 815Mix_CloseAudio ()
812 816
813int 817int
814Mix_AllocateChannels (int numchans = -1) 818Mix_AllocateChannels (int numchans = -1)
815 819
820const char *
821Mix_GetError ()
822
816void 823void
817lowdelay (int fd, int val = 1) 824lowdelay (int fd, int val = 1)
818 CODE: 825 CODE:
819 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (void *)&val, sizeof (val)); 826 setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, (void *)&val, sizeof (val));
820 827
861 STRLEN image_len; 868 STRLEN image_len;
862 char *image = (char *)SvPVbyte (image_, image_len); 869 char *image = (char *)SvPVbyte (image_, image_len);
863 SDL_Surface *surface, *surface2; 870 SDL_Surface *surface, *surface2;
864 SDL_PixelFormat fmt; 871 SDL_PixelFormat fmt;
865 SDL_RWops *rw = ix 872 SDL_RWops *rw = ix
866 ? SDL_RWFromFile (image, "r") 873 ? SDL_RWFromFile (image, "rb")
867 : SDL_RWFromConstMem (image, image_len); 874 : SDL_RWFromConstMem (image, image_len);
868 875
869 if (!rw) 876 if (!rw)
870 croak ("load_image: %s", SDL_GetError ()); 877 croak ("load_image: %s", SDL_GetError ());
871 878
2232 } 2239 }
2233 } 2240 }
2234 } 2241 }
2235} 2242}
2236 2243
2237MODULE = CFPlus PACKAGE = CFPlus::MixChunk 2244MODULE = CFPlus PACKAGE = CFPlus::RW
2238 2245
2239PROTOTYPES: DISABLE 2246CFPlus::RW
2240
2241CFPlus::MixChunk
2242new (SV *class, SV *data_sv) 2247new (SV *class, SV *data_sv)
2243 CODE: 2248 CODE:
2244{ 2249{
2245 STRLEN datalen; 2250 STRLEN datalen;
2246 char *data = SvPVbyte (data_sv, datalen); 2251 char *data = SvPVbyte (data_sv, datalen);
2247 2252
2248 RETVAL = Mix_LoadWAV_RW (SDL_RWFromConstMem (data, datalen), 1); 2253 RETVAL = SDL_RWFromConstMem (data, datalen);
2249} 2254}
2250 OUTPUT: 2255 OUTPUT:
2251 RETVAL 2256 RETVAL
2252 2257
2258CFPlus::RW
2259new_from_file (SV *class, const char *path, const char *mode = "rb")
2260 CODE:
2261 RETVAL = SDL_RWFromFile (path, mode);
2262 OUTPUT:
2263 RETVAL
2264
2265void
2266close (CFPlus::RW self)
2267 CODE:
2268 SDL_RWclose (self);
2269
2270MODULE = CFPlus PACKAGE = CFPlus::Channel
2271
2272PROTOTYPES: DISABLE
2273
2274CFPlus::Channel
2275find ()
2276 CODE:
2277{
2278 RETVAL = Mix_GroupAvailable (-1);
2279
2280 if (RETVAL < 0)
2281 {
2282 RETVAL = Mix_GroupOldest (-1);
2283
2284 if (RETVAL < 0)
2285 XSRETURN_UNDEF;
2286
2287 Mix_HaltChannel (RETVAL);
2288 }
2289
2290 Mix_UnregisterAllEffects (RETVAL);
2291 Mix_Volume (RETVAL, 128);
2292}
2293 OUTPUT:
2294 RETVAL
2295
2296void
2297halt (CFPlus::Channel self)
2298 CODE:
2299 Mix_HaltChannel (self);
2300
2301void
2302expire (CFPlus::Channel self, int ticks = -1)
2303 CODE:
2304 Mix_ExpireChannel (self, ticks);
2305
2306void
2307fade_out (CFPlus::Channel self, int ticks = -1)
2308 CODE:
2309 Mix_FadeOutChannel (self, ticks);
2310
2311int
2312volume (CFPlus::Channel self, int volume)
2313 CODE:
2314 RETVAL = Mix_Volume (self, volume);
2315 OUTPUT:
2316 RETVAL
2317
2318void
2319unregister_all_effects (CFPlus::Channel self)
2320 CODE:
2321 Mix_UnregisterAllEffects (self);
2322
2323void
2324set_panning (CFPlus::Channel self, int left, int right)
2325 CODE:
2326 Mix_SetPanning (self, left, right);
2327
2328void
2329set_distance (CFPlus::Channel self, int distance)
2330 CODE:
2331 Mix_SetDistance (self, distance);
2332
2333void
2334set_position (CFPlus::Channel self, int angle, int distance)
2335 CODE:
2336 Mix_SetPosition (self, angle, distance);
2337
2338void
2339set_reverse_stereo (CFPlus::Channel self, int flip)
2340 CODE:
2341 Mix_SetReverseStereo (self, flip);
2342
2343MODULE = CFPlus PACKAGE = CFPlus::MixChunk
2344
2345PROTOTYPES: DISABLE
2346
2253CFPlus::MixChunk 2347CFPlus::MixChunk
2254new_from_file (SV *class, char *path) 2348new (SV *class, CFPlus::RW rwops)
2255 CODE: 2349 CODE:
2256 RETVAL = Mix_LoadWAV (path); 2350 RETVAL = Mix_LoadWAV_RW (rwops, 1);
2257 OUTPUT: 2351 OUTPUT:
2258 RETVAL 2352 RETVAL
2259 2353
2260void 2354void
2261DESTROY (CFPlus::MixChunk self) 2355DESTROY (CFPlus::MixChunk self)
2267 CODE: 2361 CODE:
2268 RETVAL = Mix_VolumeChunk (self, volume); 2362 RETVAL = Mix_VolumeChunk (self, volume);
2269 OUTPUT: 2363 OUTPUT:
2270 RETVAL 2364 RETVAL
2271 2365
2272int 2366CFPlus::Channel
2273play (CFPlus::MixChunk self, int channel = -1, int loops = 0, int ticks = -1) 2367play (CFPlus::MixChunk self, CFPlus::Channel channel = -1, int loops = 0, int ticks = -1)
2274 CODE: 2368 CODE:
2369{
2275 RETVAL = Mix_PlayChannelTimed (channel, self, loops, ticks); 2370 RETVAL = Mix_PlayChannelTimed (channel, self, loops, ticks);
2371
2372 if (RETVAL < 0)
2373 XSRETURN_UNDEF;
2374
2375 if (channel < 0)
2376 {
2377 Mix_UnregisterAllEffects (RETVAL);
2378 Mix_Volume (RETVAL, 128);
2379 }
2380}
2276 OUTPUT: 2381 OUTPUT:
2277 RETVAL 2382 RETVAL
2278 2383
2279MODULE = CFPlus PACKAGE = CFPlus::MixMusic 2384MODULE = CFPlus PACKAGE = CFPlus::MixMusic
2280 2385
2284 CODE: 2389 CODE:
2285 RETVAL = Mix_VolumeMusic (volume); 2390 RETVAL = Mix_VolumeMusic (volume);
2286 OUTPUT: 2391 OUTPUT:
2287 RETVAL 2392 RETVAL
2288 2393
2289int 2394void
2290fade_out (int ms) 2395fade_out (int ms)
2291 CODE: 2396 CODE:
2292 RETVAL = Mix_FadeOutMusic (ms); 2397 Mix_FadeOutMusic (ms);
2293 OUTPUT: 2398
2294 RETVAL 2399void
2400halt ()
2401 CODE:
2402 Mix_HaltMusic ();
2295 2403
2296CFPlus::MixMusic 2404CFPlus::MixMusic
2297new_from_file (SV *class, char *path) 2405new (SV *class, CFPlus::RW rwops)
2298 CODE: 2406 CODE:
2299 RETVAL = Mix_LoadMUS (path); 2407 RETVAL = Mix_LoadMUS_RW (rwops);
2300 OUTPUT: 2408 OUTPUT:
2301 RETVAL 2409 RETVAL
2302 2410
2303void 2411void
2304DESTROY (CFPlus::MixMusic self) 2412DESTROY (CFPlus::MixMusic self)
2310 CODE: 2418 CODE:
2311 RETVAL = Mix_PlayMusic (self, loops); 2419 RETVAL = Mix_PlayMusic (self, loops);
2312 OUTPUT: 2420 OUTPUT:
2313 RETVAL 2421 RETVAL
2314 2422
2315int 2423void
2316fade_in_pos (CFPlus::MixMusic self, int loops, int ms, double position) 2424fade_in_pos (CFPlus::MixMusic self, int loops, int ms, double position)
2317 CODE: 2425 CODE:
2318 RETVAL = Mix_FadeInMusicPos (self, loops, ms, position); 2426 Mix_FadeInMusicPos (self, loops, ms, position);
2319 OUTPUT:
2320 RETVAL
2321 2427
2322MODULE = CFPlus PACKAGE = CFPlus::OpenGL 2428MODULE = CFPlus PACKAGE = CFPlus::OpenGL
2323 2429
2324PROTOTYPES: ENABLE 2430PROTOTYPES: ENABLE
2325 2431

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines