⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lua_rle.c

📁 lua脚本语言调用allegro游戏程序库的接口-跨平台
💻 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 + -