From 52a2f5b69eaf3430623ef2ebeeca0c50a3b8217c Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Fri, 6 Sep 2024 22:29:38 -0500 Subject: Quickfix: rlimgui bindings added to vendor/ --- vendor/rlImGui-main/rlImGui.h | 200 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 vendor/rlImGui-main/rlImGui.h (limited to 'vendor/rlImGui-main/rlImGui.h') diff --git a/vendor/rlImGui-main/rlImGui.h b/vendor/rlImGui-main/rlImGui.h new file mode 100644 index 0000000..8b2b282 --- /dev/null +++ b/vendor/rlImGui-main/rlImGui.h @@ -0,0 +1,200 @@ +/********************************************************************************************** +* +* raylibExtras * Utilities and Shared Components for Raylib +* +* rlImGui * basic ImGui integration +* +* LICENSE: ZLIB +* +* Copyright (c) 2024 Jeffery Myers +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all +* copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +* SOFTWARE. +* +**********************************************************************************************/ + +#pragma once + +#include "raylib.h" + +// Function specifiers in case library is build/used as a shared library +// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll +// NOTE: visibility("default") attribute makes symbols "visible" when compiled with -fvisibility=hidden +#if defined(_WIN32) +#if defined(__TINYC__) +#define __declspec(x) __attribute__((x)) +#endif +#if defined(BUILD_LIBTYPE_SHARED) +#define RLIMGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) +#elif defined(USE_LIBTYPE_SHARED) +#define RLIMGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) +#endif +#else +#if defined(BUILD_LIBTYPE_SHARED) +#define RLIMGUIAPI __attribute__((visibility("default"))) // We are building as a Unix shared library (.so/.dylib) +#endif +#endif + +#ifndef RLIMGUIAPI +#define RLIMGUIAPI // Functions defined as 'extern' by default (implicit specifiers) +#endif + +#ifndef NO_FONT_AWESOME +#include "extras/IconsFontAwesome6.h" +#ifndef FONT_AWESOME_ICON_SIZE +#define FONT_AWESOME_ICON_SIZE 11 +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// High level API. This API is designed in the style of raylib and meant to work with reaylib code. +// It will manage it's own ImGui context and call common ImGui functions (like NewFrame and Render) for you +// for a lower level API that matches the other ImGui platforms, please see imgui_impl_raylib.h + +/// +/// Sets up ImGui, loads fonts and themes +/// Calls ImGui_ImplRaylib_Init and sets the theme. Will install Font awesome by default +/// +/// when true(default) the dark theme is used, when false the light theme is used +RLIMGUIAPI void rlImGuiSetup(bool darkTheme); + +/// +/// Starts a new ImGui Frame +/// Calls ImGui_ImplRaylib_NewFrame, ImGui_ImplRaylib_ProcessEvents, and ImGui::NewFrame together +/// +RLIMGUIAPI void rlImGuiBegin(void); + +/// +/// Ends an ImGui frame and submits all ImGui drawing to raylib for processing. +/// Calls ImGui:Render, an d ImGui_ImplRaylib_RenderDrawData to draw to the current raylib render target +/// +RLIMGUIAPI void rlImGuiEnd(void); + +/// +/// Cleanup ImGui and unload font atlas +/// Calls ImGui_ImplRaylib_Shutdown +/// +RLIMGUIAPI void rlImGuiShutdown(void); + +// Advanced StartupAPI + +/// +/// Custom initialization. Not needed if you call rlImGuiSetup. Only needed if you want to add custom setup code. +/// must be followed by rlImGuiEndInitImGui +/// Called by ImGui_ImplRaylib_Init, and does the first part of setup, before fonts are rendered +/// +RLIMGUIAPI void rlImGuiBeginInitImGui(void); + +/// +/// End Custom initialization. Not needed if you call rlImGuiSetup. Only needed if you want to add custom setup code. +/// must be proceeded by rlImGuiBeginInitImGui +/// Called by ImGui_ImplRaylib_Init and does the second part of setup, and renders fonts. +/// +RLIMGUIAPI void rlImGuiEndInitImGui(void); + +/// +/// Forces the font texture atlas to be recomputed and re-cached +/// +RLIMGUIAPI void rlImGuiReloadFonts(void); + +// Advanced Update API + +/// +/// Starts a new ImGui Frame with a specified delta time +/// +/// delta time, any value < 0 will use raylib GetFrameTime +RLIMGUIAPI void rlImGuiBeginDelta(float deltaTime); + +// ImGui Image API extensions +// Purely for convenience in working with raylib textures as images. +// If you want to call ImGui image functions directly, simply pass them the pointer to the texture. + +/// +/// Draw a texture as an image in an ImGui Context +/// Uses the current ImGui Cursor position and the full texture size. +/// +/// The raylib texture to draw +RLIMGUIAPI void rlImGuiImage(const Texture *image); + +/// +/// Draw a texture as an image in an ImGui Context at a specific size +/// Uses the current ImGui Cursor position and the specified width and height +/// The image will be scaled up or down to fit as needed +/// +/// The raylib texture to draw +/// The width of the drawn image +/// The height of the drawn image +RLIMGUIAPI void rlImGuiImageSize(const Texture *image, int width, int height); + +/// +/// Draw a texture as an image in an ImGui Context at a specific size +/// Uses the current ImGui Cursor position and the specified size +/// The image will be scaled up or down to fit as needed +/// +/// The raylib texture to draw +/// The size of drawn image +RLIMGUIAPI void rlImGuiImageSizeV(const Texture* image, Vector2 size); + +/// +/// Draw a portion texture as an image in an ImGui Context at a defined size +/// Uses the current ImGui Cursor position and the specified size +/// The image will be scaled up or down to fit as needed +/// +/// The raylib texture to draw +/// The width of the drawn image +/// The height of the drawn image +/// The portion of the texture to draw as an image. Negative values for the width and height will flip the image +RLIMGUIAPI void rlImGuiImageRect(const Texture* image, int destWidth, int destHeight, Rectangle sourceRect); + +/// +/// Draws a render texture as an image an ImGui Context, automatically flipping the Y axis so it will show correctly on screen +/// +/// The render texture to draw +RLIMGUIAPI void rlImGuiImageRenderTexture(const RenderTexture* image); + +/// +/// Draws a render texture as an image an ImGui Context, automatically flipping the Y axis so it will show correctly on screen +/// Fits the render texture to the available content area +/// +/// The render texture to draw +/// When true the image will be centered in the content area +RLIMGUIAPI void rlImGuiImageRenderTextureFit(const RenderTexture* image, bool center); + +/// +/// Draws a texture as an image button in an ImGui context. Uses the current ImGui cursor position and the full size of the texture +/// +/// The display name and ImGui ID for the button +/// The texture to draw +/// True if the button was clicked +bool rlImGuiImageButton(const char* name, const Texture* image); + +/// +/// Draws a texture as an image button in an ImGui context. Uses the current ImGui cursor position and the specified size. +/// +/// The display name and ImGui ID for the button +/// The texture to draw +/// The size of the button +/// True if the button was clicked +RLIMGUIAPI bool rlImGuiImageButtonSize(const char* name, const Texture* image, struct ImVec2 size); + +#ifdef __cplusplus +} +#endif -- cgit v1.2.3