Mercurial
diff postdog/slider_example.c @ 116:7bd795bac997
[Postdog] Added scrollable area to inputs and history files, buttons to delete and view.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Wed, 07 Jan 2026 04:52:17 -0800 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/postdog/slider_example.c Wed Jan 07 04:52:17 2026 -0800 @@ -0,0 +1,115 @@ + +/******************************************************************************************* +* +* raygui - custom file dialog to load image +* +* 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 +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2016-2024 Ramon Santamaria (@raysan5) +* +**********************************************************************************************/ + +#include "third_party/raylib/include/raylib.h" + +#define RAYGUI_IMPLEMENTATION +#include "third_party/raylib/include/raygui.h" + +#undef RAYGUI_IMPLEMENTATION // Avoid including raygui implementation again + +#define GUI_WINDOW_FILE_DIALOG_IMPLEMENTATION +#include "postdog/gui_window_file_dialog.h" +#define POSTDOG_PATHS "/Users/mrjunejune/zenbu/postdog/history" + + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main() +{ + // Initialization + //--------------------------------------------------------------------------------------- + int screenWidth = 800; + int screenHeight = 560; + + InitWindow(screenWidth, screenHeight, "raygui - custom modal dialog"); + SetExitKey(0); + + // Custom file dialog + GuiWindowFileDialogState fileDialogState = InitGuiWindowFileDialog(POSTDOG_PATHS); + + bool exitWindow = false; + + char fileNameToLoad[512] = { 0 }; + + Texture texture = { 0 }; + + SetTargetFPS(60); + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!exitWindow) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + exitWindow = WindowShouldClose(); + + if (fileDialogState.SelectFilePressed) + { + // Load image file (if supported extension) + if (IsFileExtension(fileDialogState.fileNameText, ".png")) + { + strcpy(fileNameToLoad, TextFormat("%s" PATH_SEPERATOR "%s", fileDialogState.dirPathText, fileDialogState.fileNameText)); + UnloadTexture(texture); + texture = LoadTexture(fileNameToLoad); + } + + fileDialogState.SelectFilePressed = false; + } + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); + + DrawTexture(texture, GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, WHITE); + DrawRectangleLines(GetScreenWidth()/2 - texture.width/2, GetScreenHeight()/2 - texture.height/2 - 5, texture.width, texture.height, BLACK); + + DrawText(fileNameToLoad, 208, GetScreenHeight() - 20, 10, GRAY); + + // raygui: controls drawing + //---------------------------------------------------------------------------------- + if (fileDialogState.windowActive) GuiLock(); + + if (GuiButton((Rectangle){ 20, 20, 140, 30 }, GuiIconText(ICON_FILE_OPEN, "Open Image"))) fileDialogState.windowActive = true; + + GuiUnlock(); + + // GUI: Dialog Window + //-------------------------------------------------------------------------------- + GuiWindowFileDialog(&fileDialogState); + //-------------------------------------------------------------------------------- + + //---------------------------------------------------------------------------------- + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadTexture(texture); // Unload texture + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +}