| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // 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_
- }
|