1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code is licensed as follows: 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann/* 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Copyright 2010 ZXing authors 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Licensed under the Apache License, Version 2.0 (the "License"); 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * you may not use this file except in compliance with the License. 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * You may obtain a copy of the License at 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * http://www.apache.org/licenses/LICENSE-2.0 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * Unless required by applicable law or agreed to in writing, software 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * distributed under the License is distributed on an "AS IS" BASIS, 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * See the License for the specific language governing permissions and 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann * limitations under the License. 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann */ 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxbarcode/barcode.h" 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxbarcode/BC_Writer.h" 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "BC_OneDimWriter.h" 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "BC_OnedEAN13Writer.h" 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "BC_OnedUPCAWriter.h" 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_OnedUPCAWriter::CBC_OnedUPCAWriter() { 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_subWriter = NULL; 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bLeftPadding = TRUE; 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_bRightPadding = TRUE; 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_OnedUPCAWriter::Init() { 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_subWriter = new CBC_OnedEAN13Writer; 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCBC_OnedUPCAWriter::~CBC_OnedUPCAWriter() { 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_subWriter != NULL) { 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_subWriter; 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_subWriter = NULL; 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CBC_OnedUPCAWriter::CheckContentValidity( 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_WideStringC& contents) { 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t i = 0; 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (i = 0; i < contents.GetLength(); i++) { 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (contents.GetAt(i) >= '0' && contents.GetAt(i) <= '9') { 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString CBC_OnedUPCAWriter::FilterContents( 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_WideStringC& contents) { 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString filtercontents; 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_WCHAR ch; 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < contents.GetLength(); i++) { 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ch = contents.GetAt(i); 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ch > 175) { 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann i++; 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann continue; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (ch >= '0' && ch <= '9') { 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann filtercontents += ch; 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return filtercontents; 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t CBC_OnedUPCAWriter::CalcChecksum(const CFX_ByteString& contents) { 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t odd = 0; 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t even = 0; 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t j = 1; 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = contents.GetLength() - 1; i >= 0; i--) { 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (j % 2) { 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann odd += FXSYS_atoi(contents.Mid(i, 1)); 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann even += FXSYS_atoi(contents.Mid(i, 1)); 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann j++; 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t checksum = (odd * 3 + even) % 10; 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann checksum = (10 - checksum) % 10; 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return (checksum); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannuint8_t* CBC_OnedUPCAWriter::Encode(const CFX_ByteString& contents, 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BCFORMAT format, 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& outWidth, 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& outHeight, 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t* ret = Encode(contents, format, outWidth, outHeight, 0, e); 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ret; 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannuint8_t* CBC_OnedUPCAWriter::Encode(const CFX_ByteString& contents, 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BCFORMAT format, 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& outWidth, 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& outHeight, 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t hints, 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (format != BCFORMAT_UPC_A) { 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann e = BCExceptionOnlyEncodeUPC_A; 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString toEAN13String = '0' + contents; 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_iDataLenth = 13; 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t* ret = m_subWriter->Encode(toEAN13String, BCFORMAT_EAN_13, outWidth, 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann outHeight, hints, e); 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann BC_EXCEPTION_CHECK_ReturnValue(e, NULL); 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return ret; 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_OnedUPCAWriter::ShowChars(const CFX_WideStringC& contents, 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_DIBitmap* pOutBitmap, 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_RenderDevice* device, 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_Matrix* matrix, 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t barWidth, 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t multiple, 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (device == NULL && pOutBitmap == NULL) { 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann e = BCExceptionIllegalArgument; 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return; 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t leftPadding = 7 * multiple; 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t leftPosition = 10 * multiple + leftPadding; 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString str = FX_UTF8Encode(contents); 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iLen = str.GetLength(); 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CHARPOS* pCharPos = FX_Alloc(FXTEXT_CHARPOS, iLen); 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_memset(pCharPos, 0, sizeof(FXTEXT_CHARPOS) * iLen); 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_ByteString tempStr = str.Mid(1, 5); 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT strWidth = (FX_FLOAT)35 * multiple; 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT blank = 0.0; 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FxgeDevice geBitmap; 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap != NULL) { 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann geBitmap.Attach(pOutBitmap); 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT charsWidth = 0; 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iLen = tempStr.GetLength(); 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iFontSize = (int32_t)fabs(m_fFontSize); 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iTextHeight = iFontSize + 1; 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap == NULL) { 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix matr(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FloatRect rect( 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)leftPosition, (FX_FLOAT)(m_Height - iTextHeight), 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(leftPosition + strWidth - 0.5), (FX_FLOAT)m_Height); 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr.Concat(*matrix); 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr.TransformRect(rect); 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_RECT re = rect.GetOutterRect(); 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->FillRect(&re, m_backgroundColor); 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix matr1(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FloatRect rect1( 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(leftPosition + 40 * multiple), 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight), 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)((leftPosition + 40 * multiple) + strWidth - 0.5), 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)m_Height); 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr1.Concat(*matrix); 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr1.TransformRect(rect1); 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann re = rect1.GetOutterRect(); 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->FillRect(&re, m_backgroundColor); 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FLOAT strWidth1 = (FX_FLOAT)multiple * 7; 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix matr2(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FloatRect rect2(0.0, (FX_FLOAT)(m_Height - iTextHeight), 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)strWidth1 - 1, (FX_FLOAT)m_Height); 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr2.Concat(*matrix); 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr2.TransformRect(rect2); 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann re = rect2.GetOutterRect(); 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->FillRect(&re, m_backgroundColor); 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix matr3(m_outputHScale, 0.0, 0.0, 1.0, 0.0, 0.0); 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FloatRect rect3( 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(leftPosition + 85 * multiple), 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight), 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)((leftPosition + 85 * multiple) + strWidth1 - 0.5), 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)m_Height); 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr3.Concat(*matrix); 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann matr3.TransformRect(rect3); 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann re = rect3.GetOutterRect(); 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->FillRect(&re, m_backgroundColor); 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap == NULL) { 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann strWidth = strWidth * m_outputHScale; 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcTextInfo(tempStr, pCharPos + 1, m_pFont, strWidth, iFontSize, blank); 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix affine_matrix(1.0, 0.0, 0.0, -1.0, 0.0, (FX_FLOAT)iFontSize); 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_FxgeDevice ge; 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap != NULL) { 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.Create((int)strWidth, iTextHeight, FXDIB_Argb); 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.GetBitmap()->Clear(m_backgroundColor); 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.DrawNormalText(iLen, pCharPos + 1, m_pFont, 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CFX_Matrix*)&affine_matrix, m_fontColor, 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CLEARTYPE); 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann geBitmap.SetDIBits(ge.GetBitmap(), leftPosition, m_Height - iTextHeight); 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix affine_matrix1(1.0, 0.0, 0.0, -1.0, 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)leftPosition * m_outputHScale, 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (matrix != NULL) { 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann affine_matrix1.Concat(*matrix); 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->DrawNormalText(iLen, pCharPos + 1, m_pFont, 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)iFontSize, (CFX_Matrix*)&affine_matrix1, 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fontColor, FXTEXT_CLEARTYPE); 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tempStr = str.Mid(6, 5); 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iLen = tempStr.GetLength(); 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann charsWidth = 0.0f; 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcTextInfo(tempStr, pCharPos + 6, m_pFont, strWidth, iFontSize, blank); 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap != NULL) { 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_RECT rect2(0, 0, (int)strWidth, iTextHeight); 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.FillRect(&rect2, m_backgroundColor); 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.DrawNormalText(iLen, pCharPos + 6, m_pFont, 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CFX_Matrix*)&affine_matrix, m_fontColor, 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CLEARTYPE); 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann geBitmap.SetDIBits(ge.GetBitmap(), leftPosition + 40 * multiple, 216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_Height - iTextHeight); 217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix affine_matrix1( 219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1.0, 0.0, 0.0, -1.0, 220ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(leftPosition + 40 * multiple) * m_outputHScale, 221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); 222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (matrix != NULL) { 223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann affine_matrix1.Concat(*matrix); 224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->DrawNormalText(iLen, pCharPos + 6, m_pFont, 226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), 227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)iFontSize, (CFX_Matrix*)&affine_matrix1, 228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fontColor, FXTEXT_CLEARTYPE); 229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 230ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tempStr = str.Mid(0, 1); 231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iLen = tempStr.GetLength(); 232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann strWidth = (FX_FLOAT)multiple * 7; 233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap == NULL) { 234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann strWidth = strWidth * m_outputHScale; 235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcTextInfo(tempStr, pCharPos, m_pFont, strWidth, iFontSize, blank); 237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap != NULL) { 238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete ge.GetBitmap(); 239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.Create((int)strWidth, iTextHeight, FXDIB_Argb); 240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.GetBitmap()->Clear(m_backgroundColor); 241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.DrawNormalText(iLen, pCharPos, m_pFont, 242ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, 243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CFX_Matrix*)&affine_matrix, m_fontColor, 244ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CLEARTYPE); 245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann geBitmap.SetDIBits(ge.GetBitmap(), 0, m_Height - iTextHeight); 246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix affine_matrix1(1.0, 0.0, 0.0, -1.0, 0, 248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); 249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (matrix != NULL) { 250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann affine_matrix1.Concat(*matrix); 251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->DrawNormalText(iLen, pCharPos, m_pFont, 253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), 254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)iFontSize, (CFX_Matrix*)&affine_matrix1, 255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fontColor, FXTEXT_CLEARTYPE); 256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann tempStr = str.Mid(11, 1); 258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann iLen = tempStr.GetLength(); 259ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CalcTextInfo(tempStr, pCharPos + 11, m_pFont, strWidth, iFontSize, blank); 260ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pOutBitmap != NULL) { 261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete ge.GetBitmap(); 262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.Create((int)strWidth, iTextHeight, FXDIB_Argb); 263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.GetBitmap()->Clear(m_backgroundColor); 264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann ge.DrawNormalText(iLen, pCharPos + 11, m_pFont, 265ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), (FX_FLOAT)iFontSize, 266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (CFX_Matrix*)&affine_matrix, m_fontColor, 267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXTEXT_CLEARTYPE); 268ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann geBitmap.SetDIBits(ge.GetBitmap(), leftPosition + 85 * multiple, 269ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_Height - iTextHeight); 270ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 271ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_Matrix affine_matrix1( 272ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 1.0, 0.0, 0.0, -1.0, 273ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(leftPosition + 85 * multiple) * m_outputHScale, 274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)(m_Height - iTextHeight + iFontSize)); 275ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (matrix != NULL) { 276ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann affine_matrix1.Concat(*matrix); 277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 278ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann device->DrawNormalText(iLen, pCharPos + 11, m_pFont, 279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_GEModule::Get()->GetFontCache(), 280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann (FX_FLOAT)iFontSize, (CFX_Matrix*)&affine_matrix1, 281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_fontColor, FXTEXT_CLEARTYPE); 282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_Free(pCharPos); 284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CBC_OnedUPCAWriter::RenderResult(const CFX_WideStringC& contents, 286ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann uint8_t* code, 287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t codeLength, 288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL isDevice, 289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t& e) { 290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CBC_OneDimWriter::RenderResult(contents, code, codeLength, isDevice, e); 291ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 292