14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef XFA_FXFA_PARSER_CXFA_MEASUREMENT_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FXFA_PARSER_CXFA_MEASUREMENT_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_string.h"
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_system.h"
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/fxfa_basic.h"
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CXFA_Measurement {
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  explicit CXFA_Measurement(const WideStringView& wsMeasure);
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Measurement();
18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  CXFA_Measurement(float fValue, XFA_Unit eUnit);
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  static XFA_Unit GetUnitFromString(const WideStringView& wsUnit);
21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  void Set(float fValue, XFA_Unit eUnit) {
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    m_fValue = fValue;
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    m_eUnit = eUnit;
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  XFA_Unit GetUnit() const { return m_eUnit; }
28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  float GetValue() const { return m_fValue; }
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  WideString ToString() const;
31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  float ToUnit(XFA_Unit eUnit) const;
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann private:
34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  void SetString(const WideStringView& wsMeasure);
35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  bool ToUnitInternal(XFA_Unit eUnit, float* fValue) const;
36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  float m_fValue;
38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  XFA_Unit m_eUnit;
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // XFA_FXFA_PARSER_CXFA_MEASUREMENT_H_
42