// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LORGNETTE_ENUMS_H_
#define LORGNETTE_ENUMS_H_

#include <string>

// Must agree with DocumentScanSaneBackend in chrome's enums.xml
enum DocumentScanSaneBackend {
  kOtherBackend = 0,
  kAbaton = 1,
  kAgfafocus = 2,
  kAirscanBrother = 3,
  kAirscanCanon = 4,
  kAirscanEpson = 5,
  kAirscanHp = 6,
  kAirscanKodak = 7,
  kAirscanKonicaMinolta = 8,
  kAirscanKyocera = 9,
  kAirscanLexmark = 10,
  kAirscanOther = 11,
  kAirscanRicoh = 12,
  kAirscanSamsung = 13,
  kAirscanXerox = 14,
  kApple = 15,
  kArtec = 16,
  kArtecEplus48U = 17,
  kAs6E = 18,
  kAvision = 19,
  kBh = 20,
  kCanon = 21,
  kCanon630U = 22,
  kCanonDr = 23,
  kCardscan = 24,
  kCoolscan = 25,
  kCoolscan2 = 26,
  kCoolscan3 = 27,
  kDc210 = 28,
  kDc240 = 29,
  kDc25 = 30,
  kDell1600NNet = 31,
  kDmc = 32,
  kEpjitsu = 33,
  kEpson = 34,
  kEpson2 = 35,
  kEscl = 36,
  kFujitsu = 37,
  kGenesys = 38,
  kGt68Xx = 39,
  kHp = 40,
  kHp3500 = 41,
  kHp3900 = 42,
  kHp4200 = 43,
  kHp5400 = 44,
  kHp5590 = 45,
  kHpljm1005 = 46,
  kHs2P = 47,
  kIbm = 48,
  kKodak = 49,
  kKodakaio = 50,
  kKvs1025 = 51,
  kKvs20Xx = 52,
  kKvs40Xx = 53,
  kLeo = 54,
  kLexmark = 55,
  kMa1509 = 56,
  kMagicolor = 57,
  kMatsushita = 58,
  kMicrotek = 59,
  kMicrotek2 = 60,
  kMustek = 61,
  kMustekUsb = 62,
  kMustekUsb2 = 63,
  kNec = 64,
  kNet = 65,
  kNiash = 66,
  kP5 = 67,
  kPie = 68,
  kPixma = 69,
  kPlustek = 70,
  kPlustekPp = 71,
  kQcam = 72,
  kRicoh = 73,
  kRicoh2 = 74,
  kRts8891 = 75,
  kS9036 = 76,
  kSceptre = 77,
  kSharp = 78,
  kSm3600 = 79,
  kSm3840 = 80,
  kSnapscan = 81,
  kSp15C = 82,
  kSt400 = 83,
  kStv680 = 84,
  kTamarack = 85,
  kTeco1 = 86,
  kTeco2 = 87,
  kTeco3 = 88,
  kTest = 89,
  kU12 = 90,
  kUmax = 91,
  kUmax1220U = 92,
  kUmaxPp = 93,
  kXeroxMfp = 94,
  kMaxValue = kXeroxMfp,
};

// Gets the UMA enum corresponding to the SANE backend with the given name. If
// no matching backend is found, returns kOtherBackend.
DocumentScanSaneBackend SaneBackendFromString(const std::string& name);

#endif  // LORGNETTE_ENUMS_H_
