step
This commit is contained in:
parent
ff8baa4ce7
commit
326d649f3d
36 changed files with 1226 additions and 5226 deletions
11
examples/gui/scroll_panel/go.mod
Normal file
11
examples/gui/scroll_panel/go.mod
Normal file
|
@ -0,0 +1,11 @@
|
|||
module example
|
||||
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/Konstantin8105/raylib-go/raygui v0.0.0-20221122151443-e8a384ed1346
|
||||
github.com/Konstantin8105/raylib-go/raylib v0.0.0-20221122155035-fe6d2c0ed32a
|
||||
)
|
||||
|
||||
replace github.com/Konstantin8105/raylib-go/raylib => ../../../raylib
|
||||
replace github.com/Konstantin8105/raylib-go/raygui => ../../../raygui3_5
|
|
@ -1,150 +0,0 @@
|
|||
/*******************************************************************************************
|
||||
*
|
||||
* raygui - Controls test
|
||||
*
|
||||
* TEST CONTROLS:
|
||||
* - GuiScrollPanel()
|
||||
*
|
||||
* DEPENDENCIES:
|
||||
* raylib 4.0 - Windowing/input management and drawing.
|
||||
* raygui 3.0 - Immediate-mode GUI controls.
|
||||
*
|
||||
* COMPILATION (Windows - MinGW):
|
||||
* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99
|
||||
*
|
||||
* COMPILATION (Linux - gcc):
|
||||
* gcc -o $(NAME_PART) $(FILE_NAME) -I../../src -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -std=c99
|
||||
*
|
||||
* LICENSE: zlib/libpng
|
||||
*
|
||||
* Copyright (c) 2019-2022 Vlad Adrian (@Demizdor) and Ramon Santamaria (@raysan5)
|
||||
*
|
||||
**********************************************************************************************/
|
||||
|
||||
#include "raylib.h"
|
||||
|
||||
#define RAYGUI_IMPLEMENTATION
|
||||
#include "../../src/raygui.h"
|
||||
|
||||
|
||||
static void DrawStyleEditControls(void); // Draw and process scroll bar style edition controls
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
// Program main entry point
|
||||
//------------------------------------------------------------------------------------
|
||||
int main()
|
||||
{
|
||||
// Initialization
|
||||
//---------------------------------------------------------------------------------------
|
||||
const int screenWidth = 800;
|
||||
const int screenHeight = 450;
|
||||
|
||||
InitWindow(screenWidth, screenHeight, "raygui - GuiScrollPanel()");
|
||||
|
||||
Rectangle panelRec = { 20, 40, 200, 150 };
|
||||
Rectangle panelContentRec = {0, 0, 340, 340 };
|
||||
Vector2 panelScroll = { 99, -20 };
|
||||
|
||||
bool showContentArea = true;
|
||||
|
||||
SetTargetFPS(60);
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
// Main game loop
|
||||
while (!WindowShouldClose()) // Detect window close button or ESC key
|
||||
{
|
||||
// Update
|
||||
//----------------------------------------------------------------------------------
|
||||
// TODO: Implement required update logic
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
// Draw
|
||||
//----------------------------------------------------------------------------------
|
||||
BeginDrawing();
|
||||
|
||||
ClearBackground(RAYWHITE);
|
||||
|
||||
DrawText(TextFormat("[%f, %f]", panelScroll.x, panelScroll.y), 4, 4, 20, RED);
|
||||
|
||||
Rectangle view = GuiScrollPanel(panelRec, NULL, panelContentRec, &panelScroll);
|
||||
|
||||
BeginScissorMode(view.x, view.y, view.width, view.height);
|
||||
GuiGrid((Rectangle){panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height}, NULL, 16, 3);
|
||||
EndScissorMode();
|
||||
|
||||
if (showContentArea) DrawRectangle(panelRec.x + panelScroll.x, panelRec.y + panelScroll.y, panelContentRec.width, panelContentRec.height, Fade(RED, 0.1));
|
||||
|
||||
DrawStyleEditControls();
|
||||
|
||||
showContentArea = GuiCheckBox((Rectangle){ 565, 80, 20, 20 }, "SHOW CONTENT AREA", showContentArea);
|
||||
|
||||
panelContentRec.width = GuiSliderBar((Rectangle){ 590, 385, 145, 15}, "WIDTH", TextFormat("%i", (int)panelContentRec.width), panelContentRec.width, 1, 600);
|
||||
panelContentRec.height = GuiSliderBar((Rectangle){ 590, 410, 145, 15 }, "HEIGHT", TextFormat("%i", (int)panelContentRec.height), panelContentRec.height, 1, 400);
|
||||
|
||||
EndDrawing();
|
||||
//----------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
// De-Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
CloseWindow(); // Close window and OpenGL context
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Draw and process scroll bar style edition controls
|
||||
static void DrawStyleEditControls(void)
|
||||
{
|
||||
// ScrollPanel style controls
|
||||
//----------------------------------------------------------
|
||||
GuiGroupBox((Rectangle){ 550, 170, 220, 205 }, "SCROLLBAR STYLE");
|
||||
|
||||
int style = GuiGetStyle(SCROLLBAR, BORDER_WIDTH);
|
||||
GuiLabel((Rectangle){ 555, 195, 110, 10 }, "BORDER_WIDTH");
|
||||
GuiSpinner((Rectangle){ 670, 190, 90, 20 }, NULL, &style, 0, 6, false);
|
||||
GuiSetStyle(SCROLLBAR, BORDER_WIDTH, style);
|
||||
|
||||
style = GuiGetStyle(SCROLLBAR, ARROWS_SIZE);
|
||||
GuiLabel((Rectangle){ 555, 220, 110, 10 }, "ARROWS_SIZE");
|
||||
GuiSpinner((Rectangle){ 670, 215, 90, 20 }, NULL, &style, 4, 14, false);
|
||||
GuiSetStyle(SCROLLBAR, ARROWS_SIZE, style);
|
||||
|
||||
style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING);
|
||||
GuiLabel((Rectangle){ 555, 245, 110, 10 }, "SLIDER_PADDING");
|
||||
GuiSpinner((Rectangle){ 670, 240, 90, 20 }, NULL, &style, 0, 14, false);
|
||||
GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style);
|
||||
|
||||
style = GuiCheckBox((Rectangle){ 565, 280, 20, 20 }, "ARROWS_VISIBLE", GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE));
|
||||
GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, style);
|
||||
|
||||
style = GuiGetStyle(SCROLLBAR, SLIDER_PADDING);
|
||||
GuiLabel((Rectangle){ 555, 325, 110, 10 }, "SLIDER_PADDING");
|
||||
GuiSpinner((Rectangle){ 670, 320, 90, 20 }, NULL, &style, 0, 14, false);
|
||||
GuiSetStyle(SCROLLBAR, SLIDER_PADDING, style);
|
||||
|
||||
style = GuiGetStyle(SCROLLBAR, SLIDER_WIDTH);
|
||||
GuiLabel((Rectangle){ 555, 350, 110, 10 }, "SLIDER_WIDTH");
|
||||
GuiSpinner((Rectangle){ 670, 345, 90, 20 }, NULL, &style, 2, 100, false);
|
||||
GuiSetStyle(SCROLLBAR, SLIDER_WIDTH, style);
|
||||
|
||||
const char *text = GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE? "SCROLLBAR: LEFT" : "SCROLLBAR: RIGHT";
|
||||
style = GuiToggle((Rectangle){ 560, 110, 200, 35 }, text, GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE));
|
||||
GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, style);
|
||||
//----------------------------------------------------------
|
||||
|
||||
// ScrollBar style controls
|
||||
//----------------------------------------------------------
|
||||
GuiGroupBox((Rectangle){ 550, 20, 220, 135 }, "SCROLLPANEL STYLE");
|
||||
|
||||
style = GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH);
|
||||
GuiLabel((Rectangle){ 555, 35, 110, 10 }, "SCROLLBAR_WIDTH");
|
||||
GuiSpinner((Rectangle){ 670, 30, 90, 20 }, NULL, &style, 6, 30, false);
|
||||
GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, style);
|
||||
|
||||
style = GuiGetStyle(DEFAULT, BORDER_WIDTH);
|
||||
GuiLabel((Rectangle){ 555, 60, 110, 10 }, "BORDER_WIDTH");
|
||||
GuiSpinner((Rectangle){ 670, 55, 90, 20 }, NULL, &style, 0, 20, false);
|
||||
GuiSetStyle(DEFAULT, BORDER_WIDTH, style);
|
||||
//----------------------------------------------------------
|
||||
}
|
191
examples/gui/scroll_panel/scroll_panel.go
Normal file
191
examples/gui/scroll_panel/scroll_panel.go
Normal file
|
@ -0,0 +1,191 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
gui "github.com/Konstantin8105/raylib-go/raygui"
|
||||
rl "github.com/Konstantin8105/raylib-go/raylib"
|
||||
)
|
||||
|
||||
/*******************************************************************************************
|
||||
*
|
||||
* raygui - Controls test
|
||||
*
|
||||
* TEST CONTROLS:
|
||||
* - gui.ScrollPanel()
|
||||
*
|
||||
* DEPENDENCIES:
|
||||
* raylib 4.0 - Windowing/input management and drawing.
|
||||
* raygui 3.0 - Immediate-mode GUI controls.
|
||||
*
|
||||
* COMPILATION (Windows - MinGW):
|
||||
* gcc -o $(NAME_PART).exe $(FILE_NAME) -I../../src -lraylib -lopengl32 -lgdi32 -std=c99
|
||||
*
|
||||
* COMPILATION (Linux - gcc):
|
||||
* gcc -o $(NAME_PART) $(FILE_NAME) -I../../src -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 -std=c99
|
||||
*
|
||||
* LICENSE: zlib/libpng
|
||||
*
|
||||
* Copyright (c) 2019-2022 Vlad Adrian (@Demizdor) and Ramon Santamaria (@raysan5)
|
||||
*
|
||||
**********************************************************************************************/
|
||||
|
||||
//------------------------------------------------------------------------------------
|
||||
// Program main entry point
|
||||
//------------------------------------------------------------------------------------
|
||||
func main() {
|
||||
|
||||
// Initialization
|
||||
//---------------------------------------------------------------------------------------
|
||||
const (
|
||||
screenWidth = 800
|
||||
screenHeight = 450
|
||||
)
|
||||
|
||||
rl.InitWindow(screenWidth, screenHeight, "raygui - gui.ScrollPanel()")
|
||||
|
||||
var (
|
||||
panelRec = rl.Rectangle{20, 40, 200, 150}
|
||||
panelContentRec = rl.Rectangle{0, 0, 340, 340}
|
||||
panelScroll = rl.Vector2{99, -20}
|
||||
|
||||
showContentArea = true
|
||||
)
|
||||
|
||||
rl.SetTargetFPS(60)
|
||||
//---------------------------------------------------------------------------------------
|
||||
|
||||
// Main game loop
|
||||
for !rl.WindowShouldClose() {
|
||||
// Detect window close button or ESC key
|
||||
|
||||
// Update
|
||||
//----------------------------------------------------------------------------------
|
||||
// TODO: Implement required update logic
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
// Draw
|
||||
//----------------------------------------------------------------------------------
|
||||
rl.BeginDrawing()
|
||||
|
||||
rl.ClearBackground(rl.RayWhite)
|
||||
|
||||
rl.DrawText(fmt.Sprintf("[%.1f, %.1f]", panelScroll.X, panelScroll.Y), 4, 4, 20, rl.Red)
|
||||
|
||||
view := gui.ScrollPanel(panelRec, "", panelContentRec, &panelScroll)
|
||||
|
||||
rl.BeginScissorMode(int32(view.X), int32(view.Y), int32(view.Width), int32(view.Height))
|
||||
gui.Grid(rl.Rectangle{
|
||||
float32(panelRec.X + panelScroll.X),
|
||||
float32(panelRec.Y + panelScroll.Y),
|
||||
float32(panelContentRec.Width),
|
||||
float32(panelContentRec.Height),
|
||||
}, "", 16, 3)
|
||||
rl.EndScissorMode()
|
||||
|
||||
if showContentArea {
|
||||
rl.DrawRectangle(
|
||||
int32(panelRec.X+panelScroll.X),
|
||||
int32(panelRec.Y+panelScroll.Y),
|
||||
int32(panelContentRec.Width),
|
||||
int32(panelContentRec.Height),
|
||||
rl.Fade(rl.Red, 0.1),
|
||||
)
|
||||
}
|
||||
|
||||
DrawStyleEditControls()
|
||||
|
||||
showContentArea = gui.CheckBox(rl.Rectangle{565, 80, 20, 20}, "SHOW CONTENT AREA", showContentArea)
|
||||
|
||||
panelContentRec.Width = gui.SliderBar(rl.Rectangle{590, 385, 145, 15},
|
||||
"WIDTH",
|
||||
fmt.Sprintf("%.1f", panelContentRec.Width),
|
||||
panelContentRec.Width,
|
||||
1, 600)
|
||||
panelContentRec.Height = gui.SliderBar(rl.Rectangle{590, 410, 145, 15},
|
||||
"HEIGHT",
|
||||
fmt.Sprintf("%.1f", panelContentRec.Height),
|
||||
panelContentRec.Height, 1, 400)
|
||||
|
||||
rl.EndDrawing()
|
||||
//----------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
// De-Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
rl.CloseWindow() // Close window and OpenGL context
|
||||
//--------------------------------------------------------------------------------------
|
||||
}
|
||||
|
||||
// Draw and process scroll bar style edition controls
|
||||
func DrawStyleEditControls() {
|
||||
// ScrollPanel style controls
|
||||
//----------------------------------------------------------
|
||||
gui.GroupBox(rl.Rectangle{550, 170, 220, 205}, "SCROLLBAR STYLE")
|
||||
|
||||
var style int32
|
||||
|
||||
style = gui.GetStyle(gui.SCROLLBAR, gui.BORDER_WIDTH)
|
||||
gui.Label(rl.Rectangle{555, 195, 110, 10}, "BORDER_WIDTH")
|
||||
gui.Spinner(rl.Rectangle{670, 190, 90, 20}, "", &style, 0, 6, false)
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.BORDER_WIDTH, style)
|
||||
|
||||
style = gui.GetStyle(gui.SCROLLBAR, gui.ARROWS_SIZE)
|
||||
gui.Label(rl.Rectangle{555, 220, 110, 10}, "ARROWS_SIZE")
|
||||
gui.Spinner(rl.Rectangle{670, 215, 90, 20}, "", &style, 4, 14, false)
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.ARROWS_SIZE, style)
|
||||
|
||||
style = gui.GetStyle(gui.SCROLLBAR, gui.SLIDER_PADDING)
|
||||
gui.Label(rl.Rectangle{555, 245, 110, 10}, "SLIDER_PADDING")
|
||||
gui.Spinner(rl.Rectangle{670, 240, 90, 20}, "", &style, 0, 14, false)
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.SLIDER_PADDING, style)
|
||||
|
||||
style = boolToint32( gui.CheckBox(rl.Rectangle{565, 280, 20, 20}, "ARROWS_VISIBLE", int32Tobool(gui.GetStyle(gui.SCROLLBAR, gui.ARROWS_VISIBLE))))
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.ARROWS_VISIBLE, style)
|
||||
|
||||
style = gui.GetStyle(gui.SCROLLBAR, gui.SLIDER_PADDING)
|
||||
gui.Label(rl.Rectangle{555, 325, 110, 10}, "SLIDER_PADDING")
|
||||
gui.Spinner(rl.Rectangle{670, 320, 90, 20}, "", &style, 0, 14, false)
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.SLIDER_PADDING, style)
|
||||
|
||||
style = gui.GetStyle(gui.SCROLLBAR, gui.SLIDER_WIDTH)
|
||||
gui.Label(rl.Rectangle{555, 350, 110, 10}, "SLIDER_WIDTH")
|
||||
gui.Spinner(rl.Rectangle{670, 345, 90, 20}, "", &style, 2, 100, false)
|
||||
gui.SetStyle(gui.SCROLLBAR, gui.SLIDER_WIDTH, style)
|
||||
|
||||
var text string
|
||||
if gui.GetStyle(gui.LISTVIEW, gui.SCROLLBAR_SIDE) == gui.SCROLLBAR_LEFT_SIDE {
|
||||
text = "SCROLLBAR: LEFT"
|
||||
} else {
|
||||
text = "SCROLLBAR: RIGHT"
|
||||
}
|
||||
style = boolToint32( gui.Toggle(rl.Rectangle{560, 110, 200, 35}, text, int32Tobool(gui.GetStyle(gui.LISTVIEW, gui.SCROLLBAR_SIDE))))
|
||||
gui.SetStyle(gui.LISTVIEW, gui.SCROLLBAR_SIDE, style)
|
||||
//----------------------------------------------------------
|
||||
|
||||
// ScrollBar style controls
|
||||
//----------------------------------------------------------
|
||||
gui.GroupBox(rl.Rectangle{550, 20, 220, 135}, "SCROLLPANEL STYLE")
|
||||
|
||||
style = gui.GetStyle(gui.LISTVIEW, gui.SCROLLBAR_WIDTH)
|
||||
gui.Label(rl.Rectangle{555, 35, 110, 10}, "SCROLLBAR_WIDTH")
|
||||
gui.Spinner(rl.Rectangle{670, 30, 90, 20}, "", &style, 6, 30, false)
|
||||
gui.SetStyle(gui.LISTVIEW, gui.SCROLLBAR_WIDTH, style)
|
||||
|
||||
style = gui.GetStyle(gui.DEFAULT, gui.BORDER_WIDTH)
|
||||
gui.Label(rl.Rectangle{555, 60, 110, 10}, "BORDER_WIDTH")
|
||||
gui.Spinner(rl.Rectangle{670, 55, 90, 20}, "", &style, 0, 20, false)
|
||||
gui.SetStyle(gui.DEFAULT, gui.BORDER_WIDTH, style)
|
||||
//----------------------------------------------------------
|
||||
}
|
||||
|
||||
func boolToint32(b bool) int32 {
|
||||
if b {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func int32Tobool(v int32) bool {
|
||||
return 0 < v
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue