mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-27 23:13:01 +00:00
59 lines
1.7 KiB
C++
59 lines
1.7 KiB
C++
|
// By Emil Ernerfeldt 2018
|
||
|
// LICENSE:
|
||
|
// This software is dual-licensed to the public domain and under the following
|
||
|
// license: you are granted a perpetual, irrevocable license to copy, modify,
|
||
|
// publish, and distribute this file as you see fit.
|
||
|
// WHAT:
|
||
|
// This is a software renderer for Dear ImGui.
|
||
|
// It is decently fast, but has a lot of room for optimization.
|
||
|
// The goal was to get something fast and decently accurate in not too many lines of code.
|
||
|
// LIMITATIONS:
|
||
|
// * It is not pixel-perfect, but it is good enough for must use cases.
|
||
|
// * It does not support painting with any other texture than the default font texture.
|
||
|
#pragma once
|
||
|
#include "imgui.h" // IMGUI_IMPL_API
|
||
|
#ifndef IMGUI_DISABLE
|
||
|
|
||
|
#include <cstdint>
|
||
|
|
||
|
struct SDL_Window;
|
||
|
struct ImDrawData;
|
||
|
|
||
|
struct SWTexture
|
||
|
{
|
||
|
uint32_t* pixels;
|
||
|
int width;
|
||
|
int height;
|
||
|
bool managed, isAlpha;
|
||
|
|
||
|
SWTexture(uint32_t* pix, int w, int h, bool a=false):
|
||
|
pixels(pix),
|
||
|
width(w),
|
||
|
height(h),
|
||
|
managed(false),
|
||
|
isAlpha(a) {}
|
||
|
SWTexture(int w, int h, bool a=false):
|
||
|
width(w),
|
||
|
height(h),
|
||
|
managed(true),
|
||
|
isAlpha(a) {
|
||
|
pixels=new uint32_t[width*height];
|
||
|
}
|
||
|
~SWTexture() {
|
||
|
if (managed) delete[] pixels;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
IMGUI_IMPL_API bool ImGui_ImplSW_Init(SDL_Window* win);
|
||
|
IMGUI_IMPL_API void ImGui_ImplSW_Shutdown();
|
||
|
IMGUI_IMPL_API bool ImGui_ImplSW_NewFrame();
|
||
|
IMGUI_IMPL_API void ImGui_ImplSW_RenderDrawData(ImDrawData* draw_data);
|
||
|
|
||
|
// Called by Init/NewFrame/Shutdown
|
||
|
IMGUI_IMPL_API bool ImGui_ImplSW_CreateFontsTexture();
|
||
|
IMGUI_IMPL_API void ImGui_ImplSW_DestroyFontsTexture();
|
||
|
IMGUI_IMPL_API bool ImGui_ImplSW_CreateDeviceObjects();
|
||
|
IMGUI_IMPL_API void ImGui_ImplSW_DestroyDeviceObjects();
|
||
|
|
||
|
#endif // #ifndef IMGUI_DISABLE
|