⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 callbacks.c

📁 Coriander is a GUI for controlling a Digital Camera (in the sense of the IIDC specs issued by the 1
💻 C
📖 第 1 页 / 共 4 页
字号:
/* * Copyright (C) 2000-2004 Damien Douxchamps  <ddouxchamps@users.sf.net> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */#include "coriander.h"#define EEPROM_CNFG       0xF00U#define TEST_CNFG         0xF04U#define CCR_BASE          0xFFFFF0F00000ULLgbooleanon_main_window_delete_event       (GtkWidget       *widget,                                        GdkEvent        *event,                                        gpointer         user_data){  gtk_exit(0);  return FALSE;}voidon_file_activate                       (GtkMenuItem     *menuitem,                                        gpointer         user_data){  // function intentionnaly left almost blank: intermediate menu}voidon_exit_activate                       (GtkMenuItem     *menuitem,                                        gpointer         user_data){  gtk_exit(0);}voidon_about_activate                      (GtkMenuItem     *menuitem,                                        gpointer         user_data){  about_window = create_about_window ();  gtk_signal_connect(GTK_OBJECT(about_window), "realize",		     GTK_SIGNAL_FUNC(window_set_icon), about_window);  gtk_widget_show (about_window);}voidon_fps_activate                    (GtkMenuItem     *menuitem,				    gpointer         user_data){  int state;    IsoFlowCheck(&state);      if(dc1394_set_video_framerate(camera->camera_info.handle, camera->camera_info.id, (int)user_data)!=DC1394_SUCCESS)    MainError("Could not set framerate");  else    camera->misc_info.framerate=(int)user_data;  IsoFlowResume(&state);}voidon_power_on_clicked                    (GtkButton       *button,                                        gpointer         user_data){  if(dc1394_camera_on(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)    MainError("Could not set camera 'on'");}voidon_power_off_clicked                   (GtkButton       *button,                                        gpointer         user_data){  if(dc1394_camera_off(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)    MainError("Could not set camera 'off'");}voidon_power_reset_clicked                 (GtkButton       *button,                                        gpointer         user_data){  if (dc1394_init_camera(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)    MainError("Could not initilize camera");}voidon_trigger_polarity_toggled            (GtkToggleButton *togglebutton,                                        gpointer         user_data){  if (dc1394_set_trigger_polarity(camera->camera_info.handle, camera->camera_info.id,togglebutton->active)!=DC1394_SUCCESS)    MainError("Cannot set trigger polarity");  else    camera->feature_set.feature[FEATURE_TRIGGER-FEATURE_MIN].trigger_polarity=(int)togglebutton->active;}voidon_trigger_mode_activate              (GtkMenuItem     *menuitem,				       gpointer         user_data){  if (dc1394_set_trigger_mode(camera->camera_info.handle, camera->camera_info.id, (int)user_data)!=DC1394_SUCCESS)    MainError("Could not set trigger mode");  else    camera->feature_set.feature[FEATURE_TRIGGER-FEATURE_MIN].trigger_mode=(int)user_data;  UpdateTriggerFrame();}voidon_trigger_external_toggled            (GtkToggleButton *togglebutton,                                        gpointer         user_data){  if (dc1394_feature_on_off(camera->camera_info.handle, camera->camera_info.id, FEATURE_TRIGGER, togglebutton->active)!=DC1394_SUCCESS)    MainError("Could not set external trigger source");  else    camera->feature_set.feature[FEATURE_TRIGGER-FEATURE_MIN].is_on=togglebutton->active;  UpdateTriggerFrame();}voidon_memory_channel_activate              (GtkMenuItem     *menuitem,					 gpointer         user_data){  camera->misc_info.save_channel=(int)user_data; // user data is an int.  camera->misc_info.load_channel=(int)user_data; // user data is an int.  UpdateMemoryFrame();}voidon_load_mem_clicked                    (GtkButton       *button,                                        gpointer         user_data){  if (dc1394_memory_load(camera->camera_info.handle, camera->camera_info.id, camera->misc_info.load_channel)!=DC1394_SUCCESS)    MainError("Cannot load memory channel");  UpdateAllWindows();}voidon_save_mem_clicked                    (GtkButton       *button,                                        gpointer         user_data){   unsigned long int timeout_bin=0;  unsigned long int step;  dc1394bool_t value=TRUE;  step=(unsigned long int)(1000000.0/preferences.auto_update_frequency);  if (dc1394_set_memory_save_ch(camera->camera_info.handle, camera->camera_info.id, camera->misc_info.save_channel)!=DC1394_SUCCESS)    MainError("Could not set memory save channel");  else {     if (dc1394_memory_save(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)      MainError("Could not save setup to memory channel");    else {      while ((value==DC1394_TRUE) &&(timeout_bin<(unsigned long int)(preferences.op_timeout*1000000.0)) ) {	usleep(step);	if (dc1394_is_memory_save_in_operation(camera->camera_info.handle, camera->camera_info.id, &value)!=DC1394_SUCCESS)	  MainError("Could not query if memory save is in operation");	timeout_bin+=step;      }      if (timeout_bin>=(unsigned long int)(preferences.op_timeout*1000000.0))	MainStatus("Save operation function timed-out!");     }  }}voidon_iso_start_clicked                   (GtkButton       *button,                                        gpointer         user_data){  dc1394bool_t status;  if (dc1394_start_iso_transmission(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)    MainError("Could not start ISO transmission");  else {    usleep(DELAY);    if (dc1394_get_iso_status(camera->camera_info.handle, camera->camera_info.id, &status)!=DC1394_SUCCESS)      MainError("Could get ISO status");    else {      if (status==DC1394_FALSE) {	MainError("ISO transmission refuses to start");      }      camera->misc_info.is_iso_on=status;      UpdateIsoFrame();    }  }  UpdateTransferStatusFrame();}voidon_iso_stop_clicked                    (GtkButton       *button,                                        gpointer         user_data){  dc1394bool_t status;  if (dc1394_stop_iso_transmission(camera->camera_info.handle, camera->camera_info.id)!=DC1394_SUCCESS)    MainError("Could not stop ISO transmission");  else {    usleep(DELAY);    if (dc1394_get_iso_status(camera->camera_info.handle, camera->camera_info.id, &status)!=DC1394_SUCCESS)      MainError("Could get ISO status");    else {      if (status==DC1394_TRUE) {	MainError("ISO transmission refuses to stop");      }      camera->misc_info.is_iso_on=status;      UpdateIsoFrame();    }  }  UpdateTransferStatusFrame();}voidon_iso_restart_clicked                 (GtkButton       *button,                                        gpointer         user_data){  on_iso_stop_clicked(GTK_BUTTON(lookup_widget(main_window,"iso_stop")),NULL);  on_iso_start_clicked(GTK_BUTTON(lookup_widget(main_window,"iso_start")),NULL);  UpdateTransferStatusFrame();}voidon_camera_select_activate              (GtkMenuItem     *menuitem,					gpointer         user_data){  camera_t* camera_ptr;    // close current display (we don't want display to be used by 2 threads at the same time 'cause SDL forbids it)  DisplayStopThread(camera);  camera_ptr=(camera_t*)user_data;  // set current camera pointers:  SetCurrentCamera(camera_ptr->camera_info.euid_64);#ifdef HAVE_SDLLIB  watchthread_info.draw=0;  watchthread_info.mouse_down=0;  watchthread_info.crop=0;#endif  if (camera->want_to_display>0)    DisplayStartThread(camera);  //fprintf(stderr,"camera: %s\n",camera->prefs.name);  // redraw all:  BuildAllWindows();  UpdateAllWindows();}voidon_format7_packet_size_changed               (GtkAdjustment    *adj,					      gpointer         user_data){   int bpp;  int state;  int value;    value=(int)adj->value;  value=NearestValue(value,camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].min_bpp,		     camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].min_bpp,		     camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].max_bpp);  // do something if we were called by a first generation signal:  if (gtk_signal_n_emissions_by_name(GTK_OBJECT (adj), "changed")==0) {    IsoFlowCheck(&state);        if (dc1394_set_format7_byte_per_packet(camera->camera_info.handle, camera->camera_info.id, 					   camera->format7_info.edit_mode, value)!=DC1394_SUCCESS)      MainError("Could not change Format7 bytes per packet");    if (dc1394_query_format7_byte_per_packet(camera->camera_info.handle, camera->camera_info.id,					     camera->format7_info.edit_mode,&bpp)!=DC1394_SUCCESS)       MainError("Could not query Format7 bytes per packet");    else {      camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].bpp=bpp;      if (bpp==0)	fprintf(stderr,"BPP is zero in %s at line %d\n",__FUNCTION__,__LINE__);            // tell the range to change its setting      adj->value=bpp;      gtk_signal_emit_by_name(GTK_OBJECT (adj), "changed");            usleep(DELAY);    }    GetFormat7ModeInfo(camera, camera->format7_info.edit_mode);    UpdateFormat7InfoFrame();    IsoFlowResume(&state);      }} voidon_edit_format7_mode_activate             (GtkMenuItem     *menuitem,					   gpointer         user_data){  camera->format7_info.edit_mode=(int)user_data;  GetFormat7ModeInfo(camera, camera->format7_info.edit_mode);  UpdateFormat7Window();}voidon_edit_format7_color_activate             (GtkMenuItem     *menuitem,					    gpointer         user_data){  int state;  // if the mode is the 'live' mode:  if (camera->format7_info.edit_mode==camera->misc_info.mode)    IsoFlowCheck(&state);  if (dc1394_set_format7_color_coding_id(camera->camera_info.handle, camera->camera_info.id, camera->format7_info.edit_mode, (int)user_data)!=DC1394_SUCCESS)    MainError("Could not change Format7 color coding");  else    camera->format7_info.mode[camera->format7_info.edit_mode-MODE_FORMAT7_MIN].color_coding_id=(int)user_data;  GetFormat7ModeInfo(camera, camera->format7_info.edit_mode);  UpdateOptionFrame();  UpdateFormat7Window();  /*UpdateFormat7BppRange();    UpdateFormat7Ranges();    UpdateFormat7InfoFrame();*/  // if the mode is the 'live' mode:  if (camera->format7_info.edit_mode==camera->misc_info.mode) {    IsoFlowResume(&state);  }}voidon_scale_value_changed             ( GtkAdjustment    *adj,				     gpointer         user_data){  switch((int)user_data) {  case FEATURE_TEMPERATURE:    if (dc1394_set_temperature(camera->camera_info.handle, camera->camera_info.id,adj->value)!=DC1394_SUCCESS)      MainError("Could not set temperature");    else      camera->feature_set.feature[FEATURE_TEMPERATURE-FEATURE_MIN].target_value=adj->value;    break;  case FEATURE_WHITE_BALANCE+BU*4: // why oh why is there a *4?    if (dc1394_set_white_balance(camera->camera_info.handle, camera->camera_info.id,adj->value, camera->feature_set.feature[FEATURE_WHITE_BALANCE-FEATURE_MIN].RV_value)!=DC1394_SUCCESS)      MainError("Could not set B/U white balance");    else {      camera->feature_set.feature[FEATURE_WHITE_BALANCE-FEATURE_MIN].BU_value=adj->value;      if (camera->feature_set.feature[FEATURE_WHITE_BALANCE-FEATURE_MIN].absolute_capable!=0) {	GetAbsValue(FEATURE_WHITE_BALANCE);      }    }    break;  case FEATURE_WHITE_BALANCE+RV*4: // why oh why is there a *4?

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -