Option 0 has an empty name now. Group options have size 0 now. Check also for

SANE_ACTION_SET_AUTO.  Removed buggy output in sane_control_option. Added more
debug output in sane_control_option.
Henning Meier-Geinitz <henning@meier-geinitz.de>
DEVEL_2_0_BRANCH-1
Henning Geinitz 2002-03-20 21:36:59 +00:00
rodzic 329a4d31d9
commit 379fba017b
3 zmienionych plików z 39 dodań i 31 usunięć

Wyświetl plik

@ -46,7 +46,7 @@
This file implements a SANE backend for Mustek 1200UB and similar This file implements a SANE backend for Mustek 1200UB and similar
USB flatbed scanners. */ USB flatbed scanners. */
#define BUILD 11 #define BUILD 12
#include "../include/sane/config.h" #include "../include/sane/config.h"
@ -251,7 +251,7 @@ init_options (Mustek_Usb_Scanner * s)
s->opt[option].size = sizeof (SANE_Word); s->opt[option].size = sizeof (SANE_Word);
s->opt[option].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT; s->opt[option].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT;
} }
s->opt[OPT_NUM_OPTS].name = SANE_NAME_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS; s->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS; s->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS;
s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT; s->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT;
@ -262,15 +262,16 @@ init_options (Mustek_Usb_Scanner * s)
s->opt[OPT_MODE_GROUP].title = SANE_I18N("Scan Mode"); s->opt[OPT_MODE_GROUP].title = SANE_I18N("Scan Mode");
s->opt[OPT_MODE_GROUP].desc = ""; s->opt[OPT_MODE_GROUP].desc = "";
s->opt[OPT_MODE_GROUP].type = SANE_TYPE_GROUP; s->opt[OPT_MODE_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_MODE_GROUP].size = 0;
s->opt[OPT_MODE_GROUP].cap = 0; s->opt[OPT_MODE_GROUP].cap = 0;
s->opt[OPT_MODE_GROUP].constraint_type = SANE_CONSTRAINT_NONE; s->opt[OPT_MODE_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
/* scan mode */
mode_list[0]=SANE_I18N("Color"); mode_list[0]=SANE_I18N("Color");
mode_list[1]=SANE_I18N("Gray"); mode_list[1]=SANE_I18N("Gray");
mode_list[2]=SANE_I18N("Lineart"); mode_list[2]=SANE_I18N("Lineart");
mode_list[3]=NULL; mode_list[3]=NULL;
/* scan mode */
s->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE; s->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE;
s->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE; s->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE;
s->opt[OPT_MODE].desc = SANE_DESC_SCAN_MODE; s->opt[OPT_MODE].desc = SANE_DESC_SCAN_MODE;
@ -293,6 +294,7 @@ init_options (Mustek_Usb_Scanner * s)
s->hw->dpi_range.max = SANE_FIX(600); s->hw->dpi_range.max = SANE_FIX(600);
else else
s->hw->dpi_range.max = SANE_FIX(1200); s->hw->dpi_range.max = SANE_FIX(1200);
/* preview */ /* preview */
s->opt[OPT_PREVIEW].name = SANE_NAME_PREVIEW; s->opt[OPT_PREVIEW].name = SANE_NAME_PREVIEW;
s->opt[OPT_PREVIEW].title = SANE_TITLE_PREVIEW; s->opt[OPT_PREVIEW].title = SANE_TITLE_PREVIEW;
@ -306,6 +308,7 @@ init_options (Mustek_Usb_Scanner * s)
s->opt[OPT_GEOMETRY_GROUP].desc = ""; s->opt[OPT_GEOMETRY_GROUP].desc = "";
s->opt[OPT_GEOMETRY_GROUP].type = SANE_TYPE_GROUP; s->opt[OPT_GEOMETRY_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_GEOMETRY_GROUP].cap = SANE_CAP_ADVANCED; s->opt[OPT_GEOMETRY_GROUP].cap = SANE_CAP_ADVANCED;
s->opt[OPT_GEOMETRY_GROUP].size = 0;
s->opt[OPT_GEOMETRY_GROUP].constraint_type = SANE_CONSTRAINT_NONE; s->opt[OPT_GEOMETRY_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
/* top-left x */ /* top-left x */
@ -352,6 +355,7 @@ init_options (Mustek_Usb_Scanner * s)
s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement"); s->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N("Enhancement");
s->opt[OPT_ENHANCEMENT_GROUP].desc = ""; s->opt[OPT_ENHANCEMENT_GROUP].desc = "";
s->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP; s->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP;
s->opt[OPT_ENHANCEMENT_GROUP].size = 0;
s->opt[OPT_ENHANCEMENT_GROUP].cap = 0; s->opt[OPT_ENHANCEMENT_GROUP].cap = 0;
s->opt[OPT_ENHANCEMENT_GROUP].constraint_type = SANE_CONSTRAINT_NONE; s->opt[OPT_ENHANCEMENT_GROUP].constraint_type = SANE_CONSTRAINT_NONE;
@ -1154,43 +1158,34 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
SANE_Word cap; SANE_Word cap;
DBG (5, "sane_control_option: start: action = %s, option = %s (%d)\n", DBG (5, "sane_control_option: start: action = %s, option = %s (%d)\n",
(action == SANE_ACTION_GET_VALUE) ? "get" : "set", (action == SANE_ACTION_GET_VALUE) ? "get" :
(action == SANE_ACTION_SET_VALUE) ? "set" :
(action == SANE_ACTION_SET_AUTO) ? "set_auto" : "unknown",
s->opt[option].name, option); s->opt[option].name, option);
if (val || action == SANE_ACTION_GET_VALUE)
switch (s->opt[option].type)
{
case SANE_TYPE_STRING:
DBG (5, "sane_control_option: Value %s\n", s->val[option].s);
break;
case SANE_TYPE_FIXED:
{
double v1, v2;
SANE_Fixed f;
v1 = SANE_UNFIX (s->val[option].w);
f = *(SANE_Fixed *) val;
v2 = SANE_UNFIX (f);
DBG (5, "sane_control_option: Value %g (Fixed)\n", v1);
}
break;
default:
DBG (5, "sane_control_option: Value %u (Int)\n", s->val[option].w);
break;
}
if (info) if (info)
*info = 0; *info = 0;
if (s->scanning) if (s->scanning)
return SANE_STATUS_DEVICE_BUSY; {
DBG (1, "sane_control_option: don't call this function while "
"scanning\n");
return SANE_STATUS_DEVICE_BUSY;
}
if (option >= NUM_OPTIONS) if (option >= NUM_OPTIONS || option < 0)
return SANE_STATUS_INVAL; {
DBG (1, "sane_control_option: option >= NUM_OPTIONS || option < 0\n");
return SANE_STATUS_INVAL;
}
cap = s->opt[option].cap; cap = s->opt[option].cap;
if (!SANE_OPTION_IS_ACTIVE (cap)) if (!SANE_OPTION_IS_ACTIVE (cap))
return SANE_STATUS_INVAL; {
DBG (2, "sane_control_option: option is inactive\n");
return SANE_STATUS_INVAL;
}
if (action == SANE_ACTION_GET_VALUE) if (action == SANE_ACTION_GET_VALUE)
{ {
@ -1226,7 +1221,10 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
else if (action == SANE_ACTION_SET_VALUE) else if (action == SANE_ACTION_SET_VALUE)
{ {
if (!SANE_OPTION_IS_SETTABLE (cap)) if (!SANE_OPTION_IS_SETTABLE (cap))
return SANE_STATUS_INVAL; {
DBG (2, "sane_control_option: option is not settable\n");
return SANE_STATUS_INVAL;
}
status = sanei_constrain_value (s->opt + option, val, info); status = sanei_constrain_value (s->opt + option, val, info);

Wyświetl plik

@ -1,6 +1,6 @@
:backend "mustek_usb" :backend "mustek_usb"
:status :beta :status :beta
:version "1.0-11" :version "1.0-112"
:manpage "sane-mustek_usb" :manpage "sane-mustek_usb"
:url "http://www.meier-geinitz.de/sane/" :url "http://www.meier-geinitz.de/sane/"

Wyświetl plik

@ -1,5 +1,15 @@
CHANGES for the SANE Mustek USB backend CHANGES for the SANE Mustek USB backend
2002-03-20:
* Release of version 1.0-12.
2002-03-19:
* Option 0 has an empty name now.
* Group options have size 0 now.
* Checked also for SANE_ACTION_SET_AUTO.
* Removed buggy output in sane_control_option.
* Added more debug output in sane_control_option.
2002-03-17: 2002-03-17:
* Release of version 1.0-11. * Release of version 1.0-11.