mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-14 17:07:01 +00:00
Internal ImLoadFileToMemory() return void* instead of taking void** + allow optional int* file_size
This commit is contained in:
parent
4d83519244
commit
7b1168eb30
23
imgui.cpp
23
imgui.cpp
@ -1122,21 +1122,21 @@ void ImGui::ColorConvertHSVtoRGB(float h, float s, float v, float& out_r, float&
|
||||
|
||||
// Load file content into memory
|
||||
// Memory allocated with ImGui::MemAlloc(), must be freed by user using ImGui::MemFree()
|
||||
bool ImLoadFileToMemory(const char* filename, const char* file_open_mode, void** out_file_data, int* out_file_size, int padding_bytes)
|
||||
void* ImLoadFileToMemory(const char* filename, const char* file_open_mode, int* out_file_size, int padding_bytes)
|
||||
{
|
||||
IM_ASSERT(filename && file_open_mode && out_file_data && out_file_size);
|
||||
*out_file_data = NULL;
|
||||
*out_file_size = 0;
|
||||
IM_ASSERT(filename && file_open_mode);
|
||||
if (out_file_size)
|
||||
*out_file_size = 0;
|
||||
|
||||
FILE* f;
|
||||
if ((f = fopen(filename, file_open_mode)) == NULL)
|
||||
return false;
|
||||
return NULL;
|
||||
|
||||
long file_size_signed;
|
||||
if (fseek(f, 0, SEEK_END) || (file_size_signed = ftell(f)) == -1 || fseek(f, 0, SEEK_SET))
|
||||
{
|
||||
fclose(f);
|
||||
return false;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int file_size = (int)file_size_signed;
|
||||
@ -1144,23 +1144,22 @@ bool ImLoadFileToMemory(const char* filename, const char* file_open_mode, void**
|
||||
if (file_data == NULL)
|
||||
{
|
||||
fclose(f);
|
||||
return false;
|
||||
return NULL;
|
||||
}
|
||||
if (fread(file_data, 1, (size_t)file_size, f) != (size_t)file_size)
|
||||
{
|
||||
fclose(f);
|
||||
ImGui::MemFree(file_data);
|
||||
return false;
|
||||
return NULL;
|
||||
}
|
||||
if (padding_bytes > 0)
|
||||
memset((void *)(((char*)file_data) + file_size), 0, padding_bytes);
|
||||
|
||||
fclose(f);
|
||||
*out_file_data = file_data;
|
||||
if (out_file_size)
|
||||
*out_file_size = file_size;
|
||||
|
||||
return true;
|
||||
return file_data;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -2084,9 +2083,9 @@ static void LoadSettings()
|
||||
if (!filename)
|
||||
return;
|
||||
|
||||
char* file_data;
|
||||
int file_size;
|
||||
if (!ImLoadFileToMemory(filename, "rb", (void**)&file_data, &file_size, 1))
|
||||
char* file_data = (char*)ImLoadFileToMemory(filename, "rb", &file_size, 1);
|
||||
if (!file_data)
|
||||
return;
|
||||
|
||||
ImGuiIniData* settings = NULL;
|
||||
|
@ -1098,9 +1098,9 @@ ImFont* ImFontAtlas::AddFontDefault(const ImFontConfig* font_cfg_template)
|
||||
|
||||
ImFont* ImFontAtlas::AddFontFromFileTTF(const char* filename, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges)
|
||||
{
|
||||
void* data = NULL;
|
||||
int data_size = 0;
|
||||
if (!ImLoadFileToMemory(filename, "rb", (void**)&data, &data_size, 0))
|
||||
void* data = ImLoadFileToMemory(filename, "rb", &data_size, 0);
|
||||
if (!data)
|
||||
{
|
||||
IM_ASSERT(0); // Could not load file.
|
||||
return NULL;
|
||||
|
@ -83,7 +83,7 @@ IMGUI_API int ImTextCountUtf8BytesFromStr(const ImWchar* in_text, cons
|
||||
|
||||
// Helpers: Misc
|
||||
IMGUI_API ImU32 ImHash(const void* data, int data_size, ImU32 seed = 0); // Pass data_size==0 for zero-terminated strings
|
||||
IMGUI_API bool ImLoadFileToMemory(const char* filename, const char* file_open_mode, void** out_file_data, int* out_file_size = NULL, int padding_bytes = 0);
|
||||
IMGUI_API void* ImLoadFileToMemory(const char* filename, const char* file_open_mode, int* out_file_size = NULL, int padding_bytes = 0);
|
||||
IMGUI_API bool ImIsPointInTriangle(const ImVec2& p, const ImVec2& a, const ImVec2& b, const ImVec2& c);
|
||||
static inline bool ImCharIsSpace(int c) { return c == ' ' || c == '\t' || c == 0x3000; }
|
||||
static inline int ImUpperPowerOfTwo(int v) { v--; v |= v >> 1; v |= v >> 2; v |= v >> 4; v |= v >> 8; v |= v >> 16; v++; return v; }
|
||||
|
Loading…
Reference in New Issue
Block a user