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
 | 
