cbc_qrcode.cpp revision 33357cad1fd1321a2b38d2963e2585f27ce980a2
1// Copyright 2016 PDFium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6/* 7 * Copyright 2011 ZXing authors 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 */ 21 22#include "xfa/fxbarcode/cbc_qrcode.h" 23 24#include "xfa/fxbarcode/qrcode/BC_QRCodeWriter.h" 25 26CBC_QRCode::CBC_QRCode() : CBC_CodeBase(new CBC_QRCodeWriter) {} 27 28CBC_QRCode::~CBC_QRCode() {} 29 30bool CBC_QRCode::SetVersion(int32_t version) { 31 if (version < 0 || version > 40) 32 return false; 33 return m_pBCWriter && 34 static_cast<CBC_QRCodeWriter*>(m_pBCWriter.get())->SetVersion(version); 35} 36 37bool CBC_QRCode::SetErrorCorrectionLevel(int32_t level) { 38 if (level < 0 || level > 3) 39 return false; 40 41 return m_pBCWriter && 42 static_cast<CBC_TwoDimWriter*>(m_pBCWriter.get()) 43 ->SetErrorCorrectionLevel(level); 44} 45 46bool CBC_QRCode::Encode(const CFX_WideStringC& contents, 47 bool isDevice, 48 int32_t& e) { 49 int32_t outWidth = 0; 50 int32_t outHeight = 0; 51 CBC_QRCodeWriter* pWriter = static_cast<CBC_QRCodeWriter*>(m_pBCWriter.get()); 52 uint8_t* data = pWriter->Encode(CFX_WideString(contents), 53 pWriter->GetErrorCorrectionLevel(), outWidth, 54 outHeight, e); 55 if (e != BCExceptionNO) 56 return false; 57 pWriter->RenderResult(data, outWidth, outHeight, e); 58 FX_Free(data); 59 if (e != BCExceptionNO) 60 return false; 61 return true; 62} 63 64bool CBC_QRCode::RenderDevice(CFX_RenderDevice* device, 65 const CFX_Matrix* matrix, 66 int32_t& e) { 67 static_cast<CBC_TwoDimWriter*>(m_pBCWriter.get()) 68 ->RenderDeviceResult(device, matrix); 69 return true; 70} 71 72bool CBC_QRCode::RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) { 73 static_cast<CBC_TwoDimWriter*>(m_pBCWriter.get()) 74 ->RenderBitmapResult(pOutBitmap, e); 75 if (e != BCExceptionNO) 76 return false; 77 return true; 78} 79 80BC_TYPE CBC_QRCode::GetType() { 81 return BC_QR_CODE; 82} 83