Example #1
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "PointList":
                    ParsePointList(_xmlReader, _scale);
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();
        }
Example #2
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "PointO":
                    points["o"] = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "PointA":
                    points["a"] = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "PointB":
                    points["b"] = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                case "Measure":
                    xmlReader.ReadOuterXml();
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            initializing = false;

            points["o"] = points["o"].Scale(scale.X, scale.Y);
            points["a"] = points["a"].Scale(scale.X, scale.Y);
            points["b"] = points["b"].Scale(scale.X, scale.Y);
            SignalAllTrackablePointsMoved();
        }
Example #3
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "File":
                    filename = xmlReader.ReadElementContentAsString();
                    break;

                case "BoundingBox":
                    RectangleF rect = XmlHelper.ParseRectangleF(xmlReader.ReadElementContentAsString());
                    boundingBox.Rectangle = rect.ToRectangle();
                    break;

                case "Bitmap":
                    bitmap = XmlHelper.ParseImageFromBase64(xmlReader.ReadElementContentAsString());
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();

            if (bitmap != null)
            {
                filename = null;
            }

            if (bitmap == null && !string.IsNullOrEmpty(filename) && File.Exists(filename))
            {
                bitmap = new Bitmap(filename);
            }

            valid = bitmap != null;
        }
Example #4
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "Text":
                    text = xmlReader.ReadElementContentAsString();
                    text = TextHelper.FixMissingCarriageReturns(text);
                    break;

                case "Position":
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    background.Rectangle = new RectangleF(p.Scale(scale.X, scale.Y), SizeF.Empty);
                    break;

                case "ArrowVisible":
                    showArrow = XmlHelper.ParseBoolean(xmlReader.ReadElementContentAsString());
                    break;

                case "ArrowEnd":
                    arrowEnd = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            UpdateLabelRectangle();
        }
Example #5
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "CenterPoint":
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    points["0"] = p.Scale(scale.X, scale.Y);
                    break;

                case "CoordinatesVisible":
                    ShowMeasurableInfo = XmlHelper.ParseBoolean(xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            labelCoordinates.SetAttach(points["0"], true);
            SignalTrackablePointMoved();
        }
Example #6
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "Start":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_StartPoint = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "End":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_EndPoint = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                case "MeasureVisible":
                    m_bShowMeasure = XmlHelper.ParseBoolean(_xmlReader.ReadElementContentAsString());
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();

            m_LabelMeasure.SetAttach(GetMiddlePoint(), true);
        }
Example #7
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "Origin":
                    center = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "Radius":
                    radius = (int)(xmlReader.ReadElementContentAsInt() * scale.X);
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            initializing = false;
        }
Example #8
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "PointO":
                    m_PointO = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    break;

                case "PointA":
                    m_PointA = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    break;

                case "PointB":
                    m_PointB = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();

            m_PointO = new Point((int)((float)m_PointO.X * _scale.X), (int)((float)m_PointO.Y * _scale.Y));
            m_PointA = new Point((int)((float)m_PointA.X * _scale.X), (int)((float)m_PointA.Y * _scale.Y));
            m_PointB = new Point((int)((float)m_PointB.X * _scale.X), (int)((float)m_PointB.Y * _scale.Y));

            ComputeValues();
        }
Example #9
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "File":
                    filename = xmlReader.ReadElementContentAsString();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();

            LoadSVG(filename);
        }
Example #10
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "Text":
                    m_Text = _xmlReader.ReadElementContentAsString();
                    break;

                case "Position":
                    Point p        = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    Point location = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    m_Background.Rectangle = new Rectangle(location, Size.Empty);
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();
        }
Example #11
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "CenterPoint":
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Center = new Point((int)(_scale.X * p.X), (int)(_scale.Y * p.Y));
                    break;

                case "CoordinatesVisible":
                    m_bShowCoordinates = XmlHelper.ParseBoolean(_xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();
            m_LabelCoordinates.SetAttach(m_Center, true);
        }
Example #12
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "Origin":
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Center = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;

                case "Radius":
                    int radius = _xmlReader.ReadElementContentAsInt();
                    m_iRadius = (int)((double)radius * _scale.X);
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();
        }
Example #13
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "Start":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    points["a"] = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "End":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    points["b"] = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "ExtraData":
                {
                    TypeConverter enumConverter = TypeDescriptor.GetConverter(typeof(TrackExtraData));
                    trackExtraData = (TrackExtraData)enumConverter.ConvertFromString(xmlReader.ReadElementContentAsString());
                    break;
                }

                case "MeasureLabel":
                {
                    miniLabel = new MiniLabel(xmlReader, scale);
                    break;
                }

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                case "Measure":
                    xmlReader.ReadOuterXml();
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            initializing       = false;
            measureInitialized = true;
            miniLabel.SetAttach(GetMiddlePoint(), false);
            miniLabel.BackColor = styleHelper.Color;
            SignalAllTrackablePointsMoved();
        }
