kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'escl-fix-capabilities' into 'master'
escl - fix capabilities See merge request sane-project/backends!384merge-requests/213/head^2
commit
22b548bf22
|
@ -189,38 +189,33 @@ find_valor_of_array_variables(xmlNode *node, capabilities_t *scanner)
|
||||||
else if (strcmp(name, "DocumentFormat") == 0)
|
else if (strcmp(name, "DocumentFormat") == 0)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
int _is_jpeg = 0, _is_png = 0, _is_tiff = 0, _is_pdf = 0;
|
||||||
scanner->DocumentFormats = char_to_array(scanner->DocumentFormats, &scanner->DocumentFormatsSize, (SANE_String_Const)xmlNodeGetContent(node), 0);
|
scanner->DocumentFormats = char_to_array(scanner->DocumentFormats, &scanner->DocumentFormatsSize, (SANE_String_Const)xmlNodeGetContent(node), 0);
|
||||||
for(; i < scanner->DocumentFormatsSize; i++)
|
for(; i < scanner->DocumentFormatsSize; i++)
|
||||||
{
|
{
|
||||||
if (scanner->default_format == NULL && !strcmp(scanner->DocumentFormats[i], "image/jpeg"))
|
if (!strcmp(scanner->DocumentFormats[i], "image/jpeg"))
|
||||||
{
|
_is_jpeg = 1;
|
||||||
scanner->default_format = strdup("image/jpeg");
|
|
||||||
}
|
|
||||||
#if(defined HAVE_LIBPNG)
|
#if(defined HAVE_LIBPNG)
|
||||||
else if(!strcmp(scanner->DocumentFormats[i], "image/png") && (scanner->default_format == NULL || strcmp(scanner->default_format, "image/tiff")))
|
else if(!strcmp(scanner->DocumentFormats[i], "image/png"))
|
||||||
{
|
_is_png = 1;
|
||||||
if (scanner->default_format)
|
|
||||||
free(scanner->default_format);
|
|
||||||
scanner->default_format = strdup("image/png");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#if(defined HAVE_TIFFIO_H)
|
#if(defined HAVE_TIFFIO_H)
|
||||||
else if(!strcmp(scanner->DocumentFormats[i], "image/tiff"))
|
else if(!strcmp(scanner->DocumentFormats[i], "image/tiff"))
|
||||||
{
|
_is_tiff = 1;
|
||||||
if (scanner->default_format)
|
|
||||||
free(scanner->default_format);
|
|
||||||
scanner->default_format = strdup("image/tiff");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
#if(defined HAVE_POPPLER_GLIB)
|
#if(defined HAVE_POPPLER_GLIB)
|
||||||
else if(!strcmp(scanner->DocumentFormats[i], "application/pdf"))
|
else if(!strcmp(scanner->DocumentFormats[i], "application/pdf"))
|
||||||
{
|
_is_pdf = 1;
|
||||||
if (scanner->default_format)
|
|
||||||
free(scanner->default_format);
|
|
||||||
scanner->default_format = strdup("application/pdf");
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
if (_is_pdf)
|
||||||
|
scanner->default_format = strdup("application/pdf");
|
||||||
|
else if (_is_tiff)
|
||||||
|
scanner->default_format = strdup("image/tiff");
|
||||||
|
else if (_is_png)
|
||||||
|
scanner->default_format = strdup("image/png");
|
||||||
|
else if(_is_jpeg)
|
||||||
|
scanner->default_format = strdup("image/jpeg");
|
||||||
fprintf(stderr, "Capability : [%s]\n", scanner->default_format);
|
fprintf(stderr, "Capability : [%s]\n", scanner->default_format);
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "DocumentFormatExt") == 0)
|
else if (strcmp(name, "DocumentFormatExt") == 0)
|
||||||
|
@ -330,6 +325,24 @@ print_xml_c(xmlNode *node, capabilities_t *scanner)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_reduce_color_modes(capabilities_t *scanner)
|
||||||
|
{
|
||||||
|
if (strcmp(scanner->default_format, "application/pdf")) {
|
||||||
|
if (scanner->ColorModesSize == 3) {
|
||||||
|
free(scanner->ColorModes);
|
||||||
|
scanner->ColorModes = NULL;
|
||||||
|
scanner->ColorModesSize = 0;
|
||||||
|
scanner->ColorModes = char_to_array(scanner->ColorModes,
|
||||||
|
&scanner->ColorModesSize,
|
||||||
|
(SANE_String_Const)SANE_VALUE_SCAN_MODE_GRAY, 0);
|
||||||
|
scanner->ColorModes = char_to_array(scanner->ColorModes,
|
||||||
|
&scanner->ColorModesSize,
|
||||||
|
(SANE_String_Const)SANE_VALUE_SCAN_MODE_COLOR, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \fn capabilities_t *escl_capabilities(const ESCL_Device *device, SANE_Status *status)
|
* \fn capabilities_t *escl_capabilities(const ESCL_Device *device, SANE_Status *status)
|
||||||
* \brief Function that finally recovers all the capabilities of the scanner, using curl.
|
* \brief Function that finally recovers all the capabilities of the scanner, using curl.
|
||||||
|
@ -371,6 +384,9 @@ escl_capabilities(const ESCL_Device *device, SANE_Status *status)
|
||||||
if (node == NULL)
|
if (node == NULL)
|
||||||
*status = SANE_STATUS_NO_MEM;
|
*status = SANE_STATUS_NO_MEM;
|
||||||
print_xml_c(node, scanner);
|
print_xml_c(node, scanner);
|
||||||
|
|
||||||
|
_reduce_color_modes(scanner);
|
||||||
|
|
||||||
xmlFreeDoc(data);
|
xmlFreeDoc(data);
|
||||||
xmlCleanupParser();
|
xmlCleanupParser();
|
||||||
xmlMemoryDump();
|
xmlMemoryDump();
|
||||||
|
|
Ładowanie…
Reference in New Issue