Lines Matching full:dev
389 get_optval_list (const PKV_DEV dev, int idx, in get_optval_list() argument
394 index = get_string_list_index (str_list, dev->val[idx].s); in get_optval_list()
405 kv_get_mode (const PKV_DEV dev) in kv_get_mode() argument
409 i = get_string_list_index (go_scan_mode_list, dev->val[OPT_MODE].s); in kv_get_mode()
428 kv_calc_paper_size (const PKV_DEV dev, int *w, int *h) in kv_calc_paper_size() argument
431 dev->val[OPT_PAPER_SIZE].s); in kv_calc_paper_size()
434 int x_tl = mmToIlu (SANE_UNFIX (dev->val[OPT_TL_X].w)); in kv_calc_paper_size()
435 int y_tl = mmToIlu (SANE_UNFIX (dev->val[OPT_TL_Y].w)); in kv_calc_paper_size()
436 int x_br = mmToIlu (SANE_UNFIX (dev->val[OPT_BR_X].w)); in kv_calc_paper_size()
437 int y_br = mmToIlu (SANE_UNFIX (dev->val[OPT_BR_Y].w)); in kv_calc_paper_size()
443 if (dev->val[OPT_LANDSCAPE].s) in kv_calc_paper_size()
476 kv_get_option_descriptor (PKV_DEV dev, SANE_Int option) in kv_get_option_descriptor() argument
488 return dev->opt + option; in kv_get_option_descriptor()
493 kv_init_options (PKV_DEV dev) in kv_init_options() argument
497 if (dev->option_set) in kv_init_options()
503 memset (dev->opt, 0, sizeof (dev->opt)); in kv_init_options()
504 memset (dev->val, 0, sizeof (dev->val)); in kv_init_options()
508 dev->opt[i].size = sizeof (SANE_Word); in kv_init_options()
509 dev->opt[i].cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT; in kv_init_options()
513 dev->opt[OPT_NUM_OPTS].name = ""; in kv_init_options()
514 dev->opt[OPT_NUM_OPTS].title = SANE_TITLE_NUM_OPTIONS; in kv_init_options()
515 dev->opt[OPT_NUM_OPTS].desc = SANE_DESC_NUM_OPTIONS; in kv_init_options()
516 dev->opt[OPT_NUM_OPTS].type = SANE_TYPE_INT; in kv_init_options()
517 dev->opt[OPT_NUM_OPTS].cap = SANE_CAP_SOFT_DETECT; in kv_init_options()
518 dev->val[OPT_NUM_OPTS].w = OPT_NUM_OPTIONS; in kv_init_options()
521 dev->opt[OPT_MODE_GROUP].title = SANE_I18N ("Scan Mode"); in kv_init_options()
522 dev->opt[OPT_MODE_GROUP].desc = ""; /* not valid for a group */ in kv_init_options()
523 dev->opt[OPT_MODE_GROUP].type = SANE_TYPE_GROUP; in kv_init_options()
524 dev->opt[OPT_MODE_GROUP].cap = 0; in kv_init_options()
525 dev->opt[OPT_MODE_GROUP].size = 0; in kv_init_options()
526 dev->opt[OPT_MODE_GROUP].constraint_type = SANE_CONSTRAINT_NONE; in kv_init_options()
529 dev->opt[OPT_MODE].name = SANE_NAME_SCAN_MODE; in kv_init_options()
530 dev->opt[OPT_MODE].title = SANE_TITLE_SCAN_MODE; in kv_init_options()
531 dev->opt[OPT_MODE].desc = SANE_DESC_SCAN_MODE; in kv_init_options()
532 dev->opt[OPT_MODE].type = SANE_TYPE_STRING; in kv_init_options()
533 dev->opt[OPT_MODE].size = max_string_size (go_scan_mode_list); in kv_init_options()
534 dev->opt[OPT_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
535 dev->opt[OPT_MODE].constraint.string_list = go_scan_mode_list; in kv_init_options()
536 dev->val[OPT_MODE].s = strdup (""); /* will be set later */ in kv_init_options()
539 dev->opt[OPT_RESOLUTION].name = SANE_NAME_SCAN_RESOLUTION; in kv_init_options()
540 dev->opt[OPT_RESOLUTION].title = SANE_TITLE_SCAN_RESOLUTION; in kv_init_options()
541 dev->opt[OPT_RESOLUTION].desc = SANE_DESC_SCAN_RESOLUTION; in kv_init_options()
542 dev->opt[OPT_RESOLUTION].type = SANE_TYPE_INT; in kv_init_options()
543 dev->opt[OPT_RESOLUTION].unit = SANE_UNIT_DPI; in kv_init_options()
544 dev->opt[OPT_RESOLUTION].constraint_type = SANE_CONSTRAINT_WORD_LIST; in kv_init_options()
545 dev->opt[OPT_RESOLUTION].constraint.word_list = go_resolutions_list; in kv_init_options()
546 dev->val[OPT_RESOLUTION].w = go_resolutions_list[3]; in kv_init_options()
549 dev->opt[OPT_DUPLEX].name = SANE_NAME_DUPLEX; in kv_init_options()
550 dev->opt[OPT_DUPLEX].title = SANE_TITLE_DUPLEX; in kv_init_options()
551 dev->opt[OPT_DUPLEX].desc = SANE_DESC_DUPLEX; in kv_init_options()
552 dev->opt[OPT_DUPLEX].type = SANE_TYPE_BOOL; in kv_init_options()
553 dev->opt[OPT_DUPLEX].unit = SANE_UNIT_NONE; in kv_init_options()
554 dev->val[OPT_DUPLEX].w = SANE_FALSE; in kv_init_options()
555 if (!dev->support_info.support_duplex) in kv_init_options()
556 dev->opt[OPT_DUPLEX].cap |= SANE_CAP_INACTIVE; in kv_init_options()
559 dev->opt[OPT_SCAN_SOURCE].name = SANE_NAME_SCAN_SOURCE; in kv_init_options()
560 dev->opt[OPT_SCAN_SOURCE].title = SANE_TITLE_SCAN_SOURCE; in kv_init_options()
561 dev->opt[OPT_SCAN_SOURCE].desc = SANE_I18N ("Sets the scan source"); in kv_init_options()
562 dev->opt[OPT_SCAN_SOURCE].type = SANE_TYPE_STRING; in kv_init_options()
563 dev->opt[OPT_SCAN_SOURCE].size = max_string_size (go_scan_source_list); in kv_init_options()
564 dev->opt[OPT_SCAN_SOURCE].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
565 dev->opt[OPT_SCAN_SOURCE].constraint.string_list = go_scan_source_list; in kv_init_options()
566 dev->val[OPT_SCAN_SOURCE].s = strdup (go_scan_source_list[0]); in kv_init_options()
567 dev->opt[OPT_SCAN_SOURCE].cap &= ~SANE_CAP_SOFT_SELECT; in kv_init_options()
571 dev->opt[OPT_FEEDER_MODE].name = "feeder-mode"; in kv_init_options()
572 dev->opt[OPT_FEEDER_MODE].title = SANE_I18N ("Feeder mode"); in kv_init_options()
573 dev->opt[OPT_FEEDER_MODE].desc = SANE_I18N ("Sets the feeding mode"); in kv_init_options()
574 dev->opt[OPT_FEEDER_MODE].type = SANE_TYPE_STRING; in kv_init_options()
575 dev->opt[OPT_FEEDER_MODE].size = max_string_size (go_feeder_mode_list); in kv_init_options()
576 dev->opt[OPT_FEEDER_MODE].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
577 dev->opt[OPT_FEEDER_MODE].constraint.string_list = go_feeder_mode_list; in kv_init_options()
578 dev->val[OPT_FEEDER_MODE].s = strdup (go_feeder_mode_list[1]); in kv_init_options()
581 dev->opt[OPT_LONGPAPER].name = SANE_NAME_LONGPAPER; in kv_init_options()
582 dev->opt[OPT_LONGPAPER].title = SANE_TITLE_LONGPAPER; in kv_init_options()
583 dev->opt[OPT_LONGPAPER].desc = SANE_I18N ("Enable/Disable long paper mode"); in kv_init_options()
584 dev->opt[OPT_LONGPAPER].type = SANE_TYPE_BOOL; in kv_init_options()
585 dev->opt[OPT_LONGPAPER].unit = SANE_UNIT_NONE; in kv_init_options()
586 dev->val[OPT_LONGPAPER].w = SANE_FALSE; in kv_init_options()
589 dev->opt[OPT_LENGTHCTL].name = SANE_NAME_LENGTHCTL; in kv_init_options()
590 dev->opt[OPT_LENGTHCTL].title = SANE_TITLE_LENGTHCTL; in kv_init_options()
591 dev->opt[OPT_LENGTHCTL].desc = in kv_init_options()
593 dev->opt[OPT_LENGTHCTL].type = SANE_TYPE_BOOL; in kv_init_options()
594 dev->opt[OPT_LENGTHCTL].unit = SANE_UNIT_NONE; in kv_init_options()
595 dev->val[OPT_LENGTHCTL].w = SANE_TRUE; in kv_init_options()
598 dev->opt[OPT_MANUALFEED].name = SANE_NAME_MANUALFEED; in kv_init_options()
599 dev->opt[OPT_MANUALFEED].title = SANE_TITLE_MANUALFEED; in kv_init_options()
600 dev->opt[OPT_MANUALFEED].desc = SANE_I18N ("Sets the manual feed mode"); in kv_init_options()
601 dev->opt[OPT_MANUALFEED].type = SANE_TYPE_STRING; in kv_init_options()
602 dev->opt[OPT_MANUALFEED].size = max_string_size (go_manual_feed_list); in kv_init_options()
603 dev->opt[OPT_MANUALFEED].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
604 dev->opt[OPT_MANUALFEED].constraint.string_list = go_manual_feed_list; in kv_init_options()
605 dev->val[OPT_MANUALFEED].s = strdup (go_manual_feed_list[0]); in kv_init_options()
608 dev->opt[OPT_FEED_TIMEOUT].name = SANE_NAME_FEED_TIMEOUT; in kv_init_options()
609 dev->opt[OPT_FEED_TIMEOUT].title = SANE_TITLE_FEED_TIMEOUT; in kv_init_options()
610 dev->opt[OPT_FEED_TIMEOUT].desc = in kv_init_options()
612 dev->opt[OPT_FEED_TIMEOUT].type = SANE_TYPE_INT; in kv_init_options()
613 dev->opt[OPT_FEED_TIMEOUT].unit = SANE_UNIT_NONE; in kv_init_options()
614 dev->opt[OPT_FEED_TIMEOUT].size = sizeof (SANE_Int); in kv_init_options()
615 dev->opt[OPT_FEED_TIMEOUT].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
616 dev->opt[OPT_FEED_TIMEOUT].constraint.range = &(go_value_range); in kv_init_options()
617 dev->opt[OPT_FEED_TIMEOUT].cap |= SANE_CAP_INACTIVE; in kv_init_options()
618 dev->val[OPT_FEED_TIMEOUT].w = 30; in kv_init_options()
621 dev->opt[OPT_DBLFEED].name = SANE_NAME_DBLFEED; in kv_init_options()
622 dev->opt[OPT_DBLFEED].title = SANE_TITLE_DBLFEED; in kv_init_options()
623 dev->opt[OPT_DBLFEED].desc = in kv_init_options()
625 dev->opt[OPT_DBLFEED].type = SANE_TYPE_BOOL; in kv_init_options()
626 dev->opt[OPT_DBLFEED].unit = SANE_UNIT_NONE; in kv_init_options()
627 dev->val[OPT_DBLFEED].w = SANE_FALSE; in kv_init_options()
630 dev->opt[OPT_FIT_TO_PAGE].name = SANE_I18N ("fit-to-page"); in kv_init_options()
631 dev->opt[OPT_FIT_TO_PAGE].title = SANE_I18N ("Fit to page"); in kv_init_options()
632 dev->opt[OPT_FIT_TO_PAGE].desc = in kv_init_options()
634 dev->opt[OPT_FIT_TO_PAGE].type = SANE_TYPE_BOOL; in kv_init_options()
635 dev->opt[OPT_FIT_TO_PAGE].unit = SANE_UNIT_NONE; in kv_init_options()
636 dev->val[OPT_FIT_TO_PAGE].w = SANE_FALSE; in kv_init_options()
639 dev->opt[OPT_GEOMETRY_GROUP].title = SANE_I18N ("Geometry"); in kv_init_options()
640 dev->opt[OPT_GEOMETRY_GROUP].desc = ""; /* not valid for a group */ in kv_init_options()
641 dev->opt[OPT_GEOMETRY_GROUP].type = SANE_TYPE_GROUP; in kv_init_options()
642 dev->opt[OPT_GEOMETRY_GROUP].cap = 0; in kv_init_options()
643 dev->opt[OPT_GEOMETRY_GROUP].size = 0; in kv_init_options()
644 dev->opt[OPT_GEOMETRY_GROUP].constraint_type = SANE_CONSTRAINT_NONE; in kv_init_options()
647 dev->opt[OPT_PAPER_SIZE].name = SANE_NAME_PAPER_SIZE; in kv_init_options()
648 dev->opt[OPT_PAPER_SIZE].title = SANE_TITLE_PAPER_SIZE; in kv_init_options()
649 dev->opt[OPT_PAPER_SIZE].desc = SANE_DESC_PAPER_SIZE; in kv_init_options()
650 dev->opt[OPT_PAPER_SIZE].type = SANE_TYPE_STRING; in kv_init_options()
651 dev->opt[OPT_PAPER_SIZE].size = max_string_size (go_paper_list); in kv_init_options()
652 dev->opt[OPT_PAPER_SIZE].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
653 dev->opt[OPT_PAPER_SIZE].constraint.string_list = go_paper_list; in kv_init_options()
654 dev->val[OPT_PAPER_SIZE].s = strdup (""); /* will be set later */ in kv_init_options()
657 dev->opt[OPT_LANDSCAPE].name = SANE_NAME_LANDSCAPE; in kv_init_options()
658 dev->opt[OPT_LANDSCAPE].title = SANE_TITLE_LANDSCAPE; in kv_init_options()
659 dev->opt[OPT_LANDSCAPE].desc = in kv_init_options()
662 dev->opt[OPT_LANDSCAPE].type = SANE_TYPE_BOOL; in kv_init_options()
663 dev->opt[OPT_LANDSCAPE].unit = SANE_UNIT_NONE; in kv_init_options()
664 dev->val[OPT_LANDSCAPE].w = SANE_FALSE; in kv_init_options()
667 dev->opt[OPT_TL_X].name = SANE_NAME_SCAN_TL_X; in kv_init_options()
668 dev->opt[OPT_TL_X].title = SANE_TITLE_SCAN_TL_X; in kv_init_options()
669 dev->opt[OPT_TL_X].desc = SANE_DESC_SCAN_TL_X; in kv_init_options()
670 dev->opt[OPT_TL_X].type = SANE_TYPE_FIXED; in kv_init_options()
671 dev->opt[OPT_TL_X].unit = SANE_UNIT_MM; in kv_init_options()
672 dev->opt[OPT_TL_X].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
673 dev->opt[OPT_TL_X].constraint.range = &(dev->x_range); in kv_init_options()
676 dev->opt[OPT_TL_Y].name = SANE_NAME_SCAN_TL_Y; in kv_init_options()
677 dev->opt[OPT_TL_Y].title = SANE_TITLE_SCAN_TL_Y; in kv_init_options()
678 dev->opt[OPT_TL_Y].desc = SANE_DESC_SCAN_TL_Y; in kv_init_options()
679 dev->opt[OPT_TL_Y].type = SANE_TYPE_FIXED; in kv_init_options()
680 dev->opt[OPT_TL_Y].unit = SANE_UNIT_MM; in kv_init_options()
681 dev->opt[OPT_TL_Y].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
682 dev->opt[OPT_TL_Y].constraint.range = &(dev->y_range); in kv_init_options()
685 dev->opt[OPT_BR_X].name = SANE_NAME_SCAN_BR_X; in kv_init_options()
686 dev->opt[OPT_BR_X].title = SANE_TITLE_SCAN_BR_X; in kv_init_options()
687 dev->opt[OPT_BR_X].desc = SANE_DESC_SCAN_BR_X; in kv_init_options()
688 dev->opt[OPT_BR_X].type = SANE_TYPE_FIXED; in kv_init_options()
689 dev->opt[OPT_BR_X].unit = SANE_UNIT_MM; in kv_init_options()
690 dev->opt[OPT_BR_X].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
691 dev->opt[OPT_BR_X].constraint.range = &(dev->x_range); in kv_init_options()
694 dev->opt[OPT_BR_Y].name = SANE_NAME_SCAN_BR_Y; in kv_init_options()
695 dev->opt[OPT_BR_Y].title = SANE_TITLE_SCAN_BR_Y; in kv_init_options()
696 dev->opt[OPT_BR_Y].desc = SANE_DESC_SCAN_BR_Y; in kv_init_options()
697 dev->opt[OPT_BR_Y].type = SANE_TYPE_FIXED; in kv_init_options()
698 dev->opt[OPT_BR_Y].unit = SANE_UNIT_MM; in kv_init_options()
699 dev->opt[OPT_BR_Y].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
700 dev->opt[OPT_BR_Y].constraint.range = &(dev->y_range); in kv_init_options()
703 dev->opt[OPT_ENHANCEMENT_GROUP].title = SANE_I18N ("Enhancement"); in kv_init_options()
704 dev->opt[OPT_ENHANCEMENT_GROUP].desc = ""; /* not valid for a group */ in kv_init_options()
705 dev->opt[OPT_ENHANCEMENT_GROUP].type = SANE_TYPE_GROUP; in kv_init_options()
706 dev->opt[OPT_ENHANCEMENT_GROUP].cap = SANE_CAP_ADVANCED; in kv_init_options()
707 dev->opt[OPT_ENHANCEMENT_GROUP].size = 0; in kv_init_options()
708 dev->opt[OPT_ENHANCEMENT_GROUP].constraint_type = SANE_CONSTRAINT_NONE; in kv_init_options()
711 dev->opt[OPT_BRIGHTNESS].name = SANE_NAME_BRIGHTNESS; in kv_init_options()
712 dev->opt[OPT_BRIGHTNESS].title = SANE_TITLE_BRIGHTNESS; in kv_init_options()
713 dev->opt[OPT_BRIGHTNESS].desc = SANE_DESC_BRIGHTNESS; in kv_init_options()
714 dev->opt[OPT_BRIGHTNESS].type = SANE_TYPE_INT; in kv_init_options()
715 dev->opt[OPT_BRIGHTNESS].unit = SANE_UNIT_NONE; in kv_init_options()
716 dev->opt[OPT_BRIGHTNESS].size = sizeof (SANE_Int); in kv_init_options()
717 dev->opt[OPT_BRIGHTNESS].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
718 dev->opt[OPT_BRIGHTNESS].constraint.range = &(go_value_range); in kv_init_options()
719 dev->val[OPT_BRIGHTNESS].w = 128; in kv_init_options()
722 dev->opt[OPT_CONTRAST].name = SANE_NAME_CONTRAST; in kv_init_options()
723 dev->opt[OPT_CONTRAST].title = SANE_TITLE_CONTRAST; in kv_init_options()
724 dev->opt[OPT_CONTRAST].desc = SANE_DESC_CONTRAST; in kv_init_options()
725 dev->opt[OPT_CONTRAST].type = SANE_TYPE_INT; in kv_init_options()
726 dev->opt[OPT_CONTRAST].unit = SANE_UNIT_NONE; in kv_init_options()
727 dev->opt[OPT_CONTRAST].size = sizeof (SANE_Int); in kv_init_options()
728 dev->opt[OPT_CONTRAST].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
729 dev->opt[OPT_CONTRAST].constraint.range = &(go_value_range); in kv_init_options()
730 dev->val[OPT_CONTRAST].w = 128; in kv_init_options()
733 dev->opt[OPT_AUTOMATIC_THRESHOLD].name = "automatic-threshold"; in kv_init_options()
734 dev->opt[OPT_AUTOMATIC_THRESHOLD].title = SANE_I18N ("Automatic threshold"); in kv_init_options()
735 dev->opt[OPT_AUTOMATIC_THRESHOLD].desc = in kv_init_options()
739 dev->opt[OPT_AUTOMATIC_THRESHOLD].type = SANE_TYPE_STRING; in kv_init_options()
740 dev->opt[OPT_AUTOMATIC_THRESHOLD].size = in kv_init_options()
742 dev->opt[OPT_AUTOMATIC_THRESHOLD].constraint_type = in kv_init_options()
744 dev->opt[OPT_AUTOMATIC_THRESHOLD].constraint.string_list = in kv_init_options()
746 dev->val[OPT_AUTOMATIC_THRESHOLD].s = in kv_init_options()
750 dev->opt[OPT_HALFTONE_PATTERN].name = SANE_NAME_HALFTONE_PATTERN; in kv_init_options()
751 dev->opt[OPT_HALFTONE_PATTERN].title = SANE_TITLE_HALFTONE_PATTERN; in kv_init_options()
752 dev->opt[OPT_HALFTONE_PATTERN].desc = SANE_DESC_HALFTONE_PATTERN; in kv_init_options()
753 dev->opt[OPT_HALFTONE_PATTERN].type = SANE_TYPE_STRING; in kv_init_options()
754 dev->opt[OPT_HALFTONE_PATTERN].size = in kv_init_options()
756 dev->opt[OPT_HALFTONE_PATTERN].constraint_type = in kv_init_options()
758 dev->opt[OPT_HALFTONE_PATTERN].constraint.string_list = in kv_init_options()
760 dev->val[OPT_HALFTONE_PATTERN].s = strdup (go_halftone_pattern_list[0]); in kv_init_options()
763 dev->opt[OPT_AUTOMATIC_SEPARATION].name = SANE_NAME_AUTOSEP; in kv_init_options()
764 dev->opt[OPT_AUTOMATIC_SEPARATION].title = SANE_TITLE_AUTOSEP; in kv_init_options()
765 dev->opt[OPT_AUTOMATIC_SEPARATION].desc = SANE_DESC_AUTOSEP; in kv_init_options()
766 dev->opt[OPT_AUTOMATIC_SEPARATION].type = SANE_TYPE_BOOL; in kv_init_options()
767 dev->opt[OPT_AUTOMATIC_SEPARATION].unit = SANE_UNIT_NONE; in kv_init_options()
768 dev->val[OPT_AUTOMATIC_SEPARATION].w = SANE_FALSE; in kv_init_options()
771 dev->opt[OPT_WHITE_LEVEL].name = SANE_NAME_WHITE_LEVEL; in kv_init_options()
772 dev->opt[OPT_WHITE_LEVEL].title = SANE_TITLE_WHITE_LEVEL; in kv_init_options()
773 dev->opt[OPT_WHITE_LEVEL].desc = SANE_DESC_WHITE_LEVEL; in kv_init_options()
774 dev->opt[OPT_WHITE_LEVEL].type = SANE_TYPE_STRING; in kv_init_options()
775 dev->opt[OPT_WHITE_LEVEL].size = max_string_size (go_white_level_list); in kv_init_options()
776 dev->opt[OPT_WHITE_LEVEL].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
777 dev->opt[OPT_WHITE_LEVEL].constraint.string_list = go_white_level_list; in kv_init_options()
778 dev->val[OPT_WHITE_LEVEL].s = strdup (go_white_level_list[0]); in kv_init_options()
781 dev->opt[OPT_NOISE_REDUCTION].name = "noise-reduction"; in kv_init_options()
782 dev->opt[OPT_NOISE_REDUCTION].title = SANE_I18N ("Noise reduction"); in kv_init_options()
783 dev->opt[OPT_NOISE_REDUCTION].desc = in kv_init_options()
785 dev->opt[OPT_NOISE_REDUCTION].type = SANE_TYPE_STRING; in kv_init_options()
786 dev->opt[OPT_NOISE_REDUCTION].size = in kv_init_options()
788 dev->opt[OPT_NOISE_REDUCTION].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
789 dev->opt[OPT_NOISE_REDUCTION].constraint.string_list = in kv_init_options()
791 dev->val[OPT_NOISE_REDUCTION].s = strdup (go_noise_reduction_list[0]); in kv_init_options()
794 dev->opt[OPT_IMAGE_EMPHASIS].name = "image-emphasis"; in kv_init_options()
795 dev->opt[OPT_IMAGE_EMPHASIS].title = SANE_I18N ("Image emphasis"); in kv_init_options()
796 dev->opt[OPT_IMAGE_EMPHASIS].desc = SANE_I18N ("Sets the image emphasis"); in kv_init_options()
797 dev->opt[OPT_IMAGE_EMPHASIS].type = SANE_TYPE_STRING; in kv_init_options()
798 dev->opt[OPT_IMAGE_EMPHASIS].size = in kv_init_options()
800 dev->opt[OPT_IMAGE_EMPHASIS].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
801 dev->opt[OPT_IMAGE_EMPHASIS].constraint.string_list = in kv_init_options()
803 dev->val[OPT_IMAGE_EMPHASIS].s = strdup (SANE_I18N ("medium")); in kv_init_options()
806 dev->opt[OPT_GAMMA].name = "gamma"; in kv_init_options()
807 dev->opt[OPT_GAMMA].title = SANE_I18N ("Gamma"); in kv_init_options()
808 dev->opt[OPT_GAMMA].desc = SANE_I18N ("Gamma"); in kv_init_options()
809 dev->opt[OPT_GAMMA].type = SANE_TYPE_STRING; in kv_init_options()
810 dev->opt[OPT_GAMMA].size = max_string_size (go_gamma_list); in kv_init_options()
811 dev->opt[OPT_GAMMA].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
812 dev->opt[OPT_GAMMA].constraint.string_list = go_gamma_list; in kv_init_options()
813 dev->val[OPT_GAMMA].s = strdup (go_gamma_list[0]); in kv_init_options()
816 dev->opt[OPT_LAMP].name = "lamp-color"; in kv_init_options()
817 dev->opt[OPT_LAMP].title = SANE_I18N ("Lamp color"); in kv_init_options()
818 dev->opt[OPT_LAMP].desc = SANE_I18N ("Sets the lamp color (color dropout)"); in kv_init_options()
819 dev->opt[OPT_LAMP].type = SANE_TYPE_STRING; in kv_init_options()
820 dev->opt[OPT_LAMP].size = max_string_size (go_lamp_list); in kv_init_options()
821 dev->opt[OPT_LAMP].constraint_type = SANE_CONSTRAINT_STRING_LIST; in kv_init_options()
822 dev->opt[OPT_LAMP].constraint.string_list = go_lamp_list; in kv_init_options()
823 dev->val[OPT_LAMP].s = strdup (go_lamp_list[0]); in kv_init_options()
824 if (!dev->support_info.support_lamp) in kv_init_options()
825 dev->opt[OPT_LAMP].cap |= SANE_CAP_INACTIVE; in kv_init_options()
828 dev->opt[OPT_INVERSE].name = SANE_NAME_INVERSE; in kv_init_options()
829 dev->opt[OPT_INVERSE].title = SANE_TITLE_INVERSE; in kv_init_options()
830 dev->opt[OPT_INVERSE].desc = in kv_init_options()
832 dev->opt[OPT_INVERSE].type = SANE_TYPE_BOOL; in kv_init_options()
833 dev->opt[OPT_INVERSE].unit = SANE_UNIT_NONE; in kv_init_options()
834 dev->val[OPT_INVERSE].w = SANE_FALSE; in kv_init_options()
837 dev->opt[OPT_MIRROR].name = SANE_NAME_MIRROR; in kv_init_options()
838 dev->opt[OPT_MIRROR].title = SANE_TITLE_MIRROR; in kv_init_options()
839 dev->opt[OPT_MIRROR].desc = SANE_I18N ("Mirror image (left/right flip)"); in kv_init_options()
840 dev->opt[OPT_MIRROR].type = SANE_TYPE_BOOL; in kv_init_options()
841 dev->opt[OPT_MIRROR].unit = SANE_UNIT_NONE; in kv_init_options()
842 dev->val[OPT_MIRROR].w = SANE_FALSE; in kv_init_options()
845 dev->opt[OPT_JPEG].name = "jpeg"; in kv_init_options()
846 dev->opt[OPT_JPEG].title = SANE_I18N ("jpeg compression"); in kv_init_options()
847 dev->opt[OPT_JPEG].desc = in kv_init_options()
850 dev->opt[OPT_JPEG].type = SANE_TYPE_INT; in kv_init_options()
851 dev->opt[OPT_JPEG].unit = SANE_UNIT_NONE; in kv_init_options()
852 dev->opt[OPT_JPEG].size = sizeof (SANE_Int); in kv_init_options()
853 dev->opt[OPT_JPEG].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
854 dev->opt[OPT_JPEG].constraint.range = &(go_jpeg_compression_range); in kv_init_options()
855 dev->val[OPT_JPEG].w = 0; in kv_init_options()
858 dev->opt[OPT_ROTATE].name = "rotate"; in kv_init_options()
859 dev->opt[OPT_ROTATE].title = SANE_I18N ("Rotate image clockwise"); in kv_init_options()
860 dev->opt[OPT_ROTATE].desc = in kv_init_options()
862 dev->opt[OPT_ROTATE].type = SANE_TYPE_INT; in kv_init_options()
863 dev->opt[OPT_ROTATE].unit = SANE_UNIT_NONE; in kv_init_options()
864 dev->opt[OPT_ROTATE].size = sizeof (SANE_Int); in kv_init_options()
865 dev->opt[OPT_ROTATE].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
866 dev->opt[OPT_ROTATE].constraint.range = &(go_rotate_range); in kv_init_options()
867 dev->val[OPT_ROTATE].w = 0; in kv_init_options()
870 dev->opt[OPT_SWDESKEW].name = "swdeskew"; in kv_init_options()
871 dev->opt[OPT_SWDESKEW].title = SANE_I18N ("Software deskew"); in kv_init_options()
872 dev->opt[OPT_SWDESKEW].desc = in kv_init_options()
874 dev->opt[OPT_SWDESKEW].type = SANE_TYPE_BOOL; in kv_init_options()
875 dev->opt[OPT_SWDESKEW].unit = SANE_UNIT_NONE; in kv_init_options()
876 dev->val[OPT_SWDESKEW].w = SANE_FALSE; in kv_init_options()
879 dev->opt[OPT_SWDESPECK].name = "swdespeck"; in kv_init_options()
880 dev->opt[OPT_SWDESPECK].title = SANE_I18N ("Software despeckle diameter"); in kv_init_options()
881 dev->opt[OPT_SWDESPECK].desc = in kv_init_options()
883 dev->opt[OPT_SWDESPECK].type = SANE_TYPE_INT; in kv_init_options()
884 dev->opt[OPT_SWDESPECK].unit = SANE_UNIT_NONE; in kv_init_options()
885 dev->opt[OPT_SWDESPECK].size = sizeof (SANE_Int); in kv_init_options()
886 dev->opt[OPT_SWDESPECK].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
887 dev->opt[OPT_SWDESPECK].constraint.range = &(go_swdespeck_range); in kv_init_options()
888 dev->val[OPT_SWDESPECK].w = 0; in kv_init_options()
891 dev->opt[OPT_SWDEROTATE].name = "swderotate"; in kv_init_options()
892 dev->opt[OPT_SWDEROTATE].title = SANE_I18N ("Software derotate"); in kv_init_options()
893 dev->opt[OPT_SWDEROTATE].desc = in kv_init_options()
895 dev->opt[OPT_SWDEROTATE].type = SANE_TYPE_BOOL; in kv_init_options()
896 dev->opt[OPT_SWDEROTATE].unit = SANE_UNIT_NONE; in kv_init_options()
897 dev->val[OPT_SWDEROTATE].w = SANE_FALSE; in kv_init_options()
900 dev->opt[OPT_SWCROP].name = "swcrop"; in kv_init_options()
901 dev->opt[OPT_SWCROP].title = SANE_I18N ("Software automatic cropping"); in kv_init_options()
902 dev->opt[OPT_SWCROP].desc = in kv_init_options()
904 dev->opt[OPT_SWCROP].type = SANE_TYPE_BOOL; in kv_init_options()
905 dev->opt[OPT_SWCROP].unit = SANE_UNIT_NONE; in kv_init_options()
906 dev->val[OPT_SWCROP].w = SANE_FALSE; in kv_init_options()
909 dev->opt[OPT_SWSKIP].name = "swskip"; in kv_init_options()
910 dev->opt[OPT_SWSKIP].title = SANE_I18N ("Software blank skip percentage"); in kv_init_options()
911 dev->opt[OPT_SWSKIP].desc in kv_init_options()
913 dev->opt[OPT_SWSKIP].type = SANE_TYPE_FIXED; in kv_init_options()
914 dev->opt[OPT_SWSKIP].unit = SANE_UNIT_PERCENT; in kv_init_options()
915 dev->opt[OPT_SWSKIP].constraint_type = SANE_CONSTRAINT_RANGE; in kv_init_options()
916 dev->opt[OPT_SWSKIP].constraint.range = &(go_swskip_range); in kv_init_options()
920 sane_control_option (dev, OPT_PAPER_SIZE, SANE_ACTION_SET_VALUE, in kv_init_options()
922 sane_control_option (dev, OPT_MODE, SANE_ACTION_SET_VALUE, in kv_init_options()
927 dev->option_set = 1; in kv_init_options()
932 kv_control_option (PKV_DEV dev, SANE_Int option, in kv_control_option() argument
949 if (dev->scanning) in kv_control_option()
959 cap = dev->opt[option].cap; in kv_control_option()
965 name = dev->opt[option].name; in kv_control_option()
1000 *(SANE_Word *) val = dev->val[option].w; in kv_control_option()
1018 strcpy (val, dev->val[option].s); in kv_control_option()
1036 status = sanei_constrain_value (dev->opt + option, val, info); in kv_control_option()
1054 dev->val[option].w = *(SANE_Word *) val; in kv_control_option()
1058 if (round_to_boundry (&(dev->val[option].w), in kv_control_option()
1059 dev->support_info. in kv_control_option()
1070 if (dev->val[option].w > dev->val[OPT_BR_Y].w) in kv_control_option()
1072 dev->val[option].w = dev->val[OPT_BR_Y].w; in kv_control_option()
1081 if (dev->val[option].w < dev->val[OPT_TL_Y].w) in kv_control_option()
1083 dev->val[option].w = dev->val[OPT_TL_Y].w; in kv_control_option()
1094 dev->val[option].w); in kv_control_option()
1102 SANE_Word xr = dev->val[OPT_RESOLUTION].w; in kv_control_option()
1103 SANE_Word tl_x = mmToIlu (SANE_UNFIX (dev->val[OPT_TL_X].w)) * xr; in kv_control_option()
1104 SANE_Word br_x = mmToIlu (SANE_UNFIX (dev->val[OPT_BR_X].w)) * xr; in kv_control_option()
1132 dev->val[option].w = SANE_FIX (iluToMm ((double) value / xr)); in kv_control_option()
1142 dev->val[option].w); in kv_control_option()
1146 dev->val[option].w = *(SANE_Word *) val; in kv_control_option()
1171 dev->val[option].w = *(SANE_Word *) val; in kv_control_option()
1175 dev->val[option].w = *(SANE_Word *) val; in kv_control_option()
1176 return CMD_set_timeout (dev, *(SANE_Word *) val); in kv_control_option()
1187 if (strcmp (dev->val[option].s, val) == 0) in kv_control_option()
1189 free (dev->val[option].s); in kv_control_option()
1190 dev->val[option].s = (SANE_String) strdup (val); in kv_control_option()
1194 dev->val[option].s) == 1) in kv_control_option()
1197 free (dev->val[OPT_SCAN_SOURCE].s); in kv_control_option()
1198 dev->val[OPT_SCAN_SOURCE].s = strdup (go_scan_source_list[0]); in kv_control_option()
1199 dev->opt[OPT_LONGPAPER].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1205 dev->opt[OPT_LONGPAPER].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1212 dev->val[option].s) == 1) in kv_control_option()
1215 free (dev->val[OPT_FEEDER_MODE].s); in kv_control_option()
1216 dev->val[OPT_FEEDER_MODE].s = strdup (go_feeder_mode_list[0]); in kv_control_option()
1222 if (strcmp (dev->val[option].s, val) == 0) in kv_control_option()
1224 free (dev->val[OPT_MODE].s); in kv_control_option()
1225 dev->val[OPT_MODE].s = (SANE_String) strdup (val); in kv_control_option()
1228 dev->opt[OPT_HALFTONE_PATTERN].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1229 dev->opt[OPT_AUTOMATIC_THRESHOLD].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1230 dev->opt[OPT_AUTOMATIC_SEPARATION].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1231 dev->opt[OPT_GAMMA].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1232 dev->opt[OPT_INVERSE].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1233 dev->opt[OPT_JPEG].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1235 if (strcmp (dev->val[OPT_MODE].s, go_scan_mode_list[0]) == 0) in kv_control_option()
1238 dev->opt[OPT_AUTOMATIC_THRESHOLD].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1239 dev->opt[OPT_INVERSE].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1240 dev->opt[OPT_JPEG].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1242 else if (strcmp (dev->val[OPT_MODE].s, go_scan_mode_list[1]) == 0) in kv_control_option()
1245 dev->opt[OPT_HALFTONE_PATTERN].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1246 dev->opt[OPT_AUTOMATIC_SEPARATION].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1247 dev->opt[OPT_GAMMA].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1248 dev->opt[OPT_INVERSE].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1249 dev->opt[OPT_JPEG].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1251 else if (strcmp (dev->val[OPT_MODE].s, go_scan_mode_list[2]) == 0) in kv_control_option()
1254 dev->opt[OPT_GAMMA].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1265 if (strcmp (dev->val[option].s, val) == 0) in kv_control_option()
1267 free (dev->val[option].s); in kv_control_option()
1268 dev->val[option].s = (SANE_String) strdup (val); in kv_control_option()
1270 if (strcmp (dev->val[option].s, go_manual_feed_list[0]) == 0) /* off */ in kv_control_option()
1271 dev->opt[OPT_FEED_TIMEOUT].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1273 dev->opt[OPT_FEED_TIMEOUT].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1280 if (strcmp (dev->val[option].s, val) == 0) in kv_control_option()
1283 free (dev->val[OPT_PAPER_SIZE].s); in kv_control_option()
1284 dev->val[OPT_PAPER_SIZE].s = (SANE_Char *) strdup (val); in kv_control_option()
1287 dev->val[OPT_PAPER_SIZE].s); in kv_control_option()
1290 dev->opt[OPT_TL_X].cap &= in kv_control_option()
1291 dev->opt[OPT_TL_Y].cap &= in kv_control_option()
1292 dev->opt[OPT_BR_X].cap &= in kv_control_option()
1293 dev->opt[OPT_BR_Y].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1294 dev->opt[OPT_LANDSCAPE].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1295 dev->val[OPT_LANDSCAPE].w = 0; in kv_control_option()
1299 dev->opt[OPT_TL_X].cap |= in kv_control_option()
1300 dev->opt[OPT_TL_Y].cap |= in kv_control_option()
1301 dev->opt[OPT_BR_X].cap |= in kv_control_option()
1302 dev->opt[OPT_BR_Y].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1305 dev->opt[OPT_LANDSCAPE].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1309 dev->opt[OPT_LANDSCAPE].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1310 dev->val[OPT_LANDSCAPE].w = 0; in kv_control_option()
1321 if (strcmp (dev->val[option].s, val) == 0) in kv_control_option()
1324 free (dev->val[option].s); in kv_control_option()
1325 dev->val[option].s = (SANE_Char *) strdup (val); in kv_control_option()
1330 dev->opt[OPT_WHITE_LEVEL].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1331 dev->opt[OPT_NOISE_REDUCTION].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1332 dev->opt[OPT_IMAGE_EMPHASIS].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1333 dev->opt[OPT_AUTOMATIC_SEPARATION].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1334 dev->opt[OPT_HALFTONE_PATTERN].cap |= SANE_CAP_INACTIVE; in kv_control_option()
1338 dev->opt[OPT_WHITE_LEVEL].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1339 dev->opt[OPT_NOISE_REDUCTION].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1340 dev->opt[OPT_IMAGE_EMPHASIS].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1341 dev->opt[OPT_AUTOMATIC_SEPARATION].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1342 if (strcmp (dev->val[OPT_MODE].s, go_scan_mode_list[1]) == 0) in kv_control_option()
1344 dev->opt[OPT_HALFTONE_PATTERN].cap &= ~SANE_CAP_INACTIVE; in kv_control_option()
1396 kv_set_window_data (PKV_DEV dev, in kv_set_window_data() argument
1401 dev->val[OPT_PAPER_SIZE]. in kv_set_window_data()
1408 Ito16 (dev->val[OPT_RESOLUTION].w, &windowdata[2]); in kv_set_window_data()
1409 Ito16 (dev->val[OPT_RESOLUTION].w, &windowdata[4]); in kv_set_window_data()
1414 int x_tl = mmToIlu (SANE_UNFIX (dev->val[OPT_TL_X].w)); in kv_set_window_data()
1415 int y_tl = mmToIlu (SANE_UNFIX (dev->val[OPT_TL_Y].w)); in kv_set_window_data()
1416 int x_br = mmToIlu (SANE_UNFIX (dev->val[OPT_BR_X].w)); in kv_set_window_data()
1417 int y_br = mmToIlu (SANE_UNFIX (dev->val[OPT_BR_Y].w)); in kv_set_window_data()
1431 windowdata[22] = 255 - GET_OPT_VAL_W (dev, OPT_BRIGHTNESS); in kv_set_window_data()
1435 windowdata[24] = GET_OPT_VAL_W (dev, OPT_CONTRAST); in kv_set_window_data()
1446 windowdata[28] = GET_OPT_VAL_L (dev, OPT_HALFTONE_PATTERN, in kv_set_window_data()
1453 windowdata[29] = GET_OPT_VAL_W (dev, OPT_INVERSE); in kv_set_window_data()
1460 if (!(dev->opt[OPT_JPEG].cap & SANE_CAP_INACTIVE) in kv_set_window_data()
1461 && GET_OPT_VAL_W (dev, OPT_JPEG)) in kv_set_window_data()
1465 windowdata[33] = GET_OPT_VAL_W (dev, OPT_JPEG); in kv_set_window_data()
1471 windowdata[44] = GET_OPT_VAL_L (dev, OPT_GAMMA, gamma); in kv_set_window_data()
1475 windowdata[57] = GET_OPT_VAL_L (dev, OPT_FEEDER_MODE, feeder_mode); in kv_set_window_data()
1481 if (GET_OPT_VAL_L (dev, OPT_SCAN_SOURCE, scan_source)) in kv_set_window_data()
1497 if (GET_OPT_VAL_W (dev, OPT_LONGPAPER)) in kv_set_window_data()
1503 if (GET_OPT_VAL_W (dev, OPT_LENGTHCTL)) in kv_set_window_data()
1509 if (GET_OPT_VAL_W (dev, OPT_LANDSCAPE)) in kv_set_window_data()
1514 if (GET_OPT_VAL_W (dev, OPT_DBLFEED)) in kv_set_window_data()
1520 if (GET_OPT_VAL_W (dev, OPT_FIT_TO_PAGE)) in kv_set_window_data()
1526 windowdata[62] = GET_OPT_VAL_L (dev, OPT_MANUALFEED, manual_feed) << 6; in kv_set_window_data()
1529 if (GET_OPT_VAL_W (dev, OPT_MIRROR)) in kv_set_window_data()
1535 windowdata[43] = GET_OPT_VAL_L (dev, OPT_IMAGE_EMPHASIS, image_emphasis); in kv_set_window_data()
1538 windowdata[60] = GET_OPT_VAL_L (dev, OPT_WHITE_LEVEL, white_level); in kv_set_window_data()
1543 windowdata[61] = GET_OPT_VAL_L (dev, OPT_NOISE_REDUCTION, in kv_set_window_data()
1547 if (scan_mode == SM_DITHER && GET_OPT_VAL_W (dev, in kv_set_window_data()
1559 GET_OPT_VAL_L (dev, OPT_AUTOMATIC_THRESHOLD, automatic_threshold); in kv_set_window_data()
1576 windowdata[45] = GET_OPT_VAL_L (dev, OPT_LAMP, lamp) << 4; in kv_set_window_data()