예제 #1
0
파일: imp.go 프로젝트: CaptainSoOmA/Uni
func (f *Imp) On(a, b int, t uint) bool {
	//
	if !f.Empty() {
		switch f.sort {
		case Pointset, Segments:
			return scr.OnSegments(f.x, f.y, a, b, t)
		case Polygon:
			return scr.OnPolygon(f.x, f.y, a, b, t)
		case Curve:
			return scr.OnCurve(f.x, f.y, a, b, t)
		case InfLine:
			return scr.OnInfLine(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t)
		case Rectangle:
			return scr.OnRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t)
		case Circle:
			return scr.OnCircle(f.x[0], f.y[0], uint(f.x[1]), a, b, t)
		case Ellipse:
			return scr.OnEllipse(f.x[0], f.y[0], uint(f.x[1]), uint(f.y[1]), a, b, t)
		case Text:
			if len(f.x) != 2 {
				errh.Error("Incident case Text: len (f.x) ==", uint(len(f.x)))
			}
			return scr.OnRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b, t) // crash: TODO
		case Image:
			return scr.InRectangle(f.x[0], f.y[0], f.x[1], f.y[1], a, b) // , t
		}
	}
	return false
}
예제 #2
0
파일: imp.go 프로젝트: CaptainSoOmA/Uni
func (f *Imp) uM() uint {
	//
	const (
		r = 4
		t = 4
	)
	a, b := scr.MousePosGr()
	n := uint(len(f.x))
	for i := uint(0); i < n; i++ {
		if scr.OnCircle(f.x[i], f.y[i], r, a, b, t) {
			return uint(i)
		}
	}
	return n + 1 // ?
}