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#include "fxbarcode/BC_UtilCodingConvert.h"
8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCBC_UtilCodingConvert::CBC_UtilCodingConvert() {}
10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCBC_UtilCodingConvert::~CBC_UtilCodingConvert() {}
12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::UnicodeToLocale(const WideString& src,
14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                            ByteString& dst) {
15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = ByteString::FromUnicode(src);
16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::LocaleToUtf8(const ByteString& src,
19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                         ByteString& dst) {
20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  WideString unicode = WideString::FromLocal(src.AsStringView());
21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = unicode.UTF8Encode();
22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::LocaleToUtf8(const ByteString& src,
25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                         std::vector<uint8_t>& dst) {
26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  WideString unicode = WideString::FromLocal(src.AsStringView());
27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ByteString utf8 = unicode.UTF8Encode();
28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = std::vector<uint8_t>(utf8.begin(), utf8.end());
29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::Utf8ToLocale(const std::vector<uint8_t>& src,
32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                         ByteString& dst) {
33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  ByteString utf8;
34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  for (uint8_t value : src)
35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann    utf8 += value;
36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  WideString unicode = WideString::FromUTF8(utf8.AsStringView());
38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = ByteString::FromUnicode(unicode);
39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::Utf8ToLocale(const uint8_t* src,
42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                         int32_t count,
43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                         ByteString& dst) {
44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  WideString unicode = WideString::FromUTF8(ByteStringView(src, count));
45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = ByteString::FromUnicode(unicode);
46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann
48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannvoid CBC_UtilCodingConvert::UnicodeToUTF8(const WideString& src,
49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann                                          ByteString& dst) {
50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann  dst = src.UTF8Encode();
51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann}
52