示例#1
0
        /// <summary>
        /// Reads the "FileHeader" section which contains the list of components that
        /// exist in the current library file.
        /// </summary>
        /// <returns></returns>
        private List <string> ReadFileHeader()
        {
            var refNames = new List <string>();

            BeginContext("FileHeader");

            using (var reader = Cf.GetStream("FileHeader").GetBinaryReader())
            {
                var parameters = ReadBlock(reader, size => ReadParameters(reader, size));
                Header = new SchLibHeader();
                Header.ImportFromParameters(parameters);

                if (reader.BaseStream.Position == reader.BaseStream.Length)
                {
                    // If we're at the end of the stream then read components
                    // from the parameters list
                    refNames.AddRange(Header.Comp.Select(c => c.LibRef));
                }
                else
                {
                    // Otherwise we can read the binary list of components
                    var count = reader.ReadUInt32();
                    for (var i = 0; i < count; ++i)
                    {
                        var componentRefName = ReadStringBlock(reader);
                        refNames.Add(componentRefName);
                    }
                }
            }

            EndContext();

            return(refNames);
        }
示例#2
0
        /// <summary>
        /// Reads the "FileHeader" section which contains the list of components that
        /// exist in the current library file.
        /// </summary>
        /// <returns></returns>
        private IEnumerable <string> ReadFileHeader()
        {
            var refNames = new List <string>();

            BeginContext("FileHeader");

            using (var reader = Cf.GetStream("FileHeader").GetBinaryReader())
            {
                var parameters = ReadBlock(reader, size => ReadParameters(reader, size));
                Data.Header.ImportFromParameters(parameters);

                if (reader.BaseStream.Position == reader.BaseStream.Length)
                {
                    // If we're at the end of the stream then read components
                    // from the parameters list
                    var comps = Enumerable.Range(0, parameters["COMPCOUNT"].AsIntOrDefault())
                                .Select(i => parameters[$"LIBREF{i}"].AsStringOrDefault());
                    refNames.AddRange(comps);
                }
                else
                {
                    // Otherwise we can read the binary list of components
                    var count = reader.ReadUInt32();
                    for (var i = 0; i < count; ++i)
                    {
                        var componentRefName = ReadStringBlock(reader);
                        refNames.Add(componentRefName);
                    }
                }
            }

            EndContext();

            return(refNames);
        }
示例#3
0
        /// <summary>
        /// Reads the "FileHeader" section which contains the primitives that
        /// exist in the current document.
        /// </summary>
        /// <returns></returns>
        private void ReadFileHeader()
        {
            BeginContext("FileHeader");

            using (var reader = Cf.GetStream("FileHeader").GetBinaryReader())
            {
                var parameters = ReadBlock(reader, size => ReadParameters(reader, size));
                var weight     = parameters["WEIGHT"].AsIntOrDefault();

                ReadPrimitives(reader);
            }

            EndContext();
        }
示例#4
0
        /// <summary>
        /// Reads the "FileHeader" section which contains the primitives that
        /// exist in the current document.
        /// </summary>
        private void ReadFileHeader()
        {
            BeginContext("FileHeader");

            using (var reader = Cf.GetStream("FileHeader").GetBinaryReader())
            {
                var parameters = ReadBlock(reader, size => ReadParameters(reader, size));
                var weight     = parameters["WEIGHT"].AsIntOrDefault();

                var primitives = ReadPrimitives(reader, null, null, null, null);
                Data.Items.AddRange(primitives);

                AssignOwners(primitives);
            }

            EndContext();
        }