diff mupdf-source/thirdparty/zxing-cpp/core/src/GenericGF.cpp @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mupdf-source/thirdparty/zxing-cpp/core/src/GenericGF.cpp	Mon Sep 15 11:43:07 2025 +0200
@@ -0,0 +1,109 @@
+/*
+* Copyright 2016 Nu-book Inc.
+* Copyright 2016 ZXing authors
+*/
+// SPDX-License-Identifier: Apache-2.0
+
+#include "GenericGF.h"
+
+namespace ZXing {
+
+const GenericGF &
+GenericGF::AztecData12()
+{
+	static GenericGF inst(0x1069, 4096, 1); // x^12 + x^6 + x^5 + x^3 + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::AztecData10()
+{
+	static GenericGF inst(0x409, 1024, 1); // x^10 + x^3 + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::AztecData6()
+{
+	static GenericGF inst(0x43, 64, 1); // x^6 + x + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::AztecParam()
+{
+	static GenericGF inst(0x13, 16, 1); // x^4 + x + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::QRCodeField256()
+{
+	static GenericGF inst(0x011D, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::DataMatrixField256()
+{
+	static GenericGF inst(0x012D, 256, 1); // x^8 + x^5 + x^3 + x^2 + 1
+	return inst;
+}
+
+const GenericGF &
+GenericGF::AztecData8()
+{
+	static const GenericGF inst(0x012D, 256, 1); // = DATA_MATRIX_FIELD_256;
+	return inst;
+}
+
+const GenericGF &
+GenericGF::MaxiCodeField64()
+{
+	static const GenericGF inst(0x43, 64, 1); // = AZTEC_DATA_6;
+	return inst;
+}
+
+
+/**
+* Create a representation of GF(size) using the given primitive polynomial.
+*
+* @param primitive irreducible polynomial whose coefficients are represented by
+*  the bits of an int, where the least-significant bit represents the constant
+*  coefficient
+* @param size the size of the field
+* @param b the factor b in the generator polynomial can be 0- or 1-based
+*  (g(x) = (x+a^b)(x+a^(b+1))...(x+a^(b+2t-1))).
+*  In most cases it should be 1, but for QR code it is 0.
+*/
+GenericGF::GenericGF(int primitive, int size, int b) :
+	_size(size),
+	_generatorBase(b)
+{
+#ifdef ZX_REED_SOLOMON_USE_MORE_MEMORY_FOR_SPEED
+	_expTable.resize(size * 2, 0);
+#else
+	_expTable.resize(size, 0);
+#endif
+	_logTable.resize(size, 0);
+	int x = 1;
+	for (int i = 0; i < size; ++i) {
+		_expTable[i] = x;
+		x *= 2; // we're assuming the generator alpha is 2
+		if (x >= size) {
+			x ^= primitive;
+			x &= size - 1;
+		}
+	}
+
+#ifdef ZX_REED_SOLOMON_USE_MORE_MEMORY_FOR_SPEED
+	for (int i = size - 1; i < size * 2; ++i)
+		_expTable[i] = _expTable[i - (size - 1)];
+#endif
+
+	for (int i = 0; i < size - 1; ++i)
+		_logTable[_expTable[i]] = i;
+	// logTable[0] == 0 but this should never be used
+}
+
+} // namespace ZXing