Пример #1
0
int dt_lua_init_film(lua_State * L)
{

  dt_lua_init_int_type(L,dt_lua_film_t);
  dt_lua_register_type_callback_list(L,dt_lua_film_t,film_index,NULL,film_fields_name);
  dt_lua_register_type_callback_number(L,dt_lua_film_t,film_getnum,NULL,film_len);
  lua_pushcfunction(L,dt_lua_move_image);
  dt_lua_register_type_callback_stack(L,dt_lua_film_t,"move_image");
  lua_pushcfunction(L,dt_lua_copy_image);
  dt_lua_register_type_callback_stack(L,dt_lua_film_t,"copy_image");
  luaL_getmetatable(L,"dt_lua_film_t");
  lua_pushcfunction(L,film_tostring);
  lua_setfield(L,-2,"__tostring");
  lua_pop(L,1);

  /* film table */
  dt_lua_push_darktable_lib(L);
  luaA_Type type_id = dt_lua_init_singleton(L,"film_database",NULL);
  lua_setfield(L,-2,"films");
  lua_pop(L,1);

  dt_lua_register_type_callback_number_typeid(L,type_id,films_index,NULL,films_len);
  lua_pushcfunction(L,films_new);
  dt_lua_register_type_callback_stack_typeid(L,type_id,"new");
  lua_pushcfunction(L,film_delete);
  dt_lua_register_type_callback_stack_typeid(L,type_id,"delete");

  return 0;
}
Пример #2
0
int dt_lua_init_database(lua_State * L)
{

    /* database type */
    dt_lua_init_type(L,dt_lua_database_t);
    dt_lua_register_type_callback_number(L,dt_lua_database_t,database_index,NULL,database_len);
    lua_pushcfunction(L,dt_lua_duplicate_image);
    dt_lua_register_type_callback_stack(L,dt_lua_database_t,"duplicate");
    lua_pushcfunction(L,import_images);
    dt_lua_register_type_callback_stack(L,dt_lua_database_t,"import");

    /* darktable.images() */
    dt_lua_push_darktable_lib(L);
    void * tmp= NULL;
    luaA_push(L,dt_lua_database_t,&tmp);
    lua_setfield(L,-2,"database");
    return 0;
}