// package size -- размер области package size import ( "gitp78su.ipnodns.ru/svi/goarch/lev0/alias" ) // Size -- размер области type Size struct { W_ alias.Width `json:"w"` // Высота H_ alias.Height `json:"h"` // Ширина } // NewSize -- возвращает новый размер func NewSize(key string, elem map[string]interface{}) *Size { var _lstSize []interface{} _size0, isOk := elem[key] if !isOk { _lstSize = []interface{}{400, 300} } else { fnConvert := func() { defer func() { if _panic := recover(); _panic != nil { _lstSize = []interface{}{400, 300} } }() _lstSize = _size0.([]interface{}) } fnConvert() } w := alias.Width(400) h := alias.Height(300) if len(_lstSize) >= 2 { switch _lstSize[0].(type) { case int: w = alias.Width(_lstSize[0].(int)) h = alias.Height(_lstSize[1].(int)) case float64: fnConvert := func() { defer func() { if _panic := recover(); _panic != nil { w = alias.Width(400) h = alias.Height(300) } }() w = alias.Width(int(_lstSize[0].(float64))) h = alias.Height(int(_lstSize[1].(float64))) } fnConvert() } } sf := &Size{ W_: w, H_: h, } return sf } // W -- возвращает ширину func (sf *Size) W() alias.Width { return sf.W_ } // H -- возвращает высоту func (sf *Size) H() alias.Height { return sf.H_ } // Size -- возвращает размер func (sf *Size) Size() (alias.Width, alias.Height) { return sf.W_, sf.H_ }