Added Rect.xs
Kartik Thakore [Tue, 8 Sep 2009 16:32:50 +0000 (12:32 -0400)]
src/Rect.xs [new file with mode: 0644]

diff --git a/src/Rect.xs b/src/Rect.xs
new file mode 100644 (file)
index 0000000..61b8c4e
--- /dev/null
@@ -0,0 +1,85 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#ifndef aTHX_
+#define aTHX_
+#endif
+
+#include <SDL.h>
+
+
+
+MODULE = SDL::Rect     PACKAGE = SDL::Rect
+
+SDL_Rect *
+new (CLASS)
+       char* CLASS
+       CODE:
+               RETVAL = (SDL_Rect *) safemalloc (sizeof(SDL_Rect));
+               RETVAL->x = 0;
+               RETVAL->y = 0;
+               RETVAL->w = 0;
+               RETVAL->h = 0;
+       OUTPUT:
+               RETVAL
+
+void
+SetRect(rect, x, y, w, h)
+       SDL_Rect *rect
+       Sint16 x        
+       Sint16 y
+       Uint16 w
+       Uint16 h
+       CODE:
+               rect->x = x;
+               rect->y = y;
+               rect->w = w;
+               rect->h = h;
+               
+
+Sint16
+RectX ( rect, ... )
+       SDL_Rect *rect
+       CODE:
+               if (items > 1 ) rect->x = SvIV(ST(1)); 
+               RETVAL = rect->x;
+       OUTPUT:
+               RETVAL
+
+Sint16
+RectY ( rect, ... )
+       SDL_Rect *rect
+       CODE:
+               if (items > 1 ) rect->y = SvIV(ST(1)); 
+               RETVAL = rect->y;
+       OUTPUT:
+               RETVAL
+
+Uint16
+RectW ( rect, ... )
+       SDL_Rect *rect
+       CODE:
+               if (items > 1 ) rect->w = SvIV(ST(1)); 
+               RETVAL = rect->w;
+       OUTPUT:
+               RETVAL
+
+Uint16
+RectH ( rect, ... )
+       SDL_Rect *rect
+       CODE:
+               if (items > 1 ) rect->h = SvIV(ST(1)); 
+               RETVAL = rect->h;
+       OUTPUT:
+               RETVAL
+
+
+void
+DESTROY(self)
+       SDL_Rect *self
+       CODE:
+               printf("RectPtr::DESTROY\n");
+               safefree( (char *)self );
+
+