#define MAX_OPTION_COUNT 23
-typedef struct {
- SANE_Option_Descriptor* option_descriptors;
- int length;
-} option_descriptors;
-
+SANE_Option_Descriptor* option_descriptors;
SANE_Device* device_info = NULL;
SANE_Parameters* parameter = NULL;
-option_descriptors option_descriptor_array;
void _init_option_descriptor_array()
{
- option_descriptor_array.option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT);
- option_descriptor_array.length = MAX_OPTION_COUNT;
+ option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT);
}
void _free_option_descriptor_array()
{
- free(option_descriptor_array.option_descriptors);
- option_descriptor_array.option_descriptors = NULL;
+ free(option_descriptors);
+ option_descriptors = NULL;
}
SANE_Status _sane_kds_s2000w_net_init(SANE_Int* version_code, SANE_Auth_Callback authorize)
{
switch (option) {
case 0:
- option_descriptor_array.option_descriptors[option].name = "";
- option_descriptor_array.option_descriptors[option].title = "option number count";
- option_descriptor_array.option_descriptors[option].desc = "available number of options";
- option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_NONE;
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "";
+ option_descriptors[option].title = "option number count";
+ option_descriptors[option].desc = "available number of options";
+ option_descriptors[option].unit = SANE_UNIT_NONE;
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 1:
- option_descriptor_array.option_descriptors[option].name = "resolution";
- option_descriptor_array.option_descriptors[option].title = "resolution";
- option_descriptor_array.option_descriptors[option].desc = "resolution";
- option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_DPI;
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "resolution";
+ option_descriptors[option].title = "resolution";
+ option_descriptors[option].desc = "resolution";
+ option_descriptors[option].unit = SANE_UNIT_DPI;
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 2:
- option_descriptor_array.option_descriptors[option].name = "scanside";
- option_descriptor_array.option_descriptors[option].title = "scanside";
- option_descriptor_array.option_descriptors[option].desc = "scanside";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "scanside";
+ option_descriptors[option].title = "scanside";
+ option_descriptors[option].desc = "scanside";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 3:
- option_descriptor_array.option_descriptors[option].name = "colormode";
- option_descriptor_array.option_descriptors[option].title = "colormode";
- option_descriptor_array.option_descriptors[option].desc = "colormode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colormode";
+ option_descriptors[option].title = "colormode";
+ option_descriptors[option].desc = "colormode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 4:
- option_descriptor_array.option_descriptors[option].name = "skipblankpages";
- option_descriptor_array.option_descriptors[option].title = "skipblankpages";
- option_descriptor_array.option_descriptors[option].desc = "skipblankpages";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "skipblankpages";
+ option_descriptors[option].title = "skipblankpages";
+ option_descriptors[option].desc = "skipblankpages";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 5:
- option_descriptor_array.option_descriptors[option].name = "autostart";
- option_descriptor_array.option_descriptors[option].title = "autostart";
- option_descriptor_array.option_descriptors[option].desc = "autostart";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "autostart";
+ option_descriptors[option].title = "autostart";
+ option_descriptors[option].desc = "autostart";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 6:
- option_descriptor_array.option_descriptors[option].name = "colordrop";
- option_descriptor_array.option_descriptors[option].title = "colordrop";
- option_descriptor_array.option_descriptors[option].desc = "colordrop";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colordrop";
+ option_descriptors[option].title = "colordrop";
+ option_descriptors[option].desc = "colordrop";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 7:
- option_descriptor_array.option_descriptors[option].name = "colordropoutaggressiveness";
- option_descriptor_array.option_descriptors[option].title = "colordropoutaggressiveness";
- option_descriptor_array.option_descriptors[option].desc = "colordropoutaggressiveness";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colordropoutaggressiveness";
+ option_descriptors[option].title = "colordropoutaggressiveness";
+ option_descriptors[option].desc = "colordropoutaggressiveness";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 8:
- option_descriptor_array.option_descriptors[option].name = "outputtype";
- option_descriptor_array.option_descriptors[option].title = "outputtype";
- option_descriptor_array.option_descriptors[option].desc = "outputtype";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "outputtype";
+ option_descriptors[option].title = "outputtype";
+ option_descriptors[option].desc = "outputtype";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 9:
- option_descriptor_array.option_descriptors[option].name = "colorautobrightnessmode";
- option_descriptor_array.option_descriptors[option].title = "colorautobrightnessmode";
- option_descriptor_array.option_descriptors[option].desc = "colorautobrightnessmode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorautobrightnessmode";
+ option_descriptors[option].title = "colorautobrightnessmode";
+ option_descriptors[option].desc = "colorautobrightnessmode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 10:
- option_descriptor_array.option_descriptors[option].name = "colorbalancemode";
- option_descriptor_array.option_descriptors[option].title = "colorbalancemode";
- option_descriptor_array.option_descriptors[option].desc = "colorbalancemode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorbalancemode";
+ option_descriptors[option].title = "colorbalancemode";
+ option_descriptors[option].desc = "colorbalancemode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 11:
- option_descriptor_array.option_descriptors[option].name = "colorbalanceaggressiveness";
- option_descriptor_array.option_descriptors[option].title = "colorbalanceaggressiveness";
- option_descriptor_array.option_descriptors[option].desc = "colorbalanceaggressiveness";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorbalanceaggressiveness";
+ option_descriptors[option].title = "colorbalanceaggressiveness";
+ option_descriptors[option].desc = "colorbalanceaggressiveness";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 12:
- option_descriptor_array.option_descriptors[option].name = "colorbalancered";
- option_descriptor_array.option_descriptors[option].title = "colorbalancered";
- option_descriptor_array.option_descriptors[option].desc = "colorbalancered";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorbalancered";
+ option_descriptors[option].title = "colorbalancered";
+ option_descriptors[option].desc = "colorbalancered";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 13:
- option_descriptor_array.option_descriptors[option].name = "colorbalancegreen";
- option_descriptor_array.option_descriptors[option].title = "colorbalancegreen";
- option_descriptor_array.option_descriptors[option].desc = "colorbalancegreen";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorbalancegreen";
+ option_descriptors[option].title = "colorbalancegreen";
+ option_descriptors[option].desc = "colorbalancegreen";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 14:
- option_descriptor_array.option_descriptors[option].name = "colorbalanceblue";
- option_descriptor_array.option_descriptors[option].title = "colorbalanceblue";
- option_descriptor_array.option_descriptors[option].desc = "colorbalanceblue";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "colorbalanceblue";
+ option_descriptors[option].title = "colorbalanceblue";
+ option_descriptors[option].desc = "colorbalanceblue";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 15:
- option_descriptor_array.option_descriptors[option].name = "foregroundboldnessmode";
- option_descriptor_array.option_descriptors[option].title = "foregroundboldnessmode";
- option_descriptor_array.option_descriptors[option].desc = "foregroundboldnessmode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "foregroundboldnessmode";
+ option_descriptors[option].title = "foregroundboldnessmode";
+ option_descriptors[option].desc = "foregroundboldnessmode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 16:
- option_descriptor_array.option_descriptors[option].name = "foregroundboldnessaggressiveness";
- option_descriptor_array.option_descriptors[option].title = "foregroundboldnessaggressiveness";
- option_descriptor_array.option_descriptors[option].desc = "foregroundboldnessaggressiveness";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "foregroundboldnessaggressiveness";
+ option_descriptors[option].title = "foregroundboldnessaggressiveness";
+ option_descriptors[option].desc = "foregroundboldnessaggressiveness";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 17:
- option_descriptor_array.option_descriptors[option].name = "backgroundsmoothingmode";
- option_descriptor_array.option_descriptors[option].title = "backgroundsmoothingmode";
- option_descriptor_array.option_descriptors[option].desc = "backgroundsmoothingmode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "backgroundsmoothingmode";
+ option_descriptors[option].title = "backgroundsmoothingmode";
+ option_descriptors[option].desc = "backgroundsmoothingmode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 18:
- option_descriptor_array.option_descriptors[option].name = "backgroundsmoothingaggressiveness";
- option_descriptor_array.option_descriptors[option].title = "backgroundsmoothingaggressiveness";
- option_descriptor_array.option_descriptors[option].desc = "backgroundsmoothingaggressiveness";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "backgroundsmoothingaggressiveness";
+ option_descriptors[option].title = "backgroundsmoothingaggressiveness";
+ option_descriptors[option].desc = "backgroundsmoothingaggressiveness";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 19:
- option_descriptor_array.option_descriptors[option].name = "binarizationmode";
- option_descriptor_array.option_descriptors[option].title = "binarizationmode";
- option_descriptor_array.option_descriptors[option].desc = "binarizationmode";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "binarizationmode";
+ option_descriptors[option].title = "binarizationmode";
+ option_descriptors[option].desc = "binarizationmode";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 20:
- option_descriptor_array.option_descriptors[option].name = "binarizationcontrast";
- option_descriptor_array.option_descriptors[option].title = "binarizationcontrast";
- option_descriptor_array.option_descriptors[option].desc = "binarizationcontrast";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "binarizationcontrast";
+ option_descriptors[option].title = "binarizationcontrast";
+ option_descriptors[option].desc = "binarizationcontrast";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 21:
- option_descriptor_array.option_descriptors[option].name = "maxdocumentlength";
- option_descriptor_array.option_descriptors[option].title = "maxdocumentlength";
- option_descriptor_array.option_descriptors[option].desc = "maxdocumentlength";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "maxdocumentlength";
+ option_descriptors[option].title = "maxdocumentlength";
+ option_descriptors[option].desc = "maxdocumentlength";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
case 22:
- option_descriptor_array.option_descriptors[option].name = "scansource";
- option_descriptor_array.option_descriptors[option].title = "scansource";
- option_descriptor_array.option_descriptors[option].desc = "ScanSoscansourceurce";
- option_descriptor_array.option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
- option_descriptor_array.option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
- option_descriptor_array.option_descriptors[option].constraint.string_list = NULL;
+ option_descriptors[option].name = "scansource";
+ option_descriptors[option].title = "scansource";
+ option_descriptors[option].desc = "ScanSoscansourceurce";
+ option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
+ option_descriptors[option].constraint_type = SANE_CONSTRAINT_NONE;
+ option_descriptors[option].constraint.string_list = NULL;
break;
default:
return NULL;
case 18:
case 20:
case 21:
- option_descriptor_array.option_descriptors[option].type = SANE_TYPE_INT;
- option_descriptor_array.option_descriptors[option].size = sizeof(SANE_Int);
+ option_descriptors[option].type = SANE_TYPE_INT;
+ option_descriptors[option].size = sizeof(SANE_Int);
break;
case 2:
case 3:
case 17:
case 19:
case 22:
- option_descriptor_array.option_descriptors[option].type = SANE_TYPE_STRING;
- option_descriptor_array.option_descriptors[option].unit = SANE_UNIT_NONE;
- option_descriptor_array.option_descriptors[option].size = sizeof(SANE_String) * 50;
+ option_descriptors[option].type = SANE_TYPE_STRING;
+ option_descriptors[option].unit = SANE_UNIT_NONE;
+ option_descriptors[option].size = sizeof(SANE_String) * 50;
break;
default:
return NULL;
break;
}
- return &option_descriptor_array.option_descriptors[option];
+ return &option_descriptors[option];
}
SANE_Status _sane_kds_s2000w_net_control_option(SANE_Handle handle,