...

Package huffman

Overview ▾

Package huffman contains jbig2 huffman tables used to decode jbig2 encoded data segments.

Index ▾

type BasicTabler
type Code
    func NewCode(prefixLength, rangeLength, rangeLow int32, isLowerRange bool) *Code
    func (c *Code) String() string
type EncodedTable
    func NewEncodedTable(table BasicTabler) (*EncodedTable, error)
    func (e *EncodedTable) Decode(r bitwise.StreamReader) (int64, error)
    func (e *EncodedTable) InitTree(codeTable []*Code) error
    func (e *EncodedTable) RootNode() *InternalNode
    func (e *EncodedTable) String() string
type FixedSizeTable
    func NewFixedSizeTable(codeTable []*Code) (*FixedSizeTable, error)
    func (f *FixedSizeTable) Decode(r bitwise.StreamReader) (int64, error)
    func (f *FixedSizeTable) InitTree(codeTable []*Code) error
    func (f *FixedSizeTable) RootNode() *InternalNode
    func (f *FixedSizeTable) String() string
type InternalNode
    func (i *InternalNode) Decode(r bitwise.StreamReader) (int64, error)
    func (i *InternalNode) String() string
type Node
type OutOfBandNode
    func (o *OutOfBandNode) Decode(r bitwise.StreamReader) (int64, error)
    func (o *OutOfBandNode) String() string
type StandardTable
    func (s *StandardTable) Decode(r bitwise.StreamReader) (int64, error)
    func (s *StandardTable) InitTree(codeTable []*Code) error
    func (s *StandardTable) RootNode() *InternalNode
    func (s *StandardTable) String() string
type Tabler
    func GetStandardTable(number int) (Tabler, error)
type ValueNode
    func (v *ValueNode) Decode(r bitwise.StreamReader) (int64, error)
    func (v *ValueNode) String() string

Package files

doc.go encoded_table.go fixed_size_table.go node.go standard_table.go table.go

type BasicTabler

BasicTabler is the interface common for the huffman tables.

type BasicTabler interface {
    HtHigh() int32
    HtLow() int32
    StreamReader() bitwise.StreamReader
    HtPS() int32
    HtRS() int32
    HtOOB() int32
}

type Code

Code is the model for the huffman table code.

type Code struct {
    // contains filtered or unexported fields
}

func NewCode

func NewCode(prefixLength, rangeLength, rangeLow int32, isLowerRange bool) *Code

NewCode creates new huffman code.

func (*Code) String

func (c *Code) String() string

String implements Stringer interface.

type EncodedTable

EncodedTable is a model for the encoded huffman table.

type EncodedTable struct {
    BasicTabler
    // contains filtered or unexported fields
}

func NewEncodedTable

func NewEncodedTable(table BasicTabler) (*EncodedTable, error)

NewEncodedTable creates new encoded table from the provided 'table' argument.

func (*EncodedTable) Decode

func (e *EncodedTable) Decode(r bitwise.StreamReader) (int64, error)

Decode implenets Node interface.

func (*EncodedTable) InitTree

func (e *EncodedTable) InitTree(codeTable []*Code) error

InitTree implements Tabler interface.

func (*EncodedTable) RootNode

func (e *EncodedTable) RootNode() *InternalNode

RootNode Implements Tabler interface.

func (*EncodedTable) String

func (e *EncodedTable) String() string

String implements Stringer interface.

type FixedSizeTable

FixedSizeTable defines the table with the fixed size.

type FixedSizeTable struct {
    // contains filtered or unexported fields
}

func NewFixedSizeTable

func NewFixedSizeTable(codeTable []*Code) (*FixedSizeTable, error)

NewFixedSizeTable creates new fixedSizeTable.

func (*FixedSizeTable) Decode

func (f *FixedSizeTable) Decode(r bitwise.StreamReader) (int64, error)

Decode implements Tabler interface.

func (*FixedSizeTable) InitTree

func (f *FixedSizeTable) InitTree(codeTable []*Code) error

InitTree implements Tabler interface.

func (*FixedSizeTable) RootNode

func (f *FixedSizeTable) RootNode() *InternalNode

RootNode implements Tabler interface.

func (*FixedSizeTable) String

func (f *FixedSizeTable) String() string

String implements Stringer interface.

type InternalNode

InternalNode represents an internal node of a huffman tree. It is defined as a pair of two child nodes 'zero' and 'one' and a 'depth' level. Implements Node interface.

type InternalNode struct {
    // contains filtered or unexported fields
}

func (*InternalNode) Decode

func (i *InternalNode) Decode(r bitwise.StreamReader) (int64, error)

Decode implements Node interface.

func (*InternalNode) String

func (i *InternalNode) String() string

String implements the Stringer interface.

type Node

Node is the interface defined for all huffman tree nodes.

type Node interface {
    Decode(r bitwise.StreamReader) (int64, error)
    String() string
}

type OutOfBandNode

OutOfBandNode represents an out of band node in a huffman tree.

type OutOfBandNode struct{}

func (*OutOfBandNode) Decode

func (o *OutOfBandNode) Decode(r bitwise.StreamReader) (int64, error)

Decode implements Node interface. Decodes the out of band node by returning max int64 value.

func (*OutOfBandNode) String

func (o *OutOfBandNode) String() string

String implements the Stringer interface returns the max int binary value.

type StandardTable

StandardTable is the structure that defines standard jbig2 table.

type StandardTable struct {
    // contains filtered or unexported fields
}

func (*StandardTable) Decode

func (s *StandardTable) Decode(r bitwise.StreamReader) (int64, error)

Decode implements Node interface.

func (*StandardTable) InitTree

func (s *StandardTable) InitTree(codeTable []*Code) error

InitTree implements Tabler interface.

func (*StandardTable) RootNode

func (s *StandardTable) RootNode() *InternalNode

RootNode implements Tabler interface.

func (*StandardTable) String

func (s *StandardTable) String() string

String implements Stringer interface.

type Tabler

Tabler is the interface for all types of the huffman tables.

type Tabler interface {
    Decode(r bitwise.StreamReader) (int64, error)
    InitTree(codeTable []*Code) error
    String() string
    RootNode() *InternalNode
}

func GetStandardTable

func GetStandardTable(number int) (Tabler, error)

GetStandardTable gets the standard table for the given 'number'.

type ValueNode

ValueNode represents a value node in a huffman tree. It is a leaf of a tree.

type ValueNode struct {
    // contains filtered or unexported fields
}

func (*ValueNode) Decode

func (v *ValueNode) Decode(r bitwise.StreamReader) (int64, error)

Decode implements Node interface.

func (*ValueNode) String

func (v *ValueNode) String() string

String implements Stringer interface.