summaryrefslogtreecommitdiff
path: root/camlibs/canon
diff options
context:
space:
mode:
authorMarcus Meissner <marcus@jet.franken.de>2012-12-11 11:57:50 +0000
committerMarcus Meissner <marcus@jet.franken.de>2012-12-11 11:57:50 +0000
commitaccde0e923b448b069c5e143deb729c271bb8e63 (patch)
tree855ab315b4103c411ce253799a890b4a23aac68c /camlibs/canon
parentc260c8138eeeb3950e31abda480bfd2374119d97 (diff)
downloadlibgphoto2-accde0e923b448b069c5e143deb729c271bb8e63.tar.gz
The 14th byte returned from CANON_USB_CONTROL_GET_ZOOM_POS
contains the upper limit for the zoom level. This can be used to populate the 'zoom' widget range, instead of hardcoding 255. Tested with PowerShot G1 and PowerShot S200 Signed-off-by: Daniel P. Berrange <berrange@redhat.com> git-svn-id: https://svn.code.sf.net/p/gphoto/code/trunk/libgphoto2@14150 67ed7778-7388-44ab-90cf-0a291f65f57c
Diffstat (limited to 'camlibs/canon')
-rw-r--r--camlibs/canon/canon.c7
-rw-r--r--camlibs/canon/canon.h2
-rw-r--r--camlibs/canon/library.c6
3 files changed, 10 insertions, 5 deletions
diff --git a/camlibs/canon/canon.c b/camlibs/canon/canon.c
index 72819d9e6..66a57088b 100644
--- a/camlibs/canon/canon.c
+++ b/camlibs/canon/canon.c
@@ -2030,6 +2030,7 @@ canon_int_set_zoom (Camera *camera, unsigned char zoom_level,
* canon_int_get_zoom
* @camera: camera to work with
* @zoom_level: pointer to hold returned zoom level - A40: 1..10; G1: 0..40 (pMaxOpticalZoomPos*4)
+ * @zoom_max: pointer to hold zoom upper bound
* @context: context for error reporting
*
* Gets the camera's zoom. Only tested for G1 via USB.
@@ -2038,7 +2039,9 @@ canon_int_set_zoom (Camera *camera, unsigned char zoom_level,
*
*/
int
-canon_int_get_zoom (Camera *camera, unsigned char *zoom_level,
+canon_int_get_zoom (Camera *camera,
+ unsigned char *zoom_level,
+ unsigned char *zoom_max,
GPContext *context)
{
unsigned char *msg = NULL;
@@ -2048,6 +2051,7 @@ canon_int_get_zoom (Camera *camera, unsigned char *zoom_level,
char desc[128];
*zoom_level = 0;
+ *zoom_max = 0;
GP_DEBUG ("canon_int_get_zoom() called");
payloadlen = canon_int_pack_control_subcmd( payload,
@@ -2075,6 +2079,7 @@ canon_int_get_zoom (Camera *camera, unsigned char *zoom_level,
}
*zoom_level = msg[12];
+ *zoom_max = msg[14];
msg = NULL;
datalen = 0;
diff --git a/camlibs/canon/canon.h b/camlibs/canon/canon.h
index 4905c7db4..d21406862 100644
--- a/camlibs/canon/canon.h
+++ b/camlibs/canon/canon.h
@@ -713,7 +713,7 @@ int canon_int_end_remote_control(Camera *camera, GPContext *context);
int canon_int_set_beep(Camera *camera, canonBeepMode beep_mode, GPContext *context);
int canon_int_set_flash(Camera *camera, canonFlashMode flash_mode, GPContext *context);
int canon_int_set_zoom(Camera *camera, unsigned char zoom_level, GPContext *context);
-int canon_int_get_zoom(Camera *camera, unsigned char *zoom_level, GPContext *context);
+int canon_int_get_zoom(Camera *camera, unsigned char *zoom_level, unsigned char *zoom_max, GPContext *context);
/*
* introduced for capturing
diff --git a/camlibs/canon/library.c b/camlibs/canon/library.c
index 6edc641d2..fdf078bc5 100644
--- a/camlibs/canon/library.c
+++ b/camlibs/canon/library.c
@@ -1577,7 +1577,7 @@ camera_get_config (Camera *camera, CameraWidget **window, GPContext *context)
time_t camtime;
char formatted_camera_time[30];
float zoom;
- unsigned char zoomVal;
+ unsigned char zoomVal, zoomMax;
GP_DEBUG ("camera_get_config()");
@@ -1734,8 +1734,8 @@ camera_get_config (Camera *camera, CameraWidget **window, GPContext *context)
/* Zoom level */
gp_widget_new (GP_WIDGET_RANGE, _("Zoom"), &t);
gp_widget_set_name (t, "zoom");
- gp_widget_set_range (t, 0, 255, 1);
- canon_int_get_zoom(camera, &zoomVal, context);
+ canon_int_get_zoom(camera, &zoomVal, &zoomMax, context);
+ gp_widget_set_range (t, 0, zoomMax, 1);
zoom = zoomVal;
gp_widget_set_value (t, &zoom);
gp_widget_append (section, t);