| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 // Original code is licensed as follows: | 6 // Original code is licensed as follows: |
| 7 /* | 7 /* |
| 8 * Copyright 2011 ZXing authors | 8 * Copyright 2011 ZXing authors |
| 9 * | 9 * |
| 10 * Licensed under the Apache License, Version 2.0 (the "License"); | 10 * Licensed under the Apache License, Version 2.0 (the "License"); |
| 11 * you may not use this file except in compliance with the License. | 11 * you may not use this file except in compliance with the License. |
| 12 * You may obtain a copy of the License at | 12 * You may obtain a copy of the License at |
| 13 * | 13 * |
| 14 * http://www.apache.org/licenses/LICENSE-2.0 | 14 * http://www.apache.org/licenses/LICENSE-2.0 |
| 15 * | 15 * |
| 16 * Unless required by applicable law or agreed to in writing, software | 16 * Unless required by applicable law or agreed to in writing, software |
| 17 * distributed under the License is distributed on an "AS IS" BASIS, | 17 * distributed under the License is distributed on an "AS IS" BASIS, |
| 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 19 * See the License for the specific language governing permissions and | 19 * See the License for the specific language governing permissions and |
| 20 * limitations under the License. | 20 * limitations under the License. |
| 21 */ | 21 */ |
| 22 | 22 |
| 23 #include "BC_OneDimWriter.h" | 23 #include "BC_OneDimWriter.h" |
| 24 | 24 |
| 25 #include <algorithm> |
| 25 #include <memory> | 26 #include <memory> |
| 26 | 27 |
| 27 #include "xfa/src/fxbarcode/BC_Writer.h" | 28 #include "xfa/src/fxbarcode/BC_Writer.h" |
| 28 #include "xfa/src/fxbarcode/barcode.h" | 29 #include "xfa/src/fxbarcode/barcode.h" |
| 29 #include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" | 30 #include "xfa/src/fxbarcode/common/BC_CommonBitMatrix.h" |
| 30 | 31 |
| 31 CBC_OneDimWriter::CBC_OneDimWriter() { | 32 CBC_OneDimWriter::CBC_OneDimWriter() { |
| 32 m_locTextLoc = BC_TEXT_LOC_BELOWEMBED; | 33 m_locTextLoc = BC_TEXT_LOC_BELOWEMBED; |
| 33 m_bPrintChecksum = TRUE; | 34 m_bPrintChecksum = TRUE; |
| 34 m_iDataLenth = 0; | 35 m_iDataLenth = 0; |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 if (m_bRightPadding) { | 385 if (m_bRightPadding) { |
| 385 rightPadding = 7; | 386 rightPadding = 7; |
| 386 } | 387 } |
| 387 codeLength += leftPadding; | 388 codeLength += leftPadding; |
| 388 codeLength += rightPadding; | 389 codeLength += rightPadding; |
| 389 m_outputHScale = 1.0; | 390 m_outputHScale = 1.0; |
| 390 if (m_Width > 0) { | 391 if (m_Width > 0) { |
| 391 m_outputHScale = (FX_FLOAT)m_Width / (FX_FLOAT)codeLength; | 392 m_outputHScale = (FX_FLOAT)m_Width / (FX_FLOAT)codeLength; |
| 392 } | 393 } |
| 393 if (!isDevice) { | 394 if (!isDevice) { |
| 394 m_outputHScale = FX_MAX(m_outputHScale, m_ModuleWidth); | 395 m_outputHScale = |
| 396 std::max(m_outputHScale, static_cast<FX_FLOAT>(m_ModuleWidth)); |
| 395 } | 397 } |
| 396 FX_FLOAT dataLengthScale = 1.0; | 398 FX_FLOAT dataLengthScale = 1.0; |
| 397 if (m_iDataLenth > 0 && contents.GetLength() != 0) { | 399 if (m_iDataLenth > 0 && contents.GetLength() != 0) { |
| 398 dataLengthScale = FX_FLOAT(contents.GetLength()) / FX_FLOAT(m_iDataLenth); | 400 dataLengthScale = FX_FLOAT(contents.GetLength()) / FX_FLOAT(m_iDataLenth); |
| 399 } | 401 } |
| 400 if (m_iDataLenth > 0 && contents.GetLength() == 0) { | 402 if (m_iDataLenth > 0 && contents.GetLength() == 0) { |
| 401 dataLengthScale = FX_FLOAT(1) / FX_FLOAT(m_iDataLenth); | 403 dataLengthScale = FX_FLOAT(1) / FX_FLOAT(m_iDataLenth); |
| 402 } | 404 } |
| 403 m_multiple = 1; | 405 m_multiple = 1; |
| 404 if (!isDevice) { | 406 if (!isDevice) { |
| 405 m_multiple = (int32_t)ceil(m_outputHScale * dataLengthScale); | 407 m_multiple = (int32_t)ceil(m_outputHScale * dataLengthScale); |
| 406 } | 408 } |
| 407 int32_t outputHeight = 1; | 409 int32_t outputHeight = 1; |
| 408 if (!isDevice) { | 410 if (!isDevice) { |
| 409 if (m_Height == 0) { | 411 if (m_Height == 0) { |
| 410 outputHeight = FX_MAX(20, m_ModuleHeight); | 412 outputHeight = std::max(20, m_ModuleHeight); |
| 411 } else { | 413 } else { |
| 412 outputHeight = m_Height; | 414 outputHeight = m_Height; |
| 413 } | 415 } |
| 414 } | 416 } |
| 415 int32_t outputWidth = codeLength; | 417 int32_t outputWidth = codeLength; |
| 416 if (!isDevice) { | 418 if (!isDevice) { |
| 417 outputWidth = (int32_t)(codeLength * m_multiple / dataLengthScale); | 419 outputWidth = (int32_t)(codeLength * m_multiple / dataLengthScale); |
| 418 } | 420 } |
| 419 m_barWidth = m_Width; | 421 m_barWidth = m_Width; |
| 420 if (!isDevice) { | 422 if (!isDevice) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 431 if (outputX + m_multiple > outputWidth && outputWidth - outputX > 0) { | 433 if (outputX + m_multiple > outputWidth && outputWidth - outputX > 0) { |
| 432 m_output->SetRegion(outputX, 0, outputWidth - outputX, outputHeight, e); | 434 m_output->SetRegion(outputX, 0, outputWidth - outputX, outputHeight, e); |
| 433 break; | 435 break; |
| 434 } | 436 } |
| 435 m_output->SetRegion(outputX, 0, m_multiple, outputHeight, e); | 437 m_output->SetRegion(outputX, 0, m_multiple, outputHeight, e); |
| 436 BC_EXCEPTION_CHECK_ReturnVoid(e); | 438 BC_EXCEPTION_CHECK_ReturnVoid(e); |
| 437 } | 439 } |
| 438 outputX += m_multiple; | 440 outputX += m_multiple; |
| 439 } | 441 } |
| 440 } | 442 } |
| OLD | NEW |