{-# OPTIONS_HADDOCK hide #-}
module Codec.Binary.QRCode.VersionInfo where

import Codec.Binary.QRCode.Spec
import Codec.Binary.QRCode.Utils

import Codec.Binary.QRCode.GaloisField

encode :: Version -> BitStream
encode (Version v) = showBinPadded 18 $ encoded
    where
        inputPoly = gfpRightPad 12 $ toPoly (showBinPadded 6 v)
        encoded = gfpToBinaryRepr $ gfpAdd inputPoly (snd $ gfpQuotRem inputPoly qrVersionInfoGenPoly)