******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_standard_group(const mask_option_t* mask)
{
+ if (mask->standard_group == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_scan_source(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->standard_group, BIT_SCAN_SOURCE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->standard_group, BIT_COLOR_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_dpi(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->standard_group, BIT_DPI))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_scanside(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->standard_group, BIT_SCAN_SIDE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_geometry_group(const mask_option_t* mask)
{
+ if (GEOMETRY_GROUP == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_cropping_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_CROPPING_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_cropping_image(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_CROPPING_IMAGE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_x(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_OFFSET_X))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_image_offset_y(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_OFFSET_Y))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_image_width(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_WIDTH))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_image_height(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->geometry_group, BIT_IMAGE_HEIGHT))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_boldness_smoothing_group(const mask_option_t* mask)
{
+ if (mask->boldness_smoothing_group == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_FOREGROUND_BOLDNESS_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_FOREGROUND_BOLDNESS_AGGRESSIVENESS))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_BACKGROUND_SMOOTHING_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_background_smoothing_aggressiveness(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_smoothing_group, BIT_BACKGROUND_SMOOTHING_AGGRESSIVENESS))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_boldness_color_group(const mask_option_t* mask)
{
+ if (mask->boldness_color_group == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_drop(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_DROP_OUT))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_drop_out_aggressiveness(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_DROP_OUT_AGGRESSIVENESS))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_auto_brightness_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_AUTO_BRIGHTNESS_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_brightness(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BRIGHTNESS))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_contrast(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_CONTRAST))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_mode(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_MODE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_agressiveness(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_AGGRESSIVENESS))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_red(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_RED))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_green(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_GREEN))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_balance_blue(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_BALANCE_BLUE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_color_sharpen(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_COLOR_SHARPEN))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_binarization_contrast(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_BINARIZATION_CONTRAST))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_config_reset(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->boldness_color_group, BIT_RESET))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_image_processing_group(const mask_option_t* mask)
{
+ if (mask->image_processing_group == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_pages(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_SKIP_BLANK_PAGES))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_skip_blank_page_content(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_SKIP_BLANK_PAGES_CONTENT))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_hole_fill(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_HOLE_FILL))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_post_scan_rotation(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_POST_SCAN_ROTATION))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_edge_fill(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_EDGE_FILL))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_image_border(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_IMAGE_BORDER))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_jpeg_quality(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->image_processing_group, BIT_JPEG_QUALITY))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
******************************************************************************/
option_descriptor_t* _kds_s2000w_option_descriptor_feeder_group(const mask_option_t* mask)
{
+ if (mask->feeder_group == 0)
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_autostart(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_AUTOSTART))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_max_document_length(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_MAX_DOCUMENT_LENGTH))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_transport_handling(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_TRANSPORT_HANDLING))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_multifeed_sensitivity(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_MULTIFEED_SENSITIVITY))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t *_kds_s2000w_option_descriptor_multifeed_response(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_MULTIFEED_RESPONSE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_DOCUMENT_FEEDER_TIMEOUT))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
option_descriptor_t* _kds_s2000w_option_descriptor_document_feeder_timeout_response(const mask_option_t* mask)
{
+ if (!EXISTS_OPTION(mask->feeder_group, BIT_DOCUMENT_FEEDER_TIMEOUT_RESPONSE))
+ return NULL;
+
option_descriptor_t* descriptor = _kds_s2000w_option_descriptor_descriptor_init();
if (descriptor == NULL)
return NULL;
return SANE_STATUS_NO_MEM;
}
-
for (size_t i = 0; i < kds_s2000w_option_descriptors->size; i++) {
- kds_s2000w_option_descriptors->descriptors[i] = fn[i](mask);
+ kds_s2000w_option_descriptors->descriptors[i] = NULL;
+ }
+
+ option_descriptor_t* option = NULL;
+ size_t option_count = 0;
+ for (size_t i = 0; i < MAX_AVAILABLE_OPTIONS; i++) {
+ option = fn[i](mask);
+ if (option != NULL)
+ kds_s2000w_option_descriptors->descriptors[option_count++] = option;
+
+ if (option_count >= kds_s2000w_option_descriptors->size)
+ break;
}
return _kds_s2000w_option_descriptor_validate();