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
 |