mirror of
https://github.com/tsolomko/SWCompression.git
synced 2026-06-23 14:56:41 +00:00
Small improvement to EncHuffTree.code function
This commit is contained in:
@@ -75,11 +75,12 @@ class BitWriter {
|
||||
}
|
||||
}
|
||||
|
||||
func write(number: Int, bitsCount: Int) {
|
||||
var mask = bitOrder == .straight ? 1 << (bitsCount - 1) : 1
|
||||
func write(number: Int, bitsCount: Int, bitOrder: BitReader.BitOrder? = nil) {
|
||||
let bitOrderToUse = (bitOrder ?? self.bitOrder)
|
||||
var mask = bitOrderToUse == .straight ? 1 << (bitsCount - 1) : 1
|
||||
for _ in 0..<bitsCount {
|
||||
self.write(bit: number & mask > 0 ? 1 : 0)
|
||||
switch bitOrder {
|
||||
switch bitOrderToUse {
|
||||
case .straight:
|
||||
mask >>= 1
|
||||
case .reversed:
|
||||
|
||||
@@ -61,14 +61,7 @@ class EncodingHuffmanTree {
|
||||
guard codingIndex[0] > -1
|
||||
else { fatalError("Symbol is not found.") }
|
||||
|
||||
var treeCode = codingIndex[0]
|
||||
let bits = codingIndex[1]
|
||||
|
||||
for _ in 0..<bits {
|
||||
let bit = treeCode & 1
|
||||
self.bitWriter.write(bit: bit == 0 ? 0 : 1)
|
||||
treeCode >>= 1
|
||||
}
|
||||
self.bitWriter.write(number: codingIndex[0], bitsCount: codingIndex[1], bitOrder: .reversed)
|
||||
}
|
||||
|
||||
func bitSize(for stats: [Int]) -> Int {
|
||||
|
||||
Reference in New Issue
Block a user