1141cc406Sopenharmony_ci/* sane - Scanner Access Now Easy. 2141cc406Sopenharmony_ci 3141cc406Sopenharmony_ci Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt> 4141cc406Sopenharmony_ci 5141cc406Sopenharmony_ci This file is part of the SANE package. 6141cc406Sopenharmony_ci 7141cc406Sopenharmony_ci This program is free software; you can redistribute it and/or 8141cc406Sopenharmony_ci modify it under the terms of the GNU General Public License as 9141cc406Sopenharmony_ci published by the Free Software Foundation; either version 2 of the 10141cc406Sopenharmony_ci License, or (at your option) any later version. 11141cc406Sopenharmony_ci 12141cc406Sopenharmony_ci This program is distributed in the hope that it will be useful, but 13141cc406Sopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 14141cc406Sopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15141cc406Sopenharmony_ci General Public License for more details. 16141cc406Sopenharmony_ci 17141cc406Sopenharmony_ci You should have received a copy of the GNU General Public License 18141cc406Sopenharmony_ci along with this program. If not, see <https://www.gnu.org/licenses/>. 19141cc406Sopenharmony_ci*/ 20141cc406Sopenharmony_ci 21141cc406Sopenharmony_ci#ifndef BACKEND_GENESYS_ENUMS_H 22141cc406Sopenharmony_ci#define BACKEND_GENESYS_ENUMS_H 23141cc406Sopenharmony_ci 24141cc406Sopenharmony_ci#include <iostream> 25141cc406Sopenharmony_ci#include "serialize.h" 26141cc406Sopenharmony_ci 27141cc406Sopenharmony_cinamespace genesys { 28141cc406Sopenharmony_ci 29141cc406Sopenharmony_cienum class ScanMethod : unsigned { 30141cc406Sopenharmony_ci // normal scan method 31141cc406Sopenharmony_ci FLATBED = 0, 32141cc406Sopenharmony_ci // scan using transparency adaptor 33141cc406Sopenharmony_ci TRANSPARENCY = 1, 34141cc406Sopenharmony_ci // scan using transparency adaptor via infrared channel 35141cc406Sopenharmony_ci TRANSPARENCY_INFRARED = 2 36141cc406Sopenharmony_ci}; 37141cc406Sopenharmony_ci 38141cc406Sopenharmony_ciinline std::ostream& operator<<(std::ostream& out, ScanMethod mode) 39141cc406Sopenharmony_ci{ 40141cc406Sopenharmony_ci switch (mode) { 41141cc406Sopenharmony_ci case ScanMethod::FLATBED: out << "FLATBED"; return out; 42141cc406Sopenharmony_ci case ScanMethod::TRANSPARENCY: out << "TRANSPARENCY"; return out; 43141cc406Sopenharmony_ci case ScanMethod::TRANSPARENCY_INFRARED: out << "TRANSPARENCY_INFRARED"; return out; 44141cc406Sopenharmony_ci } 45141cc406Sopenharmony_ci return out; 46141cc406Sopenharmony_ci} 47141cc406Sopenharmony_ci 48141cc406Sopenharmony_ciinline void serialize(std::istream& str, ScanMethod& x) 49141cc406Sopenharmony_ci{ 50141cc406Sopenharmony_ci unsigned value; 51141cc406Sopenharmony_ci serialize(str, value); 52141cc406Sopenharmony_ci x = static_cast<ScanMethod>(value); 53141cc406Sopenharmony_ci} 54141cc406Sopenharmony_ci 55141cc406Sopenharmony_ciinline void serialize(std::ostream& str, ScanMethod& x) 56141cc406Sopenharmony_ci{ 57141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 58141cc406Sopenharmony_ci serialize(str, value); 59141cc406Sopenharmony_ci} 60141cc406Sopenharmony_ci 61141cc406Sopenharmony_ciconst char* scan_method_to_option_string(ScanMethod method); 62141cc406Sopenharmony_ciScanMethod option_string_to_scan_method(const std::string& str); 63141cc406Sopenharmony_ci 64141cc406Sopenharmony_cienum class ScanColorMode : unsigned { 65141cc406Sopenharmony_ci LINEART = 0, 66141cc406Sopenharmony_ci HALFTONE, 67141cc406Sopenharmony_ci GRAY, 68141cc406Sopenharmony_ci COLOR_SINGLE_PASS 69141cc406Sopenharmony_ci}; 70141cc406Sopenharmony_ci 71141cc406Sopenharmony_ciinline std::ostream& operator<<(std::ostream& out, ScanColorMode mode) 72141cc406Sopenharmony_ci{ 73141cc406Sopenharmony_ci switch (mode) { 74141cc406Sopenharmony_ci case ScanColorMode::LINEART: out << "LINEART"; return out; 75141cc406Sopenharmony_ci case ScanColorMode::HALFTONE: out << "HALFTONE"; return out; 76141cc406Sopenharmony_ci case ScanColorMode::GRAY: out << "GRAY"; return out; 77141cc406Sopenharmony_ci case ScanColorMode::COLOR_SINGLE_PASS: out << "COLOR_SINGLE_PASS"; return out; 78141cc406Sopenharmony_ci } 79141cc406Sopenharmony_ci return out; 80141cc406Sopenharmony_ci} 81141cc406Sopenharmony_ci 82141cc406Sopenharmony_ciinline void serialize(std::istream& str, ScanColorMode& x) 83141cc406Sopenharmony_ci{ 84141cc406Sopenharmony_ci unsigned value; 85141cc406Sopenharmony_ci serialize(str, value); 86141cc406Sopenharmony_ci x = static_cast<ScanColorMode>(value); 87141cc406Sopenharmony_ci} 88141cc406Sopenharmony_ci 89141cc406Sopenharmony_ciinline void serialize(std::ostream& str, ScanColorMode& x) 90141cc406Sopenharmony_ci{ 91141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 92141cc406Sopenharmony_ci serialize(str, value); 93141cc406Sopenharmony_ci} 94141cc406Sopenharmony_ci 95141cc406Sopenharmony_ciconst char* scan_color_mode_to_option_string(ScanColorMode mode); 96141cc406Sopenharmony_ciScanColorMode option_string_to_scan_color_mode(const std::string& str); 97141cc406Sopenharmony_ci 98141cc406Sopenharmony_ci 99141cc406Sopenharmony_cienum class ScanHeadId : unsigned { 100141cc406Sopenharmony_ci NONE = 0, 101141cc406Sopenharmony_ci PRIMARY = 1 << 0, 102141cc406Sopenharmony_ci SECONDARY = 1 << 1, 103141cc406Sopenharmony_ci ALL = PRIMARY | SECONDARY, 104141cc406Sopenharmony_ci}; 105141cc406Sopenharmony_ci 106141cc406Sopenharmony_ciinline ScanHeadId operator|(ScanHeadId left, ScanHeadId right) 107141cc406Sopenharmony_ci{ 108141cc406Sopenharmony_ci return static_cast<ScanHeadId>(static_cast<unsigned>(left) | static_cast<unsigned>(right)); 109141cc406Sopenharmony_ci} 110141cc406Sopenharmony_ci 111141cc406Sopenharmony_ciinline ScanHeadId operator&(ScanHeadId left, ScanHeadId right) 112141cc406Sopenharmony_ci{ 113141cc406Sopenharmony_ci return static_cast<ScanHeadId>(static_cast<unsigned>(left) & static_cast<unsigned>(right)); 114141cc406Sopenharmony_ci} 115141cc406Sopenharmony_ci 116141cc406Sopenharmony_ci 117141cc406Sopenharmony_cienum class ColorFilter : unsigned { 118141cc406Sopenharmony_ci RED = 0, 119141cc406Sopenharmony_ci GREEN, 120141cc406Sopenharmony_ci BLUE, 121141cc406Sopenharmony_ci NONE 122141cc406Sopenharmony_ci}; 123141cc406Sopenharmony_ci 124141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, ColorFilter mode); 125141cc406Sopenharmony_ci 126141cc406Sopenharmony_ciinline void serialize(std::istream& str, ColorFilter& x) 127141cc406Sopenharmony_ci{ 128141cc406Sopenharmony_ci unsigned value; 129141cc406Sopenharmony_ci serialize(str, value); 130141cc406Sopenharmony_ci x = static_cast<ColorFilter>(value); 131141cc406Sopenharmony_ci} 132141cc406Sopenharmony_ci 133141cc406Sopenharmony_ciinline void serialize(std::ostream& str, ColorFilter& x) 134141cc406Sopenharmony_ci{ 135141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 136141cc406Sopenharmony_ci serialize(str, value); 137141cc406Sopenharmony_ci} 138141cc406Sopenharmony_ci 139141cc406Sopenharmony_cienum class ColorOrder 140141cc406Sopenharmony_ci{ 141141cc406Sopenharmony_ci RGB, 142141cc406Sopenharmony_ci GBR, 143141cc406Sopenharmony_ci BGR, 144141cc406Sopenharmony_ci}; 145141cc406Sopenharmony_ci 146141cc406Sopenharmony_ci/* Enum value naming conventions: 147141cc406Sopenharmony_ci Full name must be included with the following exceptions: 148141cc406Sopenharmony_ci 149141cc406Sopenharmony_ci Canon scanners omit "Canoscan" if present 150141cc406Sopenharmony_ci*/ 151141cc406Sopenharmony_cienum class ModelId : unsigned 152141cc406Sopenharmony_ci{ 153141cc406Sopenharmony_ci UNKNOWN = 0, 154141cc406Sopenharmony_ci CANON_4400F, 155141cc406Sopenharmony_ci CANON_5600F, 156141cc406Sopenharmony_ci CANON_8400F, 157141cc406Sopenharmony_ci CANON_8600F, 158141cc406Sopenharmony_ci CANON_IMAGE_FORMULA_101, 159141cc406Sopenharmony_ci CANON_LIDE_50, 160141cc406Sopenharmony_ci CANON_LIDE_60, 161141cc406Sopenharmony_ci CANON_LIDE_80, 162141cc406Sopenharmony_ci CANON_LIDE_90, 163141cc406Sopenharmony_ci CANON_LIDE_100, 164141cc406Sopenharmony_ci CANON_LIDE_110, 165141cc406Sopenharmony_ci CANON_LIDE_120, 166141cc406Sopenharmony_ci CANON_LIDE_200, 167141cc406Sopenharmony_ci CANON_LIDE_210, 168141cc406Sopenharmony_ci CANON_LIDE_220, 169141cc406Sopenharmony_ci CANON_LIDE_700F, 170141cc406Sopenharmony_ci DCT_DOCKETPORT_487, 171141cc406Sopenharmony_ci HP_SCANJET_2300C, 172141cc406Sopenharmony_ci HP_SCANJET_2400C, 173141cc406Sopenharmony_ci HP_SCANJET_3670, 174141cc406Sopenharmony_ci HP_SCANJET_4850C, 175141cc406Sopenharmony_ci HP_SCANJET_G4010, 176141cc406Sopenharmony_ci HP_SCANJET_G4050, 177141cc406Sopenharmony_ci HP_SCANJET_N6310, 178141cc406Sopenharmony_ci MEDION_MD5345, 179141cc406Sopenharmony_ci PANASONIC_KV_SS080, 180141cc406Sopenharmony_ci PENTAX_DSMOBILE_600, 181141cc406Sopenharmony_ci PLUSTEK_OPTICBOOK_3800, 182141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200, 183141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200I, 184141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7300, 185141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7400, 186141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7500I, 187141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_8200I, 188141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_3600, 189141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_ST12, 190141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_ST24, 191141cc406Sopenharmony_ci SYSCAN_DOCKETPORT_465, 192141cc406Sopenharmony_ci SYSCAN_DOCKETPORT_467, 193141cc406Sopenharmony_ci SYSCAN_DOCKETPORT_485, 194141cc406Sopenharmony_ci SYSCAN_DOCKETPORT_665, 195141cc406Sopenharmony_ci SYSCAN_DOCKETPORT_685, 196141cc406Sopenharmony_ci UMAX_ASTRA_4500, 197141cc406Sopenharmony_ci VISIONEER_7100, 198141cc406Sopenharmony_ci VISIONEER_ROADWARRIOR, 199141cc406Sopenharmony_ci VISIONEER_STROBE_XP100_REVISION3, 200141cc406Sopenharmony_ci VISIONEER_STROBE_XP200, 201141cc406Sopenharmony_ci VISIONEER_STROBE_XP300, 202141cc406Sopenharmony_ci XEROX_2400, 203141cc406Sopenharmony_ci XEROX_TRAVELSCANNER_100, 204141cc406Sopenharmony_ci}; 205141cc406Sopenharmony_ci 206141cc406Sopenharmony_ciinline void serialize(std::istream& str, ModelId& x) 207141cc406Sopenharmony_ci{ 208141cc406Sopenharmony_ci unsigned value; 209141cc406Sopenharmony_ci serialize(str, value); 210141cc406Sopenharmony_ci x = static_cast<ModelId>(value); 211141cc406Sopenharmony_ci} 212141cc406Sopenharmony_ci 213141cc406Sopenharmony_ciinline void serialize(std::ostream& str, ModelId& x) 214141cc406Sopenharmony_ci{ 215141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 216141cc406Sopenharmony_ci serialize(str, value); 217141cc406Sopenharmony_ci} 218141cc406Sopenharmony_ci 219141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, ModelId id); 220141cc406Sopenharmony_ci 221141cc406Sopenharmony_cienum class SensorId : unsigned 222141cc406Sopenharmony_ci{ 223141cc406Sopenharmony_ci UNKNOWN = 0, 224141cc406Sopenharmony_ci CCD_5345, 225141cc406Sopenharmony_ci CCD_CANON_4400F, 226141cc406Sopenharmony_ci CCD_CANON_5600F, 227141cc406Sopenharmony_ci CCD_CANON_8400F, 228141cc406Sopenharmony_ci CCD_CANON_8600F, 229141cc406Sopenharmony_ci CCD_DP665, 230141cc406Sopenharmony_ci CCD_DP685, 231141cc406Sopenharmony_ci CCD_DSMOBILE600, 232141cc406Sopenharmony_ci CCD_DOCKETPORT_487, 233141cc406Sopenharmony_ci CCD_G4050, 234141cc406Sopenharmony_ci CCD_HP2300, 235141cc406Sopenharmony_ci CCD_HP2400, 236141cc406Sopenharmony_ci CCD_HP3670, 237141cc406Sopenharmony_ci CCD_HP_N6310, 238141cc406Sopenharmony_ci CCD_HP_4850C, 239141cc406Sopenharmony_ci CCD_IMG101, 240141cc406Sopenharmony_ci CCD_KVSS080, 241141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICBOOK_3800, 242141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_7200, 243141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_7200I, 244141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_7300, 245141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_7400, 246141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_7500I, 247141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICFILM_8200I, 248141cc406Sopenharmony_ci CCD_PLUSTEK_OPTICPRO_3600, 249141cc406Sopenharmony_ci CCD_ROADWARRIOR, 250141cc406Sopenharmony_ci CCD_ST12, // SONY ILX548: 5340 Pixel ??? 251141cc406Sopenharmony_ci CCD_ST24, // SONY ILX569: 10680 Pixel ??? 252141cc406Sopenharmony_ci CCD_UMAX, 253141cc406Sopenharmony_ci CCD_XP300, 254141cc406Sopenharmony_ci CIS_CANON_LIDE_35, 255141cc406Sopenharmony_ci CIS_CANON_LIDE_60, 256141cc406Sopenharmony_ci CIS_CANON_LIDE_80, 257141cc406Sopenharmony_ci CIS_CANON_LIDE_90, 258141cc406Sopenharmony_ci CIS_CANON_LIDE_100, 259141cc406Sopenharmony_ci CIS_CANON_LIDE_110, 260141cc406Sopenharmony_ci CIS_CANON_LIDE_120, 261141cc406Sopenharmony_ci CIS_CANON_LIDE_200, 262141cc406Sopenharmony_ci CIS_CANON_LIDE_210, 263141cc406Sopenharmony_ci CIS_CANON_LIDE_220, 264141cc406Sopenharmony_ci CIS_CANON_LIDE_700F, 265141cc406Sopenharmony_ci CIS_XP200, 266141cc406Sopenharmony_ci}; 267141cc406Sopenharmony_ci 268141cc406Sopenharmony_ciinline void serialize(std::istream& str, SensorId& x) 269141cc406Sopenharmony_ci{ 270141cc406Sopenharmony_ci unsigned value; 271141cc406Sopenharmony_ci serialize(str, value); 272141cc406Sopenharmony_ci x = static_cast<SensorId>(value); 273141cc406Sopenharmony_ci} 274141cc406Sopenharmony_ci 275141cc406Sopenharmony_ciinline void serialize(std::ostream& str, SensorId& x) 276141cc406Sopenharmony_ci{ 277141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 278141cc406Sopenharmony_ci serialize(str, value); 279141cc406Sopenharmony_ci} 280141cc406Sopenharmony_ci 281141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, SensorId id); 282141cc406Sopenharmony_ci 283141cc406Sopenharmony_ci 284141cc406Sopenharmony_cienum class AdcId : unsigned 285141cc406Sopenharmony_ci{ 286141cc406Sopenharmony_ci UNKNOWN = 0, 287141cc406Sopenharmony_ci AD_XP200, 288141cc406Sopenharmony_ci CANON_LIDE_35, 289141cc406Sopenharmony_ci CANON_LIDE_80, 290141cc406Sopenharmony_ci CANON_LIDE_90, 291141cc406Sopenharmony_ci CANON_LIDE_110, 292141cc406Sopenharmony_ci CANON_LIDE_120, 293141cc406Sopenharmony_ci CANON_LIDE_200, 294141cc406Sopenharmony_ci CANON_LIDE_700F, 295141cc406Sopenharmony_ci CANON_4400F, 296141cc406Sopenharmony_ci CANON_5600F, 297141cc406Sopenharmony_ci CANON_8400F, 298141cc406Sopenharmony_ci CANON_8600F, 299141cc406Sopenharmony_ci G4050, 300141cc406Sopenharmony_ci IMG101, 301141cc406Sopenharmony_ci KVSS080, 302141cc406Sopenharmony_ci PLUSTEK_OPTICBOOK_3800, 303141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200, 304141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200I, 305141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7300, 306141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7400, 307141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7500I, 308141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_8200I, 309141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_3600, 310141cc406Sopenharmony_ci WOLFSON_5345, 311141cc406Sopenharmony_ci WOLFSON_DSM600, 312141cc406Sopenharmony_ci WOLFSON_HP2300, 313141cc406Sopenharmony_ci WOLFSON_HP2400, 314141cc406Sopenharmony_ci WOLFSON_HP3670, 315141cc406Sopenharmony_ci WOLFSON_ST12, 316141cc406Sopenharmony_ci WOLFSON_ST24, 317141cc406Sopenharmony_ci WOLFSON_UMAX, 318141cc406Sopenharmony_ci WOLFSON_XP300, 319141cc406Sopenharmony_ci}; 320141cc406Sopenharmony_ci 321141cc406Sopenharmony_ciinline void serialize(std::istream& str, AdcId& x) 322141cc406Sopenharmony_ci{ 323141cc406Sopenharmony_ci unsigned value; 324141cc406Sopenharmony_ci serialize(str, value); 325141cc406Sopenharmony_ci x = static_cast<AdcId>(value); 326141cc406Sopenharmony_ci} 327141cc406Sopenharmony_ci 328141cc406Sopenharmony_ciinline void serialize(std::ostream& str, AdcId& x) 329141cc406Sopenharmony_ci{ 330141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 331141cc406Sopenharmony_ci serialize(str, value); 332141cc406Sopenharmony_ci} 333141cc406Sopenharmony_ci 334141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, AdcId id); 335141cc406Sopenharmony_ci 336141cc406Sopenharmony_cienum class GpioId : unsigned 337141cc406Sopenharmony_ci{ 338141cc406Sopenharmony_ci UNKNOWN = 0, 339141cc406Sopenharmony_ci CANON_LIDE_35, 340141cc406Sopenharmony_ci CANON_LIDE_80, 341141cc406Sopenharmony_ci CANON_LIDE_90, 342141cc406Sopenharmony_ci CANON_LIDE_110, 343141cc406Sopenharmony_ci CANON_LIDE_120, 344141cc406Sopenharmony_ci CANON_LIDE_200, 345141cc406Sopenharmony_ci CANON_LIDE_210, 346141cc406Sopenharmony_ci CANON_LIDE_700F, 347141cc406Sopenharmony_ci CANON_4400F, 348141cc406Sopenharmony_ci CANON_5600F, 349141cc406Sopenharmony_ci CANON_8400F, 350141cc406Sopenharmony_ci CANON_8600F, 351141cc406Sopenharmony_ci DP665, 352141cc406Sopenharmony_ci DP685, 353141cc406Sopenharmony_ci G4050, 354141cc406Sopenharmony_ci G4010, 355141cc406Sopenharmony_ci HP2300, 356141cc406Sopenharmony_ci HP2400, 357141cc406Sopenharmony_ci HP3670, 358141cc406Sopenharmony_ci HP_N6310, 359141cc406Sopenharmony_ci IMG101, 360141cc406Sopenharmony_ci KVSS080, 361141cc406Sopenharmony_ci MD_5345, 362141cc406Sopenharmony_ci PLUSTEK_OPTICBOOK_3800, 363141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200, 364141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200I, 365141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7300, 366141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7400, 367141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7500I, 368141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_8200I, 369141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_3600, 370141cc406Sopenharmony_ci ST12, 371141cc406Sopenharmony_ci ST24, 372141cc406Sopenharmony_ci UMAX, 373141cc406Sopenharmony_ci XP200, 374141cc406Sopenharmony_ci XP300, 375141cc406Sopenharmony_ci}; 376141cc406Sopenharmony_ci 377141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, GpioId id); 378141cc406Sopenharmony_ci 379141cc406Sopenharmony_cienum class MotorId : unsigned 380141cc406Sopenharmony_ci{ 381141cc406Sopenharmony_ci UNKNOWN = 0, 382141cc406Sopenharmony_ci CANON_LIDE_100, 383141cc406Sopenharmony_ci CANON_LIDE_110, 384141cc406Sopenharmony_ci CANON_LIDE_120, 385141cc406Sopenharmony_ci CANON_LIDE_200, 386141cc406Sopenharmony_ci CANON_LIDE_210, 387141cc406Sopenharmony_ci CANON_LIDE_35, 388141cc406Sopenharmony_ci CANON_LIDE_60, 389141cc406Sopenharmony_ci CANON_LIDE_700, 390141cc406Sopenharmony_ci CANON_LIDE_80, 391141cc406Sopenharmony_ci CANON_LIDE_90, 392141cc406Sopenharmony_ci CANON_4400F, 393141cc406Sopenharmony_ci CANON_5600F, 394141cc406Sopenharmony_ci CANON_8400F, 395141cc406Sopenharmony_ci CANON_8600F, 396141cc406Sopenharmony_ci DP665, 397141cc406Sopenharmony_ci DSMOBILE_600, 398141cc406Sopenharmony_ci G4050, 399141cc406Sopenharmony_ci HP2300, 400141cc406Sopenharmony_ci HP2400, 401141cc406Sopenharmony_ci HP3670, 402141cc406Sopenharmony_ci IMG101, 403141cc406Sopenharmony_ci KVSS080, 404141cc406Sopenharmony_ci MD_5345, 405141cc406Sopenharmony_ci PLUSTEK_OPTICBOOK_3800, 406141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200, 407141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7200I, 408141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7300, 409141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7400, 410141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_7500I, 411141cc406Sopenharmony_ci PLUSTEK_OPTICFILM_8200I, 412141cc406Sopenharmony_ci PLUSTEK_OPTICPRO_3600, 413141cc406Sopenharmony_ci ROADWARRIOR, 414141cc406Sopenharmony_ci ST24, 415141cc406Sopenharmony_ci UMAX, 416141cc406Sopenharmony_ci XP200, 417141cc406Sopenharmony_ci XP300, 418141cc406Sopenharmony_ci}; 419141cc406Sopenharmony_ci 420141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, MotorId id); 421141cc406Sopenharmony_ci 422141cc406Sopenharmony_cienum class StepType : unsigned 423141cc406Sopenharmony_ci{ 424141cc406Sopenharmony_ci FULL = 0, 425141cc406Sopenharmony_ci HALF = 1, 426141cc406Sopenharmony_ci QUARTER = 2, 427141cc406Sopenharmony_ci EIGHTH = 3, 428141cc406Sopenharmony_ci}; 429141cc406Sopenharmony_ci 430141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, StepType type); 431141cc406Sopenharmony_ci 432141cc406Sopenharmony_ciinline bool operator<(StepType lhs, StepType rhs) 433141cc406Sopenharmony_ci{ 434141cc406Sopenharmony_ci return static_cast<unsigned>(lhs) < static_cast<unsigned>(rhs); 435141cc406Sopenharmony_ci} 436141cc406Sopenharmony_ciinline bool operator<=(StepType lhs, StepType rhs) 437141cc406Sopenharmony_ci{ 438141cc406Sopenharmony_ci return static_cast<unsigned>(lhs) <= static_cast<unsigned>(rhs); 439141cc406Sopenharmony_ci} 440141cc406Sopenharmony_ciinline bool operator>(StepType lhs, StepType rhs) 441141cc406Sopenharmony_ci{ 442141cc406Sopenharmony_ci return static_cast<unsigned>(lhs) > static_cast<unsigned>(rhs); 443141cc406Sopenharmony_ci} 444141cc406Sopenharmony_ciinline bool operator>=(StepType lhs, StepType rhs) 445141cc406Sopenharmony_ci{ 446141cc406Sopenharmony_ci return static_cast<unsigned>(lhs) >= static_cast<unsigned>(rhs); 447141cc406Sopenharmony_ci} 448141cc406Sopenharmony_ci 449141cc406Sopenharmony_cienum class AsicType : unsigned 450141cc406Sopenharmony_ci{ 451141cc406Sopenharmony_ci UNKNOWN = 0, 452141cc406Sopenharmony_ci GL646, 453141cc406Sopenharmony_ci GL841, 454141cc406Sopenharmony_ci GL842, 455141cc406Sopenharmony_ci GL843, 456141cc406Sopenharmony_ci GL845, 457141cc406Sopenharmony_ci GL846, 458141cc406Sopenharmony_ci GL847, 459141cc406Sopenharmony_ci GL124, 460141cc406Sopenharmony_ci}; 461141cc406Sopenharmony_ci 462141cc406Sopenharmony_ci 463141cc406Sopenharmony_cienum class ModelFlag : unsigned 464141cc406Sopenharmony_ci{ 465141cc406Sopenharmony_ci // no flags 466141cc406Sopenharmony_ci NONE = 0, 467141cc406Sopenharmony_ci 468141cc406Sopenharmony_ci // scanner is not tested, print a warning as it's likely it won't work 469141cc406Sopenharmony_ci UNTESTED = 1 << 0, 470141cc406Sopenharmony_ci 471141cc406Sopenharmony_ci // use 14-bit gamma table instead of 12-bit 472141cc406Sopenharmony_ci GAMMA_14BIT = 1 << 1, 473141cc406Sopenharmony_ci 474141cc406Sopenharmony_ci // perform lamp warmup 475141cc406Sopenharmony_ci WARMUP = 1 << 4, 476141cc406Sopenharmony_ci 477141cc406Sopenharmony_ci // whether to disable offset and gain calibration 478141cc406Sopenharmony_ci DISABLE_ADC_CALIBRATION = 1 << 5, 479141cc406Sopenharmony_ci 480141cc406Sopenharmony_ci // whether to disable exposure calibration (this currently is only done on CIS 481141cc406Sopenharmony_ci // scanners) 482141cc406Sopenharmony_ci DISABLE_EXPOSURE_CALIBRATION = 1 << 6, 483141cc406Sopenharmony_ci 484141cc406Sopenharmony_ci // whether to disable shading calibration completely 485141cc406Sopenharmony_ci DISABLE_SHADING_CALIBRATION = 1 << 7, 486141cc406Sopenharmony_ci 487141cc406Sopenharmony_ci // do dark calibration 488141cc406Sopenharmony_ci DARK_CALIBRATION = 1 << 8, 489141cc406Sopenharmony_ci 490141cc406Sopenharmony_ci // host-side calibration uses a complete scan 491141cc406Sopenharmony_ci HOST_SIDE_CALIBRATION_COMPLETE_SCAN = 1 << 9, 492141cc406Sopenharmony_ci 493141cc406Sopenharmony_ci // whether scanner must wait for the head while parking 494141cc406Sopenharmony_ci MUST_WAIT = 1 << 10, 495141cc406Sopenharmony_ci 496141cc406Sopenharmony_ci // use zeroes for dark calibration 497141cc406Sopenharmony_ci USE_CONSTANT_FOR_DARK_CALIBRATION = 1 << 11, 498141cc406Sopenharmony_ci 499141cc406Sopenharmony_ci // do dark and white calibration in one run 500141cc406Sopenharmony_ci DARK_WHITE_CALIBRATION = 1 << 12, 501141cc406Sopenharmony_ci 502141cc406Sopenharmony_ci // allow custom gamma tables 503141cc406Sopenharmony_ci CUSTOM_GAMMA = 1 << 13, 504141cc406Sopenharmony_ci 505141cc406Sopenharmony_ci // disable fast feeding mode on this scanner 506141cc406Sopenharmony_ci DISABLE_FAST_FEEDING = 1 << 14, 507141cc406Sopenharmony_ci 508141cc406Sopenharmony_ci // scan gray scans as color and combine on host side 509141cc406Sopenharmony_ci HOST_SIDE_GRAY = 1 << 15, 510141cc406Sopenharmony_ci 511141cc406Sopenharmony_ci // the scanner uses multi-segment sensors that must be handled during calibration 512141cc406Sopenharmony_ci SIS_SENSOR = 1 << 16, 513141cc406Sopenharmony_ci 514141cc406Sopenharmony_ci // the head must be reparked between shading scans 515141cc406Sopenharmony_ci SHADING_REPARK = 1 << 18, 516141cc406Sopenharmony_ci 517141cc406Sopenharmony_ci // the scanner outputs inverted pixel data 518141cc406Sopenharmony_ci INVERT_PIXEL_DATA = 1 << 19, 519141cc406Sopenharmony_ci 520141cc406Sopenharmony_ci // the scanner outputs 16-bit data that is byte-inverted 521141cc406Sopenharmony_ci SWAP_16BIT_DATA = 1 << 20, 522141cc406Sopenharmony_ci 523141cc406Sopenharmony_ci // the scanner has transparency, but it's implemented using only one motor 524141cc406Sopenharmony_ci UTA_NO_SECONDARY_MOTOR = 1 << 21, 525141cc406Sopenharmony_ci 526141cc406Sopenharmony_ci // the scanner has transparency, but it's implemented using only one lamp 527141cc406Sopenharmony_ci TA_NO_SECONDARY_LAMP = 1 << 22, 528141cc406Sopenharmony_ci}; 529141cc406Sopenharmony_ci 530141cc406Sopenharmony_ciinline ModelFlag operator|(ModelFlag left, ModelFlag right) 531141cc406Sopenharmony_ci{ 532141cc406Sopenharmony_ci return static_cast<ModelFlag>(static_cast<unsigned>(left) | static_cast<unsigned>(right)); 533141cc406Sopenharmony_ci} 534141cc406Sopenharmony_ci 535141cc406Sopenharmony_ciinline ModelFlag& operator|=(ModelFlag& left, ModelFlag right) 536141cc406Sopenharmony_ci{ 537141cc406Sopenharmony_ci left = left | right; 538141cc406Sopenharmony_ci return left; 539141cc406Sopenharmony_ci} 540141cc406Sopenharmony_ci 541141cc406Sopenharmony_ciinline ModelFlag operator&(ModelFlag left, ModelFlag right) 542141cc406Sopenharmony_ci{ 543141cc406Sopenharmony_ci return static_cast<ModelFlag>(static_cast<unsigned>(left) & static_cast<unsigned>(right)); 544141cc406Sopenharmony_ci} 545141cc406Sopenharmony_ci 546141cc406Sopenharmony_ciinline bool has_flag(ModelFlag flags, ModelFlag which) 547141cc406Sopenharmony_ci{ 548141cc406Sopenharmony_ci return (flags & which) == which; 549141cc406Sopenharmony_ci} 550141cc406Sopenharmony_ci 551141cc406Sopenharmony_ci 552141cc406Sopenharmony_cienum class ScanFlag : unsigned 553141cc406Sopenharmony_ci{ 554141cc406Sopenharmony_ci NONE = 0, 555141cc406Sopenharmony_ci SINGLE_LINE = 1 << 0, 556141cc406Sopenharmony_ci DISABLE_SHADING = 1 << 1, 557141cc406Sopenharmony_ci DISABLE_GAMMA = 1 << 2, 558141cc406Sopenharmony_ci DISABLE_BUFFER_FULL_MOVE = 1 << 3, 559141cc406Sopenharmony_ci 560141cc406Sopenharmony_ci // if this flag is set the sensor will always be handled ignoring staggering of multiple 561141cc406Sopenharmony_ci // sensors to achieve high resolution. 562141cc406Sopenharmony_ci IGNORE_STAGGER_OFFSET = 1 << 4, 563141cc406Sopenharmony_ci 564141cc406Sopenharmony_ci // if this flag is set the sensor will always be handled as if the components that scan 565141cc406Sopenharmony_ci // different colors are at the same position. 566141cc406Sopenharmony_ci IGNORE_COLOR_OFFSET = 1 << 5, 567141cc406Sopenharmony_ci 568141cc406Sopenharmony_ci DISABLE_LAMP = 1 << 6, 569141cc406Sopenharmony_ci CALIBRATION = 1 << 7, 570141cc406Sopenharmony_ci FEEDING = 1 << 8, 571141cc406Sopenharmony_ci USE_XPA = 1 << 9, 572141cc406Sopenharmony_ci ENABLE_LEDADD = 1 << 10, 573141cc406Sopenharmony_ci REVERSE = 1 << 12, 574141cc406Sopenharmony_ci 575141cc406Sopenharmony_ci // the scanner should return head to home position automatically after scan. 576141cc406Sopenharmony_ci AUTO_GO_HOME = 1 << 13, 577141cc406Sopenharmony_ci}; 578141cc406Sopenharmony_ci 579141cc406Sopenharmony_ciinline ScanFlag operator|(ScanFlag left, ScanFlag right) 580141cc406Sopenharmony_ci{ 581141cc406Sopenharmony_ci return static_cast<ScanFlag>(static_cast<unsigned>(left) | static_cast<unsigned>(right)); 582141cc406Sopenharmony_ci} 583141cc406Sopenharmony_ci 584141cc406Sopenharmony_ciinline ScanFlag& operator|=(ScanFlag& left, ScanFlag right) 585141cc406Sopenharmony_ci{ 586141cc406Sopenharmony_ci left = left | right; 587141cc406Sopenharmony_ci return left; 588141cc406Sopenharmony_ci} 589141cc406Sopenharmony_ci 590141cc406Sopenharmony_ciinline ScanFlag operator&(ScanFlag left, ScanFlag right) 591141cc406Sopenharmony_ci{ 592141cc406Sopenharmony_ci return static_cast<ScanFlag>(static_cast<unsigned>(left) & static_cast<unsigned>(right)); 593141cc406Sopenharmony_ci} 594141cc406Sopenharmony_ci 595141cc406Sopenharmony_ciinline bool has_flag(ScanFlag flags, ScanFlag which) 596141cc406Sopenharmony_ci{ 597141cc406Sopenharmony_ci return (flags & which) == which; 598141cc406Sopenharmony_ci} 599141cc406Sopenharmony_ci 600141cc406Sopenharmony_ciinline void serialize(std::istream& str, ScanFlag& x) 601141cc406Sopenharmony_ci{ 602141cc406Sopenharmony_ci unsigned value; 603141cc406Sopenharmony_ci serialize(str, value); 604141cc406Sopenharmony_ci x = static_cast<ScanFlag>(value); 605141cc406Sopenharmony_ci} 606141cc406Sopenharmony_ci 607141cc406Sopenharmony_ciinline void serialize(std::ostream& str, ScanFlag& x) 608141cc406Sopenharmony_ci{ 609141cc406Sopenharmony_ci unsigned value = static_cast<unsigned>(x); 610141cc406Sopenharmony_ci serialize(str, value); 611141cc406Sopenharmony_ci} 612141cc406Sopenharmony_ci 613141cc406Sopenharmony_cistd::ostream& operator<<(std::ostream& out, ScanFlag flags); 614141cc406Sopenharmony_ci 615141cc406Sopenharmony_ci 616141cc406Sopenharmony_cienum class Direction : unsigned 617141cc406Sopenharmony_ci{ 618141cc406Sopenharmony_ci FORWARD = 0, 619141cc406Sopenharmony_ci BACKWARD = 1 620141cc406Sopenharmony_ci}; 621141cc406Sopenharmony_ci 622141cc406Sopenharmony_cienum class MotorMode : unsigned 623141cc406Sopenharmony_ci{ 624141cc406Sopenharmony_ci PRIMARY = 0, 625141cc406Sopenharmony_ci PRIMARY_AND_SECONDARY, 626141cc406Sopenharmony_ci SECONDARY, 627141cc406Sopenharmony_ci}; 628141cc406Sopenharmony_ci 629141cc406Sopenharmony_ci} // namespace genesys 630141cc406Sopenharmony_ci 631141cc406Sopenharmony_ci#endif // BACKEND_GENESYS_ENUMS_H 632