diff options
author | Mihael Koep <koep@schneide.com> | 2014-09-11 11:39:11 +0200 |
---|---|---|
committer | Mihael Koep <koep@schneide.com> | 2014-10-07 13:08:08 +0200 |
commit | 8e98707648406e2c7a6831c2f3366a2c34eba617 (patch) | |
tree | 2f2081997780f0c708a2b3d210892e6dd7298388 | |
parent | 6f73f9daa1f9d1ac6054dec6e06b93e040a011f2 (diff) | |
download | uca-8e98707648406e2c7a6831c2f3366a2c34eba617.tar.gz uca-8e98707648406e2c7a6831c2f3366a2c34eba617.tar.bz2 uca-8e98707648406e2c7a6831c2f3366a2c34eba617.tar.xz uca-8e98707648406e2c7a6831c2f3366a2c34eba617.zip |
Improve robustness of roi setting for pylon plugin
-rw-r--r-- | plugins/pylon/CMakeLists.txt | 2 | ||||
-rw-r--r-- | plugins/pylon/changelog.txt | 2 | ||||
-rw-r--r-- | plugins/pylon/uca-pylon-camera.c | 115 |
3 files changed, 60 insertions, 59 deletions
diff --git a/plugins/pylon/CMakeLists.txt b/plugins/pylon/CMakeLists.txt index 02f65c9..7ae3288 100644 --- a/plugins/pylon/CMakeLists.txt +++ b/plugins/pylon/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) project(ucapylon C) -set(VERSION "1.2.0") +set(VERSION "1.2.1") find_package(Pylon) diff --git a/plugins/pylon/changelog.txt b/plugins/pylon/changelog.txt index 5a004cf..9e1584c 100644 --- a/plugins/pylon/changelog.txt +++ b/plugins/pylon/changelog.txt @@ -1,3 +1,5 @@ +* Thu Sep 11 2014 Mihael Koep <mihael.koep@softwareschneiderei.de> 1.2.1-1 +- improve robustness of roi setting * Thu Jul 31 2014 Mihael Koep <mihael.koep@softwareschneiderei.de> 1.2.0-1 - require libpyloncam 0.4.0 - update to modified libpyloncam API diff --git a/plugins/pylon/uca-pylon-camera.c b/plugins/pylon/uca-pylon-camera.c index bac9684..1c3a759 100644 --- a/plugins/pylon/uca-pylon-camera.c +++ b/plugins/pylon/uca-pylon-camera.c @@ -89,8 +89,10 @@ struct _UcaPylonCameraPrivate { guint width; guint height; - guint16 roi_x, roi_y; - guint16 roi_width, roi_height; + guint16 roi_x; + guint16 roi_y; + guint16 roi_width; + guint16 roi_height; GValueArray *binnings; }; @@ -136,65 +138,62 @@ static void uca_pylon_camera_set_property(GObject *object, guint property_id, co GError* error = NULL; switch (property_id) { - case PROP_SENSOR_HORIZONTAL_BINNING: - /* intentional fall-through*/ - case PROP_SENSOR_VERTICAL_BINNING: - /* intentional fall-through*/ - case PROP_TRIGGER_MODE: - break; - case PROP_BALANCE_WHITE_AUTO: - { - pylon_camera_set_int_attribute("BalanceWhiteAuto", g_value_get_enum(value), &error); - } - break; - - case PROP_ROI_X: - { - priv->roi_x = g_value_get_uint(value); - pylon_set_roi(object, &error); - } - break; - - case PROP_ROI_Y: - { - priv->roi_y = g_value_get_uint(value); - pylon_set_roi(object, &error); - } - break; - - case PROP_ROI_WIDTH: - { - priv->roi_width = g_value_get_uint(value); - pylon_set_roi(object, &error); - } - break; - - case PROP_ROI_HEIGHT: - { - priv->roi_height = g_value_get_uint(value); - pylon_set_roi(object, &error); - } - break; - - case PROP_EXPOSURE_TIME: - pylon_camera_set_exposure_time(g_value_get_double(value), &error); - break; - - case PROP_GAIN: - pylon_camera_set_gain(g_value_get_int(value), &error); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); - return; + case PROP_SENSOR_HORIZONTAL_BINNING: + /* intentional fall-through*/ + case PROP_SENSOR_VERTICAL_BINNING: + /* intentional fall-through*/ + case PROP_TRIGGER_MODE: + break; + case PROP_BALANCE_WHITE_AUTO: + { + pylon_camera_set_int_attribute("BalanceWhiteAuto", g_value_get_enum(value), &error); + break; + } + case PROP_ROI_X: + { + priv->roi_x = g_value_get_uint(value); + gint max_roi_width = priv->width - priv->roi_x; + priv->roi_width = MIN(priv->roi_width, max_roi_width); + pylon_set_roi(object, &error); + break; + } + case PROP_ROI_Y: + { + priv->roi_y = g_value_get_uint(value); + gint max_roi_height = priv->height - priv->roi_y; + priv->roi_height = MIN(priv->roi_height, max_roi_height); + pylon_set_roi(object, &error); + break; + } + case PROP_ROI_WIDTH: + { + priv->roi_width = g_value_get_uint(value); + pylon_set_roi(object, &error); + break; + } + case PROP_ROI_HEIGHT: + { + priv->roi_height = g_value_get_uint(value); + pylon_set_roi(object, &error); + break; + } + case PROP_EXPOSURE_TIME: + pylon_camera_set_exposure_time(g_value_get_double(value), &error); + break; + case PROP_GAIN: + pylon_camera_set_gain(g_value_get_int(value), &error); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + return; } if (error) { - if(error->message) { - g_warning("failed to set property %d: %s", property_id, error->message); - } else { - g_warning("failed to set property %d", property_id); - } + if (error->message) { + g_warning("failed to set property %d: %s", property_id, error->message); + } else { + g_warning("failed to set property %d", property_id); + } } } |