color_balance_aggressivness->cap &= ~SANE_CAP_SOFT_SELECT;
}
-void _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(json_object* config)
+void _kds_s2000w_handler_opts_set_enable_color_brightness(json_object* config)
{
json_object* color_auto_brightness_mode = json_object_object_get(config, "ColorAutoBrightnessMode");;
const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
SANE_Option_Descriptor* color_brightness = kds_s2000w_option_descriptors_get_by_name("color-brightness");
- SANE_Option_Descriptor* color_constrast = kds_s2000w_option_descriptors_get_by_name("color-contrast");
if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
color_brightness->cap |= SANE_CAP_SOFT_SELECT;
- color_constrast->cap |= SANE_CAP_SOFT_SELECT;
return;
}
color_brightness->cap &= ~SANE_CAP_SOFT_SELECT;
+}
+
+void _kds_s2000w_handler_opts_set_enable_color_contrast(json_object* config)
+{
+ json_object* color_auto_brightness_mode = json_object_object_get(config, "ColorAutoBrightnessMode");;
+ const char* color_auto_brightness_mode_value = json_object_get_string(color_auto_brightness_mode);
+
+ SANE_Option_Descriptor* color_constrast = kds_s2000w_option_descriptors_get_by_name("color-contrast");
+
+ if (strcmp(color_auto_brightness_mode_value, "Manual") == 0) {
+ color_constrast->cap |= SANE_CAP_SOFT_SELECT;
+ return;
+ }
+
color_constrast->cap &= ~SANE_CAP_SOFT_SELECT;
}
*info = RELOAD_OPTIONS | RELOAD_PARAMS;
}
-void _kds_s2000w_handler_opts_set_depends_opts(const char* config_name, json_object* config)
+void _kds_s2000w_handler_opts_set_depends_opts(handler* h,
+ const char* config_name,
+ json_object* config)
{
if (strcmp(config_name, CROPPING_MODE) == 0) {
_kds_s2000w_handler_opts_set_enable_cropping_image(config);
if (strcmp(config_name, COLOR_DROP_OUT) == 0)
_kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config);
- if (strcmp(config_name, COLOR_AUTO_BRIGHTNESS_MODE) == 0)
- _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(config);
+ if (strcmp(config_name, COLOR_AUTO_BRIGHTNESS_MODE) == 0
+ && h->profile == PROFILE_FULL) {
+ _kds_s2000w_handler_opts_set_enable_color_brightness(config);
+ _kds_s2000w_handler_opts_set_enable_color_contrast(config);
+ }
if (strcmp(config_name, COLOR_BALANCE_MODE) == 0) {
_kds_s2000w_handler_opts_set_enable_color_balance(config);
}
if (strcmp(config_name, RESET) == 0) {
- _kds_s2000w_handler_opts_set_enable_cropping_image(config);
- _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
+ if (h->profile == PROFILE_FULL) {
+ _kds_s2000w_handler_opts_set_enable_cropping_image(config);
+ _kds_s2000w_handler_opts_set_enable_suboptions_cropping_image(config);
+ _kds_s2000w_handler_opts_set_enable_color_brightness(config);
+ _kds_s2000w_handler_opts_set_enable_color_contrast(config);
+ }
_kds_s2000w_handler_opts_set_enable_boldness_aggressiveness(config);
_kds_s2000w_handler_opts_set_enable_smoothing_aggressiveness(config);
_kds_s2000w_handler_opts_set_enable_color_drop_out_aggressiveness(config);
- _kds_s2000w_handler_opts_set_enable_color_brightness_and_contrast(config);
_kds_s2000w_handler_opts_set_enable_color_aggressiveness(config);
_kds_s2000w_handler_opts_set_enable_color_balance(config);
}
_kds_s2000w_handler_opts_set_autostart_on(config);
}
- if (h->profile == PROFILE_FULL)
- _kds_s2000w_handler_opts_set_depends_opts(descriptor->config_name, config);
+ if (h->profile > PROFILE_MIN)
+ _kds_s2000w_handler_opts_set_depends_opts(h, descriptor->config_name, config);
_kds_s2000w_handler_opts_set_info_option(descriptor, info);
_kds_s2000w_handler_opts_set_options(h);
#include "kds_s2000w_option_descriptors.h"
#include "kds_s2000w_debug.h"
-#define FULL_PROFILE_MAX_OPTION_COUNT 47
-#define MIN_PROFILE_MAX_OPTION_COUNT 9
+#define PROFILE_FULL_MAX_OPTION_COUNT 47
+#define PROFILE_230802_V1_0_36_MAX_OPTION_COUNT 24
+#define PROFILE_MIN_MAX_OPTION_COUNT 10
option_descriptor** descriptors = NULL;
uint8_t max_option_count = 0;
void _kds_s2000w_option_descriptors_init_min_profile()
{
- max_option_count = MIN_PROFILE_MAX_OPTION_COUNT;
+ max_option_count = PROFILE_MIN_MAX_OPTION_COUNT;
descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
for (int i = 0; i < max_option_count; i++) {
descriptors[6]->descriptor = _kds_s2000w_option_descriptor_color_drop();
descriptors[7]->config_name = RESET;
descriptors[7]->descriptor = _kds_s2000w_option_descriptor_config_reset();
- descriptors[8]->config_name = SKIP_BLANK_PAGES;
- descriptors[8]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
+ descriptors[8]->config_name = IMAGE_PROCESSING_GROUP;
+ descriptors[8]->descriptor = _kds_s2000w_option_descriptor_image_processing_group();
+ descriptors[9]->config_name = SKIP_BLANK_PAGES;
+ descriptors[9]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
+}
+
+void _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile()
+{
+ max_option_count = PROFILE_230802_V1_0_36_MAX_OPTION_COUNT;
+
+ descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
+ for (int i = 0; i < max_option_count; i++) {
+ descriptors[i] = malloc(sizeof(option_descriptor));
+ }
+
+ descriptors[0]->config_name = OPTION_COUNT;
+ descriptors[0]->descriptor = _kds_s2000w_option_descriptor_num_options();
+ descriptors[1]->config_name = STANDARD_GROUP;
+ descriptors[1]->descriptor = _kds_s2000w_option_descriptor_standard_group();
+ descriptors[2]->config_name = SCAN_SOURCE;
+ descriptors[2]->descriptor = _kds_s2000w_option_descriptor_scan_source();
+ descriptors[3]->config_name = COLOR_MODE;
+ descriptors[3]->descriptor = _kds_s2000w_option_descriptor_color_mode();
+ descriptors[4]->config_name = DPI;
+ descriptors[4]->descriptor = _kds_s2000w_option_descriptor_dpi();
+ descriptors[5]->config_name = SCAN_SIDE;
+ descriptors[5]->descriptor = _kds_s2000w_option_descriptor_scanside();
+ descriptors[6]->config_name = BOLDNESS_SMOOTHING_GROUP;
+ descriptors[6]->descriptor = _kds_s2000w_option_descriptor_boldness_smoothing_group();
+ descriptors[7]->config_name = FOREGROUND_BOLDNESS_MODE;
+ descriptors[7]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_mode();
+ descriptors[8]->config_name = FOREGROUND_BOLDNESS_AGGRESSIVENESS;
+ descriptors[8]->descriptor = _kds_s2000w_option_descriptor_foreground_boldness_aggressiveness();
+ descriptors[9]->config_name = BACKGROUND_SMOOTHING_MODE;
+ descriptors[9]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_mode();
+ descriptors[10]->config_name = BACKGROUND_SMOOTHING_AGGRESSIVENESS;
+ descriptors[10]->descriptor = _kds_s2000w_option_descriptor_background_smoothing_aggressiveness();
+ descriptors[11]->config_name = BOLDNESS_COLOR_GROUP;
+ descriptors[11]->descriptor = _kds_s2000w_option_descriptor_boldness_color_group();
+ descriptors[12]->config_name = COLOR_DROP_OUT;
+ descriptors[12]->descriptor = _kds_s2000w_option_descriptor_color_drop();
+ descriptors[13]->config_name = COLOR_DROP_OUT_AGGRESSIVENESS;
+ descriptors[13]->descriptor = _kds_s2000w_option_descriptor_color_drop_out_aggressiveness();
+ descriptors[14]->config_name = COLOR_AUTO_BRIGHTNESS_MODE;
+ descriptors[14]->descriptor = _kds_s2000w_option_descriptor_color_auto_brightness_mode();
+ descriptors[15]->config_name = COLOR_BALANCE_MODE;
+ descriptors[15]->descriptor = _kds_s2000w_option_descriptor_color_balance_mode();
+ descriptors[16]->config_name = COLOR_BALANCE_AGGRESSIVENESS;
+ descriptors[16]->descriptor = _kds_s2000w_option_descriptor_color_balance_agressiveness();
+ descriptors[17]->config_name = COLOR_BALANCE_RED;
+ descriptors[17]->descriptor = _kds_s2000w_option_descriptor_color_balance_red();
+ descriptors[18]->config_name = COLOR_BALANCE_GREEN;
+ descriptors[18]->descriptor = _kds_s2000w_option_descriptor_color_balance_green();
+ descriptors[19]->config_name = COLOR_BALANCE_BLUE;
+ descriptors[19]->descriptor = _kds_s2000w_option_descriptor_color_balance_blue();
+ descriptors[20]->config_name = BINARIZATION_CONTRAST;
+ descriptors[20]->descriptor = _kds_s2000w_option_descriptor_binarization_contrast();
+ descriptors[21]->config_name = RESET;
+ descriptors[21]->descriptor = _kds_s2000w_option_descriptor_config_reset();
+ descriptors[22]->config_name = IMAGE_PROCESSING_GROUP;
+ descriptors[22]->descriptor = _kds_s2000w_option_descriptor_image_processing_group();
+ descriptors[23]->config_name = SKIP_BLANK_PAGES;
+ descriptors[23]->descriptor = _kds_s2000w_option_descriptor_skip_blank_pages();
}
void _kds_s2000w_option_descriptors_init_full_profile()
{
- max_option_count = FULL_PROFILE_MAX_OPTION_COUNT;
+ max_option_count = PROFILE_FULL_MAX_OPTION_COUNT;
descriptors = malloc(sizeof(option_descriptor*) * max_option_count);
for (int i = 0; i < max_option_count; i++) {
return;
}
+ if (profile == PROFILE_230802_V1_0_36) {
+ _kds_s2000w_option_descriptors_init_230802_v1_0_36_profile();
+ return;
+ }
+
_kds_s2000w_option_descriptors_init_min_profile();
}