From: Bastian Dehn Date: Sat, 27 Jan 2024 18:52:19 +0000 (+0100) Subject: init all constraint ptr with descriptor and free it X-Git-Tag: v1.0.0^2~415 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=e2d04b1ec6409079d95353b6d03a18b3d7c5146a;p=sane-kds-s2000w-net.git init all constraint ptr with descriptor and free it --- diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index cec61fc..c559a01 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -6,17 +6,101 @@ #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";