📄 lua_rle.c
字号:
/****************************************************************************
** **
** LuAllegro library - Lua port of Allegro **
** Copyright (C) 2005 Peter Jamroz **
** e-mail: peterjam at poczta dot onet dot pl **
** **
** Permission to use, copy, modify, publish this software **
** is hereby granted to any person obtaining a copy of this software, **
** FREE OF CHARGE, **
** under the following conditions: **
** **
** 1: The above copyright notice and this permission notice shall be **
** included in all copies or substantial portions of the Software. **
** **
** 2: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, **
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF **
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.**
** IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY **
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, **
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE **
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. **
** **
****************************************************************************/
#include <allegro.h>
#include "lua_aleg.h"
#include "lua_rle.h"
//---------------------------------------------------------------------------------------------
//------ RLE Sprites --------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//---------------------------------------------------------------------------------------------
//RLE_SPRITE *get_rle_sprite(BITMAP *bitmap);
static int l_get_rle_sprite(lua_State* L)
{
AUD* b = (AUD*) lua_touserdata(L,1);
RLE_SPRITE *rle;
AUD* s;
if ((b) && (b->DataType==AL_BITMAP) && (b->DataPtr))
{
rle = get_rle_sprite( (BITMAP*) b->DataPtr );
if (!rle) return 0;
s= (AUD*) lua_newuserdata(L,sizeof(AUD));
if (!s) { destroy_rle_sprite(rle); return 0; }
luaL_getmetatable(L, "allegro_meta");
lua_setmetatable(L, -2);
s->DataType = AL_RLE_SPRITE;
s->DataPtr = rle;
return 1;
}
else
return 0;
}
//---------------------------------------------------------------------------------------------
//void draw_rle_sprite(BITMAP *bmp, const RLE_SPRITE *sprite, int x, int y);
static int l_draw_rle_sprite(lua_State* L)
{
int i , x , y;
AUD* au_bitmap;
BITMAP* dest;
AUD* rle;
get_first_param(au_bitmap,dest,i);
rle=lua_touserdata (L,++i);
if (!(rle) || (rle->DataType!=AL_RLE_SPRITE) || !(rle->DataPtr))
return 0;
get_param(x);
get_param(y);
draw_rle_sprite( dest , (RLE_SPRITE*) rle->DataPtr , x , y );
return 0;
}
//---------------------------------------------------------------------------------------------
static const struct luaL_reg allegro_rle_lib [] = {
{"get_rle_sprite", l_get_rle_sprite},
{"draw_rle_sprite", l_draw_rle_sprite},
{NULL, NULL} /* sentinel */
};
//-----------------------------------------------------------------------------------------------
int luaopen_allegro_rle(lua_State *L)
{
luaL_openlib(L, "allegro", allegro_rle_lib, 0);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -