Ejemplo n.º 1
0
        public C3dWriter(C3dReader copyMetadataFrom, bool eventsEnabled = false)
            : this(
                copyMetadataFrom.Labels.ToArray <string>(),
                copyMetadataFrom.Header.FrameRate,
                copyMetadataFrom.AnalogLabels.ToArray <string>(),
                copyMetadataFrom.Header.AnalogSamplingRate,
                eventsEnabled)
        {
            _header.SetHeader(copyMetadataFrom.Header.GetRawData());

            foreach (Parameter p in copyMetadataFrom.AllParameters)
            {
                string groupName = copyMetadataFrom.GetGroupName(p);
                CreateGroupIfNotExist(groupName);

                ParameterGroup grp = _nameToGroups[groupName];

                if (!grp.HasParameter(p.Name))
                {
                    Parameter newParam = p.Clone();
                    if (_fs == null)
                    {
                        grp.Parameters.Add(newParam);
                    }
                    else
                    {
                        throw new ApplicationException("Cannot create a parameter " + newParam.Name + " after file was open.");
                    }
                }
                else
                {
                    Parameter param = grp.GetParameter(p.Name);
                    param.CopyDataFrom(p);
                }

                // if file is open and we are modifieng an existig an parameter - update changes.
                if (_fs != null && p.OffsetInFile > 0)
                {
                    UpdateParameter(p);
                }
            }
        }