System.IO.Compression.FastEncoderWindow.CopyBytes C# (CSharp) Method

CopyBytes() public method

public CopyBytes ( byte inputBuffer, int startIndex, int count ) : void
inputBuffer byte
startIndex int
count int
return void
        public void CopyBytes(byte[] inputBuffer, int startIndex, int count) {
            Array.Copy(inputBuffer, startIndex, this.window, this.bufEnd, count);
            this.bufEnd += count;
        }

Usage Example

        // maxBytesToCopy limits the number of bytes we can copy from input. Set to any value < 1 if no limit
        private void GetCompressedOutput(DeflateInput input, OutputBuffer output, int maxBytesToCopy)
        {
            // snapshot for compression ratio stats
            int bytesWrittenPre        = output.BytesWritten;
            int bytesConsumedFromInput = 0;
            int inputBytesPre          = BytesInHistory + input.Count;

            do
            {
                // read more input data into the window if there is space available
                int bytesToCopy = (input.Count < inputWindow.FreeWindowSpace) ?
                                  input.Count : inputWindow.FreeWindowSpace;
                if (maxBytesToCopy >= 1)
                {
                    bytesToCopy = Math.Min(bytesToCopy, maxBytesToCopy - bytesConsumedFromInput);
                }
                if (bytesToCopy > 0)
                {
                    // copy data into history window
                    inputWindow.CopyBytes(input.Buffer, input.StartIndex, bytesToCopy);
                    input.ConsumeBytes(bytesToCopy);
                    bytesConsumedFromInput += bytesToCopy;
                }

                GetCompressedOutput(output);
            } while (SafeToWriteTo(output) && InputAvailable(input) && (maxBytesToCopy < 1 || bytesConsumedFromInput < maxBytesToCopy));

            // determine compression ratio, save
            int bytesWrittenPost   = output.BytesWritten;
            int bytesWritten       = bytesWrittenPost - bytesWrittenPre;
            int inputBytesPost     = BytesInHistory + input.Count;
            int totalBytesConsumed = inputBytesPre - inputBytesPost;

            if (bytesWritten != 0)
            {
                lastCompressionRatio = (double)bytesWritten / (double)totalBytesConsumed;
            }
        }