]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
init all constraint ptr with descriptor and free it
authorBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 18:52:19 +0000 (19:52 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sat, 27 Jan 2024 18:52:19 +0000 (19:52 +0100)
src/kds_s2000w_net.c

index cec61fc573b4c0f0206cdeb6ededb570fb1201c3..c559a0127c4c90d476830c033cb6aa4dfb458db5 100644 (file)
 
 #define MAX_OPTION_COUNT 23
 
-SANE_Option_Descriptor* option_descriptors;
+SANE_Option_Descriptor* option_descriptors = NULL;
+
+SANE_Word* constraint_dpi = NULL;
+SANE_String_Const* constraint_scanside = NULL;
+SANE_String_Const* constraint_colormode = NULL;
+SANE_String_Const* constraint_colordrop = NULL;
+SANE_Range* constraint_color_drop_out_aggressiveness_range = NULL;
+SANE_String_Const* constraint_output_type = NULL;
+SANE_String_Const* constraint_color_auto_brightnessmode = NULL;
+SANE_String_Const* constraint_color_balance_mode = NULL;
+SANE_Range* constraint_color_balance_aggressiveness = NULL;
+SANE_Range* constraint_color_balance_red = NULL;
+SANE_Range* constraint_color_balance_green = NULL;
+SANE_Range* constraint_color_balance_blue = NULL;
+SANE_String_Const* constraint_foreground_boldness_mode = NULL;
+SANE_Range* constraint_foreground_boldness_aggressiveness = NULL;
+SANE_String_Const* constraint_background_smoothing_mode = NULL;
+SANE_Range* constraint_background_smoothing_aggressivness = NULL;
+SANE_String_Const* constraint_binarization_mode = NULL;
+SANE_Range* constraint_binarization_contrast = NULL;
+SANE_String_Const* constraint_max_document_length = NULL;
+SANE_String_Const* constraint_scan_source = NULL;
+
 SANE_Device* device_info = NULL;
 SANE_Parameters* parameter = NULL;
 
 void _init_option_descriptor_array()
 {
+       constraint_dpi = malloc(sizeof(SANE_Int) * 3);
+       constraint_scanside = malloc(sizeof(char*) * 3);
+       constraint_colormode = malloc(sizeof(char*) * 5);
+       constraint_colordrop = malloc(sizeof(char*) * 9);
+       constraint_color_drop_out_aggressiveness_range = malloc(sizeof(SANE_Range));
+       constraint_output_type = malloc(sizeof(char*) * 3);
+       constraint_color_auto_brightnessmode = malloc(sizeof(char*) * 3);
+       constraint_color_balance_mode = malloc(sizeof(char*) * 5);
+       constraint_color_balance_aggressiveness = malloc(sizeof(SANE_Range));
+       constraint_color_balance_red = malloc(sizeof(SANE_Range));
+       constraint_color_balance_green = malloc(sizeof(SANE_Range));
+       constraint_color_balance_blue = malloc(sizeof(SANE_Range));
+       constraint_foreground_boldness_mode = malloc(sizeof(char*) * 4);
+       constraint_foreground_boldness_aggressiveness = malloc(sizeof(SANE_Range));
+       constraint_background_smoothing_mode = malloc(sizeof(char*) * 4);
+       constraint_background_smoothing_aggressivness = malloc(sizeof(SANE_Range));
+       constraint_binarization_mode = malloc(sizeof(char*) * 2);
+       constraint_binarization_contrast = malloc(sizeof(SANE_Range));
+       constraint_max_document_length = malloc(sizeof(char*) * 2);
+       constraint_scan_source = malloc(sizeof(char*) * 4);
+
        option_descriptors = malloc(sizeof(SANE_Option_Descriptor) * MAX_OPTION_COUNT);
 }
 
 void _free_option_descriptor_array()
 {
+       free(constraint_dpi);
+       constraint_dpi = NULL;
+       free(constraint_scanside);
+       constraint_scanside = NULL;
+       free(constraint_colormode);
+       constraint_colormode = NULL;
+       free(constraint_colordrop);
+       constraint_colordrop = NULL;
+       free(constraint_color_drop_out_aggressiveness_range);
+       constraint_color_drop_out_aggressiveness_range = NULL;
+       free(constraint_output_type);
+       constraint_output_type = NULL;
+       free(constraint_color_auto_brightnessmode);
+       constraint_color_auto_brightnessmode = NULL;
+       free(constraint_color_balance_mode);
+       constraint_color_balance_mode = NULL;
+       free(constraint_color_balance_aggressiveness);
+       constraint_color_balance_aggressiveness = NULL;
+       free(constraint_color_balance_red);
+       constraint_color_balance_red = NULL;
+       free(constraint_color_balance_green);
+       constraint_color_balance_green = NULL;
+       free(constraint_color_balance_blue);
+       constraint_color_balance_blue = NULL;
+       free(constraint_foreground_boldness_mode);
+       constraint_foreground_boldness_mode = NULL;
+       free(constraint_foreground_boldness_aggressiveness);
+       constraint_foreground_boldness_aggressiveness = NULL;
+       free(constraint_background_smoothing_mode);
+       constraint_background_smoothing_mode = NULL;
+       free(constraint_background_smoothing_aggressivness);
+       constraint_background_smoothing_aggressivness = NULL;
+       free(constraint_binarization_mode);
+       constraint_binarization_mode = NULL;
+       free(constraint_binarization_contrast);
+       constraint_binarization_contrast = NULL;
+       free(constraint_max_document_length);
+       constraint_max_document_length = NULL;
+       free(constraint_scan_source);
+       constraint_scan_source = NULL;
+
        free(option_descriptors);
        option_descriptors = NULL;
 }
@@ -101,7 +185,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].unit = SANE_UNIT_DPI;
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_WORD_LIST;
-                       SANE_Word* constraint_dpi = malloc(sizeof(SANE_Int) * 3);
                        constraint_dpi[0] = 2;
                        constraint_dpi[1] = 200;
                        constraint_dpi[2] = 300;
