From 086b35646095d81cee4c6beb9e4a66b2a20c7be6 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 21 Mar 2026 17:20:58 +0100 Subject: [PATCH] refactor option descriptor init --- src/kds_s2000w_option_descriptors.c | 1868 +++++++++++++-------------- 1 file changed, 889 insertions(+), 979 deletions(-) diff --git a/src/kds_s2000w_option_descriptors.c b/src/kds_s2000w_option_descriptors.c index b479663..d6a31d1 100644 --- a/src/kds_s2000w_option_descriptors.c +++ b/src/kds_s2000w_option_descriptors.c @@ -10,6 +10,21 @@ option_descriptor_t** kds_s2000w_descriptors = NULL; uint8_t kds_s2000w_max_option_count = 0; +option_descriptor_t* _kds_s2000w_option_descriptor_descriptor_init() +{ + option_descriptor_t* descriptor = malloc(sizeof(option_descriptor_t)); + if (descriptor == NULL) + return NULL; + + descriptor->descriptor = malloc(sizeof(SANE_Option_Descriptor)); + if (descriptor->descriptor == NULL) { + free(descriptor); + return NULL; + } + + return descriptor; +} + void _kds_s2000w_option_descriptor_descriptor_free(option_descriptor_t* descriptor) { if (descriptor == NULL) @@ -44,7 +59,7 @@ void _kds_s2000w_option_descriptor_descriptor_free(option_descriptor_t* descript SANE_Status _kds_s2000w_option_descriptor_validate() { for (int i = 0; i < kds_s2000w_max_option_count; i++) { - if (kds_s2000w_descriptors[i]->descriptor == NULL) { + if (kds_s2000w_descriptors[i] == NULL) { kds_s2000w_option_descriptors_free(); return SANE_STATUS_NO_MEM; } @@ -53,20 +68,21 @@ SANE_Status _kds_s2000w_option_descriptor_validate() return SANE_STATUS_GOOD; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_num_options() +option_descriptor_t* _kds_s2000w_option_descriptor_num_options() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = SANE_NAME_NUM_OPTIONS; - descriptor->title = SANE_TITLE_NUM_OPTIONS; - descriptor->desc = SANE_DESC_NUM_OPTIONS; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = OPTION_COUNT; + descriptor->descriptor->name = SANE_NAME_NUM_OPTIONS; + descriptor->descriptor->title = SANE_TITLE_NUM_OPTIONS; + descriptor->descriptor->desc = SANE_DESC_NUM_OPTIONS; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } @@ -74,91 +90,98 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_num_options() /******************************************************************************* * standard group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_standard_group() +option_descriptor_t* _kds_s2000w_option_descriptor_standard_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = SANE_NAME_STANDARD; - descriptor->title = SANE_TITLE_STANDARD; - descriptor->desc = SANE_DESC_STANDARD; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = STANDARD_GROUP; + descriptor->descriptor->name = SANE_NAME_STANDARD; + descriptor->descriptor->title = SANE_TITLE_STANDARD; + descriptor->descriptor->desc = SANE_DESC_STANDARD; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_scan_source() +option_descriptor_t* _kds_s2000w_option_descriptor_scan_source() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "DocumentFeeder"; constraint[1] = "Automatic"; constraint[2] = "Flatbed"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_SOURCE; - descriptor->title = SANE_TITLE_SCAN_SOURCE; - descriptor->desc = SANE_DESC_SCAN_SOURCE; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = SCAN_SOURCE; + descriptor->descriptor->name = SANE_NAME_SCAN_SOURCE; + descriptor->descriptor->title = SANE_TITLE_SCAN_SOURCE; + descriptor->descriptor->desc = SANE_DESC_SCAN_SOURCE; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_color_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Color"; constraint[1] = "Gray"; constraint[2] = "BW"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_MODE; - descriptor->title = SANE_TITLE_SCAN_MODE; - descriptor->desc = SANE_DESC_SCAN_MODE; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = COLOR_MODE; + descriptor->descriptor->name = SANE_NAME_SCAN_MODE; + descriptor->descriptor->title = SANE_TITLE_SCAN_MODE; + descriptor->descriptor->desc = SANE_DESC_SCAN_MODE; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_dpi() +option_descriptor_t* _kds_s2000w_option_descriptor_dpi() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Word* constraint = malloc(sizeof(SANE_Word) * 6); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = 5; constraint[1] = 100; @@ -167,52 +190,46 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_dpi() constraint[4] = 300; constraint[5] = 600; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_RESOLUTION; - descriptor->title = SANE_TITLE_SCAN_RESOLUTION; - descriptor->desc = SANE_DESC_SCAN_RESOLUTION; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_DPI; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_WORD_LIST; - descriptor->constraint.word_list = constraint; + descriptor->config_name = DPI; + descriptor->descriptor->name = SANE_NAME_SCAN_RESOLUTION; + descriptor->descriptor->title = SANE_TITLE_SCAN_RESOLUTION; + descriptor->descriptor->desc = SANE_DESC_SCAN_RESOLUTION; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_DPI; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_WORD_LIST; + descriptor->descriptor->constraint.word_list = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_scanside() +option_descriptor_t* _kds_s2000w_option_descriptor_scanside() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 3); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Simplex"; constraint[1] = "Duplex"; constraint[2] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "scanside"; - descriptor->title = "Duplex Mode"; - descriptor->desc = "Duplex Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 3; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = SCAN_SIDE; + descriptor->descriptor->name = "scanside"; + descriptor->descriptor->title = "Duplex Mode"; + descriptor->descriptor->desc = "Duplex Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 3; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } @@ -220,29 +237,36 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_scanside() /******************************************************************************* * geometry group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_geometry_group() +option_descriptor_t* _kds_s2000w_option_descriptor_geometry_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = SANE_NAME_GEOMETRY; - descriptor->title = SANE_TITLE_GEOMETRY; - descriptor->desc = SANE_DESC_GEOMETRY; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = GEOMETRY_GROUP; + descriptor->descriptor->name = SANE_NAME_GEOMETRY; + descriptor->descriptor->title = SANE_TITLE_GEOMETRY; + descriptor->descriptor->desc = SANE_DESC_GEOMETRY; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_cropping_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_cropping_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 5); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "AutomaticStraighten"; constraint[1] = "Automatic"; @@ -250,172 +274,166 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_cropping_mode() constraint[3] = "Manual"; constraint[4] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "cropping-mode"; - descriptor->title = "Cropping Mode"; - descriptor->desc = "Cropping Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 5; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = CROPPING_MODE; + descriptor->descriptor->name = "cropping-mode"; + descriptor->descriptor->title = "Cropping Mode"; + descriptor->descriptor->desc = "Cropping Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 5; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_cropping_image() +option_descriptor_t* _kds_s2000w_option_descriptor_cropping_image() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 3); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "EntireDocument"; constraint[1] = "PartialDocument"; constraint[2] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "cropping-image"; - descriptor->title = "Cropping Image"; - descriptor->desc = "Cropping Image"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 3; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = CROPPING_IMAGE; + descriptor->descriptor->name = "cropping-image"; + descriptor->descriptor->title = "Cropping Image"; + descriptor->descriptor->desc = "Cropping Image"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 3; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_offset_x() +option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_x() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 0; constraint->max = 2250; constraint->quant = 30; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_TL_X; - descriptor->title = SANE_TITLE_SCAN_TL_X; - descriptor->desc = SANE_DESC_SCAN_TL_X; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_PIXEL; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = IMAGE_OFFSET_X; + descriptor->descriptor->name = SANE_NAME_SCAN_TL_X; + descriptor->descriptor->title = SANE_TITLE_SCAN_TL_X; + descriptor->descriptor->desc = SANE_DESC_SCAN_TL_X; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_PIXEL; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_offset_y() +option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_y() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 0; constraint->max = 3900; constraint->quant = 30; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_TL_Y; - descriptor->title = SANE_TITLE_SCAN_TL_Y; - descriptor->desc = SANE_DESC_SCAN_TL_Y; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_PIXEL; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = IMAGE_OFFSET_Y; + descriptor->descriptor->name = SANE_NAME_SCAN_TL_Y; + descriptor->descriptor->title = SANE_TITLE_SCAN_TL_Y; + descriptor->descriptor->desc = SANE_DESC_SCAN_TL_Y; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_PIXEL; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_width() +option_descriptor_t* _kds_s2000w_option_descriptor_image_width() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 300; constraint->max = 2550; constraint->quant = 30; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_BR_X; - descriptor->title = SANE_TITLE_SCAN_BR_X; - descriptor->desc = SANE_DESC_SCAN_BR_X; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_PIXEL; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = IMAGE_WIDTH; + descriptor->descriptor->name = SANE_NAME_SCAN_BR_X; + descriptor->descriptor->title = SANE_TITLE_SCAN_BR_X; + descriptor->descriptor->desc = SANE_DESC_SCAN_BR_X; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_PIXEL; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_height() +option_descriptor_t* _kds_s2000w_option_descriptor_image_height() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 300; constraint->max = 4200; constraint->quant = 30; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = SANE_NAME_SCAN_BR_Y; - descriptor->title = SANE_TITLE_SCAN_BR_Y; - descriptor->desc = SANE_DESC_SCAN_BR_Y; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_PIXEL; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = IMAGE_HEIGHT; + descriptor->descriptor->name = SANE_NAME_SCAN_BR_Y; + descriptor->descriptor->title = SANE_TITLE_SCAN_BR_Y; + descriptor->descriptor->desc = SANE_DESC_SCAN_BR_Y; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_PIXEL; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } @@ -423,142 +441,143 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_height() /******************************************************************************* * boldness smoothing group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_boldness_smoothing_group() +option_descriptor_t* _kds_s2000w_option_descriptor_boldness_smoothing_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "boldness-smoothing"; - descriptor->title = "Boldness / Smoothing Options"; - descriptor->desc = "Foreground boldness Options and background smoothing options"; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = BOLDNESS_SMOOTHING_GROUP; + descriptor->descriptor->name = "boldness-smoothing"; + descriptor->descriptor->title = "Boldness / Smoothing Options"; + descriptor->descriptor->desc = "Foreground boldness Options and background smoothing options"; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_foreground_boldness_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "AutomaticAdvanced"; constraint[2] = "Automatic"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "foreground-boldness-mode"; - descriptor->title = "Foreground Boldness Mode"; - descriptor->desc = "Foreground Boldness Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = FOREGROUND_BOLDNESS_MODE; + descriptor->descriptor->name = "foreground-boldness-mode"; + descriptor->descriptor->title = "Foreground Boldness Mode"; + descriptor->descriptor->desc = "Foreground Boldness Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness() +option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -10; constraint->max = 10; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "foreground-boldness-aggressiveness"; - descriptor->title = "Foreground Boldness Aggressiveness"; - descriptor->desc = "Foreground Boldness Aggressiveness"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = FOREGROUND_BOLDNESS_AGGRESSIVENESS; + descriptor->descriptor->name = "foreground-boldness-aggressiveness"; + descriptor->descriptor->title = "Foreground Boldness Aggressiveness"; + descriptor->descriptor->desc = "Foreground Boldness Aggressiveness"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_background_smoothing_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "AutomaticAdvanced"; constraint[2] = "Automatic"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "background-smoothing-mode"; - descriptor->title = "Background Smoothing Mode"; - descriptor->desc = "Background Smoothing Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = BACKGROUND_SMOOTHING_MODE; + descriptor->descriptor->name = "background-smoothing-mode"; + descriptor->descriptor->title = "Background Smoothing Mode"; + descriptor->descriptor->desc = "Background Smoothing Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_background_smoothing_aggressiveness() +option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_aggressiveness() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -10; constraint->max = 10; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "background-smoothing-aggressiveness"; - descriptor->title = "Background Smoothing Aggressiveness"; - descriptor->desc = "Background Smoothing Aggressiveness"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = BACKGROUND_SMOOTHING_AGGRESSIVENESS; + descriptor->descriptor->name = "background-smoothing-aggressiveness"; + descriptor->descriptor->title = "Background Smoothing Aggressiveness"; + descriptor->descriptor->desc = "Background Smoothing Aggressiveness"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } @@ -566,29 +585,36 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_background_smoothing_aggre /******************************************************************************* * boldness color group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_boldness_color_group() +option_descriptor_t* _kds_s2000w_option_descriptor_boldness_color_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "color-options"; - descriptor->title = "Color Options"; - descriptor->desc = "Color Options"; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = BOLDNESS_COLOR_GROUP; + descriptor->descriptor->name = "color-options"; + descriptor->descriptor->title = "Color Options"; + descriptor->descriptor->desc = "Color Options"; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_drop() +option_descriptor_t* _kds_s2000w_option_descriptor_color_drop() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 9); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Red"; @@ -600,152 +626,152 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_drop() constraint[7] = "Multiple"; constraint[8] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-drop-out"; - descriptor->title = "Color Drop Out"; - descriptor->desc = "Color Drop Out"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const) * 9; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = COLOR_DROP_OUT; + descriptor->descriptor->name = "color-drop-out"; + descriptor->descriptor->title = "Color Drop Out"; + descriptor->descriptor->desc = "Color Drop Out"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const) * 9; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_drop_out_aggressiveness() +option_descriptor_t* _kds_s2000w_option_descriptor_color_drop_out_aggressiveness() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -10; constraint->max = 10; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-drop-out-aggressiveness"; - descriptor->title = "Color Drop Out Aggressiveness"; - descriptor->desc = "Color Drop Out Aggressiveness"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_DROP_OUT_AGGRESSIVENESS; + descriptor->descriptor->name = "color-drop-out-aggressiveness"; + descriptor->descriptor->title = "Color Drop Out Aggressiveness"; + descriptor->descriptor->desc = "Color Drop Out Aggressiveness"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_auto_brightness_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_color_auto_brightness_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Manual"; constraint[2] = "Automatic"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-auto-brightness-mode"; - descriptor->title = "Color Auto Brightness Mode"; - descriptor->desc = "Color Auto Brightness Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = COLOR_AUTO_BRIGHTNESS_MODE; + descriptor->descriptor->name = "color-auto-brightness-mode"; + descriptor->descriptor->title = "Color Auto Brightness Mode"; + descriptor->descriptor->desc = "Color Auto Brightness Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_brightness() +option_descriptor_t* _kds_s2000w_option_descriptor_color_brightness() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-brightness"; - descriptor->title = "Color Brightness"; - descriptor->desc = "Color Brightness"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_BRIGHTNESS; + descriptor->descriptor->name = "color-brightness"; + descriptor->descriptor->title = "Color Brightness"; + descriptor->descriptor->desc = "Color Brightness"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_contrast() +option_descriptor_t* _kds_s2000w_option_descriptor_color_contrast() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-contrast"; - descriptor->title = "Color Contrast"; - descriptor->desc = "Color Contrast"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_CONTRAST; + descriptor->descriptor->name = "color-contrast"; + descriptor->descriptor->title = "Color Contrast"; + descriptor->descriptor->desc = "Color Contrast"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_mode() +option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_mode() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 5); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Manual"; @@ -753,151 +779,151 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_mode() constraint[3] = "AutomaticAdvanced"; constraint[4] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-balance-mode"; - descriptor->title = "Color Balance Mode"; - descriptor->desc = "Color Balance Mode"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 5; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = COLOR_BALANCE_MODE; + descriptor->descriptor->name = "color-balance-mode"; + descriptor->descriptor->title = "Color Balance Mode"; + descriptor->descriptor->desc = "Color Balance Mode"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 5; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_agressiveness() +option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_agressiveness() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -2; constraint->max = 2; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-balance-aggressiveness"; - descriptor->title = "Color Balance Aggressiveness"; - descriptor->desc = "Color Balance Aggressiveness"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_BALANCE_AGGRESSIVENESS; + descriptor->descriptor->name = "color-balance-aggressiveness"; + descriptor->descriptor->title = "Color Balance Aggressiveness"; + descriptor->descriptor->desc = "Color Balance Aggressiveness"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_red() +option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_red() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-balance-red"; - descriptor->title = "Color Balance Red"; - descriptor->desc = "Color Balance Red"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_BALANCE_RED; + descriptor->descriptor->name = "color-balance-red"; + descriptor->descriptor->title = "Color Balance Red"; + descriptor->descriptor->desc = "Color Balance Red"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_green() +option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_green() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-balance-green"; - descriptor->title = "Color Balance Green"; - descriptor->desc = "Color Balance Green"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_BALANCE_GREEN; + descriptor->descriptor->name = "color-balance-green"; + descriptor->descriptor->title = "Color Balance Green"; + descriptor->descriptor->desc = "Color Balance Green"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_balance_blue() +option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_blue() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-balance-blue"; - descriptor->title = "Color Balance Blue"; - descriptor->desc = "Color Balance Blue"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT ; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = COLOR_BALANCE_BLUE; + descriptor->descriptor->name = "color-balance-blue"; + descriptor->descriptor->title = "Color Balance Blue"; + descriptor->descriptor->desc = "Color Balance Blue"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT ; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_sharpen() +option_descriptor_t* _kds_s2000w_option_descriptor_color_sharpen() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 5); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Normal"; @@ -905,70 +931,65 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_color_sharpen() constraint[3] = "Exaggerated"; constraint[4] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "color-sharpen"; - descriptor->title = "Color Sharpen"; - descriptor->desc = "Color Sharpen"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 5; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = COLOR_SHARPEN; + descriptor->descriptor->name = "color-sharpen"; + descriptor->descriptor->title = "Color Sharpen"; + descriptor->descriptor->desc = "Color Sharpen"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 5; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_binarization_contrast() +option_descriptor_t* _kds_s2000w_option_descriptor_binarization_contrast() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = -50; constraint->max = 50; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "binarization-contrast"; - descriptor->title = "Binarization Contrast"; - descriptor->desc = "Binarization Contrast"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = BINARIZATION_CONTRAST; + descriptor->descriptor->name = "binarization-contrast"; + descriptor->descriptor->title = "Binarization Contrast"; + descriptor->descriptor->desc = "Binarization Contrast"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_config_reset() +option_descriptor_t* _kds_s2000w_option_descriptor_config_reset() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "config-reset"; - descriptor->title = "Reset Config"; - descriptor->desc = "Load default configuration from scanner"; - descriptor->type = SANE_TYPE_BUTTON; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = RESET; + descriptor->descriptor->name = "config-reset"; + descriptor->descriptor->title = "Reset Config"; + descriptor->descriptor->desc = "Load default configuration from scanner"; + descriptor->descriptor->type = SANE_TYPE_BUTTON; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } @@ -976,95 +997,104 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_config_reset() /******************************************************************************* * image processing group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_processing_group() +option_descriptor_t* _kds_s2000w_option_descriptor_image_processing_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "image-processing-options"; - descriptor->title = "Image Processing Options"; - descriptor->desc = "Image Processing Options"; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = IMAGE_PROCESSING_GROUP; + descriptor->descriptor->name = "image-processing-options"; + descriptor->descriptor->title = "Image Processing Options"; + descriptor->descriptor->desc = "Image Processing Options"; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_skip_blank_pages() +option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_pages() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "skip-blank-pages"; - descriptor->title = "Blank Blank Pages"; - descriptor->desc = "Blank Blank Pages"; - descriptor->type = SANE_TYPE_BOOL; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Bool); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = SKIP_BLANK_PAGES; + descriptor->descriptor->name = "skip-blank-pages"; + descriptor->descriptor->title = "Blank Blank Pages"; + descriptor->descriptor->desc = "Blank Blank Pages"; + descriptor->descriptor->type = SANE_TYPE_BOOL; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Bool); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_skip_blank_page_content() +option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_page_content() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 0; constraint->max = 100; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "skip-blank-page-content"; - descriptor->title = "Skip Blank Page Content"; - descriptor->desc = "Skip Blank Page Content"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_PERCENT; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = SKIP_BLANK_PAGES_CONTENT; + descriptor->descriptor->name = "skip-blank-page-content"; + descriptor->descriptor->title = "Skip Blank Page Content"; + descriptor->descriptor->desc = "Skip Blank Page Content"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_PERCENT; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_hole_fill() +option_descriptor_t* _kds_s2000w_option_descriptor_hole_fill() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "hole-fill"; - descriptor->title = "Hole Fill"; - descriptor->desc = "Hole Fill"; - descriptor->type = SANE_TYPE_BOOL; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Bool); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = HOLE_FILL; + descriptor->descriptor->name = "hole-fill"; + descriptor->descriptor->title = "Hole Fill"; + descriptor->descriptor->desc = "Hole Fill"; + descriptor->descriptor->type = SANE_TYPE_BOOL; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Bool); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_post_scan_rotation() +option_descriptor_t* _kds_s2000w_option_descriptor_post_scan_rotation() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 6); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Automatic"; @@ -1073,93 +1103,93 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_post_scan_rotation() constraint[4] = "Automatic270"; constraint[5] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "post-scan-rotation"; - descriptor->title = "Post Scan Rotation"; - descriptor->desc = "Post Scan Rotation"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 6; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = POST_SCAN_ROTATION; + descriptor->descriptor->name = "post-scan-rotation"; + descriptor->descriptor->title = "Post Scan Rotation"; + descriptor->descriptor->desc = "Post Scan Rotation"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 6; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_edge_fill() +option_descriptor_t* _kds_s2000w_option_descriptor_edge_fill() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Automatic"; constraint[2] = "AutomaticIncludeTears"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "edge-fill"; - descriptor->title = "Edge Fill"; - descriptor->desc = "Edge Fill"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = EDGE_FILL; + descriptor->descriptor->name = "edge-fill"; + descriptor->descriptor->title = "Edge Fill"; + descriptor->descriptor->desc = "Edge Fill"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_image_border() +option_descriptor_t* _kds_s2000w_option_descriptor_image_border() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Add"; constraint[2] = "Remove"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - } - - descriptor->name = "image-border"; - descriptor->title = "Image Border"; - descriptor->desc = "Image Border"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = IMAGE_BORDER; + descriptor->descriptor->name = "image-border"; + descriptor->descriptor->title = "Image Border"; + descriptor->descriptor->desc = "Image Border"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_jpeg_quality() +option_descriptor_t* _kds_s2000w_option_descriptor_jpeg_quality() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 6); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Draft"; constraint[1] = "Good"; @@ -1168,22 +1198,16 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_jpeg_quality() constraint[4] = "Superior"; constraint[5] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "jpeg-quality"; - descriptor->title = "Jpeg Quality"; - descriptor->desc = "Jpeg Quality"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 6; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = JPEG_QUALITY; + descriptor->descriptor->name = "jpeg-quality"; + descriptor->descriptor->title = "Jpeg Quality"; + descriptor->descriptor->desc = "Jpeg Quality"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 6; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } @@ -1191,77 +1215,85 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_jpeg_quality() /******************************************************************************* * feeder group ******************************************************************************/ -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_feeder_group() +option_descriptor_t* _kds_s2000w_option_descriptor_feeder_group() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "feeder-options"; - descriptor->title = "Feeder Options"; - descriptor->desc = "Feeder Options"; - descriptor->type = SANE_TYPE_GROUP; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = 0; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = FEEDER_GROUP; + descriptor->descriptor->name = "feeder-options"; + descriptor->descriptor->title = "Feeder Options"; + descriptor->descriptor->desc = "Feeder Options"; + descriptor->descriptor->type = SANE_TYPE_GROUP; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = 0; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_autostart() +option_descriptor_t* _kds_s2000w_option_descriptor_autostart() { - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); if (descriptor == NULL) return NULL; - descriptor->name = "autostart"; - descriptor->title = "Autostart"; - descriptor->desc = "Autostart"; - descriptor->type = SANE_TYPE_BOOL; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Bool); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_NONE; + descriptor->config_name = AUTOSTART; + descriptor->descriptor->name = "autostart"; + descriptor->descriptor->title = "Autostart"; + descriptor->descriptor->desc = "Autostart"; + descriptor->descriptor->type = SANE_TYPE_BOOL; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Bool); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_NONE; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_max_document_length() +option_descriptor_t* _kds_s2000w_option_descriptor_max_document_length() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 25; constraint->max = 400; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "max-document-length"; - descriptor->title = "Max Document Length"; - descriptor->desc = "Max Document Length"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = MAX_DOCUMENT_LENGTH; + descriptor->descriptor->name = "max-document-length"; + descriptor->descriptor->title = "Max Document Length"; + descriptor->descriptor->desc = "Max Document Length"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_transport_handling() +option_descriptor_t* _kds_s2000w_option_descriptor_transport_handling() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 5); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Normal"; constraint[1] = "ImprovedStacking"; @@ -1269,31 +1301,31 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_transport_handling() constraint[3] = "Special"; constraint[4] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "transport-handling"; - descriptor->title = "Transport Handling"; - descriptor->desc = "Transport Handling"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 5; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = TRANSPORT_HANDLING; + descriptor->descriptor->name = "transport-handling"; + descriptor->descriptor->title = "Transport Handling"; + descriptor->descriptor->desc = "Transport Handling"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 5; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_multifeed_sensitivity() +option_descriptor_t* _kds_s2000w_option_descriptor_multifeed_sensitivity() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 5); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "None"; constraint[1] = "Low"; @@ -1301,113 +1333,107 @@ SANE_Option_Descriptor* _kds_s2000w_option_descriptor_multifeed_sensitivity() constraint[3] = "High"; constraint[4] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "multifeed-sensitivity"; - descriptor->title = "Multifeed Sensitivity"; - descriptor->desc = "Multifeed Sensitivity"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 5; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = MULTIFEED_SENSITIVITY; + descriptor->descriptor->name = "multifeed-sensitivity"; + descriptor->descriptor->title = "Multifeed Sensitivity"; + descriptor->descriptor->desc = "Multifeed Sensitivity"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 5; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor *_kds_s2000w_option_descriptor_multifeed_response() +option_descriptor_t *_kds_s2000w_option_descriptor_multifeed_response() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + const char** constraint = malloc(sizeof(SANE_String_Const*) * 3); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Stop"; constraint[1] = "StopAndGenerateImage"; constraint[2] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "multifeed-response"; - descriptor->title = "Multifeed Response"; - descriptor->desc = "Multifeed Response"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 3; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = MULTIFEED_RESPONSE; + descriptor->descriptor->name = "multifeed-response"; + descriptor->descriptor->title = "Multifeed Response"; + descriptor->descriptor->desc = "Multifeed Response"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 3; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_document_feeder_timeout() +option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + SANE_Range* constraint = malloc(sizeof(SANE_Range)); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint->min = 0; constraint->max = 120; constraint->quant = 1; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "document-feeder-timeout"; - descriptor->title = "Document Feeder Timeout"; - descriptor->desc = "Document Feeder Timeout"; - descriptor->type = SANE_TYPE_INT; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_Int); - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_RANGE; - descriptor->constraint.range = constraint; + descriptor->config_name = DOCUMENT_FEEDER_TIMEOUT; + descriptor->descriptor->name = "document-feeder-timeout"; + descriptor->descriptor->title = "Document Feeder Timeout"; + descriptor->descriptor->desc = "Document Feeder Timeout"; + descriptor->descriptor->type = SANE_TYPE_INT; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_Int); + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_RANGE; + descriptor->descriptor->constraint.range = constraint; return descriptor; } -SANE_Option_Descriptor* _kds_s2000w_option_descriptor_document_feeder_timeout_response() +option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout_response() { + option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init(); + if (descriptor == NULL) + return NULL; + char** constraint = malloc(sizeof(SANE_String_Const*) * 4); - if (constraint == NULL) + if (constraint == NULL) { + _kds_s2000w_option_descriptor_descriptor_free(descriptor); return NULL; + } constraint[0] = "Stop"; constraint[1] = "Pause"; constraint[2] = "PauseAndWait"; constraint[3] = NULL; - SANE_Option_Descriptor* descriptor = malloc(sizeof(SANE_Option_Descriptor)); - if (descriptor == NULL) { - free(constraint); - constraint = NULL; - return NULL; - }; - - descriptor->name = "document-feeder-timeout-response"; - descriptor->title = "Document Feeder Timeout Response"; - descriptor->desc = "Document Feeder Timeout Response"; - descriptor->type = SANE_TYPE_STRING; - descriptor->unit = SANE_UNIT_NONE; - descriptor->size = sizeof(SANE_String_Const*) * 4; - descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; - descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; - descriptor->constraint.string_list = (SANE_String_Const*) constraint; + descriptor->config_name = DOCUMENT_FEEDER_TIMEOUT_RESPONSE; + descriptor->descriptor->name = "document-feeder-timeout-response"; + descriptor->descriptor->title = "Document Feeder Timeout Response"; + descriptor->descriptor->desc = "Document Feeder Timeout Response"; + descriptor->descriptor->type = SANE_TYPE_STRING; + descriptor->descriptor->unit = SANE_UNIT_NONE; + descriptor->descriptor->size = sizeof(SANE_String_Const*) * 4; + descriptor->descriptor->cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT | SANE_CAP_ADVANCED; + descriptor->descriptor->constraint_type = SANE_CONSTRAINT_STRING_LIST; + descriptor->descriptor->constraint.string_list = (SANE_String_Const*) constraint; return descriptor; } @@ -1427,40 +1453,18 @@ SANE_Status _kds_s2000w_option_descriptors_init_min_profile() kds_s2000w_descriptors[i] = NULL; } - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - kds_s2000w_descriptors[i] = malloc(sizeof(option_descriptor_t)); - if (kds_s2000w_descriptors[i] == NULL) { - kds_s2000w_option_descriptors_free(kds_s2000w_descriptors); - kds_s2000w_descriptors = NULL; - return SANE_STATUS_NO_MEM; - } - kds_s2000w_descriptors[i]->descriptor = NULL; - } - - kds_s2000w_descriptors[0]->config_name = OPTION_COUNT; - kds_s2000w_descriptors[0]->descriptor = _kds_s2000w_option_descriptor_num_options(); - kds_s2000w_descriptors[1]->config_name = STANDARD_GROUP; - kds_s2000w_descriptors[1]->descriptor = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2]->config_name = COLOR_MODE; - kds_s2000w_descriptors[2]->descriptor = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[3]->config_name = DPI; - kds_s2000w_descriptors[3]->descriptor = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[4]->config_name = SCAN_SIDE; - kds_s2000w_descriptors[4]->descriptor = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[5]->config_name = BOLDNESS_COLOR_GROUP; - kds_s2000w_descriptors[5]->descriptor = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[6]->config_name = COLOR_DROP_OUT; - kds_s2000w_descriptors[6]->descriptor = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[7]->config_name = RESET; - kds_s2000w_descriptors[7]->descriptor = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[8]->config_name = IMAGE_PROCESSING_GROUP; - kds_s2000w_descriptors[8]->descriptor = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[9]->config_name = SKIP_BLANK_PAGES; - kds_s2000w_descriptors[9]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[10]->config_name = FEEDER_GROUP; - kds_s2000w_descriptors[10]->descriptor = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[11]->config_name = AUTOSTART; - kds_s2000w_descriptors[11]->descriptor = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options();; + kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_autostart(); return _kds_s2000w_option_descriptor_validate(); } @@ -1477,68 +1481,32 @@ SANE_Status _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile() kds_s2000w_descriptors[i] = NULL; } - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - kds_s2000w_descriptors[i] = malloc(sizeof(option_descriptor_t)); - if (kds_s2000w_descriptors[i] == NULL) { - kds_s2000w_option_descriptors_free(kds_s2000w_descriptors); - kds_s2000w_descriptors = NULL; - return SANE_STATUS_NO_MEM; - } - kds_s2000w_descriptors[i]->descriptor = NULL; - } - - kds_s2000w_descriptors[0]->config_name = OPTION_COUNT; - kds_s2000w_descriptors[0]->descriptor = _kds_s2000w_option_descriptor_num_options(); - kds_s2000w_descriptors[1]->config_name = STANDARD_GROUP; - kds_s2000w_descriptors[1]->descriptor = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2]->config_name = SCAN_SOURCE; - kds_s2000w_descriptors[2]->descriptor = _kds_s2000w_option_descriptor_scan_source(); - kds_s2000w_descriptors[3]->config_name = COLOR_MODE; - kds_s2000w_descriptors[3]->descriptor = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[4]->config_name = DPI; - kds_s2000w_descriptors[4]->descriptor = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[5]->config_name = SCAN_SIDE; - kds_s2000w_descriptors[5]->descriptor = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[6]->config_name = BOLDNESS_SMOOTHING_GROUP; - kds_s2000w_descriptors[6]->descriptor = _kds_s2000w_option_descriptor_boldness_smoothing_group(); - kds_s2000w_descriptors[7]->config_name = FOREGROUND_BOLDNESS_MODE; - kds_s2000w_descriptors[7]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_mode(); - kds_s2000w_descriptors[8]->config_name = FOREGROUND_BOLDNESS_AGGRESSIVENESS; - kds_s2000w_descriptors[8]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); - kds_s2000w_descriptors[9]->config_name = BACKGROUND_SMOOTHING_MODE; - kds_s2000w_descriptors[9]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_mode(); - kds_s2000w_descriptors[10]->config_name = BACKGROUND_SMOOTHING_AGGRESSIVENESS; - kds_s2000w_descriptors[10]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); - kds_s2000w_descriptors[11]->config_name = BOLDNESS_COLOR_GROUP; - kds_s2000w_descriptors[11]->descriptor = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[12]->config_name = COLOR_DROP_OUT; - kds_s2000w_descriptors[12]->descriptor = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[13]->config_name = COLOR_DROP_OUT_AGGRESSIVENESS; - kds_s2000w_descriptors[13]->descriptor = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); - kds_s2000w_descriptors[14]->config_name = COLOR_AUTO_BRIGHTNESS_MODE; - kds_s2000w_descriptors[14]->descriptor = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); - kds_s2000w_descriptors[15]->config_name = COLOR_BALANCE_MODE; - kds_s2000w_descriptors[15]->descriptor = _kds_s2000w_option_descriptor_color_balance_mode(); - kds_s2000w_descriptors[16]->config_name = COLOR_BALANCE_AGGRESSIVENESS; - kds_s2000w_descriptors[16]->descriptor = _kds_s2000w_option_descriptor_color_balance_agressiveness(); - kds_s2000w_descriptors[17]->config_name = COLOR_BALANCE_RED; - kds_s2000w_descriptors[17]->descriptor = _kds_s2000w_option_descriptor_color_balance_red(); - kds_s2000w_descriptors[18]->config_name = COLOR_BALANCE_GREEN; - kds_s2000w_descriptors[18]->descriptor = _kds_s2000w_option_descriptor_color_balance_green(); - kds_s2000w_descriptors[19]->config_name = COLOR_BALANCE_BLUE; - kds_s2000w_descriptors[19]->descriptor = _kds_s2000w_option_descriptor_color_balance_blue(); - kds_s2000w_descriptors[20]->config_name = BINARIZATION_CONTRAST; - kds_s2000w_descriptors[20]->descriptor = _kds_s2000w_option_descriptor_binarization_contrast(); - kds_s2000w_descriptors[21]->config_name = RESET; - kds_s2000w_descriptors[21]->descriptor = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[22]->config_name = IMAGE_PROCESSING_GROUP; - kds_s2000w_descriptors[22]->descriptor = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[23]->config_name = SKIP_BLANK_PAGES; - kds_s2000w_descriptors[23]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[24]->config_name = FEEDER_GROUP; - kds_s2000w_descriptors[24]->descriptor = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[25]->config_name = AUTOSTART; - kds_s2000w_descriptors[25]->descriptor = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options(); + kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); + kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); + kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); + kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); + kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_background_smoothing_mode(); + kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); + kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_descriptors[12] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_descriptors[13] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); + kds_s2000w_descriptors[14] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); + kds_s2000w_descriptors[15] = _kds_s2000w_option_descriptor_color_balance_mode(); + kds_s2000w_descriptors[16] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); + kds_s2000w_descriptors[17] = _kds_s2000w_option_descriptor_color_balance_red(); + kds_s2000w_descriptors[18] = _kds_s2000w_option_descriptor_color_balance_green(); + kds_s2000w_descriptors[19] = _kds_s2000w_option_descriptor_color_balance_blue(); + kds_s2000w_descriptors[20] = _kds_s2000w_option_descriptor_binarization_contrast(); + kds_s2000w_descriptors[21] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_descriptors[22] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_descriptors[23] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_descriptors[24] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_descriptors[25] = _kds_s2000w_option_descriptor_autostart(); return _kds_s2000w_option_descriptor_validate(); } @@ -1555,112 +1523,54 @@ SANE_Status _kds_s2000w_option_descriptors_init_full_profile() kds_s2000w_descriptors[i] = NULL; } - for (int i = 0; i < kds_s2000w_max_option_count; i++) { - kds_s2000w_descriptors[i] = malloc(sizeof(option_descriptor_t)); - if (kds_s2000w_descriptors[i] == NULL) { - kds_s2000w_option_descriptors_free(kds_s2000w_descriptors); - kds_s2000w_descriptors = NULL; - return SANE_STATUS_NO_MEM; - } - kds_s2000w_descriptors[i]->descriptor = NULL; - } - - kds_s2000w_descriptors[0]->config_name = OPTION_COUNT; - kds_s2000w_descriptors[0]->descriptor = _kds_s2000w_option_descriptor_num_options(); - kds_s2000w_descriptors[1]->config_name = STANDARD_GROUP; - kds_s2000w_descriptors[1]->descriptor = _kds_s2000w_option_descriptor_standard_group(); - kds_s2000w_descriptors[2]->config_name = SCAN_SOURCE; - kds_s2000w_descriptors[2]->descriptor = _kds_s2000w_option_descriptor_scan_source(); - kds_s2000w_descriptors[3]->config_name = COLOR_MODE; - kds_s2000w_descriptors[3]->descriptor = _kds_s2000w_option_descriptor_color_mode(); - kds_s2000w_descriptors[4]->config_name = DPI; - kds_s2000w_descriptors[4]->descriptor = _kds_s2000w_option_descriptor_dpi(); - kds_s2000w_descriptors[5]->config_name = SCAN_SIDE; - kds_s2000w_descriptors[5]->descriptor = _kds_s2000w_option_descriptor_scanside(); - kds_s2000w_descriptors[6]->config_name = GEOMETRY_GROUP; - kds_s2000w_descriptors[6]->descriptor = _kds_s2000w_option_descriptor_geometry_group(); - kds_s2000w_descriptors[7]->config_name = CROPPING_MODE; - kds_s2000w_descriptors[7]->descriptor = _kds_s2000w_option_descriptor_cropping_mode(); - kds_s2000w_descriptors[8]->config_name = CROPPING_IMAGE; - kds_s2000w_descriptors[8]->descriptor = _kds_s2000w_option_descriptor_cropping_image(); - kds_s2000w_descriptors[9]->config_name = IMAGE_OFFSET_X; - kds_s2000w_descriptors[9]->descriptor = _kds_s2000w_option_descriptor_image_offset_x(); - kds_s2000w_descriptors[10]->config_name = IMAGE_OFFSET_Y; - kds_s2000w_descriptors[10]->descriptor = _kds_s2000w_option_descriptor_image_offset_y(); - kds_s2000w_descriptors[11]->config_name = IMAGE_WIDTH; - kds_s2000w_descriptors[11]->descriptor = _kds_s2000w_option_descriptor_image_width(); - kds_s2000w_descriptors[12]->config_name = IMAGE_HEIGHT; - kds_s2000w_descriptors[12]->descriptor = _kds_s2000w_option_descriptor_image_height(); - kds_s2000w_descriptors[13]->config_name = BOLDNESS_SMOOTHING_GROUP; - kds_s2000w_descriptors[13]->descriptor = _kds_s2000w_option_descriptor_boldness_smoothing_group(); - kds_s2000w_descriptors[14]->config_name = FOREGROUND_BOLDNESS_MODE; - kds_s2000w_descriptors[14]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_mode(); - kds_s2000w_descriptors[15]->config_name = FOREGROUND_BOLDNESS_AGGRESSIVENESS; - kds_s2000w_descriptors[15]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); - kds_s2000w_descriptors[16]->config_name = BACKGROUND_SMOOTHING_MODE; - kds_s2000w_descriptors[16]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_mode(); - kds_s2000w_descriptors[17]->config_name = BACKGROUND_SMOOTHING_AGGRESSIVENESS; - kds_s2000w_descriptors[17]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); - kds_s2000w_descriptors[18]->config_name = BOLDNESS_COLOR_GROUP; - kds_s2000w_descriptors[18]->descriptor = _kds_s2000w_option_descriptor_boldness_color_group(); - kds_s2000w_descriptors[19]->config_name = COLOR_DROP_OUT; - kds_s2000w_descriptors[19]->descriptor = _kds_s2000w_option_descriptor_color_drop(); - kds_s2000w_descriptors[20]->config_name = COLOR_DROP_OUT_AGGRESSIVENESS; - kds_s2000w_descriptors[20]->descriptor = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); - kds_s2000w_descriptors[21]->config_name = COLOR_AUTO_BRIGHTNESS_MODE; - kds_s2000w_descriptors[21]->descriptor = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); - kds_s2000w_descriptors[22]->config_name = COLOR_BRIGHTNESS; - kds_s2000w_descriptors[22]->descriptor = _kds_s2000w_option_descriptor_color_brightness(); - kds_s2000w_descriptors[23]->config_name = COLOR_CONTRAST; - kds_s2000w_descriptors[23]->descriptor = _kds_s2000w_option_descriptor_color_contrast(); - kds_s2000w_descriptors[24]->config_name = COLOR_BALANCE_MODE; - kds_s2000w_descriptors[24]->descriptor = _kds_s2000w_option_descriptor_color_balance_mode(); - kds_s2000w_descriptors[25]->config_name = COLOR_BALANCE_AGGRESSIVENESS; - kds_s2000w_descriptors[25]->descriptor = _kds_s2000w_option_descriptor_color_balance_agressiveness(); - kds_s2000w_descriptors[26]->config_name = COLOR_BALANCE_RED; - kds_s2000w_descriptors[26]->descriptor = _kds_s2000w_option_descriptor_color_balance_red(); - kds_s2000w_descriptors[27]->config_name = COLOR_BALANCE_GREEN; - kds_s2000w_descriptors[27]->descriptor = _kds_s2000w_option_descriptor_color_balance_green(); - kds_s2000w_descriptors[28]->config_name = COLOR_BALANCE_BLUE; - kds_s2000w_descriptors[28]->descriptor = _kds_s2000w_option_descriptor_color_balance_blue(); - kds_s2000w_descriptors[29]->config_name = COLOR_SHARPEN; - kds_s2000w_descriptors[29]->descriptor = _kds_s2000w_option_descriptor_color_sharpen(); - kds_s2000w_descriptors[30]->config_name = BINARIZATION_CONTRAST; - kds_s2000w_descriptors[30]->descriptor = _kds_s2000w_option_descriptor_binarization_contrast(); - kds_s2000w_descriptors[31]->config_name = RESET; - kds_s2000w_descriptors[31]->descriptor = _kds_s2000w_option_descriptor_config_reset(); - kds_s2000w_descriptors[32]->config_name = IMAGE_PROCESSING_GROUP; - kds_s2000w_descriptors[32]->descriptor = _kds_s2000w_option_descriptor_image_processing_group(); - kds_s2000w_descriptors[33]->config_name = SKIP_BLANK_PAGES; - kds_s2000w_descriptors[33]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages(); - kds_s2000w_descriptors[34]->config_name = SKIP_BLANK_PAGES_CONTENT; - kds_s2000w_descriptors[34]->descriptor = _kds_s2000w_option_descriptor_skip_blank_page_content(); - kds_s2000w_descriptors[35]->config_name = HOLE_FILL; - kds_s2000w_descriptors[35]->descriptor = _kds_s2000w_option_descriptor_hole_fill(); - kds_s2000w_descriptors[36]->config_name = POST_SCAN_ROTATION; - kds_s2000w_descriptors[36]->descriptor = _kds_s2000w_option_descriptor_post_scan_rotation(); - kds_s2000w_descriptors[37]->config_name = EDGE_FILL; - kds_s2000w_descriptors[37]->descriptor = _kds_s2000w_option_descriptor_edge_fill(); - kds_s2000w_descriptors[38]->config_name = IMAGE_BORDER; - kds_s2000w_descriptors[38]->descriptor = _kds_s2000w_option_descriptor_image_border(); - kds_s2000w_descriptors[39]->config_name = JPEG_QUALITY; - kds_s2000w_descriptors[39]->descriptor = _kds_s2000w_option_descriptor_jpeg_quality(); - kds_s2000w_descriptors[40]->config_name = FEEDER_GROUP; - kds_s2000w_descriptors[40]->descriptor = _kds_s2000w_option_descriptor_feeder_group(); - kds_s2000w_descriptors[41]->config_name = AUTOSTART; - kds_s2000w_descriptors[41]->descriptor = _kds_s2000w_option_descriptor_autostart(); - kds_s2000w_descriptors[42]->config_name = MAX_DOCUMENT_LENGTH; - kds_s2000w_descriptors[42]->descriptor = _kds_s2000w_option_descriptor_max_document_length(); - kds_s2000w_descriptors[43]->config_name = TRANSPORT_HANDLING; - kds_s2000w_descriptors[43]->descriptor = _kds_s2000w_option_descriptor_transport_handling(); - kds_s2000w_descriptors[44]->config_name = MULTIFEED_SENSITIVITY; - kds_s2000w_descriptors[44]->descriptor = _kds_s2000w_option_descriptor_multifeed_sensitivity(); - kds_s2000w_descriptors[45]->config_name = MULTIFEED_RESPONSE; - kds_s2000w_descriptors[45]->descriptor = _kds_s2000w_option_descriptor_multifeed_response(); - kds_s2000w_descriptors[46]->config_name = DOCUMENT_FEEDER_TIMEOUT; - kds_s2000w_descriptors[46]->descriptor = _kds_s2000w_option_descriptor_document_feeder_timeout(); - kds_s2000w_descriptors[47]->config_name = DOCUMENT_FEEDER_TIMEOUT_RESPONSE; - kds_s2000w_descriptors[47]->descriptor = _kds_s2000w_option_descriptor_document_feeder_timeout_response(); + kds_s2000w_descriptors[0] = _kds_s2000w_option_descriptor_num_options(); + kds_s2000w_descriptors[1] = _kds_s2000w_option_descriptor_standard_group(); + kds_s2000w_descriptors[2] = _kds_s2000w_option_descriptor_scan_source(); + kds_s2000w_descriptors[3] = _kds_s2000w_option_descriptor_color_mode(); + kds_s2000w_descriptors[4] = _kds_s2000w_option_descriptor_dpi(); + kds_s2000w_descriptors[5] = _kds_s2000w_option_descriptor_scanside(); + kds_s2000w_descriptors[6] = _kds_s2000w_option_descriptor_geometry_group(); + kds_s2000w_descriptors[7] = _kds_s2000w_option_descriptor_cropping_mode(); + kds_s2000w_descriptors[8] = _kds_s2000w_option_descriptor_cropping_image(); + kds_s2000w_descriptors[9] = _kds_s2000w_option_descriptor_image_offset_x(); + kds_s2000w_descriptors[10] = _kds_s2000w_option_descriptor_image_offset_y(); + kds_s2000w_descriptors[11] = _kds_s2000w_option_descriptor_image_width(); + kds_s2000w_descriptors[12] = _kds_s2000w_option_descriptor_image_height(); + kds_s2000w_descriptors[13] = _kds_s2000w_option_descriptor_boldness_smoothing_group(); + kds_s2000w_descriptors[14] = _kds_s2000w_option_descriptor_foreground_boldness_mode(); + kds_s2000w_descriptors[15] = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(); + kds_s2000w_descriptors[16] = _kds_s2000w_option_descriptor_background_smoothing_mode(); + kds_s2000w_descriptors[17] = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(); + kds_s2000w_descriptors[18] = _kds_s2000w_option_descriptor_boldness_color_group(); + kds_s2000w_descriptors[19] = _kds_s2000w_option_descriptor_color_drop(); + kds_s2000w_descriptors[20] = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(); + kds_s2000w_descriptors[21] = _kds_s2000w_option_descriptor_color_auto_brightness_mode(); + kds_s2000w_descriptors[22] = _kds_s2000w_option_descriptor_color_brightness(); + kds_s2000w_descriptors[23] = _kds_s2000w_option_descriptor_color_contrast(); + kds_s2000w_descriptors[24] = _kds_s2000w_option_descriptor_color_balance_mode(); + kds_s2000w_descriptors[25] = _kds_s2000w_option_descriptor_color_balance_agressiveness(); + kds_s2000w_descriptors[26] = _kds_s2000w_option_descriptor_color_balance_red(); + kds_s2000w_descriptors[27] = _kds_s2000w_option_descriptor_color_balance_green(); + kds_s2000w_descriptors[28] = _kds_s2000w_option_descriptor_color_balance_blue(); + kds_s2000w_descriptors[29] = _kds_s2000w_option_descriptor_color_sharpen(); + kds_s2000w_descriptors[30] = _kds_s2000w_option_descriptor_binarization_contrast(); + kds_s2000w_descriptors[31] = _kds_s2000w_option_descriptor_config_reset(); + kds_s2000w_descriptors[32] = _kds_s2000w_option_descriptor_image_processing_group(); + kds_s2000w_descriptors[33] = _kds_s2000w_option_descriptor_skip_blank_pages(); + kds_s2000w_descriptors[34] = _kds_s2000w_option_descriptor_skip_blank_page_content(); + kds_s2000w_descriptors[35] = _kds_s2000w_option_descriptor_hole_fill(); + kds_s2000w_descriptors[36] = _kds_s2000w_option_descriptor_post_scan_rotation(); + kds_s2000w_descriptors[37] = _kds_s2000w_option_descriptor_edge_fill(); + kds_s2000w_descriptors[38] = _kds_s2000w_option_descriptor_image_border(); + kds_s2000w_descriptors[39] = _kds_s2000w_option_descriptor_jpeg_quality(); + kds_s2000w_descriptors[40] = _kds_s2000w_option_descriptor_feeder_group(); + kds_s2000w_descriptors[41] = _kds_s2000w_option_descriptor_autostart(); + kds_s2000w_descriptors[42] = _kds_s2000w_option_descriptor_max_document_length(); + kds_s2000w_descriptors[43] = _kds_s2000w_option_descriptor_transport_handling(); + kds_s2000w_descriptors[44] = _kds_s2000w_option_descriptor_multifeed_sensitivity(); + kds_s2000w_descriptors[45] = _kds_s2000w_option_descriptor_multifeed_response(); + kds_s2000w_descriptors[46] = _kds_s2000w_option_descriptor_document_feeder_timeout(); + kds_s2000w_descriptors[47] = _kds_s2000w_option_descriptor_document_feeder_timeout_response(); return _kds_s2000w_option_descriptor_validate(); } -- 2.47.3