public override void Load(System.Xml.XmlNode element) { base.Load(element); UnitsManager unitMng = new UnitsManager(); // Load info XmlNode node = element.SelectSingleNode("Info"); if (node != null) { this.Description = node.Attributes["Description"].Value; } // Load page size node = element.SelectSingleNode("Size"); if (node != null) { MeasureUnit = unitMng.StringToUnit(node.Attributes["Width"].Value); WidthInUnits = (float)(System.Convert.ToDouble(node.Attributes["Width"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); HeightInUnits = (float)(System.Convert.ToDouble(node.Attributes["Height"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); } else { // set default sizes MeasureUnit = MeasureUnits.cm; WidthInUnits = (float)unitMng.ConvertUnit(19, MeasureUnits.cm, MeasureUnits.point); HeightInPixels = (float)unitMng.ConvertUnit(21, MeasureUnits.cm, MeasureUnits.point); } // Load fill color node = element.SelectSingleNode("FillColor"); if (node != null) { try { int r = Convert.ToInt32(node.Attributes["R"].Value); int g = Convert.ToInt32(node.Attributes["G"].Value); int b = Convert.ToInt32(node.Attributes["B"].Value); int a = Convert.ToInt32(node.Attributes["A"].Value); this.FillColor = Color.FromArgb(a, r, g, b); } catch { } } // Load BackgroundImageName node = element.SelectSingleNode("BackgroundImage"); if (node != null) { this.imageName = node.Attributes["Name"].Value; } // load embedded image if available node = element.SelectSingleNode("EmbeddedImage"); if (node != null) { if (node.InnerText != null && node.InnerText.Length > 0) { this.imageData = Convert.FromBase64String(node.InnerText); pictureForDisplay = Bitmap.FromStream(new MemoryStream(this.imageData)); } } // Load none balloons items node = element.SelectSingleNode("Items"); if(node != null) { foreach(XmlNode childNode in node.ChildNodes) { if(childNode.Name == "Item") { // this is not valid for generator but this can be loaded into editor string itemType = childNode.Attributes["Type"].Value; EditorItem newItem = ReportPage.CreateItemFromType(itemType); newItem.Load(childNode); newItem.Parent = this; //Children.Add(newItem); } } } // Load balloons node = element.SelectSingleNode("Balloons"); if (node != null) { foreach(XmlNode balloonNode in node.ChildNodes) { if (balloonNode.Name == "Balloon") { string tmpType; tmpType = balloonNode.Attributes["Type"].Value; if (tmpType == "Static") { StaticBalloon child = new StaticBalloon(); //child.Parent = this; child.Load(balloonNode); child.Parent = this; //Children.Add(child); } else if (tmpType == "Dynamic") { DynamicBalloon child = new DynamicBalloon(); //child.Parent = this; child.Load(balloonNode); child.Parent = this; //Children.Add(child); } } else if (balloonNode.Name == "Item") { // this is not valid for generator but this can be loaded into editor string itemType = balloonNode.Attributes["Type"].Value; EditorItem newItem = ReportPage.CreateItemFromType(itemType); newItem.Load(balloonNode); newItem.Parent = this; //Children.Add(newItem); } } } }
/// <summary> /// How this item is loaded /// </summary> /// <param name="node"></param> public virtual void Load(System.Xml.XmlNode element) { UnitsManager unitMng = new UnitsManager(); // load name XmlAttribute attr = (XmlAttribute)element.Attributes.GetNamedItem("Name"); if (attr != null) { this.Name = attr.Value; } // Load location if available XmlNode locationNode = element.SelectSingleNode("Location"); if (locationNode != null) { this.MeasureUnit = unitMng.StringToUnit(locationNode.Attributes["PositionX"].Value); this.LocationInUnitsX = (float)(System.Convert.ToDouble(locationNode.Attributes["PositionX"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); this.LocationInUnitsY = (float)(System.Convert.ToDouble(locationNode.Attributes["PositionY"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); } // Load dimensions and shape definition XmlNode shapeNode = element.SelectSingleNode("Shape"); if (shapeNode != null) { string shapeType = shapeNode.Attributes["Type"].Value; if (shapeType == "Rectangle") { // load width and height XmlNode dimensionNode = shapeNode.SelectSingleNode("Dimensions"); if (dimensionNode != null) { this.WidthInUnits = (float)(System.Convert.ToDouble(dimensionNode.Attributes["Width"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); this.HeightInUnits = (float)(System.Convert.ToDouble(dimensionNode.Attributes["Height"].Value.TrimEnd(unitMng.UnitToString(MeasureUnit).ToCharArray()))); } } } // Load scale XmlNode scaleNode = element.SelectSingleNode("Scale"); if (scaleNode != null) { MeasureUnits mUnit = unitMng.StringToUnit(scaleNode.Attributes["x"].Value); this.ScaleXFactor = (float)(System.Convert.ToDouble(scaleNode.Attributes["x"].Value.TrimEnd(unitMng.UnitToString(mUnit).ToCharArray()))); this.ScaleYFactor = (float)(System.Convert.ToDouble(scaleNode.Attributes["y"].Value.TrimEnd(unitMng.UnitToString(mUnit).ToCharArray()))); } // Load Transformation XmlNode transNode = element.SelectSingleNode("Transformation"); if (transNode != null) { TransformationMatrix.Elements[0] = (float)System.Convert.ToDouble(transNode.Attributes["a"].Value); TransformationMatrix.Elements[1] = (float)System.Convert.ToDouble(transNode.Attributes["b"].Value); TransformationMatrix.Elements[2] = (float)System.Convert.ToDouble(transNode.Attributes["c"].Value); TransformationMatrix.Elements[3] = (float)System.Convert.ToDouble(transNode.Attributes["d"].Value); } // Load Rotation XmlNode rotationNode = element.SelectSingleNode("Rotation"); if(rotationNode != null) { this.RotationAngle = Convert.ToInt16(rotationNode.Attributes[0].Value); } // load width in pixels and height in pixels as editor works with those XmlNode widthInPixelsNode = element.SelectSingleNode("WidthInPixels"); if (widthInPixelsNode != null) { this.WidthInPixels = (float) Convert.ToDouble(widthInPixelsNode.Attributes[0].Value); } XmlNode heightInPixelsNode = element.SelectSingleNode("HeightInPixels"); if (heightInPixelsNode != null) { this.HeightInPixels = (float) Convert.ToDouble(heightInPixelsNode.Attributes[0].Value); } // Load dock position XmlNode dockPos = element.SelectSingleNode("DockPosition"); if (dockPos != null) { this.DockPositionString = dockPos.Attributes["Dock"].Value; } // load anchor property XmlNode anchorNode = element.SelectSingleNode("Anchor"); if(anchorNode != null) { if(this.anchor == null) this.anchor = new Anchor(this); this.ItemAnchor.TopAnchor = Convert.ToBoolean(anchorNode.Attributes["Top"].Value); this.ItemAnchor.Bottomanchor = Convert.ToBoolean(anchorNode.Attributes["Bottom"].Value); this.ItemAnchor.LeftAnchor = Convert.ToBoolean(anchorNode.Attributes["Left"].Value); this.ItemAnchor.RightAnchor = Convert.ToBoolean(anchorNode.Attributes["Right"].Value); } this.commands.Clear(); if(this is EditorProject || this is ReportPage) { } else { EditorItemFactory.Instance.CreateItem(this); } }