All Downloads are FREE. Search and download functionalities are using the official Maven repository.

izumi.fundamentals.graphs.ui.GVR.scala Maven / Gradle / Ivy

//package izumi.fundamentals.graphs.ui
//
//import java.util
//
//import guru.nidi.graphviz.attribute.Rank.RankDir
//import guru.nidi.graphviz.attribute.{Color, Rank}
//import guru.nidi.graphviz.engine.{Format, Graphviz}
//import guru.nidi.graphviz.model.Factory._
//import guru.nidi.graphviz.model.LinkSource
//import izumi.fundamentals.graphs.GraphImpl.DirectedGraphSucc
//import izumi.fundamentals.graphs.GraphImpl.DirectedGraphSucc
//import izumi.fundamentals.graphs.NodeShow
//
//
//object GVR {
//
//  def render[N: NodeShow, M: NodeShow](
//                                        input: DirectedGraphSucc[N, M],
//                                        locationPolicy: LocationPolicy,
//                                        onClose: () => Unit,
//                                        name: Option[String] = None
//                                      ): Unit = {
//    val NS = implicitly[NodeShow[N]]
//
//    import scala.jdk.CollectionConverters._
//
//    val nodes: util.List[LinkSource] = input.successors.links.map {
//      case (p, s) =>
//        node(NS.show(p)).link(s.map(NS.show).toSeq*).asInstanceOf[LinkSource]
//    }.toList.asJava
//
//    val fg = Color.rgb("dddddd")
//    val ln = Color.rgb("00aa00")
//    val bg = Color.rgb("222222")
//
//    val ga = graph("dump")
//      .directed()
//      .linkAttr()
//      .`with`(
//        ln,
//        ln.fill(),
//        fg.font(),
//        fg.labelFont(),
//      )
//      .nodeAttr()
//      .`with`(
//        ln,
//        fg.font(),
//        fg.labelFont(),
//      )
//      .graphAttr()
//      .`with`(
//        Rank.dir(RankDir.TOP_TO_BOTTOM),
//
//        bg.background(),
//        fg.font(),
//        fg.labelFont(),
//        fg.fill(),
//        fg.radial(),
//      )
//      .`with`(nodes)
//
//    val image = Graphviz.fromGraph(ga)
//      .height(800)
//      .render(Format.PNG)
//      .toImage
//
//    SwingTheme.setDark()
//
//    val win = new PngWindow(image, onClose, name)
//    val pos = locationPolicy.nextLocation((image.getWidth, image.getHeight))
//    win.setLocation(pos._1, pos._2)
//    win.setVisible(true)
//
//  }
//}
//
//




© 2015 - 2024 Weber Informatics LLC | Privacy Policy