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; }
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; }
int dt_lua_init_image(lua_State * L) { luaA_struct(L,dt_image_t); luaA_struct_member(L,dt_image_t,exif_exposure,float); luaA_struct_member(L,dt_image_t,exif_aperture,float); luaA_struct_member(L,dt_image_t,exif_iso,float); luaA_struct_member(L,dt_image_t,exif_focal_length,float); luaA_struct_member(L,dt_image_t,exif_focus_distance,float); luaA_struct_member(L,dt_image_t,exif_crop,float); luaA_struct_member(L,dt_image_t,exif_maker,char_32); luaA_struct_member(L,dt_image_t,exif_model,char_32); luaA_struct_member(L,dt_image_t,exif_lens,char_52); luaA_struct_member(L,dt_image_t,exif_datetime_taken,char_20); luaA_struct_member(L,dt_image_t,filename,const char_filename_length); luaA_struct_member(L,dt_image_t,width,const int32_t); luaA_struct_member(L,dt_image_t,height,const int32_t); luaA_struct_member(L,dt_image_t,longitude,double); luaA_struct_member(L,dt_image_t,latitude,double); dt_lua_init_type(L,dt_lua_image_t); dt_lua_register_type_callback_list(L,dt_lua_image_t,image_index,image_newindex,image_fields_name); dt_lua_register_type_callback_type(L,dt_lua_image_t,image_index,image_newindex,dt_image_t); dt_lua_register_type_callback_list(L,dt_lua_image_t,colorlabel_index,colorlabel_newindex,dt_colorlabels_name); dt_lua_register_type_callback(L,dt_lua_image_t,image_index,NULL, "path", "duplicate_index", "is_ldr", "is_hdr", "is_raw", "id","group_leader",NULL) ; // make these fields read-only lua_pushcfunction(L,dt_lua_duplicate_image); dt_lua_register_type_callback_stack(L,dt_lua_image_t,"duplicate"); lua_pushcfunction(L,group_with); dt_lua_register_type_callback_stack(L,dt_lua_image_t,"group_with"); lua_pushcfunction(L,make_group_leader); dt_lua_register_type_callback_stack(L,dt_lua_image_t,"make_group_leader"); lua_pushcfunction(L,get_group); dt_lua_register_type_callback_stack(L,dt_lua_image_t,"get_group_members"); luaL_getmetatable(L,"dt_lua_image_t"); lua_pushcfunction(L,image_eq); lua_setfield(L,-2,"__eq"); lua_pushcfunction(L,image_tostring); lua_setfield(L,-2,"__tostring"); lua_pop(L,1); return 0; }