@@ -113,7 +196,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "scanside";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_scanside = malloc(sizeof(char*) * 3);
                        constraint_scanside[0] = "Simplex";
                        constraint_scanside[1] = "Duplex";
                        constraint_scanside[2] = NULL;
@@ -125,7 +207,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colormode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_colormode = malloc(sizeof(char*) * 5);
                        constraint_colormode[0] = "Color";
                        constraint_colormode[1] = "Gray";
                        constraint_colormode[2] = "BW";
@@ -155,7 +236,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colordrop";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_colordrop = malloc(sizeof(char*) * 9);
                        constraint_colordrop[0] = "None";
                        constraint_colordrop[1] = "Red";
                        constraint_colordrop[2] = "Green";
@@ -173,7 +253,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colordropoutaggressiveness";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_color_drop_out_aggressiveness_range = malloc(sizeof(SANE_Range));
                        constraint_color_drop_out_aggressiveness_range->min = -10;
                        constraint_color_drop_out_aggressiveness_range->max = 10;
                        constraint_color_drop_out_aggressiveness_range->quant = 1;
@@ -185,7 +264,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "outputtype";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_output_type = malloc(sizeof(char*) * 3);
                        constraint_output_type[0] = "Images";
                        constraint_output_type[1] = "SinglePageColorPDFPlus2TIFs";
                        constraint_output_type[2] = NULL;
@@ -197,7 +275,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorautobrightnessmode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_color_auto_brightnessmode = malloc(sizeof(char*) * 3);
                        constraint_color_auto_brightnessmode[0] = "None";
                        constraint_color_auto_brightnessmode[1] = "Automatic";
                        constraint_color_auto_brightnessmode[2] = NULL;
@@ -209,7 +286,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorbalancemode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_color_balance_mode = malloc(sizeof(char*) * 5);
                        constraint_color_balance_mode[0] = "None";
                        constraint_color_balance_mode[1] = "Manual";
                        constraint_color_balance_mode[2] = "Automatic";
