예제 #1
0
func CreateXmlInChannel(ch pf.ChannelIf) *backend.XmlInChannel {
	ret := backend.XmlInChannelNew(ch.Name(), ch.IOType().Name(), ch.(*channel).linkText)
	//ret.Entry = freesp.CreateXmlModePosition(ch).Entry
	//c := ch.(*channel)
	//ret.ArchPortHints.Entry = freesp.CreateXmlModePosition(c.archport).Entry
	return ret
}
예제 #2
0
파일: arch.go 프로젝트: axel-freesp/sge
func (a Arch) drawLocalChannel(ctxt interface{}, ch pf.ChannelIf) {
	switch ctxt.(type) {
	case *cairo.Context:
		context := ctxt.(*cairo.Context)
		link := ch.Link()
		if ch.Process().Arch().Name() != a.Name() {
			log.Fatal("Arch.drawLocalChannel: channel not in arch %s\n", a.Name())
		}
		if link.Process().Arch().Name() == a.Name() {
			var r, g, b float64
			p1 := a.channelMap[ch]
			p2 := a.channelMap[link]
			if p1.IsSelected() || p2.IsSelected() {
				r, g, b, _ = ColorOption(SelectChannelLine)
			} else if p1.IsHighlighted() || p2.IsHighlighted() {
				r, g, b, _ = ColorOption(HighlightChannelLine)
			} else {
				r, g, b, _ = ColorOption(NormalChannelLine)
			}
			context.SetLineWidth(2)
			context.SetSourceRGB(r, g, b)
			var pos1, pos2 image.Point
			if ch.Direction() == gr.InPort {
				pos1 = link.ModePosition(a.mode).Add(image.Point{procPortWidth, procPortHeight}.Div(2))
				pos2 = ch.ModePosition(a.mode).Add(image.Point{procPortWidth, procPortHeight}.Div(2))
			} else {
				pos1 = ch.ModePosition(a.mode).Add(image.Point{procPortWidth, procPortHeight}.Div(2))
				pos2 = link.ModePosition(a.mode).Add(image.Point{procPortWidth, procPortHeight}.Div(2))
			}
			DrawArrow(context, pos1, pos2)
		}
	}
}
예제 #3
0
파일: arch.go 프로젝트: axel-freesp/sge
func (a *Arch) addExternalPort(c pf.ChannelIf, mode gr.PositionMode, idx int) {
	config := DrawConfig{ColorInit(ColorOption(NormalArchPort)),
		ColorInit(ColorOption(HighlightArchPort)),
		ColorInit(ColorOption(SelectArchPort)),
		ColorInit(ColorOption(BoxFrame)),
		Color{},
		image.Point{}}
	ap := c.ArchPort()
	if ap == nil {
		log.Printf("Arch.addExternalPort error: channel %v has no arch port\n", c)
		return
	}
	positioner := gr.ModePositionerProxyNew(ap, mode)
	a.AddPort(config, ap, positioner)
}
예제 #4
0
파일: arch.go 프로젝트: axel-freesp/sge
func (a Arch) channelIsExtern(c pf.ChannelIf) bool {
	link := c.Link()
	cp := link.Process()
	ca := cp.Arch()
	return ca != a.userObj
}