size.go 1.1 KB

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