| // Copyright 2017 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "fxbarcode/oned/BC_OnedEANChecksum.h" |
| |
| #include "core/fxcrt/fx_extension.h" |
| |
| int32_t EANCalcChecksum(const ByteString& contents) { |
| int32_t odd = 0; |
| int32_t even = 0; |
| size_t parity = 1; |
| for (size_t i = contents.GetLength(); i > 0; i--) { |
| if (parity % 2) |
| odd += FXSYS_DecimalCharToInt(contents[i - 1]); |
| else |
| even += FXSYS_DecimalCharToInt(contents[i - 1]); |
| parity++; |
| } |
| return (10 - (odd * 3 + even) % 10) % 10; |
| } |