/// <summary> /// Will calculate everything and make it ready for writing /// </summary> public void Finish() { if (Values.Count == 0) { return; } Metadata = BlockyMetadata.FromData(Values); Metadata.MaxNeededBitsNeededBitsNumber = Utility.GetNeededBits(Metadata.MaxNeededBitsNumber); _blockfinding = new Blockfinding.Blockfinding(Values, Metadata); Blocks = _blockfinding.FindAllBlocks(); PostCompressionOptimisation(); //Todo: make optional Write(); }
public Block(int index, short exponent, byte nb, bool isSignNegative, long biggestNumber, Blockfinding.Blockfinding context, Blockfinding.Blockfinding.Methods method, bool hasPattern) { Index = index; HasExponent = exponent != 0; HasPattern = hasPattern; Pattern = PatternType.Same; Method = context.GetInitializedMethod(method); Exponent = exponent; NeededBits = nb; AbsoluteSign = true; IsSignNegative = isSignNegative; BiggestNumber = biggestNumber; OverrideGlobalNb = false; Length = 0; }