Codecrete.SwissQRBill.WindowsTest.EmfMetaInfo.Read C# (CSharp) Method

Read() private method

private Read ( Array emfFile ) : void
emfFile Array
return void
        private void Read(byte[] emfFile)
        {
            int size = emfFile.Length;
            int offset = 0;

            while (offset < size)
            {
                // decode record header
                var rec = ByteArrayToStructure<EmfRecord>(emfFile, offset);
                NumRecords++;

                if (rec.Type == (int)EmfRecordType.Header)
                {
                    // decode EMF_HEADER
                    var header = ByteArrayToStructure<EmfHeader>(emfFile, offset);
                    Bounds = header.Bounds;
                    Frame = header.Frame;
                    DeviceSizePixel = header.Device;
                    DeviceSizeMillimeter = header.Millimeters;
                    DeviceSizeMicrometer = header.Micrometers;
                }
                else if (rec.Type == (int)EmfRecordType.Comment)
                {
                    // decode EMF_COMMENT
                    var comment = ByteArrayToStructure<EmfComment>(emfFile, offset);
                    if (comment.CommentIdentifier == 0x2B464D45)
                    {
                        // process EMF+ records embedded in comment
                        ProcessEmfPlusRecords(emfFile, offset + 16, offset + 16 + (int)comment.DataSize);
                    }
                }

                offset += (int)rec.Size;
            }
        }