void gtkam_chooser_set_camera (GtkamChooser *chooser, GtkamCamera *camera) { CameraAbilities a; GPPortInfo info; gchar *full_info; #ifdef HAVE_GP_PORT_INFO_GET_NAME char *xname,*xpath; #endif g_return_if_fail (GTKAM_IS_CHOOSER (chooser)); g_return_if_fail (GTKAM_IS_CAMERA (camera)); gp_camera_get_abilities (camera->camera, &a); gp_camera_get_port_info (camera->camera, &info); #ifdef HAVE_GP_PORT_INFO_GET_NAME gp_port_info_get_name (info, &xname); gp_port_info_get_path (info, &xpath); full_info = g_strdup_printf ("%s (%s)", xname, xpath); #else full_info = g_strdup_printf ("%s (%s)", info.name, info.path); #endif gtk_entry_set_text (chooser->priv->entry_port, full_info); g_free (full_info); gtk_entry_set_text (chooser->priv->entry_model, a.model); gtk_toggle_button_set_active ( GTK_TOGGLE_BUTTON (chooser->priv->check_multi), camera->multi); chooser->priv->needs_update = FALSE; gtk_widget_set_sensitive (chooser->apply_button, FALSE); }
CAMLprim value caml_gp_camera_get_port_info(value cam_val) { CAMLparam1(cam_val); Camera *cam = Camera_val(cam_val); GPPortInfo *info = malloc(sizeof(*info)); int ret = gp_camera_get_port_info(cam, info); CHECK_RESULT(ret); CAMLreturn(encapsulate_pointer(info)); }
int main (int argc, char** argv) { std::cout<<"GP_OK = "<<GP_OK<<std::endl; GPContext *currentContext = NULL; gp_context_new(); Camera *camera=NULL; gp_camera_new (&camera); gp_camera_init (camera, currentContext); CameraAbilitiesList * abilitiesList; CameraAbilities abilities; CameraAbilities * ptr_abilities; ptr_abilities = &abilities; int haveListAbilities = gp_abilities_list_get_abilities (abilitiesList, 0, ptr_abilities); std::cout<<"haveListAbilities : "<< haveListAbilities<<std::endl; /* int haveAbilities = gp_camera_set_abilities(camera, abilities); std::cout<<"haveAbilities : "<< haveAbilities<<std::endl;*/ /* //in case camera driver can't figure out the current camera's speed //gp_camera_set_port_path or name => pas TROUVE int speed; //AURA BESOIN D4UNE VALEUR (???) int hasSpeed = gp_camera_set_port_speed (camera, speed); */ //to know port's camera GPPortInfo info; GPPortInfo * ptr_info; ptr_info = &info; /* int infoSetted = gp_camera_set_port_info (camera, info); std::cout<<"infoSetted : "<< infoSetted<<std::endl;*/ /// int infoGetted = gp_camera_get_port_info(camera, ptr_info); std::cout<<"infoGetted : "<< infoGetted<<std::endl; //To have a window with camera's config CameraWidget ** widget; CameraWidgetType type; const char *label; int widgetCreated = gp_widget_new (type, label, widget); std::cout<<"widgetCreated : "<< widgetCreated<<std::endl; //get config int configGetted = gp_camera_get_config (camera, widget, currentContext); std::cout<<"configGetted : "<< configGetted<<std::endl; //set the configuration's camera // int cameraSetted = gp_camera_set_config (camera, *widget, currentContext); // std::cout<<"cameraSetted : "<< cameraSetted<<std::endl; //HAVE TO FIND FUNCTION WHICH GET/SET THE PÄTH CameraFilePath * path; //IDEM CameraCaptureType typeCapture; CameraFileType typeFile; //mm type à priori //capture int captured = gp_camera_capture (camera, typeCapture, path, currentContext); std::cout<<"captured : "<< captured<<std::endl; //To get capture from camera to computer //folder on computer //TO COMPLETE const char *folder = "../pictures"; //TO COMPLETE //(devra être renseigné en fonction du numéro de la photoprécédente par ex) const char *file = "picture001"; //?? CameraFile * camera_file; int captureGetted = gp_camera_file_get(camera, folder, file, typeFile,camera_file, currentContext); std::cout<<"captureGetted : "<< captureGetted<<std::endl; int indiceCountCamera = gp_camera_unref (camera); //Before the end of using camera => better! int cameraExited = gp_camera_exit (camera, currentContext); return EXIT_SUCCESS; }