@@ -223,7 +299,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorbalanceaggressiveness";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_color_balance_aggressiveness = malloc(sizeof(SANE_Range));
                        constraint_color_balance_aggressiveness->min = -2;
                        constraint_color_balance_aggressiveness->max = 2;
                        constraint_color_balance_aggressiveness->quant = 1;
@@ -235,7 +310,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorbalancered";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_color_balance_red = malloc(sizeof(SANE_Range));
                        constraint_color_balance_red->min = -50;
                        constraint_color_balance_red->max = 50;
                        constraint_color_balance_red->quant = 1;
@@ -247,7 +321,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorbalancegreen";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_color_balance_green = malloc(sizeof(SANE_Range));
                        constraint_color_balance_green->min = -50;
                        constraint_color_balance_green->max = 50;
                        constraint_color_balance_green->quant = 1;
@@ -259,7 +332,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "colorbalanceblue";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_color_balance_blue = malloc(sizeof(SANE_Range));
                        constraint_color_balance_blue->min = -50;
                        constraint_color_balance_blue->max = 50;
                        constraint_color_balance_blue->quant = 1;
@@ -271,7 +343,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "foregroundboldnessmode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_foreground_boldness_mode = malloc(sizeof(char*) * 4);
                        constraint_foreground_boldness_mode[0] = "None";
                        constraint_foreground_boldness_mode[1] = "AutomaticAdvanced";
                        constraint_foreground_boldness_mode[2] = "Automatic";
@@ -284,7 +355,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "foregroundboldnessaggressiveness";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_foreground_boldness_aggressiveness = malloc(sizeof(SANE_Range));
                        constraint_foreground_boldness_aggressiveness->min = -10;
                        constraint_foreground_boldness_aggressiveness->max = 10;
                        constraint_foreground_boldness_aggressiveness->quant = 1;
@@ -296,7 +366,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "backgroundsmoothingmode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_background_smoothing_mode = malloc(sizeof(char*) * 4);
                        constraint_background_smoothing_mode[0] = "None";
                        constraint_background_smoothing_mode[1] = "AutomaticAdvanced";
                        constraint_background_smoothing_mode[2] = "Automatic";
@@ -309,7 +378,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "backgroundsmoothingaggressiveness";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_background_smoothing_aggressivness = malloc(sizeof(SANE_Range));
                        constraint_background_smoothing_aggressivness->min = -10;
                        constraint_background_smoothing_aggressivness->max = 10;
                        constraint_background_smoothing_aggressivness->quant = 1;
@@ -321,7 +389,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "binarizationmode";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_binarization_mode = malloc(sizeof(char*) * 2);
                        constraint_binarization_mode[0] = "iThresholding";
                        constraint_binarization_mode[1] = NULL;
                        option_descriptors[option].constraint.string_list = constraint_binarization_mode;
@@ -332,7 +399,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "binarizationcontrast";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_RANGE;
-                       SANE_Range* constraint_binarization_contrast = malloc(sizeof(SANE_Range));
                        constraint_binarization_contrast->min = -50;
                        constraint_binarization_contrast->max = 50;
                        constraint_binarization_contrast->quant = 1;
@@ -344,7 +410,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "maxdocumentlength";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_max_document_length = malloc(sizeof(char*) * 2);
                        constraint_max_document_length[0] = "#NoPrimaryControl#";
                        constraint_max_document_length[1] = NULL;
                        option_descriptors[option].constraint.string_list = constraint_max_document_length;
@@ -355,7 +420,6 @@ const SANE_Option_Descriptor* _sane_kds_s2000w_net_get_option_descriptor(
                        option_descriptors[option].desc = "scansource";
                        option_descriptors[option].cap = SANE_CAP_SOFT_DETECT | SANE_CAP_SOFT_SELECT;;
                        option_descriptors[option].constraint_type = SANE_CONSTRAINT_STRING_LIST;
-                       SANE_String_Const* constraint_scan_source = malloc(sizeof(char*) * 4);
                        constraint_scan_source[0] = "DocumentFeeder";
                        constraint_scan_source[1] = "Automatic";
                        constraint_scan_source[2] = "Flatbed";