func CreateXmlIONodePosHint(n bh.NodeIf, path string) (xmln *backend.XmlNodePosHint) { if len(path) == 0 { xmln = backend.XmlNodePosHintNew(n.Name()) } else { xmln = backend.XmlNodePosHintNew(fmt.Sprintf("%s/%s", path, n.Name())) } empty := image.Point{} for _, p := range n.PathList() { for _, m := range gr.ValidModes { xmlp := string(gr.CreatePathMode(p, m)) pos := n.PathModePosition(p, m) if pos != empty { xmln.Entry = append(xmln.Entry, *backend.XmlModeHintEntryNew(xmlp, pos.X, pos.Y)) } } } for _, p := range n.InPorts() { xmlp := backend.XmlPortPosHintNew(p.Name()) xmlp.Entry = freesp.CreateXmlModePosition(p).Entry xmln.InPorts = append(xmln.InPorts, *xmlp) } for _, p := range n.OutPorts() { xmlp := backend.XmlPortPosHintNew(p.Name()) xmlp.Entry = freesp.CreateXmlModePosition(p).Entry xmln.OutPorts = append(xmln.OutPorts, *xmlp) } return }