internal NikonPreview(byte[] buffer) { Debug.Assert(buffer.Length > 32); NikonBufferStream stream = new NikonBufferStream(buffer); _width = stream.Read2(); _height = stream.Read2(); _focusPoint = stream.Read1(); _orientation = (NikonOrientation)stream.Read1(); _quality = (NikonPreviewQuality)stream.Read1(); _cropMode = (NikonPreviewCropMode)stream.Read1(); _AFType = (NikonPreviewAFType)stream.Read1(); _focusControlAreaInfo = new byte[8]; stream.Read(_focusControlAreaInfo, _focusControlAreaInfo.Length); _focusInfo = (NikonPreviewFocusInformation)stream.Read1(); _AFAreaWidth = stream.Read2(); _AFAreaHeight = stream.Read2(); _contrastAFPosX = stream.Read2(); _contrastAFPosY = stream.Read2(); _constrastAFAreaX = stream.Read2(); _constrastAFAreaY = stream.Read2(); stream.Skip(2); // Skip 2 reserved bytes Debug.Assert(stream.Position == 32); _jpegBuffer = new byte[buffer.Length - stream.Position]; stream.Read(_jpegBuffer, _jpegBuffer.Length); }