public static IList <DGMODEL.Drawing> LoadFromXML(Client client, SXL.XDocument xmldoc) { var pagedatas = DirectedGraphBuilder.LoadPageDataFromXML(client, xmldoc); // STOP IF ANY ERRORS int num_errors = pagedatas.Select(pagedata => pagedata.Errors.Count).Sum(); if (num_errors > 1) { foreach (var pagedata in pagedatas) { foreach (var error in pagedata.Errors) { client.WriteVerbose(error.Text); } client.WriteVerbose("Errors encountered in shape data. Stopping."); } } // DRAW EACH PAGE foreach (var pagedata in pagedatas) { client.WriteVerbose("Creating shape AutoLayout nodes"); foreach (var shape_info in pagedata.ShapeInfos) { var dg_shape = pagedata.DirectedGraph.AddShape(shape_info.ID, shape_info.Label, shape_info.Stencil, shape_info.Master); dg_shape.URL = shape_info.URL; dg_shape.CustomProperties = new Dictionary <string, VACUSTPROP.CustomPropertyCells>(); foreach (var kv in shape_info.custprops) { dg_shape.CustomProperties[kv.Key] = kv.Value; } } client.WriteVerbose("Creating connector AutoLayout nodes"); foreach (var con_info in pagedata.ConnectorInfos) { var def_connector_type = VACONNECT.ConnectorType.Curved; var connectory_type = def_connector_type; var from_shape = pagedata.DirectedGraph.Shapes.Find(con_info.From); var to_shape = pagedata.DirectedGraph.Shapes.Find(con_info.To); var def_con_color = new Drawing.ColorRGB(0x000000); var def_con_weight = 1.0 / 72.0; var def_end_arrow = 2; var dg_connector = pagedata.DirectedGraph.AddConnection(con_info.ID, from_shape, to_shape, con_info.Label, connectory_type); dg_connector.Cells = new DOM.ShapeCells(); dg_connector.Cells.LineColor = con_info.Element.AttributeAsColor("color", def_con_color).ToFormula(); dg_connector.Cells.LineWeight = con_info.Element.AttributeAsInches("weight", def_con_weight); dg_connector.Cells.EndArrow = def_end_arrow; } client.WriteVerbose("Rendering AutoLayout..."); } client.WriteVerbose("Finished rendering AutoLayout"); var directedgraphs = pagedatas.Select(pagedata => pagedata.DirectedGraph).ToList(); return(directedgraphs); }
public static Drawing.ColorRGB AttributeAsColor(this SXL.XElement el, string name, Drawing.ColorRGB def) { return(XmlUtil.GetAttributeValue(el, name, def, Drawing.ColorRGB.ParseWebColor)); }
public static IList<DGMODEL.Drawing> LoadFromXML(Client client, SXL.XDocument xmldoc) { var pagedatas = DirectedGraphBuilder.LoadPageDataFromXML(client, xmldoc); // STOP IF ANY ERRORS int num_errors = pagedatas.Select(pagedata => pagedata.Errors.Count).Sum(); if (num_errors > 1) { foreach (var pagedata in pagedatas) { foreach (var error in pagedata.Errors) { client.WriteVerbose( error.Text); } client.WriteVerbose( "Errors encountered in shape data. Stopping."); } } // DRAW EACH PAGE foreach (var pagedata in pagedatas) { client.WriteVerbose( "Creating shape AutoLayout nodes"); foreach (var shape_info in pagedata.ShapeInfos) { var dg_shape = pagedata.DirectedGraph.AddShape(shape_info.ID, shape_info.Label, shape_info.Stencil, shape_info.Master); dg_shape.URL = shape_info.URL; dg_shape.CustomProperties = new Dictionary<string, VACUSTPROP.CustomPropertyCells>(); foreach (var kv in shape_info.custprops) { dg_shape.CustomProperties[kv.Key] = kv.Value; } } client.WriteVerbose( "Creating connector AutoLayout nodes"); foreach (var con_info in pagedata.ConnectorInfos) { var def_connector_type = VACONNECT.ConnectorType.Curved; var connectory_type = def_connector_type; var from_shape = pagedata.DirectedGraph.Shapes.Find(con_info.From); var to_shape = pagedata.DirectedGraph.Shapes.Find(con_info.To); var def_con_color = new Drawing.ColorRGB(0x000000); var def_con_weight = 1.0/72.0; var def_end_arrow = 2; var dg_connector = pagedata.DirectedGraph.AddConnection(con_info.ID, from_shape, to_shape, con_info.Label, connectory_type); dg_connector.Cells = new DOM.ShapeCells(); dg_connector.Cells.LineColor = con_info.Element.AttributeAsColor("color", def_con_color).ToFormula(); dg_connector.Cells.LineWeight = con_info.Element.AttributeAsInches("weight", def_con_weight); dg_connector.Cells.EndArrow = def_end_arrow; } client.WriteVerbose( "Rendering AutoLayout..."); } client.WriteVerbose( "Finished rendering AutoLayout"); var directedgraphs = pagedatas.Select(pagedata => pagedata.DirectedGraph).ToList(); return directedgraphs; }