internal void Put(Deflate d) { int flag = 0; if (text) { flag |= 1; // FTEXT } if (fhcrc) { flag |= 2; // FHCRC } if (extra != null) { flag |= 4; // FEXTRA } if (name != null) { flag |= 8; // FNAME } if (comment != null) { flag |= 16; // FCOMMENT } int xfl = 0; if (d.level == JZlib.Z_BEST_SPEED) { xfl |= 4; } else if (d.level == JZlib.Z_BEST_COMPRESSION) { xfl |= 2; } d.Put_short(unchecked ((short)0x8b1f)); // ID1 ID2 d.Put_byte((byte)8); // CM(Compression Method) d.Put_byte((byte)flag); d.Put_byte((byte)mtime); d.Put_byte((byte)(mtime >> 8)); d.Put_byte((byte)(mtime >> 16)); d.Put_byte((byte)(mtime >> 24)); d.Put_byte((byte)xfl); d.Put_byte((byte)os); if (extra != null) { d.Put_byte((byte)extra.Length); d.Put_byte((byte)(extra.Length >> 8)); d.Put_byte(extra, 0, extra.Length); } if (name != null) { d.Put_byte(name, 0, name.Length); d.Put_byte((byte)0); } if (comment != null) { d.Put_byte(comment, 0, comment.Length); d.Put_byte((byte)0); } }