{-# LANGUAGE BinaryLiterals #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Codec.QRCode.Intermediate.Special
  ( emptyNumericSegment
  , emptyAlphanumericSegment
  , emptyByteSegment
  , emptyKanjiSegment
  ) where

import           Codec.QRCode.Base

import           Codec.QRCode.Data.QRSegment.Internal

emptyNumericSegment :: QRSegment
emptyNumericSegment :: QRSegment
emptyNumericSegment =
  Int -> Int -> QRSegment
encodeBits Int
4 Int
0b0001 forall a. Semigroup a => a -> a -> a
<> (Int, Int, Int) -> Int -> QRSegment
lengthSegment (Int
10, Int
12, Int
14) Int
0

emptyAlphanumericSegment :: QRSegment
emptyAlphanumericSegment :: QRSegment
emptyAlphanumericSegment =
  Int -> Int -> QRSegment
encodeBits Int
4 Int
0b0010 forall a. Semigroup a => a -> a -> a
<> (Int, Int, Int) -> Int -> QRSegment
lengthSegment (Int
9, Int
11, Int
13) Int
0

emptyByteSegment :: QRSegment
emptyByteSegment :: QRSegment
emptyByteSegment =
  Int -> Int -> QRSegment
encodeBits Int
4 Int
0b0100 forall a. Semigroup a => a -> a -> a
<> (Int, Int, Int) -> Int -> QRSegment
lengthSegment (Int
8, Int
16, Int
16) Int
0

emptyKanjiSegment :: QRSegment
emptyKanjiSegment :: QRSegment
emptyKanjiSegment =
  Int -> Int -> QRSegment
encodeBits Int
4 Int
0b1000 forall a. Semigroup a => a -> a -> a
<> (Int, Int, Int) -> Int -> QRSegment
lengthSegment (Int
8, Int
10, Int
12) Int
0