t_anchors.nim 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import unittest, sugar
  2. import siwin
  3. import sigui
  4. test "anchors":
  5. let window = newOpenglWindow(size = ivec2(1280, 720), title = "anchors").newUiWindow
  6. const typefaceFile = staticRead "Roboto-Regular.ttf"
  7. let typeface = parseTtf(typefaceFile)
  8. window.makeLayout:
  9. this.clearColor = "fff"
  10. const margin = 40
  11. var w = 0'f32.property
  12. var h = 0'f32.property
  13. this.bindingValue w[]: (this.w[] - margin * 4) / 3
  14. this.bindingValue h[]: (this.h[] - margin * 4) / 3
  15. proc text(s: string): UiText =
  16. result = UiText()
  17. init result
  18. result.text[] = s
  19. result.font[] = typeface.withSize(16)
  20. - UiRectBorder() as rect_tl:
  21. this.left = parent.left + margin
  22. this.top = parent.top + margin
  23. - text "right = parent.right":
  24. this.right = parent.right
  25. - UiRectBorder() as rect_tm:
  26. this.left = rect_tl.right + margin
  27. this.top = parent.top + margin
  28. - text "top = parent.bottom":
  29. this.top = parent.bottom
  30. - UiRectBorder() as rect_tr:
  31. this.right = parent.right - margin
  32. this.top = parent.top + margin
  33. - text "bottom = parent.top":
  34. this.bottom = parent.top
  35. - UiRectBorder() as rect_ml:
  36. this.left = parent.left + margin
  37. this.top = rect_tl.bottom + margin
  38. - text "left = parent.left\nright = parent.right\n(fillHorisontal parent)":
  39. # this.hAlign[] = CenterAlign
  40. this.left = parent.left
  41. this.right = parent.right
  42. - UiRectBorder() as rect_mm:
  43. this.left = rect_ml.right + margin
  44. this.top = rect_tl.bottom + margin
  45. - text "centerIn parent":
  46. this.centerIn parent
  47. - UiRectBorder() as rect_mr:
  48. this.right = parent.right - margin
  49. this.top = rect_tl.bottom + margin
  50. - text "centerY = parent.center":
  51. this.centerY = parent.center
  52. - UiRectBorder() as rect_bl:
  53. this.left = parent.left + margin
  54. this.bottom = parent.bottom - margin
  55. - text "centerY = parent.top\nright = parent.right":
  56. # this.hAlign[] = CenterAlign
  57. this.centerY = parent.top
  58. this.right = parent.right
  59. - UiRectBorder() as rect_bm:
  60. this.left = rect_bl.right + margin
  61. this.bottom = parent.bottom - margin
  62. - text "bottom = parent.bottom - 10":
  63. this.bottom = parent.bottom - 10
  64. - UiRectBorder() as rect_br:
  65. this.right = parent.right - margin
  66. this.bottom = parent.bottom - margin
  67. - text "left = parent.left + 10":
  68. this.left = parent.left + 10
  69. for this in [rect_tl, rect_tm, rect_tr, rect_ml, rect_mm, rect_mr, rect_bl, rect_bm, rect_br]:
  70. capture this:
  71. this.binding w: w[]
  72. this.binding h: h[]
  73. this.borderWidth[] = 2
  74. this.color[] = "333"
  75. run window.siwinWindow