#define AUTOSTART_ON 1
#define GUI_DPI 300
+#define MAX_WIDTH_INCH 85
+#define MAX_HEIGHT_INCH 140
void _kds_s2000w_handler_opts_write_value_to_json(json_object* value_object, SANE_Value_Type value_type, void* value)
{
}
}
+void _kds_s2000w_handler_opts_set_valid_coord(handler* h)
+{
+ bool valid = h->coord->offset_x + h->coord->width < MAX_WIDTH_INCH;
+ valid = valid && h->coord->offset_y + h->coord->height < MAX_HEIGHT_INCH;
+
+ if (!valid)
+ return;
+
+ json_object* config = json_object_object_get(h->current_scanner_config, "Configuration");
+ json_object* value_object = json_object_object_get(config, IMAGE_OFFSET_X);
+ json_object_set_int(value_object, h->coord->offset_x);
+ value_object = json_object_object_get(config, IMAGE_OFFSET_Y);
+ json_object_set_int(value_object, h->coord->offset_y);
+ value_object = json_object_object_get(config, IMAGE_WIDTH);
+ json_object_set_int(value_object, h->coord->width);
+ value_object = json_object_object_get(config, IMAGE_HEIGHT);
+ json_object_set_int(value_object, h->coord->height);
+}
+
void _kds_s2000w_handler_opts_load_options(handler* h)
{
json_object_put(h->current_scanner_config);
|| strcmp(descriptor->config_name, IMAGE_OFFSET_Y) == 0) {
int32_t* int_value = (int32_t*) value;
uint32_t tenth_inch = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, *int_value);
- json_object_set_int(value_object, tenth_inch);
+ h->coord->offset_x = tenth_inch;
+ }
+
+ if (strcmp(descriptor->config_name, IMAGE_OFFSET_Y) == 0) {
+ int32_t* int_value = (int32_t*) value;
+ uint32_t tenth_inch = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, *int_value);
+ h->coord->offset_x = tenth_inch;
}
if (strcmp(descriptor->config_name, IMAGE_WIDTH) == 0) {
uint32_t offset_x_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, tenth_inch_offset_x);
uint32_t width_pixel = *int_value - offset_x_pixel;
uint32_t tenth_inch_width = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, width_pixel);
- value_object = json_object_object_get(config, descriptor->config_name);
- json_object_set_int(value_object, tenth_inch_width);
+ h->coord->width = tenth_inch_width;
}
if (strcmp(descriptor->config_name, IMAGE_HEIGHT) == 0) {
uint32_t offset_y_pixel = kds_s2000w_pixel_converter_tenth_inch_to_pixel(GUI_DPI, tenth_inch_offset_y);
uint32_t height_pixel = *int_value - offset_y_pixel;
uint32_t tenth_inch_height = kds_s2000w_pixel_converter_pixel_to_tenth_inch(GUI_DPI, height_pixel);
- value_object = json_object_object_get(config, descriptor->config_name);
- json_object_set_int(value_object, tenth_inch_height);
+ h->coord->height = tenth_inch_height;
}
+ _kds_s2000w_handler_opts_set_valid_coord(h);
+
if (strcmp(descriptor->config_name, RESET) == 0) {
_kds_s2000w_handler_opts_set_option_to_default(h);
config = json_object_object_get(h->current_scanner_config, "Configuration");