Class: SDL::Surface
- Inherits:
-
Data
- Object
- Data
- SDL::Surface
- Defined in:
- ext/sdl/sdl.c
Direct Known Subclasses
Class Method Summary collapse
-
.load(path) ⇒ Object
// SDL::Surface methods:.
Instance Method Summary collapse
- #[](x, y) ⇒ Object
- #format ⇒ Object
- #h ⇒ Object
-
#make_collision_map ⇒ Object
TODO: reimplement and jettison SGE.
-
#transform(angle, xscale, yscale, flags) ⇒ Object
TODO: maybe remove? I dunno…
- #w ⇒ Object
Class Method Details
.load(path) ⇒ Object
// SDL::Surface methods:
470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 |
# File 'ext/sdl/sdl.c', line 470
static VALUE Surface_s_load(VALUE klass, VALUE path) {
UNUSED(klass);
SDL_Surface *surface;
ExportStringValue(path);
surface = IMG_Load(RSTRING_PTR(path));
if (!surface)
rb_raise(eSDLError, "Couldn't load file %s : %s",
RSTRING_PTR(path),
SDL_GetError());
return TypedData_Wrap_Struct(cSurface, &_Surface_type, surface);
}
|
Instance Method Details
#[](x, y) ⇒ Object
755 756 757 758 |
# File 'ext/sdl/sdl.c', line 755
static VALUE Surface_index(VALUE self, VALUE x, VALUE y) {
rb_raise(eSDLError, "Reading the canvas isn't currently supported");
return Qnil;
}
|
#format ⇒ Object
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 |
# File 'ext/sdl/sdl.c', line 704
static VALUE Surface_format(VALUE self) {
DEFINE_SELF(Surface, surface, self);
SDL_PixelFormat* format;
SDL_Palette* palette;
SDL_Palette* src = surface->format->palette;
// TODO: remove this or drop down to SDL_AllocFormat only
if (src) {
palette = ALLOC(SDL_Palette);
palette->ncolors = src->ncolors;
palette->colors = ALLOC_N(SDL_Color, (size_t)src->ncolors);
MEMCPY(palette->colors, src->colors, SDL_Color, (size_t)src->ncolors);
} else {
palette = NULL;
}
VALUE ret = TypedData_Make_Struct(cPixelFormat, SDL_PixelFormat, &_PixelFormat_type, format);
*format = *(surface->format);
format->palette = palette;
return ret;
}
|
#h ⇒ Object
749 750 751 752 753 |
# File 'ext/sdl/sdl.c', line 749
static VALUE Surface_h(VALUE self) {
DEFINE_SELF(Surface, surface, self);
return INT2NUM(surface->h);
}
|
#make_collision_map ⇒ Object
TODO: reimplement and jettison SGE
787 788 789 790 791 792 793 794 795 |
# File 'ext/sdl/sdl.c', line 787
static VALUE Surface_make_collision_map(VALUE self) {
DEFINE_SELF(Surface, surface, self);
sge_cdata * cdata = sge_make_cmap(surface);
if (!cdata)
FAILURE("Surface#make_collision_map");
return TypedData_Wrap_Struct(cCollisionMap, &_CollisionMap_type, cdata);
}
|
#transform(angle, xscale, yscale, flags) ⇒ Object
TODO: maybe remove? I dunno… could be nice for pre-rendering?
804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 |
# File 'ext/sdl/sdl.c', line 804
static VALUE Surface_transform(VALUE self, VALUE angle,
VALUE xscale, VALUE yscale,
VALUE flags) {
DEFINE_SELF(Surface, surface, self);
SDL_Surface *result = rotozoomSurfaceXY(surface,
NUM2FLT(angle),
NUM2FLT(xscale),
NUM2FLT(yscale),
SMOOTHING_ON);
if (!result)
FAILURE("Surface#transform");
return TypedData_Wrap_Struct(cSurface, &_Surface_type, result);
}
|
#w ⇒ Object
797 798 799 800 801 |
# File 'ext/sdl/sdl.c', line 797
static VALUE Surface_w(VALUE self) {
DEFINE_SELF(Surface, surface, self);
return INT2NUM(surface->w);
}
|