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 |