1/* Copyright 2009-2013 Yorba Foundation 2 * 3 * This software is licensed under the GNU LGPL (version 2.1 or later). 4 * See the COPYING file in this distribution. 5 */ 6 7[CCode ( 8 cprefix="GP", 9 lower_case_cprefix="gp_" 10)] 11namespace GPhoto { 12 [SimpleType] 13 [CCode ( 14 cname="CameraAbilities", 15 destroy_function="", 16 cheader_filename="gphoto2/gphoto2-abilities-list.h" 17 )] 18 public struct CameraAbilities { 19 public string model; 20 public int status; 21 public PortType port; 22 public string speed; 23 public CameraOperation operations; 24 public CameraFileOperation file_operations; 25 public CameraFolderOperation folder_operations; 26 public int usb_vendor; 27 public int usb_product; 28 public int usb_class; 29 public int usb_protocol; 30 } 31 32 [Compact] 33 [CCode ( 34 cname="CameraAbilitiesList", 35 cprefix="gp_abilities_list_", 36 free_function="gp_abilities_list_free", 37 cheader_filename="gphoto2/gphoto2-abilities-list.h" 38 )] 39 public class CameraAbilitiesList { 40 [CCode (cname="gp_abilities_list_new")] 41 public static Result create(out CameraAbilitiesList abilitiesList); 42 public Result load(Context context); 43 public Result reset(); 44 public Result detect(PortInfoList portList, CameraList cameraList, Context context); 45 public int count(); 46 public int lookup_model(string model); 47 public Result get_abilities(int index, out CameraAbilities abilities); 48 } 49 50 [Compact] 51 [CCode ( 52 cname="Camera", 53 ref_function="GPHOTO_REF_CAMERA", 54 unref_function="gp_camera_unref", 55 free_function="gp_camera_free", 56 cheader_filename="gphoto2/gphoto2-camera.h,gphoto.h" 57 )] 58 public class Camera { 59 [CCode (cname="gp_camera_new")] 60 public static Result create(out Camera camera); 61 public Result init(Context context); 62 public Result exit(Context context); 63 public Result get_port_info(out PortInfo info); 64 public Result set_port_info(PortInfo info); 65 public Result get_abilities(out CameraAbilities abilities); 66 public Result set_abilities(CameraAbilities abilities); 67 public Result get_storageinfo(CameraStorageInformation **sifs, out int count, Context context); 68 69 // Folders 70 [CCode (cname="gp_camera_folder_list_folders")] 71 public Result list_folders(string folder, CameraList list, Context context); 72 [CCode (cname="gp_camera_folder_list_files")] 73 public Result list_files(string folder, CameraList list, Context context); 74 [CCode (cname="gp_camera_folder_delete_all")] 75 public Result delete_all_files(string folder, Context context); 76 [CCode (cname="gp_camera_folder_put_file")] 77 public Result put_file(string folder, CameraFile file, Context context); 78 [CCode (cname="gp_camera_folder_make_dir")] 79 public Result make_dir(string folder, string name, Context context); 80 [CCode (cname="gp_camera_folder_remove_dir")] 81 public Result remove_dir(string folder, string name, Context context); 82 83 // Files 84 [CCode (cname="gp_camera_file_get_info")] 85 public Result get_file_info(string folder, string file, out CameraFileInfo info, Context context); 86 [CCode (cname="gp_camera_file_set_info")] 87 public Result set_file_info(string folder, string file, CameraFileInfo info, Context context); 88 [CCode (cname="gp_camera_file_get")] 89 public Result get_file(string folder, string filename, CameraFileType type, CameraFile file, 90 Context context); 91 [CCode (cname="gp_camera_file_delete")] 92 public Result delete_file(string folder, string filename, Context context); 93 } 94 95 [Compact] 96 [CCode ( 97 cname="CameraFile", 98 cprefix="gp_file_", 99 ref_function="GPHOTO_REF_FILE", 100 unref_function="gp_file_unref", 101 free_function="gp_file_free", 102 cheader_filename="gphoto2/gphoto2-file.h,gphoto.h" 103 )] 104 public class CameraFile { 105 [CCode (cname="gp_file_new")] 106 public static Result create(out CameraFile file); 107 public Result get_data_and_size(out uint8 *data, out ulong data_len); 108 public Result save(string filename); 109 public Result slurp(uint8[] data, out size_t readlen); 110 } 111 112 [SimpleType] 113 [CCode ( 114 cname="CameraFileInfo", 115 destroy_function="", 116 cheader_filename="gphoto2/gphoto2-filesys.h" 117 )] 118 public struct CameraFileInfo { 119 public CameraFileInfoPreview preview; 120 public CameraFileInfoFile file; 121 public CameraFileInfoAudio audio; 122 } 123 124 [SimpleType] 125 [CCode ( 126 cname="CameraFileInfoAudio", 127 cheader_filename="gphoto2/gphoto2-filesys.h" 128 )] 129 public struct CameraFileInfoAudio { 130 } 131 132 [CCode ( 133 cname="CameraFileInfoFields", 134 cheader_filename="gphoto2/gphoto2-filesys.h", 135 cprefix="GP_FILE_INFO_" 136 )] 137 [Flags] 138 public enum CameraFileInfoFields { 139 NONE, 140 TYPE, 141 NAME, 142 SIZE, 143 WIDTH, 144 HEIGHT, 145 PERMISSIONS, 146 STATUS, 147 MTIME, 148 ALL 149 } 150 151 [SimpleType] 152 [CCode ( 153 cname="CameraFileInfoFile", 154 cheader_filename="gphoto2/gphoto2-filesys.h" 155 )] 156 public struct CameraFileInfoFile { 157 public CameraFileInfoFields fields; 158 public CameraFileStatus status; 159 public ulong size; 160 public string type; 161 public uint width; 162 public uint height; 163 public string name; 164 public CameraFilePermissions permissions; 165 public time_t mtime; 166 } 167 168 [SimpleType] 169 [CCode ( 170 cname="CameraFileInfoPreview", 171 cheader_filename="gphoto2/gphoto2-filesys.h" 172 )] 173 public struct CameraFileInfoPreview { 174 public CameraFileInfoFields fields; 175 public CameraFileStatus status; 176 public ulong size; 177 public string type; 178 public uint width; 179 public uint height; 180 public string name; 181 public CameraFilePermissions permissions; 182 public time_t mtime; 183 } 184 185 [CCode ( 186 cname="CameraFileOperation", 187 cheader_filename="gphoto2/gphoto2-abilities-list.h", 188 cprefix="GP_FILE_OPERATION_" 189 )] 190 [Flags] 191 public enum CameraFileOperation { 192 NONE, 193 DELETE, 194 PREVIEW, 195 RAW, 196 AUDIO, 197 EXIF 198 } 199 200 [CCode ( 201 cname="CameraFilePermissions", 202 cheader_filename="gphoto2/gphoto2-filesys.h", 203 cprefix="GP_FILE_PERM_" 204 )] 205 [Flags] 206 public enum CameraFilePermissions { 207 NONE, 208 READ, 209 DELETE, 210 ALL 211 } 212 213 [CCode ( 214 cname="CameraFileStatus", 215 cheader_filename="gphoto2/gphoto2-filesys.h", 216 cprefix="GP_FILE_STATUS_" 217 )] 218 public enum CameraFileStatus { 219 NOT_DOWNLOADED, 220 DOWNLOADED 221 } 222 223 [CCode ( 224 cname="CameraFileType", 225 cheader_filename="gphoto2/gphoto2-file.h", 226 cprefix="GP_FILE_TYPE_" 227 )] 228 public enum CameraFileType { 229 PREVIEW, 230 NORMAL, 231 RAW, 232 AUDIO, 233 EXIF, 234 METADATA 235 } 236 237 [CCode ( 238 cname="CameraFolderOperation", 239 cheader_filename="gphoto2/gphoto2-abilities-list.h", 240 cprefix="GP_FOLDER_OPERATION_" 241 )] 242 [Flags] 243 public enum CameraFolderOperation { 244 NONE, 245 DELETE_ALL, 246 PUT_FILE, 247 MAKE_DIR, 248 REMOVE_DIR 249 } 250 251 [Compact] 252 [CCode ( 253 cname="CameraList", 254 cprefix="gp_list_", 255 ref_function="GPHOTO_REF_LIST", 256 unref_function="gp_list_unref", 257 free_function="gp_list_free", 258 cheader_filename="gphoto2/gphoto2-list.h,gphoto.h" 259 )] 260 public class CameraList { 261 [CCode (cname="gp_list_new")] 262 public static Result create(out CameraList list); 263 public int count(); 264 public Result append(string name, string value); 265 public Result reset(); 266 public Result sort(); 267 public Result find_by_name(out int? index, string name); 268 public Result get_name(int index, out unowned string name); 269 public Result get_value(int index, out unowned string value); 270 public Result set_name(int index, string name); 271 public Result set_value(int index, string value); 272 public Result populate(string format, int count); 273 } 274 275 [CCode ( 276 cname="CameraOperation", 277 cheader_filename="gphoto2/gphoto2-abilities-list.h", 278 cprefix="GP_OPERATION_" 279 )] 280 [Flags] 281 public enum CameraOperation { 282 NONE, 283 CAPTURE_IMAGE, 284 CAPTURE_VIDEO, 285 CAPTURE_AUDIO, 286 CAPTURE_PREVIEW, 287 CONFIG 288 } 289 290 [CCode ( 291 cname="CameraStorageInfoFields", 292 cheader_filename="gphoto2/gphoto2-filesys.h", 293 cprefix="GP_STORAGEINFO_" 294 )] 295 [Flags] 296 public enum CameraStorageInfoFields { 297 BASE, 298 LABEL, 299 DESCRIPTION, 300 ACCESS, 301 STORAGETYPE, 302 FILESYSTEMTYPE, 303 MAXCAPACITY, 304 FREESPACEKBYTES, 305 FREESPACEIMAGES 306 } 307 308 [SimpleType] 309 [CCode ( 310 cname="CameraStorageInformation", 311 cheader_filename="gphoto2/gphoto2-filesys.h" 312 )] 313 public struct CameraStorageInformation { 314 public CameraStorageInfoFields fields; 315 public string basedir; 316 public string label; 317 public string description; 318 public int type; 319 public int fstype; 320 public int access; 321 public ulong capacitykbytes; 322 public ulong freekbytes; 323 public ulong freeimages; 324 } 325 326 [Compact] 327 [CCode ( 328 ref_function="GPHOTO_REF_CONTEXT", 329 unref_function="gp_context_unref", 330 cheader_filename="gphoto2/gphoto2-context.h,gphoto.h" 331 )] 332 public class Context { 333 [CCode (cname="gp_context_new")] 334 public Context(); 335 public void set_idle_func(ContextIdleFunc func); 336 public void set_progress_funcs( 337 [CCode (delegate_target_pos=3.1)] ContextProgressStartFunc startFunc, 338 [CCode (delegate_target_pos=3.1)] ContextProgressUpdateFunc updateFunc, 339 [CCode (delegate_target_pos=3.1)] ContextProgressStopFunc stopFunc); 340 public void set_error_func([CCode (delegate_target_pos=3.1)] ContextErrorFunc errorFunc); 341 public void set_status_func([CCode (delegate_target_pos=3.1)] ContextStatusFunc statusFunc); 342 public void set_message_func([CCode (delegate_target_pos=3.1)] ContextMessageFunc messageFunc); 343 } 344 345 public delegate void ContextIdleFunc(Context context); 346 347 public delegate void ContextErrorFunc(Context context, string text); 348 349 public delegate void ContextStatusFunc(Context context, string text); 350 351 public delegate void ContextMessageFunc(Context context, string text); 352 353 // TODO: Support for va_args in Vala, esp. for delegates? 354 public delegate uint ContextProgressStartFunc(Context context, float target, string text); 355 356 public delegate void ContextProgressUpdateFunc(Context context, uint id, float current); 357 358 public delegate void ContextProgressStopFunc(Context context, uint id); 359 360 [CCode ( 361 cheader_filename="gphoto2/gphoto2-file.h", 362 cprefix="GP_MIME_" 363 )] 364 namespace MIME { 365 public const string WAV; 366 public const string RAW; 367 public const string PNG; 368 public const string PGM; 369 public const string PPM; 370 public const string PNM; 371 public const string JPEG; 372 public const string TIFF; 373 public const string BMP; 374 public const string QUICKTIME; 375 public const string AVI; 376 public const string CRW; 377 public const string UNKNOWN; 378 public const string EXIF; 379 public const string MP3; 380 public const string OGG; 381 public const string WMA; 382 public const string ASF; 383 public const string MPEG; 384 } 385 386 [SimpleType] 387 [CCode ( 388 destroy_function="", 389 cheader_filename="gphoto2/gphoto2-port-info-list.h" 390 )] 391 public struct PortInfo { 392 [CCode (cname="gp_port_info_get_path")] 393 public int get_path(out unowned string path); 394 [CCode (cname="gp_port_info_set_path")] 395 public int set_path(string path); 396 [CCode (cname="gp_port_info_get_name")] 397 public int get_name(out unowned string name); 398 [CCode (cname="gp_port_info_set_name")] 399 public int set_name(string path); 400 [CCode (cname="gp_port_info_get_library_filename")] 401 public int get_library_filename(out unowned string lib); 402 [CCode (cname="gp_port_info_set_library_filename")] 403 public int set_library_filename(string lib); 404 } 405 406 [Compact] 407 [CCode ( 408 free_function="gp_port_info_list_free", 409 cheader_filename="gphoto2/gphoto2-port-info-list.h" 410 )] 411 public class PortInfoList { 412 [CCode (cname="gp_port_info_list_new")] 413 public static Result create(out PortInfoList list); 414 public Result load(); 415 public int count(); 416 public int lookup_name(string name); 417 public int lookup_path(string name); 418 public Result get_info(int index, out PortInfo info); 419 } 420 421 [CCode ( 422 cheader_filename="gphoto2/gphoto2-port-info-list.h", 423 cprefix="GP_PORT_" 424 )] 425 [Flags] 426 public enum PortType { 427 NONE, 428 SERIAL, 429 USB, 430 DISK, 431 PTPIP 432 } 433 434 [CCode ( 435 cname="int", 436 cheader_filename="gphoto2/gphoto2-result.h,gphoto2/gphoto2-port-result.h", 437 cprefix="GP_ERROR_" 438 )] 439 public enum Result { 440 [CCode (cname="GP_OK")] 441 OK, 442 [CCode (cname="GP_ERROR")] 443 ERROR, 444 BAD_PARAMETERS, 445 NO_MEMORY, 446 LIBRARY, 447 UNKNOWN_PORT, 448 NOT_SUPPORTED, 449 IO, 450 FIXED_LIMIT_EXCEEDED, 451 TIMEOUT, 452 IO_SUPPORTED_SERIAL, 453 IO_SUPPORTED_USB, 454 IO_INIT, 455 IO_READ, 456 IO_WRITE, 457 IO_UPDATE, 458 IO_SERIAL_SPEED, 459 IO_USB_CLEAR_HALT, 460 IO_USB_FIND, 461 IO_USB_CLAIM, 462 IO_LOCK, 463 HAL, 464 CORRUPTED_DATA, 465 FILE_EXISTS, 466 MODEL_NOT_FOUND, 467 DIRECTORY_NOT_FOUND, 468 FILE_NOT_FOUND, 469 DIRECTORY_EXISTS, 470 CAMERA_BUSY, 471 PATH_NOT_ABSOLUTE, 472 CANCEL, 473 CAMERA_ERROR, 474 OS_FAILURE; 475 476 [CCode (cname="gp_port_result_as_string")] 477 public unowned string as_string(); 478 479 public string to_full_string() { 480 return "%s (%d)".printf(as_string(), this); 481 } 482 } 483 484 [CCode ( 485 cheader_filename="gphoto2/gphoto2-version.h", 486 cprefix="GP_VERSION" 487 )] 488 public enum VersionVerbosity { 489 SHORT, 490 VERBOSE 491 } 492 493 public unowned string library_version(VersionVerbosity verbosity); 494} 495 496