scroll_panel.bmx 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. SuperStrict
  2. Framework Ray.GUI
  3. Import Text.Format
  4. Import brl.standardio
  5. Local formatter:TFormatter = TFormatter.Create("[%f, %f]")
  6. ' Initialization
  7. '---------------------------------------------------------------------------------------
  8. Const screenWidth:Int = 800
  9. Const screenHeight:Int = 450
  10. InitWindow(screenWidth, screenHeight, "raygui - GuiScrollPanel()")
  11. Local panelRec:RRectangle = New RRectangle(20, 40, 200, 150)
  12. Local panelContentRec:RRectangle = New RRectangle(0, 0, 340, 340)
  13. Local panelScroll:RVector2 = New RVector2(99, -20)
  14. Local showContentArea:Int = True
  15. SetTargetFPS(60)
  16. '---------------------------------------------------------------------------------------
  17. ' Main game loop
  18. While Not WindowShouldClose() ' Detect window close button or ESC key
  19. ' Update
  20. '----------------------------------------------------------------------------------
  21. ' TODO: Implement required update logic
  22. '----------------------------------------------------------------------------------
  23. ' Draw
  24. '----------------------------------------------------------------------------------
  25. BeginDrawing()
  26. ClearBackground(RAYWHITE)
  27. DrawText(formatter.Clear().Arg(panelScroll.x).Arg(panelScroll.y).Format(), 4, 4, 20, RED)
  28. Local view:RRectangle = GuiScrollPanel(panelRec, panelContentRec, panelScroll)
  29. BeginScissorMode(view.x, view.y, view.width, view.height)
  30. GuiGrid(New RRectangle(panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height), 16, 3)
  31. EndScissorMode()
  32. If showContentArea Then
  33. DrawRectangle(panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height, Fade(RED, 0.1))
  34. End If
  35. DrawStyleEditControls()
  36. showContentArea = GuiCheckBox(New RRectangle(565, 80, 20, 20), "SHOW CONTENT AREA", showContentArea)
  37. panelContentRec.width = GuiSliderBar(New RRectangle(590, 385, 145, 15), "WIDTH", "", Int(panelContentRec.width), 1, 600)
  38. panelContentRec.height = GuiSliderBar(New RRectangle(590, 410, 145, 15), "HEIGHT", "", Int(panelContentRec.height), 1, 400)
  39. EndDrawing()
  40. '----------------------------------------------------------------------------------
  41. Wend
  42. ' De-Initialization
  43. '--------------------------------------------------------------------------------------
  44. CloseWindow() ' Close window and OpenGL context
  45. '--------------------------------------------------------------------------------------
  46. Function DrawStyleEditControls()
  47. ' ScrollPanel style controls
  48. '----------------------------------------------------------
  49. GuiGroupBox(New RRectangle(550, 170, 220, 205), "SCROLLBAR STYLE")
  50. Local style:Int = GuiGetStyle(SCROLLBAR, BORDER_WIDTH)
  51. GuiLabel(New RRectangle(555, 195, 110, 10), "BORDER_WIDTH")
  52. GuiSpinner(New RRectangle(670, 190, 90, 20), Null, style, 0, 6, False)
  53. GuiSetStyle(SCROLLBAR, BORDER_WIDTH, style)
  54. style = GuiGetStyle(SCROLLBAR, ARROWS_SIZE)
  55. GuiLabel(New RRectangle(555, 220, 110, 10), "ARROWS_SIZE")
  56. GuiSpinner(New RRectangle(670, 215, 90, 20), Null, style, 4, 14, False)
  57. GuiSetStyle(SCROLLBAR, ARROWS_SIZE, style)
  58. style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING)
  59. GuiLabel(New RRectangle(555, 245, 110, 10), "SLIDER_PADDING")
  60. GuiSpinner(New RRectangle(670, 240, 90, 20), Null, style, 0, 14, False)
  61. GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style)
  62. style = GuiCheckBox(New RRectangle(565, 280, 20, 20), "ARROWS_VISIBLE", GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE))
  63. GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, style)
  64. style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING)
  65. GuiLabel(New RRectangle(555, 325, 110, 10), "SLIDER_PADDING")
  66. GuiSpinner(New RRectangle(670, 320, 90, 20), Null, style, 0, 14, False)
  67. GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style)
  68. style = GuiGetStyle(SCROLLBAR, SLIDER_WIDTH)
  69. GuiLabel(New RRectangle(555, 350, 110, 10), "SLIDER_WIDTH")
  70. GuiSpinner(New RRectangle(670, 345, 90, 20), Null, style, 2, 100, False)
  71. GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, style)
  72. Local txt:String
  73. If GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) = SCROLLBAR_LEFT_SIDE Then
  74. txt = "SCROLLBAR: LEFT"
  75. Else
  76. txt = "SCROLLBAR: RIGHT"
  77. End If
  78. style = GuiToggle(New RRectangle(560, 110, 200, 35), txt, GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE))
  79. GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, style)
  80. '----------------------------------------------------------
  81. ' ScrollBar style controls
  82. '----------------------------------------------------------
  83. GuiGroupBox(New RRectangle(550, 20, 220, 135), "SCROLLPANEL STYLE")
  84. style = GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH)
  85. GuiLabel(New RRectangle(555, 35, 110, 10), "SCROLLBAR_WIDTH")
  86. GuiSpinner(New RRectangle(670, 30, 90, 20), Null, style, 6, 30, False)
  87. GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, style)
  88. style = GuiGetStyle(GUI_DEFAULT, BORDER_WIDTH)
  89. GuiLabel(New RRectangle(555, 60, 110, 10), "BORDER_WIDTH")
  90. GuiSpinner(New RRectangle(670, 55, 90, 20), Null, style, 0, 20, False)
  91. GuiSetStyle(GUI_DEFAULT, BORDER_WIDTH, style)
  92. '----------------------------------------------------------
  93. End Function