size.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // package size -- размер области
  2. package size
  3. import (
  4. "fmt"
  5. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. "gitp78su.ipnodns.ru/svi/kern/v3"
  8. )
  9. // Size -- размер области
  10. type Size struct {
  11. W_ alias.SizeX
  12. H_ alias.SizeY
  13. }
  14. var (
  15. hassert = kern.GetFnHassert()
  16. )
  17. // NewSize -- возвращает новый размер
  18. func NewSize(w alias.SizeX, h alias.SizeY) types.ISize {
  19. sf := &Size{
  20. W_: w,
  21. H_: h,
  22. }
  23. sf.SelfCheck()
  24. return sf
  25. }
  26. // SelfCheck -- проверяет корректность размера
  27. func (sf *Size) SelfCheck() {
  28. hassert(sf.H_ >= 0, "Size.SelfCheck(): H_(%v)<0", sf.H_)
  29. hassert(sf.W_ >= 0, "Size.SelfCheck(): W_(%v)<0", sf.W_)
  30. }
  31. // String -- возвращает строковое представление размера
  32. func (sf *Size) String() string {
  33. return fmt.Sprintf("size:%vx%v", sf.W_, sf.H_)
  34. }
  35. // W -- возвращает ширину
  36. func (sf *Size) W() alias.SizeX {
  37. return sf.W_
  38. }
  39. // H -- возвращает высоту
  40. func (sf *Size) H() alias.SizeY {
  41. return sf.H_
  42. }
  43. // Get -- возвращает размер
  44. func (sf *Size) Get() (alias.SizeX, alias.SizeY) {
  45. return sf.W_, sf.H_
  46. }
  47. // Int -- возвращает размер
  48. func (sf *Size) Int() (int, int) {
  49. return int(sf.W_), int(sf.H_)
  50. }