1d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
2d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
3d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// found in the LICENSE file.
4d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
5d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#ifndef XFA_FXFA_CXFA_FFBARCODE_H_
8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#define XFA_FXFA_CXFA_FFBARCODE_H_
9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "fxbarcode/BC_Library.h"
11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_ffpageview.h"
12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fxfa/cxfa_fftextedit.h"
13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannenum class BarcodeType {
15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  aztec,
16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  codabar,
17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code11,
18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code128,
19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code128A,
20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code128B,
21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code128C,
22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code128SSCC,
23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code2Of5Industrial,
24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code2Of5Interleaved,
25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code2Of5Matrix,
26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code2Of5Standard,
27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code3Of9,
28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code3Of9extended,
29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code49,
30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  code93,
31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dataMatrix,
32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean13,
33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean13add2,
34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean13add5,
35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean13pwcd,
36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean8,
37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean8add2,
38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ean8add5,
39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  fim,
40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  logmars,
41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  maxicode,
42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  msi,
43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  pdf417,
44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  pdf417macro,
45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  plessey,
46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postAUSCust2,
47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postAUSCust3,
48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postAUSReplyPaid,
49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postAUSStandard,
50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postUKRM4SCC,
51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postUS5Zip,
52d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postUSDPBC,
53d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postUSIMB,
54d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  postUSStandard,
55d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  QRCode,
56d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rfid,
57d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14,
58d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14Expanded,
59d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14Limited,
60d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14Stacked,
61d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14StackedOmni,
62d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  rss14Truncated,
63d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  telepen,
64d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ucc128,
65d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ucc128random,
66d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ucc128sscc,
67d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcA,
68d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcAadd2,
69d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcAadd5,
70d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcApwcd,
71d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcE,
72d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcEadd2,
73d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcEadd5,
74d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcean2,
75d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upcean5,
76d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  upsMaxicode
77d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann};
78d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
79d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannstruct BarCodeInfo {
80d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  uint32_t uHash;
81d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  const wchar_t* pName;
82d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  BarcodeType eName;
83d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  BC_TYPE eBCType;
84d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann};
85d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
86d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannclass CXFA_FFBarcode : public CXFA_FFTextEdit {
87d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann public:
88d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  static const BarCodeInfo* GetBarcodeTypeByName(const WideString& wsName);
89d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
90d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  explicit CXFA_FFBarcode(CXFA_Node* pNode);
91d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ~CXFA_FFBarcode() override;
92d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
93d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  // CXFA_FFTextEdit
94d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  bool LoadWidget() override;
95d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  void RenderWidget(CXFA_Graphics* pGS,
96d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                    const CFX_Matrix& matrix,
97d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                    uint32_t dwStatus) override;
98d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  void UpdateWidgetProperty() override;
99d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  bool OnLButtonDown(uint32_t dwFlags, const CFX_PointF& point) override;
100d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  bool OnRButtonDown(uint32_t dwFlags, const CFX_PointF& point) override;
101d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann};
102d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
103d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#endif  // XFA_FXFA_CXFA_FFBARCODE_H_
104