kopia lustrzana https://gitlab.com/sane-project/backends
295 wiersze
9.7 KiB
C
295 wiersze
9.7 KiB
C
/* sane - Scanner Access Now Easy.
|
|
Copyright (C) 1997 Geoffrey T. Dairiki
|
|
This file is part of the SANE package.
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
|
MA 02111-1307, USA.
|
|
|
|
As a special exception, the authors of SANE give permission for
|
|
additional uses of the libraries contained in this release of SANE.
|
|
|
|
The exception is that, if you link a SANE library with other files
|
|
to produce an executable, this does not by itself cause the
|
|
resulting executable to be covered by the GNU General Public
|
|
License. Your use of that executable is in no way restricted on
|
|
account of linking the SANE library code into it.
|
|
|
|
This exception does not, however, invalidate any other reasons why
|
|
the executable file might be covered by the GNU General Public
|
|
License.
|
|
|
|
If you submit changes to SANE to the maintainers to be included in
|
|
a subsequent release, you agree by submitting the changes that
|
|
those changes may be distributed with this exception intact.
|
|
|
|
If you write modifications of your own for SANE, it is your choice
|
|
whether to permit this exception to apply to your modifications.
|
|
If you do not wish that, delete this exception notice.
|
|
|
|
This file is part of a SANE backend for HP Scanners supporting
|
|
HP Scanner Control Language (SCL).
|
|
*/
|
|
|
|
/*
|
|
$Id$
|
|
*/
|
|
#ifndef HP_OPTION_H_INCLUDED
|
|
#define HP_OPTION_H_INCLUDED
|
|
#include "hp.h"
|
|
|
|
/*
|
|
* Non-standard SANE options
|
|
*
|
|
* FIXME: this should become standard
|
|
*/
|
|
|
|
#ifndef SANE_NAME_SHARPENING
|
|
# define SANE_NAME_SHARPENING "sharpening"
|
|
# define SANE_TITLE_SHARPENING SANE_I18N("Sharpening")
|
|
# define SANE_DESC_SHARPENING SANE_I18N("Set sharpening value.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_AUTO_THRESHOLD
|
|
# define SANE_NAME_AUTO_THRESHOLD "auto-threshold"
|
|
# define SANE_TITLE_AUTO_THRESHOLD SANE_I18N("Auto Threshold")
|
|
# define SANE_DESC_AUTO_THRESHOLD \
|
|
SANE_I18N("Enable automatic determination of threshold for line-art scans.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_SMOOTHING
|
|
# define SANE_NAME_SMOOTHING "smoothing"
|
|
# define SANE_TITLE_SMOOTHING SANE_I18N("Smoothing")
|
|
# define SANE_DESC_SMOOTHING SANE_I18N("Select smoothing filter.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_UNLOAD_AFTER_SCAN
|
|
# define SANE_NAME_UNLOAD_AFTER_SCAN "unload-after-scan"
|
|
# define SANE_TITLE_UNLOAD_AFTER_SCAN SANE_I18N("Unload media after scan")
|
|
# define SANE_DESC_UNLOAD_AFTER_SCAN SANE_I18N("Unloads the media after a scan.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_CHANGE_DOC
|
|
# define SANE_NAME_CHANGE_DOC "change-document"
|
|
# define SANE_TITLE_CHANGE_DOC SANE_I18N("Change document")
|
|
# define SANE_DESC_CHANGE_DOC SANE_I18N("Change Document.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_UNLOAD
|
|
# define SANE_NAME_UNLOAD "unload"
|
|
# define SANE_TITLE_UNLOAD SANE_I18N("Unload")
|
|
# define SANE_DESC_UNLOAD SANE_I18N("Unload Document.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_CALIBRATE
|
|
# define SANE_NAME_CALIBRATE "calibrate"
|
|
# define SANE_TITLE_CALIBRATE SANE_I18N("Calibrate")
|
|
# define SANE_DESC_CALIBRATE SANE_I18N("Start calibration process.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MEDIA
|
|
# define SANE_NAME_MEDIA "media-type"
|
|
# define SANE_TITLE_MEDIA SANE_I18N("Media")
|
|
# define SANE_DESC_MEDIA SANE_I18N("Set type of media.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_PS_EXPOSURE_TIME
|
|
# define SANE_NAME_PS_EXPOSURE_TIME "ps-exposure-time"
|
|
# define SANE_TITLE_PS_EXPOSURE_TIME SANE_I18N("Exposure time")
|
|
# define SANE_DESC_PS_EXPOSURE_TIME \
|
|
SANE_I18N("A longer exposure time lets the scanner\
|
|
collect more light. Suggested use is 175% for prints,\
|
|
150% for normal slides and \"Negative\" for\
|
|
negative film. For dark (underexposed) images you can increase this value.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MATRIX_TYPE
|
|
# define SANE_NAME_MATRIX_TYPE "matrix-type"
|
|
# define SANE_TITLE_MATRIX_TYPE SANE_I18N("Color Matrix")
|
|
/* FIXME: better description */
|
|
# define SANE_DESC_MATRIX_TYPE SANE_I18N("Set the scanners color matrix.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MATRIX_RGB
|
|
# define SANE_NAME_MATRIX_RGB "matrix-rgb"
|
|
# define SANE_TITLE_MATRIX_RGB SANE_I18N("Color Matrix")
|
|
# define SANE_DESC_MATRIX_RGB SANE_I18N("Custom color matrix.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MATRIX_GRAY
|
|
# define SANE_NAME_MATRIX_GRAY "matrix-gray"
|
|
# define SANE_TITLE_MATRIX_GRAY SANE_I18N("Mono Color Matrix")
|
|
# define SANE_DESC_MATRIX_GRAY SANE_I18N("Custom color matrix for grayscale scans.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MIRROR_HORIZ
|
|
# define SANE_NAME_MIRROR_HORIZ "mirror-horizontal"
|
|
# define SANE_TITLE_MIRROR_HORIZ SANE_I18N("Mirror horizontal")
|
|
# define SANE_DESC_MIRROR_HORIZ SANE_I18N("Mirror image horizontally.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_MIRROR_VERT
|
|
# define SANE_NAME_MIRROR_VERT "mirror-vertical"
|
|
# define SANE_TITLE_MIRROR_VERT SANE_I18N("Mirror vertical")
|
|
# define SANE_DESC_MIRROR_VERT SANE_I18N("Mirror image vertically.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_UPDATE
|
|
# define SANE_NAME_UPDATE "update-options"
|
|
# define SANE_TITLE_UPDATE SANE_I18N("Update options")
|
|
# define SANE_DESC_UPDATE SANE_I18N("Update options.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_OUTPUT_8BIT
|
|
# define SANE_NAME_OUTPUT_8BIT "output-8bit"
|
|
# define SANE_TITLE_OUTPUT_8BIT SANE_I18N("8 bit output")
|
|
# define SANE_DESC_OUTPUT_8BIT \
|
|
SANE_I18N("Use bit depth greater eight internally,\
|
|
but output only eight bits.")
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_BUTTON_WAIT
|
|
# define SANE_NAME_BUTTON_WAIT "button-wait"
|
|
# define SANE_TITLE_BUTTON_WAIT SANE_I18N("Front button wait")
|
|
# define SANE_DESC_BUTTON_WAIT SANE_I18N("Wait to scan for front-panel button push.")
|
|
# define HP_BUTTON_WAIT_NO 0
|
|
# define HP_BUTTON_WAIT_YES 1
|
|
#endif
|
|
|
|
#ifndef SANE_NAME_LAMP_OFF
|
|
# define SANE_NAME_LAMP_OFF "lamp-off"
|
|
# define SANE_TITLE_LAMP_OFF SANE_I18N("Shut off lamp")
|
|
# define SANE_DESC_LAMP_OFF SANE_I18N("Shut off scanner lamp.")
|
|
# define HP_LAMP_OFF_NO 0
|
|
# define HP_LAMP_OFF_YES 1
|
|
#endif
|
|
|
|
/* Some test stuff to see what undocumented SCL-commands do */
|
|
# define SANE_NAME_10470 "10470"
|
|
# define SANE_TITLE_10470 "10470"
|
|
# define SANE_DESC_10470 "10470."
|
|
|
|
# define SANE_NAME_10485 "10485"
|
|
# define SANE_TITLE_10485 "10485"
|
|
# define SANE_DESC_10485 "10485."
|
|
|
|
# define SANE_NAME_10952 "10952"
|
|
# define SANE_TITLE_10952 "10952"
|
|
# define SANE_DESC_10952 "10952."
|
|
|
|
# define SANE_NAME_10967 "10967"
|
|
# define SANE_TITLE_10967 "10967"
|
|
# define SANE_DESC_10967 "10967."
|
|
|
|
/*
|
|
* Internal option names which are not presented to the SANE frontend.
|
|
*/
|
|
#define HP_NAME_HORIZONTAL_DITHER "__hdither__"
|
|
#define HP_NAME_DEVPIX_RESOLUTION "__devpix_resolution__"
|
|
#ifdef ENABLE_7x12_TONEMAPS
|
|
# define HP_NAME_RGB_TONEMAP "__rgb_tonemap__"
|
|
#endif
|
|
#ifdef FAKE_COLORSEP_MATRIXES
|
|
# define HP_NAME_SEPMATRIX "__sepmatrix__"
|
|
#endif
|
|
|
|
struct hp_choice_s
|
|
{
|
|
int val;
|
|
const char *name;
|
|
hp_bool_t (*enable)(HpChoice this, HpOptSet optset, HpData data,
|
|
const HpDeviceInfo *info);
|
|
hp_bool_t is_emulated:1;
|
|
HpChoice next;
|
|
};
|
|
|
|
enum hp_scanmode_e
|
|
{
|
|
HP_SCANMODE_LINEART = 0,
|
|
HP_SCANMODE_HALFTONE = 3,
|
|
HP_SCANMODE_GRAYSCALE = 4,
|
|
HP_SCANMODE_COLOR = 5
|
|
};
|
|
|
|
enum hp_scantype_e
|
|
{
|
|
HP_SCANTYPE_NORMAL = 0,
|
|
HP_SCANTYPE_ADF = 1,
|
|
HP_SCANTYPE_XPA = 2
|
|
};
|
|
|
|
enum hp_dither_type_e {
|
|
HP_DITHER_CUSTOM = -1,
|
|
HP_DITHER_COARSE = 0,
|
|
HP_DITHER_FINE = 1,
|
|
HP_DITHER_BAYER = 2,
|
|
HP_DITHER_VERTICAL = 3,
|
|
HP_DITHER_HORIZONTAL
|
|
};
|
|
|
|
enum hp_matrix_type_e {
|
|
HP_MATRIX_AUTO = -256,
|
|
HP_MATRIX_GREEN = -257,
|
|
HP_MATRIX_CUSTOM_BW = -2,
|
|
HP_MATRIX_CUSTOM = -1,
|
|
HP_MATRIX_RGB = 0,
|
|
HP_MATRIX_BW = 1,
|
|
HP_MATRIX_PASS = 2,
|
|
HP_MATRIX_RED = 3,
|
|
HP_MATRIX_BLUE = 4,
|
|
HP_MATRIX_XPA_RGB = 5,
|
|
HP_MATRIX_XPA_BW = 6
|
|
};
|
|
|
|
enum hp_mirror_horiz_e {
|
|
HP_MIRROR_HORIZ_CONDITIONAL = -256,
|
|
HP_MIRROR_HORIZ_OFF = 0,
|
|
HP_MIRROR_HORIZ_ON = 1
|
|
};
|
|
|
|
enum hp_mirror_vert_e {
|
|
HP_MIRROR_VERT_OFF = -258,
|
|
HP_MIRROR_VERT_ON = -257,
|
|
HP_MIRROR_VERT_CONDITIONAL = -256
|
|
};
|
|
|
|
enum hp_media_e {
|
|
HP_MEDIA_NEGATIVE = 1,
|
|
HP_MEDIA_SLIDE = 2,
|
|
HP_MEDIA_PRINT = 3
|
|
};
|
|
|
|
hp_bool_t sanei_hp_choice_isEnabled (HpChoice this, HpOptSet optset,
|
|
HpData data, const HpDeviceInfo *info);
|
|
|
|
SANE_Status sanei_hp_optset_new(HpOptSet * newp, HpScsi scsi, HpDevice dev);
|
|
SANE_Status sanei_hp_optset_download (HpOptSet this, HpData data, HpScsi scsi);
|
|
SANE_Status sanei_hp_optset_control (HpOptSet this, HpData data,
|
|
int optnum, SANE_Action action,
|
|
void * valp, SANE_Int *infop, HpScsi scsi,
|
|
hp_bool_t immediate);
|
|
SANE_Status sanei_hp_optset_guessParameters (HpOptSet this, HpData data,
|
|
SANE_Parameters * p);
|
|
enum hp_scanmode_e sanei_hp_optset_scanmode (HpOptSet this, HpData data);
|
|
hp_bool_t sanei_hp_optset_output_8bit (HpOptSet this, HpData data);
|
|
int sanei_hp_optset_data_width (HpOptSet this, HpData data);
|
|
hp_bool_t sanei_hp_optset_isImmediate (HpOptSet this, int optnum);
|
|
hp_bool_t sanei_hp_optset_mirror_vert (HpOptSet this, HpData data, HpScsi scsi);
|
|
hp_bool_t sanei_hp_optset_start_wait(HpOptSet this, HpData data);
|
|
HpScl sanei_hp_optset_scan_type (HpOptSet this, HpData data);
|
|
const SANE_Option_Descriptor * sanei_hp_optset_saneoption (HpOptSet this,
|
|
HpData data, int optnum);
|
|
|
|
#endif /* HP_OPTION_H_INCLUDED */
|