summaryrefslogtreecommitdiff
path: root/im/src/lua5/imlua_convert.c
blob: 3c3f1461b8ec0cc5c5da60021d846e0d8f53575d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/** \file
 * \brief IM Lua 5 Binding
 *
 * See Copyright Notice in im_lib.h
 * $Id: imlua_convert.c,v 1.3 2009/08/18 02:23:33 scuri Exp $
 */

#include "im.h"
#include "im_image.h"
#include "im_convert.h"

#include <lua.h>
#include <lauxlib.h>

#include "imlua.h"
#include "imlua_image.h"
#include "imlua_aux.h"

/*****************************************************************************\
 im.ConvertDataType(src_image, dst_image, cpx2real, gamma, abssolute, cast_mode)
\*****************************************************************************/
static int imluaConvertDataType (lua_State *L)
{
  imImage* src_image = imlua_checkimage(L, 1);
  imImage* dst_image = imlua_checkimage(L, 2);
  int cpx2real = luaL_checkint(L, 3);
  float gamma = (float) luaL_checknumber(L, 4);
  int abssolute = lua_toboolean(L, 5);
  int cast_mode = luaL_checkint(L, 6);

  imlua_matchcolorspace(L, src_image, dst_image);
  imlua_pusherror(L, imConvertDataType(src_image, dst_image, cpx2real, gamma, abssolute, cast_mode));
  return 1;
}

/*****************************************************************************\
 im.ConvertColorSpace(src_image, dst_image)
\*****************************************************************************/
static int imluaConvertColorSpace (lua_State *L)
{
  imImage* src_image = imlua_checkimage(L, 1);
  imImage* dst_image = imlua_checkimage(L, 2);

  imlua_matchdatatype(L, src_image, dst_image);
  imlua_pusherror(L, imConvertColorSpace(src_image, dst_image));
  return 1;
}

/*****************************************************************************\
 im.ConvertToBitmap(src_image, dst_image, cpx2real, gamma, abssolute, cast_mode)
\*****************************************************************************/
static int imluaConvertToBitmap (lua_State *L)
{
  imImage* src_image = imlua_checkimage(L, 1);
  imImage* dst_image = imlua_checkimage(L, 2);
  int cpx2real = luaL_checkint(L, 3);
  float gamma = (float) luaL_checknumber(L, 4);
  int abssolute = lua_toboolean(L, 5);
  int cast_mode = luaL_checkint(L, 6);

  imlua_matchsize(L, src_image, dst_image);
  imlua_matchcheck(L, imImageIsBitmap(dst_image), "image must be a bitmap");

  imlua_pusherror(L, imConvertToBitmap(src_image, dst_image, cpx2real, gamma, abssolute, cast_mode));
  return 1;
}

static const luaL_reg imconvert_lib[] = {
  {"ConvertDataType", imluaConvertDataType},
  {"ConvertColorSpace", imluaConvertColorSpace},
  {"ConvertToBitmap", imluaConvertToBitmap},
  {NULL, NULL}
};

void imlua_open_convert (lua_State *L)
{
  /* "im" table is at the top of the stack */
  luaL_register(L, NULL, imconvert_lib);
#include "clua/im_convert.clua"
}