- UTA and custom gamma fix (wrongly inactive ...)

- gamma table check on option set
merge-requests/1/head
Stéphane Voltz 2003-08-15 06:56:24 +00:00
rodzic f7ce836c46
commit d54f39f55b
3 zmienionych plików z 20 dodań i 17 usunięć

Wyświetl plik

@ -1,3 +1,9 @@
2003-08-15 Stéphane Voltz <svoltz@wanadoo.fr>
* backend/umax_pp.c backend/umax_pp.h: added a check of values passed
in gamma table. Fixed a bug which prevented custom gamm and UTA to be
active
2003-08-14 Gerhard Jaeger <gerhard@gjaeger.de>
* doc/sane-plustek.man: Added debug description

Wyświetl plik

@ -102,8 +102,8 @@
* see Changelog
*/
#define UMAX_PP_BUILD 12
#define UMAX_PP_STATE "beta"
#define UMAX_PP_BUILD 13
#define UMAX_PP_STATE "stable"
static int num_devices = 0;
static Umax_PP_Descriptor *devlist = NULL;
@ -484,14 +484,14 @@ init_options (Umax_PP_Device * dev)
dev->opt[OPT_UTA_CONTROL].size = sizeof (SANE_Word);
dev->opt[OPT_UTA_CONTROL].unit = SANE_UNIT_NONE;
dev->val[OPT_UTA_CONTROL].w = SANE_TRUE;
dev->opt[OPT_UTA_CONTROL].cap |= SANE_CAP_ADVANCED | SANE_CAP_INACTIVE;
dev->opt[OPT_UTA_CONTROL].cap |= SANE_CAP_ADVANCED;
/* custom-gamma table */
dev->opt[OPT_CUSTOM_GAMMA].name = SANE_NAME_CUSTOM_GAMMA;
dev->opt[OPT_CUSTOM_GAMMA].title = SANE_TITLE_CUSTOM_GAMMA;
dev->opt[OPT_CUSTOM_GAMMA].desc = SANE_DESC_CUSTOM_GAMMA;
dev->opt[OPT_CUSTOM_GAMMA].type = SANE_TYPE_BOOL;
dev->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_ADVANCED | SANE_CAP_INACTIVE;
dev->opt[OPT_CUSTOM_GAMMA].cap |= SANE_CAP_ADVANCED;
dev->val[OPT_CUSTOM_GAMMA].w = SANE_FALSE;
/* grayscale gamma vector */
@ -1339,6 +1339,7 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
SANE_Status status;
SANE_Word w, cap, tmpw;
int dpi, rc;
unsigned int i;
DBG (6, "control_option: option %d, action %d\n", option, action);
@ -1409,6 +1410,14 @@ sane_control_option (SANE_Handle handle, SANE_Int option,
case OPT_GAMMA_VECTOR_G:
case OPT_GAMMA_VECTOR_B:
for(i=0;i<dev->opt[option].size/sizeof(SANE_Word);i++)
{
if(((SANE_Int *)val)[i]<0 || ((SANE_Int *)val)[i]>255)
{
DBG (2, "Value at index %d out of range\n",i);
return SANE_STATUS_INVAL;
}
}
memcpy (val, dev->val[option].wa, dev->opt[option].size);
return SANE_STATUS_GOOD;

Wyświetl plik

@ -97,6 +97,7 @@ typedef union
{
SANE_Word w;
SANE_Word *wa; /* word array */
SANE_Int *ia; /* int array */
SANE_String s;
}
Option_Value;
@ -192,17 +193,4 @@ Umax_PP_Device;
__PRETTY_FUNCTION__, V_MAJOR, V_MINOR, \
UMAX_PP_BUILD, UMAX_PP_STATE, __LINE__)
#define ASSERT(cond) if (!(cond)) \
{ \
DEBUG(); \
DBG(1, "ASSERT(%s) failed\n", STRINGIFY(cond)); \
DBG(1, "expect disaster...\n");\
}
/* Please note: ASSERT won't go away if you define NDEBUG, it just won't
* output a message when ASSERT failes. So if "cond" does anything, it will
* be executed, even if NDEBUG is defined...
*/
#endif /* umax_pp_h */