gphoto4ruby 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,15 @@
1
1
  == master
2
2
 
3
+ * Added "delete file from camera" function
4
+
5
+ == 0.1.2
6
+
7
+ * Had to change version number to make gem build
8
+ * 'Save' function can accept options. See rdoc
9
+ * Gemspec made safer
10
+
11
+ == 0.1.1
12
+
3
13
  * Added rdoc comments
4
14
  * Added saving captured image to specified folder
5
15
  * Added folders browsing
data/README.rdoc CHANGED
@@ -17,19 +17,92 @@ calling object methods.
17
17
  * First of all you'll need the original gphoto2 C library installed. For
18
18
  installation instructions goto http://gphoto.org.
19
19
 
20
- * Apparently this GitHub will not build this Gem due to "$SAFE problem".
21
- So you can download it from http://rubyforge.org/projects/gphoto4ruby/
22
- and install it with:
20
+ * On Ubuntu 8.04 it is:
23
21
 
24
- sudo gem install gphoto4ruby-version.gem
22
+ sudo apt-get install gphoto2
23
+
24
+ * On Mac OS X gphoto2 is installed through DarwinPorts
25
+
26
+ * You can install GPhoto4Ruby gem from GitHub or from RubyForge. Use one of
27
+ the following lines depending on your preferences:
28
+
29
+ sudo gem install lonelyelk-gphoto4ruby --source http://gems.github.com
30
+
31
+ <b>or</b>
32
+
33
+ sudo gem install gphoto4ruby
25
34
 
26
- * Plug your digital camera through usb and run:
35
+ * Connect your digital camera through usb, locate example.rb file and run:
27
36
 
28
37
  ruby example.rb
38
+
39
+ * <b>NOTE!<b> On Mac OS X there is a process you need to kill before using
40
+ gphoto2. You can find more information on this at http://gphoto.org
29
41
 
30
42
  == Usage
31
43
 
32
- See example.rb
44
+ After installation of this gem rdocs are generated for you. Ruby file
45
+ <b>example.rb</b> is installed along with this gem. All examples are tested
46
+ on Kubuntu 8.04 and Mac OS X 10.4.11 with digital camera Nikon DSC D80
47
+ connected through usb in PTP mode.
48
+
49
+ <b>example.rb:</b>
50
+
51
+ require "rubygems"
52
+ require "gphoto4ruby"
53
+
54
+ ports = GPhoto2::Camera.ports
55
+ if ports.empty?
56
+
57
+ # ports array can be empty if there is only one camera plugged in
58
+ # or there are no cameras connected to the computer
59
+ # assuming there is one
60
+ c = GPhoto2::Camera.new()
61
+
62
+ # list available configuration items with current values and lists
63
+ # of allowed values
64
+ c.configs.each do |cfg|
65
+ puts cfg + " value is: " + c[cfg].to_s
66
+ puts "values available are: " + c[cfg, :all].inspect
67
+ end
68
+
69
+ # capture image
70
+ c.capture
71
+
72
+ # now camera virtual path is in the folder with images
73
+ # list image file names
74
+ puts "files on camera: " + c.files.inspect
75
+
76
+ # just an example of camera browsing
77
+ puts "some folder stuff: " + c.folder_up.subfolders.inspect
78
+
79
+ # save preview of captured image in the current directory on hard drive
80
+ c.capture.save :type => :preview, :new_name => "PREVIEW.JPG"
81
+
82
+ # save captured file in the current directory on hard drive and delete
83
+ # it from camera
84
+ c.capture.save.delete
85
+ else
86
+ puts ports.length.to_s + "cameras connected"
87
+ cams = []
88
+ ports.each do |port|
89
+ c = GPhoto2::Camera.new(port)
90
+ puts "camera in port: " + port
91
+ c.configs.each do |cfg|
92
+ puts cfg + " value is: " + c[cfg].to_s
93
+ puts "values available are: " + c[cfg, :all].inspect
94
+ end
95
+ cams.push c
96
+ end
97
+ # to capture image with all attached cameras simultaneously use:
98
+ cams.each_index do |index|
99
+ if index < cams.length - 1
100
+ fork {cams[index].capture; exit!}
101
+ else
102
+ cams[index].capture
103
+ end
104
+ end
105
+ end
33
106
 