Example #14
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "PointUpperLeft":
                {
                    quadImage.A = ReadPoint(xmlReader, scale);
                    break;
                }

                case "PointUpperRight":
                {
                    quadImage.B = ReadPoint(xmlReader, scale);
                    break;
                }

                case "PointLowerRight":
                {
                    quadImage.C = ReadPoint(xmlReader, scale);
                    break;
                }

                case "PointLowerLeft":
                {
                    quadImage.D = ReadPoint(xmlReader, scale);
                    break;
                }

                case "Perspective":
                    inPerspective = XmlHelper.ParseBoolean(xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();

            // Sanity check for rectangular constraint.
            if (!inPerspective && !quadImage.IsRectangle)
            {
                inPerspective = true;
            }

            if (inPerspective)
            {
                planeIsConvex = quadImage.IsConvex;
            }

            initialized = true;

            SignalAllTrackablePointsMoved();
        }
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            // The tool id must be read before the point list.

            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();
            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "ToolId":
                    toolId         = new Guid(xmlReader.ReadElementContentAsString());
                    genericPosture = GenericPostureManager.Instanciate(toolId, true);
                    break;

                case "Positions":
                    if (genericPosture != null)
                    {
                        ParsePointList(xmlReader, scale);
                    }
                    else
                    {
                        xmlReader.ReadOuterXml();
                    }
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            SignalAllTrackablePointsMoved();

            if (genericPosture != null)
            {
                Init();
            }
            else
            {
                genericPosture = new GenericPosture("", true, false);
            }
        }
Example #16
0
        private void ReadXml(XmlReader _xmlReader, PointF _scale)
        {
            _xmlReader.ReadStartElement();

            Reset();

            while (_xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (_xmlReader.Name)
                {
                case "PointUpperLeft":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Corners.A = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "PointUpperRight":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Corners.B = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "PointLowerRight":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Corners.C = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "PointLowerLeft":
                {
                    Point p = XmlHelper.ParsePoint(_xmlReader.ReadElementContentAsString());
                    m_Corners.D = new Point((int)((float)p.X * _scale.X), (int)((float)p.Y * _scale.Y));
                    break;
                }

                case "Divisions":
                    m_iDivisions = _xmlReader.ReadElementContentAsInt();
                    break;

                case "Perspective":
                    m_bSupport3D = XmlHelper.ParseBoolean(_xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    m_Style = new DrawingStyle(_xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    m_InfosFading.ReadXml(_xmlReader);
                    break;

                default:
                    string unparsed = _xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            _xmlReader.ReadEndElement();

            // Sanity check for rectangular constraint.
            if (!m_bSupport3D && !m_Corners.IsRectangle)
            {
                m_bSupport3D = true;
            }

            RedefineHomography();
        }
Example #17
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "PointUpperLeft":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    quadImage.A = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "PointUpperRight":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    quadImage.B = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "PointLowerRight":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    quadImage.C = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "PointLowerLeft":
                {
                    PointF p = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    quadImage.D = p.Scale(scale.X, scale.Y);
                    break;
                }

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            initializing = false;
        }
Example #18
0
        public void ReadXml(XmlReader xmlReader, PointF scale, TimestampMapper timestampMapper)
        {
            if (xmlReader.MoveToAttribute("id"))
            {
                identifier = new Guid(xmlReader.ReadContentAsString());
            }

            if (xmlReader.MoveToAttribute("name"))
            {
                name = xmlReader.ReadContentAsString();
            }

            xmlReader.ReadStartElement();

            while (xmlReader.NodeType == XmlNodeType.Element)
            {
                switch (xmlReader.Name)
                {
                case "Origin":
                    center = XmlHelper.ParsePointF(xmlReader.ReadElementContentAsString());
                    break;

                case "Radius":
                    radius = (int)(xmlReader.ReadElementContentAsInt() * scale.X);
                    break;

                case "ExtraData":
                {
                    TypeConverter enumConverter = TypeDescriptor.GetConverter(typeof(TrackExtraData));
                    trackExtraData = (TrackExtraData)enumConverter.ConvertFromString(xmlReader.ReadElementContentAsString());
                    break;
                }

                case "MeasureLabel":
                {
                    miniLabel = new MiniLabel(xmlReader, scale);
                    break;
                }

                case "ShowCenter":
                    showCenter = XmlHelper.ParseBoolean(xmlReader.ReadElementContentAsString());
                    break;

                case "DrawingStyle":
                    style = new DrawingStyle(xmlReader);
                    BindStyle();
                    break;

                case "InfosFading":
                    infosFading.ReadXml(xmlReader);
                    break;

                default:
                    string unparsed = xmlReader.ReadOuterXml();
                    log.DebugFormat("Unparsed content in KVA XML: {0}", unparsed);
                    break;
                }
            }

            xmlReader.ReadEndElement();
            initializing       = false;
            measureInitialized = true;
            miniLabel.SetAttach(center, false);
            miniLabel.BackColor = styleHelper.Color;
        }