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
 |