34
107
  == Contact
35
108
 
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
10
10
  include("ext/gphoto4ruby.c")
11
11
  rdoc.main = "README.rdoc"
12
12
  rdoc.title = "GPhoto4Ruby documentation"
13
- rdoc.rdoc_dir = "docs"
13
+ rdoc.rdoc_dir = "rdoc"
14
14
  rdoc.options << "--charset=UTF-8"
15
15
  rdoc.options << "--webcvs=http://github.com/lonelyelk/gphoto4ruby/tree/master"
16
16
  end
File without changes
data/example.rb CHANGED
@@ -3,17 +3,35 @@ require "gphoto4ruby"
3
3
 
4
4
  ports = GPhoto2::Camera.ports
5
5
  if ports.empty?
6
+
6
7
  # ports array can be empty if there is only one camera plugged in
7
8
  # or there are no cameras connected to the computer
8
9
  # assuming there is one
9
10
  c = GPhoto2::Camera.new()
11
+
12
+ # list available configuration items with current values and lists
13
+ # of allowed values
10
14
  c.configs.each do |cfg|
11
15
  puts cfg + " value is: " + c[cfg].to_s
12
16
  puts "values available are: " + c[cfg, :all].inspect
13
17
  end
18
+
19
+ # capture image
14
20
  c.capture
21
+
22
+ # now camera virtual path is in the folder with images
23
+ # list image file names
15
24
  puts "files on camera: " + c.files.inspect
25
+
26
+ # just an example of camera browsing
16
27
  puts "some folder stuff: " + c.folder_up.subfolders.inspect
28
+
29
+ # save preview of captured image in the current directory on hard drive
30
+ c.capture.save :type => :preview, :new_name => "PREVIEW.JPG"
31
+
32
+ # save captured file in the current directory on hard drive and delete
33
+ # it from camera
34
+ c.capture.save.delete
17
35
  else
18
36
  puts ports.length.to_s + "cameras connected"
19
37
  cams = []
@@ -24,12 +42,9 @@ else
24
42
  puts cfg + " value is: " + c[cfg].to_s
25
43
  puts "values available are: " + c[cfg, :all].inspect
26
44
  end
27
- c.capture
28
- puts "files on camera: " + c.files.inspect
29
- puts "some folder stuff: " + c.folder_up.subfolders.inspect
30
45
  cams.push c
31
46
  end
32
- # to capture image with all attached cameras at a time use:
47
+ # to capture image with all attached cameras simultaneously use:
33
48
  cams.each_index do |index|
34
49
  if index < cams.length - 1
35
50
  fork {cams[index].capture; exit!}
