Exemplo n.º 1
0
int RenderTargetBinder::getPixels(lua_State *L)
{
    Binder binder(L);

    GRenderTarget *renderTarget = static_cast<GRenderTarget*>(binder.getInstance("RenderTarget", 1));
    int x = luaL_optinteger(L, 2, 0);
    int y = luaL_optinteger(L, 3, 0);
    unsigned int w = luaL_optinteger(L, 4, renderTarget->data->width);
    unsigned int h = luaL_optinteger(L, 5, renderTarget->data->height);
    size_t bsize=w*h*4;

    void *buffer=malloc(bsize);
    memset(buffer,0xFF,bsize);
    if (x<0)
    {
    	w=w+x;
    	x=0;
    }
    if (y<0)
    {
    	h=h+y;
    	y=0;
    }
    if ((w>0)&&(h>0))
    	renderTarget->getPixels(x,y,w,h,buffer);
    lua_pushlstring(L,(char *)buffer,bsize);
    free(buffer);

    return 1;
}
Exemplo n.º 2
0
int RenderTargetBinder::getPixel(lua_State *L)
{
    Binder binder(L);

    GRenderTarget *renderTarget = static_cast<GRenderTarget*>(binder.getInstance("RenderTarget", 1));
    int x = luaL_checkinteger(L, 2);
    int y = luaL_checkinteger(L, 3);

    unsigned char pixel[4]={0xFF,0xFF,0xFF,0xFF};

    if ((x>=0)&&(y>=0))
    	renderTarget->getPixels(x,y,1,1,pixel);

    lua_pushnumber(L,(pixel[0]<<16)|(pixel[1]<<8)|(pixel[2]<<0));
    lua_pushnumber(L,((float)pixel[3])/255.0);

    return 2;
}