| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // package coord -- координаты точки
- package coord
- import (
- "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
- )
- // Coord -- координаты точки
- type Coord struct {
- X_ alias.CoordX `json:"x"` // Координата X
- Y_ alias.CoordY `json:"y"` // Координата Y
- }
- // NewCoord -- возвращает новую координаты
- func NewCoord(key string, elem map[string]interface{}) *Coord {
- var _lstCoord []interface{}
- _coord0, isOk := elem[key]
- if !isOk {
- _lstCoord = []interface{}{200, 200}
- } else {
- fnConvert := func() {
- defer func() {
- if _panic := recover(); _panic != nil {
- _lstCoord = []interface{}{200, 200}
- }
- }()
- _lstCoord = _coord0.([]interface{})
- }
- fnConvert()
- }
- x := alias.CoordX(200)
- y := alias.CoordY(200)
- 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 := &Coord{
- X_: x,
- Y_: y,
- }
- return sf
- }
- // X -- возвращает координату X
- func (sf *Coord) X() alias.CoordX {
- return sf.X_
- }
- // Y -- возвращает координату Y
- func (sf *Coord) Y() alias.CoordY {
- return sf.Y_
- }
- // Coord -- возвращает координаты
- func (sf *Coord) Coord() (alias.CoordX, alias.CoordY) {
- return sf.X_, sf.Y_
- }
|