Example: Custom converter from graph tree (graphNodeCustom) to DGML

 

/// <summary>
 /// Custom implementation of <see cref="graphNodeCustom"/> to DGML converter
 /// </summary>
 /// <seealso cref="imbSCI.Graph.Converters.graphToDirectedGraphConverterBase{imbSCI.Data.collection.graph.IGraphNode}" />
 public class pipelineSubjectGraphConverter : graphToDirectedGraphConverterBase<pipelineTaskSubjectContentToken>
 {
     public pipelineSubjectGraphConverter() : base() {

         setup = new GraphStylerSettings();
         setup.GraphDirection = imbSCI.Graph.DGML.enums.GraphDirectionEnum.LeftToRight;
         setup.GraphLayout = imbSCI.Graph.DGML.enums.GraphLayoutEnum.DependencyMatrix;
         setup.alphaMin = 0.7;
         

         setup.NodeGradient = new ColorGradient("#FF195ac5", "#FF195ac5", ColorGradientFunction.AtoB | ColorGradientFunction.Hue | ColorGradientFunction.CircleCCW);
         setup.LinkGradient = new ColorGradient("#FF6c6c6c", "#FF6c6c6c", ColorGradientFunction.AllAToB);

         Deploy(setup);
     }


     public override string GetCategoryID(pipelineTaskSubjectContentToken nodeOrLink)
     {
         if (nodeOrLink == null) return "null";
         return nodeOrLink.GetType().Name;
     }

     public override int GetTypeID(pipelineTaskSubjectContentToken nodeOrLink)
     {
         if (nodeOrLink == null) return 0;
         return nodeOrLink.GetType().GetHashCode();
     }

     public override double GetNodeWeight(pipelineTaskSubjectContentToken node)
     {
         if (node == null) return 0;
         return 1;
     }

     public override double GetLinkWeight(pipelineTaskSubjectContentToken nodeA, pipelineTaskSubjectContentToken nodeB)
     {
         if (nodeA == null) return 0;
         if (nodeB == null) return 0;
         return 1;
     }
 }

 

 

Spread the love