// package offset -- смещение точки package offset import ( "gitp78su.ipnodns.ru/svi/goarch/lev0/alias" ) // Offset -- смещение точки type Offset struct { X_ alias.CoordX `json:"x"` // Координата X Y_ alias.CoordY `json:"y"` // Координата Y } // NewOffset -- возвращает новое смещение func NewOffset(elem map[string]interface{}) *Offset { var _lstCoord []interface{} _coord0, isOk := elem["offset"] if !isOk { _lstCoord = []interface{}{100, 100} } else { _lstCoord = _coord0.([]interface{}) } x := alias.CoordX(100) y := alias.CoordY(100) if len(_lstCoord) >= 2 { switch _lstCoord[0].(type) { case int: x = alias.CoordX(_lstCoord[0].(int)) y = alias.CoordY(_lstCoord[1].(int)) case float64: fnConvert := func() { defer func() { if _panic := recover(); _panic != nil { x = alias.CoordX(200) y = alias.CoordY(200) } }() x = alias.CoordX(int(_lstCoord[0].(float64))) y = alias.CoordY(int(_lstCoord[1].(float64))) } fnConvert() } } sf := &Offset{ X_: x, Y_: y, } return sf } // Coord -- возвращает координаты func (sf *Offset) Offset() (alias.CoordX, alias.CoordY) { return sf.X_, sf.Y_ } // X -- возвращает координату X func (sf *Offset) X() alias.CoordX { return sf.X_ } // Y -- возвращает координату Y func (sf *Offset) Y() alias.CoordY { return sf.Y_ }