Hjg.Pngcs.PngWriter.encodeRowFromByte C# (CSharp) Method

encodeRowFromByte() protected method

protected encodeRowFromByte ( byte row ) : void
row byte
return void
        protected void encodeRowFromByte(byte[] row)
        {
            if (row.Length == ImgInfo.SamplesPerRowPacked && !needsPack) {
                // some duplication of code - because this case is typical and it works faster this way
                int j = 1;
                if (ImgInfo.BitDepth <= 8) {
                    foreach (byte x in row) { // optimized
                        rowb[j++] = x;
                    }
                } else { // 16 bitspc
                    foreach (byte x in row) { // optimized
                        rowb[j] = x;
                        j += 2;
                    }
                }
            } else {
                // perhaps we need to pack?
                if (row.Length >= ImgInfo.SamplesPerRow && needsPack)
                    ImageLine.packInplaceByte(ImgInfo, row, row, false); // row is packed in place!
                if (ImgInfo.BitDepth <= 8) {
                    for (int i = 0, j = 1; i < ImgInfo.SamplesPerRowPacked; i++) {
                        rowb[j++] = row[i];
                    }
                } else { // 16 bitspc
                    for (int i = 0, j = 1; i < ImgInfo.SamplesPerRowPacked; i++) {
                        rowb[j++] = row[i];
                        rowb[j++] = 0;
                    }
                }

            }
        }