view_size.go 1.5 KB

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