kopia lustrzana https://gitlab.com/sane-project/backends
				
				
				
			SnapScan backend version 1.4.11
							rodzic
							
								
									356237e1fa
								
							
						
					
					
						commit
						ab6cf03059
					
				| 
						 | 
					@ -49,6 +49,67 @@
 | 
				
			||||||
/* $Id$
 | 
					/* $Id$
 | 
				
			||||||
   SANE SnapScan backend */
 | 
					   SANE SnapScan backend */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ranges */
 | 
				
			||||||
 | 
					static const SANE_Range x_range_fb =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (216.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static const SANE_Range y_range_fb =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (297.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static const SANE_Range x_range_tpo_default =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (129.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static const SANE_Range y_range_tpo_default =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (180.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static const SANE_Range x_range_tpo_1236 =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (203.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static const SANE_Range y_range_tpo_1236 =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (254.0), 0
 | 
				
			||||||
 | 
					};        /* mm */
 | 
				
			||||||
 | 
					static SANE_Range x_range_tpo;
 | 
				
			||||||
 | 
					static SANE_Range y_range_tpo;
 | 
				
			||||||
 | 
					static const SANE_Range gamma_range =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    SANE_FIX (0.0), SANE_FIX (4.0), 0
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					static const SANE_Range gamma_vrange =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    0, 255, 1
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					static const SANE_Range lpr_range =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    1, 50, 1
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const SANE_Range brightness_range =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    -400 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    400 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    1 << SANE_FIXED_SCALE_SHIFT
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const SANE_Range contrast_range =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    -100 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    400 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    1 << SANE_FIXED_SCALE_SHIFT
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const SANE_Range positive_percent_range =
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    0 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    100 << SANE_FIXED_SCALE_SHIFT,
 | 
				
			||||||
 | 
					    1 << SANE_FIXED_SCALE_SHIFT
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* init_options -- initialize the option set for a scanner; expects the
 | 
					/* init_options -- initialize the option set for a scanner; expects the
 | 
				
			||||||
   scanner structure's hardware configuration byte (hconfig) to be valid.
 | 
					   scanner structure's hardware configuration byte (hconfig) to be valid.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -213,7 +274,7 @@ static void init_options (SnapScan_Scanner * ps)
 | 
				
			||||||
        if (ps->hconfig & HCFG_TPO)
 | 
					        if (ps->hconfig & HCFG_TPO)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            source_list[i++] = src_tpo;
 | 
					            source_list[i++] = src_tpo;
 | 
				
			||||||
            po[OPT_SOURCE].cap ^= SANE_CAP_INACTIVE;
 | 
					            po[OPT_SOURCE].cap &= ~SANE_CAP_INACTIVE;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        source_list[i] = 0;
 | 
					        source_list[i] = 0;
 | 
				
			||||||
        po[OPT_SOURCE].size = max_string_size(source_list);
 | 
					        po[OPT_SOURCE].size = max_string_size(source_list);
 | 
				
			||||||
| 
						 | 
					@ -553,7 +614,7 @@ static void init_options (SnapScan_Scanner * ps)
 | 
				
			||||||
        "Send an Inquiry command to the scanner and dump out some of "
 | 
					        "Send an Inquiry command to the scanner and dump out some of "
 | 
				
			||||||
        "the current settings.");
 | 
					        "the current settings.");
 | 
				
			||||||
    po[OPT_INQUIRY].type = SANE_TYPE_BUTTON;
 | 
					    po[OPT_INQUIRY].type = SANE_TYPE_BUTTON;
 | 
				
			||||||
    po[OPT_INQUIRY].cap = SANE_CAP_ADVANCED;
 | 
					    po[OPT_INQUIRY].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
 | 
				
			||||||
    po[OPT_INQUIRY].constraint_type = SANE_CONSTRAINT_NONE;
 | 
					    po[OPT_INQUIRY].constraint_type = SANE_CONSTRAINT_NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    po[OPT_SELF_TEST].name = "do-self-test";
 | 
					    po[OPT_SELF_TEST].name = "do-self-test";
 | 
				
			||||||
| 
						 | 
					@ -561,7 +622,7 @@ static void init_options (SnapScan_Scanner * ps)
 | 
				
			||||||
    po[OPT_SELF_TEST].desc = SANE_I18N(
 | 
					    po[OPT_SELF_TEST].desc = SANE_I18N(
 | 
				
			||||||
        "Send a Self Test command to the scanner and report the result.");
 | 
					        "Send a Self Test command to the scanner and report the result.");
 | 
				
			||||||
    po[OPT_SELF_TEST].type = SANE_TYPE_BUTTON;
 | 
					    po[OPT_SELF_TEST].type = SANE_TYPE_BUTTON;
 | 
				
			||||||
    po[OPT_SELF_TEST].cap = SANE_CAP_ADVANCED;
 | 
					    po[OPT_SELF_TEST].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
 | 
				
			||||||
    po[OPT_SELF_TEST].constraint_type = SANE_CONSTRAINT_NONE;
 | 
					    po[OPT_SELF_TEST].constraint_type = SANE_CONSTRAINT_NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    po[OPT_REQ_SENSE].name = "do-req-sense";
 | 
					    po[OPT_REQ_SENSE].name = "do-req-sense";
 | 
				
			||||||
| 
						 | 
					@ -570,7 +631,7 @@ static void init_options (SnapScan_Scanner * ps)
 | 
				
			||||||
        "Send a Request Sense command to the scanner, and print out the sense "
 | 
					        "Send a Request Sense command to the scanner, and print out the sense "
 | 
				
			||||||
        "report.");
 | 
					        "report.");
 | 
				
			||||||
    po[OPT_REQ_SENSE].type = SANE_TYPE_BUTTON;
 | 
					    po[OPT_REQ_SENSE].type = SANE_TYPE_BUTTON;
 | 
				
			||||||
    po[OPT_REQ_SENSE].cap = SANE_CAP_ADVANCED;
 | 
					    po[OPT_REQ_SENSE].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
 | 
				
			||||||
    po[OPT_REQ_SENSE].constraint_type = SANE_CONSTRAINT_NONE;
 | 
					    po[OPT_REQ_SENSE].constraint_type = SANE_CONSTRAINT_NONE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    po[OPT_REL_UNIT].name = "do-rel-unit";
 | 
					    po[OPT_REL_UNIT].name = "do-rel-unit";
 | 
				
			||||||
| 
						 | 
					@ -579,7 +640,7 @@ static void init_options (SnapScan_Scanner * ps)
 | 
				
			||||||
        "Send a Release Unit command to the scanner. This is the same as "
 | 
					        "Send a Release Unit command to the scanner. This is the same as "
 | 
				
			||||||
        "a cancel command.");
 | 
					        "a cancel command.");
 | 
				
			||||||
    po[OPT_REL_UNIT].type = SANE_TYPE_BUTTON;
 | 
					    po[OPT_REL_UNIT].type = SANE_TYPE_BUTTON;
 | 
				
			||||||
    po[OPT_REL_UNIT].cap = SANE_CAP_ADVANCED;
 | 
					    po[OPT_REL_UNIT].cap = SANE_CAP_ADVANCED | SANE_CAP_SOFT_SELECT;
 | 
				
			||||||
    po[OPT_REL_UNIT].constraint_type = SANE_CONSTRAINT_NONE;
 | 
					    po[OPT_REL_UNIT].constraint_type = SANE_CONSTRAINT_NONE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -990,9 +1051,9 @@ SANE_Status sane_control_option (SANE_Handle h,
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            /* Adjust actual range values to new max values */
 | 
					            /* Adjust actual range values to new max values */
 | 
				
			||||||
            if (pss->brx > pss->pdev->x_range.max)
 | 
					            if (pss->brx > pss->pdev->x_range.max)
 | 
				
			||||||
                pss->brx = pss->pdev->x_range.max - pdev->x_range.quant;
 | 
					                pss->brx = pss->pdev->x_range.max;
 | 
				
			||||||
            if (pss->bry > pss->pdev->y_range.max)
 | 
					            if (pss->bry > pss->pdev->y_range.max)
 | 
				
			||||||
                pss->bry = pss->pdev->y_range.max - pdev->y_range.quant;
 | 
					                pss->bry = pss->pdev->y_range.max;
 | 
				
			||||||
            pss->predef_window = pdw_none;
 | 
					            pss->predef_window = pdw_none;
 | 
				
			||||||
            if (pss->source_s)
 | 
					            if (pss->source_s)
 | 
				
			||||||
                free (pss->source_s);
 | 
					                free (pss->source_s);
 | 
				
			||||||
| 
						 | 
					@ -1003,48 +1064,48 @@ SANE_Status sane_control_option (SANE_Handle h,
 | 
				
			||||||
        case OPT_TLX:
 | 
					        case OPT_TLX:
 | 
				
			||||||
            pss->tlx = *(SANE_Fixed *) v;
 | 
					            pss->tlx = *(SANE_Fixed *) v;
 | 
				
			||||||
            pss->predef_window = pdw_none;
 | 
					            pss->predef_window = pdw_none;
 | 
				
			||||||
            if (fabs(pss->tlx - pdev->x_range.max) < pdev->x_range.quant) {
 | 
					            if (pss->tlx > pdev->x_range.max) {
 | 
				
			||||||
                pss->tlx -= pdev->x_range.quant;
 | 
					                pss->tlx = pdev->x_range.max;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (pss->brx < pss->tlx) {
 | 
					            if (pss->brx < pss->tlx) {
 | 
				
			||||||
                pss->brx = pss->tlx + pdev->x_range.quant;
 | 
					                pss->brx = pss->tlx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (i)
 | 
					            if (i)
 | 
				
			||||||
                *i = SANE_INFO_RELOAD_PARAMS;
 | 
					                *i = SANE_INFO_RELOAD_PARAMS;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case OPT_TLY:
 | 
					        case OPT_TLY:
 | 
				
			||||||
            pss->tly = *(SANE_Fixed *) v;
 | 
					            pss->tly = *(SANE_Fixed *) v;
 | 
				
			||||||
            if (fabs(pss->tly - pdev->y_range.max) < pdev->y_range.quant) {
 | 
					 | 
				
			||||||
                pss->tly -= pdev->y_range.quant;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            pss->predef_window = pdw_none;
 | 
					            pss->predef_window = pdw_none;
 | 
				
			||||||
 | 
					            if (pss->tly > pdev->y_range.max){
 | 
				
			||||||
 | 
					                pss->tly = pdev->y_range.max;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            if (pss->bry < pss->tly) {
 | 
					            if (pss->bry < pss->tly) {
 | 
				
			||||||
                pss->bry = pss->tly + pdev->y_range.quant;
 | 
					                pss->bry = pss->tly;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (i)
 | 
					            if (i)
 | 
				
			||||||
                *i = SANE_INFO_RELOAD_PARAMS;
 | 
					                *i = SANE_INFO_RELOAD_PARAMS;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case OPT_BRX:
 | 
					        case OPT_BRX:
 | 
				
			||||||
            pss->brx = *(SANE_Fixed *) v;
 | 
					            pss->brx = *(SANE_Fixed *) v;
 | 
				
			||||||
            if (fabs(pss->brx - pdev->x_range.min) < pdev->x_range.quant) {
 | 
					            pss->predef_window = pdw_none;
 | 
				
			||||||
                pss->brx += pdev->x_range.quant;
 | 
					            if (pss->brx < pdev->x_range.min) {
 | 
				
			||||||
 | 
					                pss->brx = pdev->x_range.min;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (pss->brx < pss->tlx) {
 | 
					            if (pss->brx < pss->tlx) {
 | 
				
			||||||
                pss->tlx = pss->brx - pdev->x_range.quant;
 | 
					                pss->tlx = pss->brx;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            pss->predef_window = pdw_none;
 | 
					 | 
				
			||||||
            if (i)
 | 
					            if (i)
 | 
				
			||||||
                *i = SANE_INFO_RELOAD_PARAMS;
 | 
					                *i = SANE_INFO_RELOAD_PARAMS;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case OPT_BRY:
 | 
					        case OPT_BRY:
 | 
				
			||||||
            pss->bry = *(SANE_Fixed *) v;
 | 
					            pss->bry = *(SANE_Fixed *) v;
 | 
				
			||||||
            if (fabs(pss->bry - pdev->y_range.min) < pdev->y_range.quant) {
 | 
					            pss->predef_window = pdw_none;
 | 
				
			||||||
                pss->bry += pdev->y_range.quant;
 | 
					            if (pss->bry < pdev->y_range.min) {
 | 
				
			||||||
 | 
					                pss->bry = pdev->y_range.min;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (pss->bry < pss->tly) {
 | 
					            if (pss->bry < pss->tly) {
 | 
				
			||||||
                pss->tly = pss->bry - pdev->y_range.quant;
 | 
					                pss->tly = pss->bry;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            pss->predef_window = pdw_none;
 | 
					 | 
				
			||||||
            if (i)
 | 
					            if (i)
 | 
				
			||||||
                *i = SANE_INFO_RELOAD_PARAMS;
 | 
					                *i = SANE_INFO_RELOAD_PARAMS;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
| 
						 | 
					@ -1445,8 +1506,8 @@ SANE_Status sane_control_option (SANE_Handle h,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Log$
 | 
					 * $Log$
 | 
				
			||||||
 * Revision 1.1  2002/03/24 12:32:26  oliverschwartz
 | 
					 * Revision 1.2  2002/04/23 22:37:51  oliverschwartz
 | 
				
			||||||
 * Snapscan backend version 1.4.9
 | 
					 * SnapScan backend version 1.4.11
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Revision 1.1  2002/03/24 12:07:15  oliverschwartz
 | 
					 * Revision 1.1  2002/03/24 12:07:15  oliverschwartz
 | 
				
			||||||
 * Moved option functions from snapscan.c to snapscan-options.c
 | 
					 * Moved option functions from snapscan.c to snapscan-options.c
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -545,7 +545,7 @@ static SANE_Status inquiry (SnapScan_Scanner *pss)
 | 
				
			||||||
         "%s: effective buffer size = %lu bytes, %lu lines\n",
 | 
					         "%s: effective buffer size = %lu bytes, %lu lines\n",
 | 
				
			||||||
         me,
 | 
					         me,
 | 
				
			||||||
        (u_long) pss->buf_sz,
 | 
					        (u_long) pss->buf_sz,
 | 
				
			||||||
        (u_long) (pss->buf_sz ? pss->buf_sz / pss->lines : 0));
 | 
					        (u_long) (pss->lines ? pss->buf_sz / pss->lines : 0));
 | 
				
			||||||
    DBG (DL_DATA_TRACE,
 | 
					    DBG (DL_DATA_TRACE,
 | 
				
			||||||
        "%s: expected total scan data: %lu bytes\n",
 | 
					        "%s: expected total scan data: %lu bytes\n",
 | 
				
			||||||
        me,
 | 
					        me,
 | 
				
			||||||
| 
						 | 
					@ -772,30 +772,23 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
 | 
				
			||||||
            (int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->brx));
 | 
					            (int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->brx));
 | 
				
			||||||
        int bryp =
 | 
					        int bryp =
 | 
				
			||||||
            (int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->bry));
 | 
					            (int) (pss->actual_res*IN_PER_MM*SANE_UNFIX(pss->bry));
 | 
				
			||||||
        int tmp;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* we don't guard against brx < tlx and bry < tly in the options */
 | 
					        /* Check for brx > tlx and bry > tly */
 | 
				
			||||||
        if (brxp < tlxp)
 | 
					        if (brxp <= tlxp) {
 | 
				
			||||||
        {
 | 
					            tlxp = MAX (0, brxp - 75);
 | 
				
			||||||
            tmp = tlxp;
 | 
					        }
 | 
				
			||||||
            tlxp = brxp;
 | 
					        if (bryp <= tlyp) {
 | 
				
			||||||
            brxp = tmp;
 | 
					            tlyp = MAX (0, bryp - 75);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (bryp < tlyp)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            tmp = tlyp;
 | 
					 | 
				
			||||||
            tlyp = bryp;
 | 
					 | 
				
			||||||
            bryp = tmp;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        u_int_to_u_char4p (tlxp, pc + SET_WINDOW_P_TLX);
 | 
					        u_int_to_u_char4p (tlxp, pc + SET_WINDOW_P_TLX);
 | 
				
			||||||
        u_int_to_u_char4p (tlyp, pc + SET_WINDOW_P_TLY);
 | 
					        u_int_to_u_char4p (tlyp, pc + SET_WINDOW_P_TLY);
 | 
				
			||||||
        u_int_to_u_char4p (MAX (((unsigned) (brxp - tlxp)), 75),
 | 
					        u_int_to_u_char4p (MAX (((unsigned) (brxp - tlxp)), 75),
 | 
				
			||||||
                           pc + SET_WINDOW_P_WIDTH);
 | 
					                           pc + SET_WINDOW_P_WIDTH);
 | 
				
			||||||
        u_int_to_u_char4p (MAX (((unsigned) (bryp - tlyp)), 75),
 | 
					        u_int_to_u_char4p (MAX (((unsigned) (bryp - tlyp)), 75),
 | 
				
			||||||
                           pc + SET_WINDOW_P_LENGTH);
 | 
					                           pc + SET_WINDOW_P_LENGTH);
 | 
				
			||||||
        DBG (DL_CALL_TRACE, "%s Width:  %d\n", me, brxp-tlxp);
 | 
					        DBG (DL_INFO, "%s Width:  %d\n", me, brxp-tlxp);
 | 
				
			||||||
        DBG (DL_CALL_TRACE, "%s Length: %d\n", me, bryp-tlyp);
 | 
					        DBG (DL_INFO, "%s Length: %d\n", me, bryp-tlyp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pc[SET_WINDOW_P_BRIGHTNESS] = 128;
 | 
					    pc[SET_WINDOW_P_BRIGHTNESS] = 128;
 | 
				
			||||||
    pc[SET_WINDOW_P_THRESHOLD] =
 | 
					    pc[SET_WINDOW_P_THRESHOLD] =
 | 
				
			||||||
| 
						 | 
					@ -809,7 +802,7 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
 | 
				
			||||||
            mode = pss->preview_mode;
 | 
					            mode = pss->preview_mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        bpp = pss->pdev->depths[mode];
 | 
					        bpp = pss->pdev->depths[mode];
 | 
				
			||||||
        DBG (DL_CALL_TRACE, "%s Mode: %d\n", me, mode);
 | 
					        DBG (DL_MINOR_INFO, "%s Mode: %d\n", me, mode);
 | 
				
			||||||
        switch (mode)
 | 
					        switch (mode)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
        case MD_COLOUR:
 | 
					        case MD_COLOUR:
 | 
				
			||||||
| 
						 | 
					@ -835,7 +828,7 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pc[SET_WINDOW_P_BITS_PER_PIX] = bpp;
 | 
					        pc[SET_WINDOW_P_BITS_PER_PIX] = bpp;
 | 
				
			||||||
        DBG (DL_DATA_TRACE, "%s: bits-per-pixel set to %d\n", me, (int) bpp);
 | 
					        DBG (DL_INFO, "%s: bits-per-pixel set to %d\n", me, (int) bpp);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /* the RIF bit is the high bit of the padding type */
 | 
					    /* the RIF bit is the high bit of the padding type */
 | 
				
			||||||
    pc[SET_WINDOW_P_PADDING_TYPE] = 0x00 /*| (pss->negative ? 0x00 : 0x80) */ ;
 | 
					    pc[SET_WINDOW_P_PADDING_TYPE] = 0x00 /*| (pss->negative ? 0x00 : 0x80) */ ;
 | 
				
			||||||
| 
						 | 
					@ -871,12 +864,11 @@ static SANE_Status set_window (SnapScan_Scanner *pss)
 | 
				
			||||||
        source |= 0x08;
 | 
					        source |= 0x08;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    pc[SET_WINDOW_P_OPERATION_MODE] = source;
 | 
					    pc[SET_WINDOW_P_OPERATION_MODE] = source;
 | 
				
			||||||
    DBG (DL_DATA_TRACE, "%s: operation mode set to %d\n", me, (int) source);
 | 
					    DBG (DL_MINOR_INFO, "%s: operation mode set to %d\n", me, (int) source);
 | 
				
			||||||
    pc[SET_WINDOW_P_RED_UNDER_COLOR] = 0xff;    /* defaults */
 | 
					    pc[SET_WINDOW_P_RED_UNDER_COLOR] = 0xff;    /* defaults */
 | 
				
			||||||
    pc[SET_WINDOW_P_BLUE_UNDER_COLOR] = 0xff;
 | 
					    pc[SET_WINDOW_P_BLUE_UNDER_COLOR] = 0xff;
 | 
				
			||||||
    pc[SET_WINDOW_P_GREEN_UNDER_COLOR] = 0xff;
 | 
					    pc[SET_WINDOW_P_GREEN_UNDER_COLOR] = 0xff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DBG (DL_CALL_TRACE, "%s\n", me);
 | 
					 | 
				
			||||||
    status = snapscan_cmd (pss->pdev->bus, pss->fd, pss->cmd,
 | 
					    status = snapscan_cmd (pss->pdev->bus, pss->fd, pss->cmd,
 | 
				
			||||||
               SET_WINDOW_TOTAL_LEN, NULL, NULL);
 | 
					               SET_WINDOW_TOTAL_LEN, NULL, NULL);
 | 
				
			||||||
    CHECK_STATUS (status, me, "snapscan_cmd");
 | 
					    CHECK_STATUS (status, me, "snapscan_cmd");
 | 
				
			||||||
| 
						 | 
					@ -1046,7 +1038,7 @@ static SANE_Status calibrate (SnapScan_Scanner *pss)
 | 
				
			||||||
    SANE_Status status;
 | 
					    SANE_Status status;
 | 
				
			||||||
    int line_length = calibration_line_length(pss);
 | 
					    int line_length = calibration_line_length(pss);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pss->hconfig & HCFG_CAL_ALLOWED) {
 | 
					    if ((pss->hconfig & HCFG_CAL_ALLOWED) && line_length) {
 | 
				
			||||||
        int num_lines = pss->phys_buf_sz / line_length;
 | 
					        int num_lines = pss->phys_buf_sz / line_length;
 | 
				
			||||||
        if (num_lines > NUM_CALIBRATION_LINES)
 | 
					        if (num_lines > NUM_CALIBRATION_LINES)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -1177,8 +1169,11 @@ static SANE_Status download_firmware(SnapScan_Scanner * pss)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Log$
 | 
					 * $Log$
 | 
				
			||||||
 * Revision 1.14  2002/04/10 21:45:52  oliverschwartz
 | 
					 * Revision 1.15  2002/04/23 22:37:52  oliverschwartz
 | 
				
			||||||
 * Removed illegal character / removed declaration of bqelements
 | 
					 * SnapScan backend version 1.4.11
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Revision 1.29  2002/04/10 21:46:48  oliverschwartz
 | 
				
			||||||
 | 
					 * Removed illegal character
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Revision 1.28  2002/04/10 21:01:02  oliverschwartz
 | 
					 * Revision 1.28  2002/04/10 21:01:02  oliverschwartz
 | 
				
			||||||
 * Disable send_diagnostic() for 1236s
 | 
					 * Disable send_diagnostic() for 1236s
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,9 +4,9 @@
 | 
				
			||||||
   Emmanuel Blot, Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
 | 
					   Emmanuel Blot, Mikko Tyolajarvi, David Mosberger-Tang, Wolfgang Goeller,
 | 
				
			||||||
   Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Mikael Magnusson,
 | 
					   Petter Reinholdtsen, Gary Plewa, Sebastien Sable, Mikael Magnusson,
 | 
				
			||||||
   Oliver Schwartz and Kevin Charter
 | 
					   Oliver Schwartz and Kevin Charter
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
   This file is part of the SANE package.
 | 
					   This file is part of the SANE package.
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
   This program is free software; you can redistribute it and/or
 | 
					   This program is free software; you can redistribute it and/or
 | 
				
			||||||
   modify it under the terms of the GNU General Public License as
 | 
					   modify it under the terms of the GNU General Public License as
 | 
				
			||||||
   published by the Free Software Foundation; either version 2 of the
 | 
					   published by the Free Software Foundation; either version 2 of the
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@
 | 
				
			||||||
   along with this program; if not, write to the Free Software
 | 
					   along with this program; if not, write to the Free Software
 | 
				
			||||||
   Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 | 
					   Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 | 
				
			||||||
   MA 02111-1307, USA.
 | 
					   MA 02111-1307, USA.
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
   As a special exception, the authors of SANE give permission for
 | 
					   As a special exception, the authors of SANE give permission for
 | 
				
			||||||
   additional uses of the libraries contained in this release of SANE.
 | 
					   additional uses of the libraries contained in this release of SANE.
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
| 
						 | 
					@ -34,11 +34,11 @@
 | 
				
			||||||
   This exception does not, however, invalidate any other reasons why
 | 
					   This exception does not, however, invalidate any other reasons why
 | 
				
			||||||
   the executable file might be covered by the GNU General Public
 | 
					   the executable file might be covered by the GNU General Public
 | 
				
			||||||
   License.
 | 
					   License.
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
   If you submit changes to SANE to the maintainers to be included in
 | 
					   If you submit changes to SANE to the maintainers to be included in
 | 
				
			||||||
   a subsequent release, you agree by submitting the changes that
 | 
					   a subsequent release, you agree by submitting the changes that
 | 
				
			||||||
   those changes may be distributed with this exception intact.
 | 
					   those changes may be distributed with this exception intact.
 | 
				
			||||||
 
 | 
					
 | 
				
			||||||
   If you write modifications of your own for SANE, it is your choice
 | 
					   If you write modifications of your own for SANE, it is your choice
 | 
				
			||||||
   whether to permit this exception to apply to your modifications.
 | 
					   whether to permit this exception to apply to your modifications.
 | 
				
			||||||
   If you do not wish that, delete this exception notice.
 | 
					   If you do not wish that, delete this exception notice.
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define EXPECTED_MAJOR       1
 | 
					#define EXPECTED_MAJOR       1
 | 
				
			||||||
#define MINOR_VERSION        4
 | 
					#define MINOR_VERSION        4
 | 
				
			||||||
#define BUILD                9
 | 
					#define BUILD               11
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "snapscan.h"
 | 
					#include "snapscan.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,13 +98,13 @@
 | 
				
			||||||
#include "../include/sane/sanei_config.h"
 | 
					#include "../include/sane/sanei_config.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* debug levels */
 | 
					/* debug levels */
 | 
				
			||||||
#define DL_INFO        1
 | 
					#define DL_INFO        10
 | 
				
			||||||
#define DL_MINOR_INFO  2
 | 
					#define DL_MINOR_INFO  15
 | 
				
			||||||
#define DL_MAJOR_ERROR 1
 | 
					#define DL_MAJOR_ERROR 1
 | 
				
			||||||
#define DL_MINOR_ERROR 2
 | 
					#define DL_MINOR_ERROR 2
 | 
				
			||||||
#define DL_DATA_TRACE  5
 | 
					#define DL_DATA_TRACE  50
 | 
				
			||||||
#define DL_CALL_TRACE  10
 | 
					#define DL_CALL_TRACE  30
 | 
				
			||||||
#define DL_VERBOSE     30
 | 
					#define DL_VERBOSE     20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define CHECK_STATUS(s,caller,cmd) \
 | 
					#define CHECK_STATUS(s,caller,cmd) \
 | 
				
			||||||
if ((s) != SANE_STATUS_GOOD) { DBG(DL_MAJOR_ERROR, "%s: %s command failed: %s\n", caller, (cmd), sane_strstatus(s)); return s; }
 | 
					if ((s) != SANE_STATUS_GOOD) { DBG(DL_MAJOR_ERROR, "%s: %s command failed: %s\n", caller, (cmd), sane_strstatus(s)); return s; }
 | 
				
			||||||
| 
						 | 
					@ -149,66 +149,6 @@ if ((s) != SANE_STATUS_GOOD) { DBG(DL_MAJOR_ERROR, "%s: %s command failed: %s\n"
 | 
				
			||||||
static SANE_Int def_rgb_lpr = 4;
 | 
					static SANE_Int def_rgb_lpr = 4;
 | 
				
			||||||
static SANE_Int def_gs_lpr = 12;
 | 
					static SANE_Int def_gs_lpr = 12;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* ranges */
 | 
					 | 
				
			||||||
static const SANE_Range x_range_fb =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (216.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static const SANE_Range y_range_fb =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (297.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static const SANE_Range x_range_tpo_default =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (129.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static const SANE_Range y_range_tpo_default =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (180.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static const SANE_Range x_range_tpo_1236 =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (203.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static const SANE_Range y_range_tpo_1236 =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (254.0), 0
 | 
					 | 
				
			||||||
};        /* mm */
 | 
					 | 
				
			||||||
static SANE_Range x_range_tpo;
 | 
					 | 
				
			||||||
static SANE_Range y_range_tpo;
 | 
					 | 
				
			||||||
static const SANE_Range gamma_range =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SANE_FIX (0.0), SANE_FIX (4.0), 0
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
static const SANE_Range gamma_vrange =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    0, 255, 1
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
static const SANE_Range lpr_range =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    1, 50, 1
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const SANE_Range brightness_range =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    -400 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    400 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    1 << SANE_FIXED_SCALE_SHIFT
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const SANE_Range contrast_range =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    -100 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    400 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    1 << SANE_FIXED_SCALE_SHIFT
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const SANE_Range positive_percent_range =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    0 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    100 << SANE_FIXED_SCALE_SHIFT,
 | 
					 | 
				
			||||||
    1 << SANE_FIXED_SCALE_SHIFT
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* predefined preview mode name */
 | 
					/* predefined preview mode name */
 | 
				
			||||||
static char md_auto[] = "Auto";
 | 
					static char md_auto[] = "Auto";
 | 
				
			||||||
| 
						 | 
					@ -812,16 +752,19 @@ SANE_Status sane_init (SANE_Int *version_code,
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if (strncasecmp(dev_name, OPTIONS_KW, strlen(OPTIONS_KW)) == 0)
 | 
					            else if (strncasecmp(dev_name, OPTIONS_KW, strlen(OPTIONS_KW)) == 0)
 | 
				
			||||||
                continue;                   /* ignore options lines */
 | 
					                continue;                   /* ignore options lines */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (strncmp(dev_name, "usb", 3) == 0) {
 | 
					            else if (strncmp(dev_name, "usb", 3) == 0) {
 | 
				
			||||||
                sanei_usb_attach_matching_devices (dev_name, add_usb_device);
 | 
					                sanei_usb_attach_matching_devices (dev_name, add_usb_device);
 | 
				
			||||||
            } else if (strncmp(dev_name, "scsi", 4) == 0) {
 | 
					            } 
 | 
				
			||||||
 | 
					            else if (strncmp(dev_name, "scsi", 4) == 0) {
 | 
				
			||||||
                sanei_config_attach_matching_devices (dev_name, add_scsi_device);
 | 
					                sanei_config_attach_matching_devices (dev_name, add_scsi_device);
 | 
				
			||||||
            } else if (strstr (dev_name, "usb")) {
 | 
					            } 
 | 
				
			||||||
 | 
					            else if (strstr (dev_name, "usb")) {
 | 
				
			||||||
                add_usb_device(dev_name);
 | 
					                add_usb_device(dev_name);
 | 
				
			||||||
            } else {
 | 
					            } 
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
                add_scsi_device(dev_name);
 | 
					                add_scsi_device(dev_name);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -1814,8 +1757,11 @@ SANE_Status sane_get_select_fd (SANE_Handle h, SANE_Int * fd)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Log$
 | 
					 * $Log$
 | 
				
			||||||
 * Revision 1.20  2002/03/24 16:42:04  oliverschwartz
 | 
					 * Revision 1.21  2002/04/23 22:37:53  oliverschwartz
 | 
				
			||||||
 * Fix segfault in snapscan.c
 | 
					 * SnapScan backend version 1.4.11
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Revision 1.42  2002/04/10 21:00:09  oliverschwartz
 | 
				
			||||||
 | 
					 * Check for NULL pointer before deleting device list
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Revision 1.41  2002/03/24 12:12:36  oliverschwartz
 | 
					 * Revision 1.41  2002/03/24 12:12:36  oliverschwartz
 | 
				
			||||||
 * - Moved option functions to snapscan-options.c
 | 
					 * - Moved option functions to snapscan-options.c
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ typedef enum
 | 
				
			||||||
    PRISA620S,          /* Acer ScanPrisa 620 - 600 DPI */
 | 
					    PRISA620S,          /* Acer ScanPrisa 620 - 600 DPI */
 | 
				
			||||||
    PRISA640,           /* Acer ScanPrisa 640 - 600 DPI */
 | 
					    PRISA640,           /* Acer ScanPrisa 640 - 600 DPI */
 | 
				
			||||||
    PRISA4300,          /* Acer ScanPrisa 3300/4300 - 600 DPI */
 | 
					    PRISA4300,          /* Acer ScanPrisa 3300/4300 - 600 DPI */
 | 
				
			||||||
    PRISA4300_2,        /* Acer ScanPrisa 3300/4300 - 600 DPI */
 | 
					    PRISA4300_2,        /* Acer ScanPrisa 3300/4300 - 600 DPI, 42 bit*/
 | 
				
			||||||
    PRISA1240,          /* Acer ScanPrisa 1240 - 1200 DPI */
 | 
					    PRISA1240,          /* Acer ScanPrisa 1240 - 1200 DPI */
 | 
				
			||||||
    PRISA5300           /* Acer ScanPrisa 5300 - 1200 DPI */
 | 
					    PRISA5300           /* Acer ScanPrisa 5300 - 1200 DPI */
 | 
				
			||||||
} SnapScan_Model;
 | 
					} SnapScan_Model;
 | 
				
			||||||
| 
						 | 
					@ -120,7 +120,7 @@ static struct SnapScan_Driver_desc drivers[] =
 | 
				
			||||||
    {PRISA620S,      "Acer620"},
 | 
					    {PRISA620S,      "Acer620"},
 | 
				
			||||||
    {PRISA640,       "Acer640"},
 | 
					    {PRISA640,       "Acer640"},
 | 
				
			||||||
    {PRISA4300,      "Acer4300"},
 | 
					    {PRISA4300,      "Acer4300"},
 | 
				
			||||||
    {PRISA4300_2,    "Acer4300-2"},
 | 
					    {PRISA4300,      "Acer4300 (42 bit)"},
 | 
				
			||||||
    {PRISA1240,      "Acer1240"},
 | 
					    {PRISA1240,      "Acer1240"},
 | 
				
			||||||
    {PRISA5300,      "Acer5300"}
 | 
					    {PRISA5300,      "Acer5300"}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					@ -202,46 +202,46 @@ static struct SnapScan_USB_Model_desc usb_scanners[] =
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum
 | 
					typedef enum
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    OPT_COUNT = 0,        /* option count */
 | 
					    OPT_COUNT = 0,         /* option count */
 | 
				
			||||||
    OPT_MODE_GROUP,        /* scan mode group */
 | 
					    OPT_MODE_GROUP,        /* scan mode group */
 | 
				
			||||||
    OPT_SCANRES,        /* scan resolution */
 | 
					    OPT_SCANRES,           /* scan resolution */
 | 
				
			||||||
    OPT_PREVIEW,        /* preview mode toggle */
 | 
					    OPT_PREVIEW,           /* preview mode toggle */
 | 
				
			||||||
    OPT_MODE,            /* scan mode */
 | 
					    OPT_MODE,              /* scan mode */
 | 
				
			||||||
    OPT_PREVIEW_MODE,    /* preview mode */
 | 
					    OPT_PREVIEW_MODE,      /* preview mode */
 | 
				
			||||||
    OPT_SOURCE,            /* scan source (flatbed / TPO) */
 | 
					    OPT_SOURCE,            /* scan source (flatbed / TPO) */
 | 
				
			||||||
    OPT_GEOMETRY_GROUP,    /* geometry group */
 | 
					    OPT_GEOMETRY_GROUP,    /* geometry group */
 | 
				
			||||||
    OPT_TLX,            /* top left x */
 | 
					    OPT_TLX,               /* top left x */
 | 
				
			||||||
    OPT_TLY,            /* top left y */
 | 
					    OPT_TLY,               /* top left y */
 | 
				
			||||||
    OPT_BRX,            /* bottom right x */
 | 
					    OPT_BRX,               /* bottom right x */
 | 
				
			||||||
    OPT_BRY,            /* bottom right y */
 | 
					    OPT_BRY,               /* bottom right y */
 | 
				
			||||||
    OPT_PREDEF_WINDOW,    /* predefined window configuration */
 | 
					    OPT_PREDEF_WINDOW,     /* predefined window configuration */
 | 
				
			||||||
    OPT_ENHANCEMENT_GROUP,    /* enhancement group */
 | 
					    OPT_ENHANCEMENT_GROUP, /* enhancement group */
 | 
				
			||||||
    OPT_QUALITY_CAL,    /* quality calibration */
 | 
					    OPT_QUALITY_CAL,       /* quality calibration */
 | 
				
			||||||
    OPT_HALFTONE,        /* halftone flag */
 | 
					    OPT_HALFTONE,          /* halftone flag */
 | 
				
			||||||
    OPT_HALFTONE_PATTERN,    /* halftone matrix */
 | 
					    OPT_HALFTONE_PATTERN,  /* halftone matrix */
 | 
				
			||||||
    OPT_CUSTOM_GAMMA,    /* use custom gamma tables */
 | 
					    OPT_CUSTOM_GAMMA,      /* use custom gamma tables */
 | 
				
			||||||
    OPT_GAMMA_BIND,
 | 
					    OPT_GAMMA_BIND,        /* use same gamma value for all colors */
 | 
				
			||||||
    OPT_GAMMA_GS,        /* gamma correction (greyscale) */
 | 
					    OPT_GAMMA_GS,          /* gamma correction (greyscale) */
 | 
				
			||||||
    OPT_GAMMA_R,        /* gamma correction (red) */
 | 
					    OPT_GAMMA_R,           /* gamma correction (red) */
 | 
				
			||||||
    OPT_GAMMA_G,        /* gamma correction (green) */
 | 
					    OPT_GAMMA_G,           /* gamma correction (green) */
 | 
				
			||||||
    OPT_GAMMA_B,        /* gamma correction (blue) */
 | 
					    OPT_GAMMA_B,           /* gamma correction (blue) */
 | 
				
			||||||
    OPT_GAMMA_VECTOR_GS,    /* gamma correction vector (greyscale) */
 | 
					    OPT_GAMMA_VECTOR_GS,   /* gamma correction vector (greyscale) */
 | 
				
			||||||
    OPT_GAMMA_VECTOR_R,    /* gamma correction vector (red) */
 | 
					    OPT_GAMMA_VECTOR_R,    /* gamma correction vector (red) */
 | 
				
			||||||
    OPT_GAMMA_VECTOR_G,    /* gamma correction vector (green) */
 | 
					    OPT_GAMMA_VECTOR_G,    /* gamma correction vector (green) */
 | 
				
			||||||
    OPT_GAMMA_VECTOR_B,    /* gamma correction vector (blue) */
 | 
					    OPT_GAMMA_VECTOR_B,    /* gamma correction vector (blue) */
 | 
				
			||||||
    OPT_NEGATIVE,        /* swap black and white */
 | 
					    OPT_NEGATIVE,          /* swap black and white */
 | 
				
			||||||
    OPT_THRESHOLD,        /* threshold for line art */
 | 
					    OPT_THRESHOLD,         /* threshold for line art */
 | 
				
			||||||
    OPT_BRIGHTNESS,        /* brightness */
 | 
					    OPT_BRIGHTNESS,        /* brightness */
 | 
				
			||||||
    OPT_CONTRAST,        /* contrast */
 | 
					    OPT_CONTRAST,          /* contrast */
 | 
				
			||||||
    OPT_ADVANCED_GROUP,    /* advanced group */
 | 
					    OPT_ADVANCED_GROUP,    /* advanced group */
 | 
				
			||||||
    OPT_RGB_LPR,        /* lines per scsi read (RGB) */
 | 
					    OPT_RGB_LPR,           /* lines per scsi read (RGB) */
 | 
				
			||||||
    OPT_GS_LPR,            /* lines per scsi read (GS) */
 | 
					    OPT_GS_LPR,            /* lines per scsi read (GS) */
 | 
				
			||||||
    OPT_SCSI_CMDS,        /* a group */
 | 
					    OPT_SCSI_CMDS,         /* a group */
 | 
				
			||||||
    OPT_INQUIRY,        /* inquiry command (button) */
 | 
					    OPT_INQUIRY,           /* inquiry command (button) */
 | 
				
			||||||
    OPT_SELF_TEST,        /* self test command (button) */
 | 
					    OPT_SELF_TEST,         /* self test command (button) */
 | 
				
			||||||
    OPT_REQ_SENSE,        /* request sense command (button) */
 | 
					    OPT_REQ_SENSE,         /* request sense command (button) */
 | 
				
			||||||
    OPT_REL_UNIT,        /* release unit command (button) */
 | 
					    OPT_REL_UNIT,          /* release unit command (button) */
 | 
				
			||||||
    NUM_OPTS            /* dummy (gives number of options) */
 | 
					    NUM_OPTS               /* dummy (gives number of options) */
 | 
				
			||||||
} SnapScan_Options;
 | 
					} SnapScan_Options;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef union
 | 
					typedef union
 | 
				
			||||||
| 
						 | 
					@ -255,17 +255,18 @@ Option_Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum
 | 
					typedef enum
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    MD_COLOUR = 0,        /* full colour */
 | 
					    MD_COLOUR = 0,       /* full colour */
 | 
				
			||||||
    MD_BILEVELCOLOUR,    /* 1-bit per channel colour */
 | 
					    MD_BILEVELCOLOUR,    /* 1-bit per channel colour */
 | 
				
			||||||
    MD_GREYSCALE,        /* grey scale */
 | 
					    MD_GREYSCALE,        /* grey scale */
 | 
				
			||||||
    MD_LINEART,            /* black and white */
 | 
					    MD_LINEART,          /* black and white */
 | 
				
			||||||
    MD_NUM_MODES
 | 
					    MD_NUM_MODES
 | 
				
			||||||
} SnapScan_Mode;
 | 
					} SnapScan_Mode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum
 | 
					typedef enum
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    SRC_FLATBED = 0,    /* Flatbed (normal) */
 | 
					    SRC_FLATBED = 0,    /* Flatbed (normal) */
 | 
				
			||||||
    SRC_TPO                /* Transparency unit */
 | 
					    SRC_TPO,            /* Transparency unit */
 | 
				
			||||||
 | 
					    SRC_ADF
 | 
				
			||||||
} SnapScan_Source;
 | 
					} SnapScan_Source;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef enum
 | 
					typedef enum
 | 
				
			||||||
| 
						 | 
					@ -366,8 +367,8 @@ struct snapscan_scanner
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * $Log$
 | 
					 * $Log$
 | 
				
			||||||
 * Revision 1.13  2002/03/24 12:32:38  oliverschwartz
 | 
					 * Revision 1.14  2002/04/23 22:37:54  oliverschwartz
 | 
				
			||||||
 * Snapscan backend version 1.4.9
 | 
					 * SnapScan backend version 1.4.11
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Revision 1.29  2002/03/24 12:14:34  oliverschwartz
 | 
					 * Revision 1.29  2002/03/24 12:14:34  oliverschwartz
 | 
				
			||||||
 * Add Snapcan_Driver_desc
 | 
					 * Add Snapcan_Driver_desc
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Ładowanie…
	
		Reference in New Issue