summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go')
-rw-r--r--vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go73
1 files changed, 0 insertions, 73 deletions
diff --git a/vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go b/vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go
deleted file mode 100644
index 561697b4..00000000
--- a/vendor/github.com/skip2/go-qrcode/reedsolomon/reed_solomon.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// go-qrcode
-// Copyright 2014 Tom Harwood
-
-// Package reedsolomon provides error correction encoding for QR Code 2005.
-//
-// QR Code 2005 uses a Reed-Solomon error correcting code to detect and correct
-// errors encountered during decoding.
-//
-// The generated RS codes are systematic, and consist of the input data with
-// error correction bytes appended.
-package reedsolomon
-
-import (
- "log"
-
- bitset "github.com/skip2/go-qrcode/bitset"
-)
-
-// Encode data for QR Code 2005 using the appropriate Reed-Solomon code.
-//
-// numECBytes is the number of error correction bytes to append, and is
-// determined by the target QR Code's version and error correction level.
-//
-// ISO/IEC 18004 table 9 specifies the numECBytes required. e.g. a 1-L code has
-// numECBytes=7.
-func Encode(data *bitset.Bitset, numECBytes int) *bitset.Bitset {
- // Create a polynomial representing |data|.
- //
- // The bytes are interpreted as the sequence of coefficients of a polynomial.
- // The last byte's value becomes the x^0 coefficient, the second to last
- // becomes the x^1 coefficient and so on.
- ecpoly := newGFPolyFromData(data)
- ecpoly = gfPolyMultiply(ecpoly, newGFPolyMonomial(gfOne, numECBytes))
-
- // Pick the generator polynomial.
- generator := rsGeneratorPoly(numECBytes)
-
- // Generate the error correction bytes.
- remainder := gfPolyRemainder(ecpoly, generator)
-
- // Combine the data & error correcting bytes.
- // The mathematically correct answer is:
- //
- // result := gfPolyAdd(ecpoly, remainder).
- //
- // The encoding used by QR Code 2005 is slightly different this result: To
- // preserve the original |data| bit sequence exactly, the data and remainder
- // are combined manually below. This ensures any most significant zero bits
- // are preserved (and not optimised away).
- result := bitset.Clone(data)
- result.AppendBytes(remainder.data(numECBytes))
-
- return result
-}
-
-// rsGeneratorPoly returns the Reed-Solomon generator polynomial with |degree|.
-//
-// The generator polynomial is calculated as:
-// (x + a^0)(x + a^1)...(x + a^degree-1)
-func rsGeneratorPoly(degree int) gfPoly {
- if degree < 2 {
- log.Panic("degree < 2")
- }
-
- generator := gfPoly{term: []gfElement{1}}
-
- for i := 0; i < degree; i++ {
- nextPoly := gfPoly{term: []gfElement{gfExpTable[i], 1}}
- generator = gfPolyMultiply(generator, nextPoly)
- }
-
- return generator
-}