/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ----------------------------------------------------------------------------- */ #include "binding_helpers.h" #include "core/render_data.h" #include "core/graphic_resource_factory.h" #include "picture/pict.h" using namespace GS::Render; using namespace GS::Script; //------------------------------------------------------------------------------ SQInteger TextureSetWrapping(HSQUIRRELVM vm) { __SQ_GETSTART(3) __SQ_GETSAFEPTR(t, Texture, typetag_Texture) __SQ_GETBOOL(wrap_u) __SQ_GETBOOL(wrap_v) __SQ_GETEND t->SetWrapping(wrap_u ? TextureParm::WrapRepeat : TextureParm::WrapClamp, wrap_v ? TextureParm::WrapRepeat : TextureParm::WrapClamp); __SQ_RETURN } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ SQInteger TextureSetStreamState(HSQUIRRELVM vm) { __SQ_GETSTART(2) __SQ_GETSAFEPTR(t, Texture, typetag_Texture) __SQ_GETINT(stream_state) __SQ_GETEND __SQ_RETURN } SQInteger TextureRewindStream(HSQUIRRELVM vm) { __SQ_GETSINGLESAFEPTR(t, Texture, typetag_Texture) __SQ_RETURN } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ SQInteger TextureGetWidth(HSQUIRRELVM vm) { __SQ_GETSINGLESAFEPTR(t, Texture, typetag_Texture) __SQ_RETURNINT(t->GetWidth()) } SQInteger TextureGetHeight(HSQUIRRELVM vm) { __SQ_GETSINGLESAFEPTR(t, Texture, typetag_Texture) __SQ_RETURNINT(t->GetHeight()) } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ SQInteger TextureUpdate(HSQUIRRELVM vm) { __SQ_GETSTART(2) __SQ_GETSAFEPTR(t, Texture, typetag_Texture) __SQ_GETSAFEPTR(p, GS::Picture, typetag_Picture) __SQ_GETEND //__SQ_RETURNBOOL(t->Create((const char *)p->GetData(), p->GetWidth(), p->GetHeight())) t->Blit((const char *)p->GetData(), p->GetWidth(), p->GetHeight()); __SQ_RETURN } SQInteger TextureRelease(HSQUIRRELVM vm) { __SQ_GETSINGLESAFEPTR(t, Texture, typetag_Texture) t->Free(); __SQ_RETURN } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void RegisterTextureBinding(HSQUIRRELVM vm) { /*# Topic: Texture Type: Texture #*/ /*# Section: TextureStream Desc: Data streaming #*/ /*# Func: TextureSetStreamState Proto: void:texture,StreamState state Desc: Set the texture stream state. #*/ sq_register(vm, TextureSetStreamState, "TextureSetStreamState", _SC(".xi")); /*# Func: TextureRewindStream Proto: void:texture Desc: Rewind texture stream. #*/ sq_register(vm, TextureRewindStream, "TextureRewindStream", _SC(".x")); /*# Section: TextureSampling Desc: Texture sampling #*/ /*# Func: TextureSetWrapping Proto: void:Texture,bool wrap_u, bool wrap_v Desc: Set the texture U and V wrap modes. #*/ sq_register(vm, TextureSetWrapping, "TextureSetWrapping", _SC(".xbb")); /*# Section: TextureGeneric Desc: Generic #*/ /*# Func: TextureGetWidth Proto: int:texture Desc: Return the texture width. #*/ sq_register(vm, TextureGetWidth, "TextureGetWidth", _SC(".x")); /*# Func: TextureGetHeight Proto: int:texture Desc: Return the texture height. #*/ sq_register(vm, TextureGetHeight, "TextureGetHeight", _SC(".x")); /*# Func: TextureUpdate Proto: bool:Texture,Picture Desc: Update the texture data from a picture object. #*/ sq_register(vm, TextureUpdate, "TextureUpdate", _SC(".xx")); /*# Func: TextureRelease Proto: void:Texture Desc: Release the renderer data for a given texture. A subsequent call to TextureUpdate will then recreate the renderer object. #*/ sq_register(vm, TextureRelease, "TextureRelease", _SC(".x")); sq_pushroottable(vm); /*# Enum: StreamState Values: StreamPlaying,StreamPaused #*/ #if __ENABLE_DAV__ sq_pushstring(vm, "StreamPlaying", -1); sq_pushinteger(vm, TextureStreamInterface::Stream_Playing); sq_newslot(vm, -3, true); sq_pushstring(vm, "StreamPaused", -1); sq_pushinteger(vm, TextureStreamInterface::Stream_Paused); sq_newslot(vm, -3, true); #endif sq_pushstring(vm, "NullTexture", -1); CObject::Push(vm, NULL, typetag_Texture); sq_newslot(vm, -3, true); sq_pop(vm, 1); } //------------------------------------------------------------------------------