data/ext/gphoto4ruby.c CHANGED
@@ -215,8 +215,7 @@ static VALUE camera_allocate(VALUE klass) {
215
215
  GPhoto2Camera *c;
216
216
  c = (GPhoto2Camera*) malloc(sizeof(GPhoto2Camera));
217
217
  c->virtFolder = (char*) malloc(sizeof(char)*100);
218
- strcpy(c->virtFolder, "/");//store_00010001/DCIM/100NCD80/");
219
- // c->path = "/store_00010001";
218
+ strcpy(c->virtFolder, "/");
220
219
  c->context = gp_context_new();
221
220
  retval = gp_camera_new(&(c->camera));
222
221
  if (retval == GP_OK) {
@@ -244,6 +243,8 @@ static VALUE camera_allocate(VALUE klass) {
244
243
  * port parameter can be passed to specify which camera is addressed with
245
244
  * object.
246
245
  *
246
+ * Examples:
247
+ *
247
248
  * GPhoto2::Camera.new
248
249
  * GPhoto2::Capera.new(GPhoto2::Camera.ports[0])
249
250
  *
@@ -296,6 +297,8 @@ static VALUE camera_initialize(int argc, VALUE *argv, VALUE self) {
296
297
  * Returns an array of usb port paths with cameras. If only one camera
297
298
  * is connected, returned array is empty.
298
299
  *
300
+ * Examples:
301
+ *
299
302
  * # with one camera connected
300
303
  * GPhoto2::Camera.ports #=> []
301
304
  * # with two cameras connected
@@ -336,6 +339,8 @@ static VALUE camera_class_ports(VALUE klass) {
336
339
  *
337
340
  * Sends command to camera to capture image with current configuration
338
341
  *
342
+ * Examples:
343
+ *
339
344
  * c = GPhoto2::Camera.new
340
345
  * c.capture
341
346
  *
@@ -359,61 +364,201 @@ static VALUE camera_capture(VALUE self) {
359
364
 
360
365
  /*
361
366
  * call-seq:
362
- * capture_save(folder="") => camera
367
+ * save(options={}) => camera
363
368
  *
364
- * Sends command to camera to capture image with current configuration
365
- * and saves file into specified folder with the same filename as on
366
- * camera file system.
369
+ * Downloads file from camera to hard drive.
370
+ * Available options are:
371
+ * * :file - Name of the file to download from camera. File is expected
372
+ * to be found in current path. If this option is not specified, last
373
+ * captured image is downloaded.
374
+ * * :new_name - New file name to be used when saving file on hard drive.
375
+ * If this option is not specified, camera file system filename is used.
376
+ * * :to_folder - Folder path on hard drive to save downloaded image to.
377
+ * * :type - Type of file to download from camera. Available types are
378
+ * <b>:normal</b> (default) and <b>:preview</b>
379
+ *
380
+ * Examples:
367
381
  *
368
382
  * c = GPhoto2::Camera.new
369
- * c.capture_save "/home"
383
+ * c.capture.save :type => :preview, => Downloads preview of
384
+ * :new_name => "PREVIEW.JPG" captured image
385
+ * c.save :file => "DSC_0144.JPG", => Downloads specified file
386
+ * :to_folder => "/home/user", to /home/user/xyz.gf.JPG
387
+ * :new_name => "xyz.gf",
370
388
  *
371
389
  */
372
- static VALUE camera_capture_save(int argc, VALUE *argv, VALUE self) {
373
- int retval;
390
+ static VALUE camera_save(int argc, VALUE *argv, VALUE self) {
391
+ int retval, i;
392
+ int newName = -1;
393
+ CameraFileType fileType = GP_FILE_TYPE_NORMAL;
374
394
  GPhoto2Camera *c;
375
- const char *fData;
376
- char *fPath;
377
- char fName[100];
395
+ const char *fData, *key, *val;
396
+ char *fPath, *newNameStr, *pchNew, *pchSrc;
397
+ char fName[100], cFileName[100], cFolderName[100];
378
398
  unsigned long int fSize;
379
399
  int fd;
380
-
381
- if (argc > 1) {
382
- rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0 or 1)", argc);
383
- return Qnil;
384
- }
400
+ VALUE arr, hVal;
385
401
 
386
402
  Data_Get_Struct(self, GPhoto2Camera, c);
403
+
404
+ strcpy(fName, "");
405
+ strcpy(cFileName, c->path.name);
406
+ strcpy(cFolderName, c->path.folder);
387
407
 
388
- retval = gp_camera_capture(c->camera, GP_CAPTURE_IMAGE, &(c->path), c->context);
389
- if (retval == GP_OK) {
390
- strcpy(c->virtFolder, c->path.folder);
391
- if (retval == GP_OK) {
392
- retval = gp_camera_file_get(c->camera, c->path.folder, c->path.name, GP_FILE_TYPE_NORMAL, c->file, c->context);
393
- if (retval == GP_OK) {
394
- retval = gp_file_get_data_and_size(c->file, &fData, &fSize);
395
- if (retval == GP_OK) {
396
- if (argc == 1) {
397
- fPath = RSTRING(argv[0])->ptr;
398
- if (strlen(fPath) == 0) {
399
- strcpy(fName, c->path.name);
400
- } else if (fPath[strlen(fPath)] == '/') {
408
+ switch(argc) {
409
+ case 0:
410
+ break;
411
+ case 1:
412
+ Check_Type(argv[0], T_HASH);
413
+ arr = rb_funcall(argv[0], rb_intern("keys"), 0);
414
+ for (i = 0; i < RARRAY(arr)->len; i++) {
415
+ switch(TYPE(RARRAY(arr)->ptr[i])) {
416
+ case T_STRING:
417
+ key = RSTRING(RARRAY(arr)->ptr[i])->ptr;
418
+ break;
419
+ case T_SYMBOL:
420
+ key = rb_id2name(rb_to_id(RARRAY(arr)->ptr[i]));
421
+ break;
422
+ default:
423
+ rb_raise(rb_eTypeError, "Not valid key type");
424
+ return Qnil;
425
+ }
426
+ if (strcmp(key, "to_folder") == 0) {
427
+ fPath = RSTRING(rb_hash_aref(argv[0], RARRAY(arr)->ptr[i]))->ptr;
428
+ if (strlen(fPath) > 0) {
429
+ if (fPath[strlen(fPath)] == '/') {
401
430
  strcpy(fName, fPath);
402
- strcat(fName, c->path.name);
403
431
  } else {
404
432
  strcpy(fName, fPath);
405
433
  strcat(fName, "/");
406
- strcat(fName, c->path.name);
407
434
  }
408
- } else {
409
- strcpy(fName, c->path.name);
435
+ }
436
+ } else if (strcmp(key, "new_name") == 0) {
437
+ newNameStr = RSTRING(rb_hash_aref(argv[0], RARRAY(arr)->ptr[i]))->ptr;
438
+ if (strlen(newNameStr) > 0) {
439
+ newName = 0;
440
+ }
441
+ } else if (strcmp(key, "type") == 0) {
442
+ hVal = rb_hash_aref(argv[0], RARRAY(arr)->ptr[i]);
443
+ switch(TYPE(hVal)) {
444
+ case T_STRING:
445
+ val = RSTRING(hVal)->ptr;
446
+ break;
447
+ case T_SYMBOL:
448
+ val = rb_id2name(rb_to_id(hVal));
449
+ break;
450
+ default:
451
+ rb_raise(rb_eTypeError, "Not valid value type");
452
+ return Qnil;
453
+ }
454
+ if (strcmp(val, "normal") == 0) {
455
+ fileType = GP_FILE_TYPE_NORMAL;
456
+ } else if (strcmp(val, "preview") == 0) {
457
+ fileType = GP_FILE_TYPE_PREVIEW;
410
458
  }
411
- fd = open(fName, O_CREAT | O_WRONLY, 0644);
412
- write(fd, fData, fSize);
413
- close(fd);
414
- return self;
459
+ } else if (strcmp(key, "file") == 0) {
460
+ strcpy(cFolderName, c->virtFolder);
461
+ strcpy(cFileName, RSTRING(rb_hash_aref(argv[0], RARRAY(arr)->ptr[i]))->ptr);
415
462
  }
416
463
  }
464
+ break;
465
+ default:
466
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0 or 1)", argc);
467
+ return Qnil;
468
+ }
469
+
470
+ retval = gp_filesystem_reset(c->camera->fs);
471
+ if (retval == GP_OK) {
472
+ retval = gp_camera_file_get(c->camera, cFolderName, cFileName, fileType, c->file, c->context);
473
+ if (retval == GP_OK) {
474
+ retval = gp_file_get_data_and_size(c->file, &fData, &fSize);
475
+ if (retval == GP_OK) {
476
+ if (newName == 0) {
477
+ strcat(fName, newNameStr);
478
+ pchNew = strrchr(newNameStr, '.');
479
+ pchSrc = strrchr(cFileName, '.');
480
+ if (pchNew == NULL) {
481
+ strcat(fName, pchSrc);
482
+ } else if (strcmp(pchNew, pchSrc) != 0) {
483
+ strcat(fName, pchSrc);
484
+ }
485
+ } else {
486
+ strcat(fName, cFileName);
487
+ }
488
+ fd = open(fName, O_CREAT | O_WRONLY, 0644);
489
+ write(fd, fData, fSize);
490
+ close(fd);
491
+ return self;
492
+ }
493
+ }
494
+ }
495
+ rb_raise_gp_result(retval);
496
+ return Qnil;
497
+ }
498
+
499
+ /*
500
+ * call-seq:
501
+ * delete(options={}) => camera
502
+ *
503
+ * Deletes file from camera.
504
+ * Available options are:
505
+ * * :file - Name of the file to delete from camera. File is expected
506
+ * to be found in current path. If this option is not specified, last
507
+ * captured image is deleted.
508
+ *
509
+ * Examples:
510
+ *
511
+ * c = GPhoto2::Camera.new
512
+ * c.capture.save.delete
513
+ * c.delete :file => "DSC_0144.JPG"
514
+ *
515
+ */
516
+ static VALUE camera_delete(int argc, VALUE *argv, VALUE self) {
517
+ int retval, i;
518
+ GPhoto2Camera *c;
519
+ const char *key;
520
+ char cFileName[100], cFolderName[100];
521
+ VALUE arr;
522
+
523
+ Data_Get_Struct(self, GPhoto2Camera, c);
524
+
525
+ strcpy(cFileName, c->path.name);
526
+ strcpy(cFolderName, c->path.folder);
527
+
528
+ switch(argc) {
529
+ case 0:
530
+ break;
531
+ case 1:
532
+ Check_Type(argv[0], T_HASH);
533
+ arr = rb_funcall(argv[0], rb_intern("keys"), 0);
534
+ for (i = 0; i < RARRAY(arr)->len; i++) {
535
+ switch(TYPE(RARRAY(arr)->ptr[i])) {
536
+ case T_STRING:
537
+ key = RSTRING(RARRAY(arr)->ptr[i])->ptr;
538
+ break;
539
+ case T_SYMBOL:
540
+ key = rb_id2name(rb_to_id(RARRAY(arr)->ptr[i]));
541
+ break;
542
+ default:
543
+ rb_raise(rb_eTypeError, "Not valid key type");
544
+ return Qnil;
545
+ }
546
+ if (strcmp(key, "file") == 0) {
547
+ strcpy(cFolderName, c->virtFolder);
548
+ strcpy(cFileName, RSTRING(rb_hash_aref(argv[0], RARRAY(arr)->ptr[i]))->ptr);
549
+ }
550
+ }
551
+ break;
552
+ default:
553
+ rb_raise(rb_eArgError, "Wrong number of arguments (%d for 0 or 1)", argc);
554
+ return Qnil;
555
+ }
556
+
557
+ retval = gp_filesystem_reset(c->camera->fs);
558
+ if (retval == GP_OK) {
559
+ retval = gp_camera_file_delete(c->camera, cFolderName, cFileName, c->context);
560
+ if (retval == GP_OK) {
561
+ return self;
417
562
  }
418
563
  }
419
564
  rb_raise_gp_result(retval);
@@ -426,6 +571,8 @@ static VALUE camera_capture_save(int argc, VALUE *argv, VALUE self) {
426
571
  *
427
572
  * Returns an array of adjustable camera configurations.
428
573
  *
574
+ * Examples:
575
+ *
429
576
  * c = GPhoto2::Camera.new
430
577
  * # with Nikon DSC D80
431
578
  * c.configs #=> ["capturetarget", "imgquality",
@@ -460,6 +607,8 @@ static VALUE camera_get_configs(VALUE self) {
460
607
  * (cfg) can be string or symbol and must be in configs method returned array.
461
608
  * When called with directive <b>:all</b> returns an array of allowed values
462
609
  *
610
+ * Examples:
611
+ *
463
612
  * c = GPhoto2::Camera.new
464
613
  * # with Nikon DSC D80
465
614
  * c["f-number"] #=> "f/4.5"
@@ -546,6 +695,8 @@ static VALUE camera_get_value(int argc, VALUE *argv, VALUE self) {
546
695
  *
547
696
  * Sets specified camera configuration to specified value if value is allowed.
548
697
  *
698
+ * Examples:
699
+ *
549
700
  * c = GPhoto2::Camera.new
550
701
  * # with Nikon DSC D80
551
702
  * c["f-number"] = "f/4.5" #=> "f/4.5"
@@ -604,6 +755,8 @@ static VALUE camera_set_value(VALUE self, VALUE str, VALUE newVal) {
604
755
  * Returns current camera path. When image is captured, folder changes to
605
756
  * path where files are saved on camera.
606
757
  *
758
+ * Examples:
759
+ *
607
760
  * c = GPhoto2::Camera.new
608
761
  * # with Nikon DSC D80
609
762
  * c.folder #=> "/"
@@ -625,6 +778,8 @@ static VALUE camera_folder(VALUE self) {
625
778
  *
626
779
  * Returns an array of subfolder names in current camera path.
627
780
  *
781
+ * Examples:
782
+ *
628
783
  * c = GPhoto2::Camera.new
629
784
  * # with Nikon DSC D80
630
785
  * c.folder #=> "/"
@@ -665,6 +820,8 @@ static VALUE camera_subfolders(VALUE self) {
665
820
  *
666
821
  * Returns an array of file names in current camera path.
667
822
  *
823
+ * Examples:
824
+ *
668
825
  * c = GPhoto2::Camera.new
669
826
  * # with Nikon DSC D80
670
827
  * c.folder #=> "/"
@@ -711,6 +868,8 @@ static VALUE camera_files(VALUE self) {
711
868
  *
712
869
  * Changes current camera path one level up.
713
870
  *
871
+ * Examples:
872
+ *
714
873
  * c = GPhoto2::Camera.new
715
874
  * # with Nikon DSC D80
716
875
  * c.folder #=> "/"
@@ -744,6 +903,8 @@ static VALUE camera_folder_up(VALUE self) {
744
903
  * Changes current camera path one level down into subfolder with
745
904
  * specified name.
746
905
  *
906
+ * Examples:
907
+ *
747
908
  * c = GPhoto2::Camera.new
748
909
  * # with Nikon DSC D80
749
910
  * c.folder #=> "/"
@@ -808,7 +969,8 @@ void Init_gphoto4ruby() {
808
969
  rb_define_method(rb_cGPhoto2Camera, "[]", camera_get_value, -1);
809
970
  rb_define_method(rb_cGPhoto2Camera, "[]=", camera_set_value, 2);
810
971
  rb_define_method(rb_cGPhoto2Camera, "capture", camera_capture, 0);
811
- rb_define_method(rb_cGPhoto2Camera, "capture_save", camera_capture_save, -1);
972
+ rb_define_method(rb_cGPhoto2Camera, "save", camera_save, -1);
973
+ rb_define_method(rb_cGPhoto2Camera, "delete", camera_delete, -1);
812
974
  rb_define_method(rb_cGPhoto2Camera, "folder", camera_folder, 0);
813
975
  rb_define_method(rb_cGPhoto2Camera, "subfolders", camera_subfolders, 0);
814
976
  rb_define_method(rb_cGPhoto2Camera, "files", camera_files, 0);
data/ext/gphoto4ruby.h CHANGED
@@ -56,7 +56,11 @@ static VALUE camera_allocate(VALUE klass);
56
56
 
57
57
  static VALUE camera_initialize(int argc, VALUE *argv, VALUE self);
58
58
  static VALUE camera_class_ports(VALUE klass);
59
+
59
60
  static VALUE camera_capture(VALUE self);
61
+
62
+ static VALUE camera_save(int argc, VALUE *argv, VALUE self);
63
+
60
64
  static VALUE camera_get_configs(VALUE self);
61
65
  static VALUE camera_get_value(int argc, VALUE *argv, VALUE self);
62
66
  static VALUE camera_set_value(VALUE self, VALUE str, VALUE newVal);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gphoto4ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - heq4 company
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-08-15 00:00:00 +04:00
13
+ date: 2008-08-19 00:00:00 +04:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -21,21 +21,25 @@ executables: []
21
21
  extensions:
22
22
  - ext/extconf.rb
23
23
  extra_rdoc_files:
24
+ - ext/gphoto4ruby.c
24
25
  - README.rdoc
25
26
  - LICENSE
26
27
  - CHANGELOG.rdoc
27
- - ext/gphoto4ruby.c
28
- files:
29
- - ext/gphoto4ruby.c
30
- - ext/gphoto4ruby.h
31
28
  - docs/COPYING
32
- - docs/COPIYNG.LESSER
33
- - docs/gphoto4ruby_api_ru.txt
34
- - LICENSE
29
+ - docs/COPYING.LESSER
30
+ files:
35
31
  - CHANGELOG.rdoc
32
+ - LICENSE
36
33
  - README.rdoc
37
34
  - Rakefile
35
+ - docs
36
+ - docs/COPYING
37
+ - docs/COPYING.LESSER
38
38
  - example.rb
39
+ - ext
40
+ - ext/extconf.rb
41
+ - ext/gphoto4ruby.c
42
+ - ext/gphoto4ruby.h
39
43
  has_rdoc: true
40
44
  homepage: http://github.com/lonelyelk/gphoto4ruby
41
45
  post_install_message:
@@ -1,49 +0,0 @@
1
- GPhoto2::Camera
2
- Класс для управления камерами, подключенными через usb-порты к компьютеру.
3
- Следует написать require "gphoto4ruby"
4
-
5
- GPhoto2::Camera.ports() -> Array
6
- Метод класса. Возвращает массив, содержащий пути (path) usb-портов, к которым подключены камеры, если камер более одной.
7
-
8
- GPhoto2::Camera.new() -> GPhoto2::Camera
9
- Конструктор класса. Создает объект для управления первой авто-определенной камерой (обычно это камера, которая была подключена последней).
10
-
11
- GPhoto2::Camera.new(port) -> GPhoto2::Camera
12
- Конструктор класса. Создает объект для управления камерой, подключенной к заданному порту. Актуально при подключении более одной камеры.
13
- port (String) -- путь (path) порта с камерой. Следует использовать элементы массива, возвращаемого методом класса GPhoto2::Camera.ports
14
- Пример:
15
- cams = Array.new
16
- GPhoto2::Camera.ports.each do |port|
17
- cams.push(GPhoto2::Camera.new(port))
18
- end
19
-
20
- configs() -> Array
21
- Метод объекта. Возвращает массив с именами (name) доступных для изменения настроек камеры.
22
-
23
- [config_name] -> String или Float
24
- Метод объекта. Возвращает значение настройки с именем config_name.
25
- config_name (String или Symbol) -- имя (name) настройки камеры. Следует использовать элементы массива, возвращаемые методом configs().
26
- Пример:
27
- cam[:focallength] -> 10.5
28
- cam["f-number"] -> "f/4"
29
- cam[cam.configs[0]]
30
-
31
- [config_name, directive] -> Array
32
- Метод объекта. Возвращает информацию о настройке в зависимости от директивы directive.
33
- config_name (String или Symbol) -- имя (name) настройки камеры. Следует использовать элементы массива, возвращаемые методом configs().
34
- directive (Symbol) -- указывает на информацию, которую следует выдать
35
- :all -- возвращается массив с допустимыми значениями настройки.
36
- Пример:
37
- cam["exptime", :all] -> ["0.002", "0.003", ...]
38
-
39
- [config_name] = value -> String или Float
40
- Метод объекта. Изменяет значение указанной настройки на новое.
41
- config_name (String или Symbol) -- имя (name) настройки камеры. Следует использовать элементы массива, возвращаемые методом configs().
42
- value (String или Float) -- новое значение настройки. Следует использовать элементы массива, возвращаемые методом [] с директивой :all.
43
- Пример:
44
- cam[:exptime] = "0.010" -> "0.010"
45
- cam["f-number"] = cam["f-number", :all][3]
46
-
47
- capture() -> GPhoto2::Camera
48
- Метод объекта. Посылает сигнал на камеру для съемки изображения.
49
-