let's try this
This commit is contained in:
@@ -22,7 +22,7 @@ namespace anm2ed::anm2
|
|||||||
labels.emplace_back(localize.get(BASIC_NONE));
|
labels.emplace_back(localize.get(BASIC_NONE));
|
||||||
for (auto& [id, sound] : content.sounds)
|
for (auto& [id, sound] : content.sounds)
|
||||||
{
|
{
|
||||||
auto pathString = sound.path.string();
|
auto pathString = filesystem::path_to_utf8(sound.path);
|
||||||
labels.emplace_back(std::vformat(localize.get(FORMAT_SOUND), std::make_format_args(id, pathString)));
|
labels.emplace_back(std::vformat(localize.get(FORMAT_SOUND), std::make_format_args(id, pathString)));
|
||||||
}
|
}
|
||||||
return labels;
|
return labels;
|
||||||
|
|||||||
+5
-1
@@ -10,6 +10,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
#include <format>
|
#include <format>
|
||||||
|
|
||||||
#include "filesystem_.h"
|
#include "filesystem_.h"
|
||||||
@@ -22,11 +23,14 @@ namespace anm2ed::dialog
|
|||||||
|
|
||||||
if (filelist && filelist[0] && strlen(filelist[0]) > 0)
|
if (filelist && filelist[0] && strlen(filelist[0]) > 0)
|
||||||
{
|
{
|
||||||
self->path = filelist[0];
|
self->path = anm2ed::util::filesystem::path_from_utf8(filelist[0]);
|
||||||
self->selectedFilter = filter;
|
self->selectedFilter = filter;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
self->selectedFilter = -1;
|
self->selectedFilter = -1;
|
||||||
|
self->path.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
#include <imgui/imgui.h>
|
#include <imgui/imgui.h>
|
||||||
|
|
||||||
|
#include "filesystem_.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "math_.h"
|
#include "math_.h"
|
||||||
#include "render.h"
|
#include "render.h"
|
||||||
@@ -31,6 +32,7 @@ using namespace anm2ed::types;
|
|||||||
using namespace anm2ed::canvas;
|
using namespace anm2ed::canvas;
|
||||||
using namespace anm2ed::util;
|
using namespace anm2ed::util;
|
||||||
using namespace glm;
|
using namespace glm;
|
||||||
|
namespace filesystem = anm2ed::util::filesystem;
|
||||||
|
|
||||||
namespace anm2ed::imgui
|
namespace anm2ed::imgui
|
||||||
{
|
{
|
||||||
@@ -874,7 +876,7 @@ namespace anm2ed::imgui
|
|||||||
|
|
||||||
if (dialog.is_selected(dialog::FFMPEG_PATH_SET))
|
if (dialog.is_selected(dialog::FFMPEG_PATH_SET))
|
||||||
{
|
{
|
||||||
ffmpegPath = dialog.path.string();
|
ffmpegPath = filesystem::path_to_utf8(dialog.path);
|
||||||
dialog.reset();
|
dialog.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -892,7 +894,7 @@ namespace anm2ed::imgui
|
|||||||
|
|
||||||
if (dialog.is_selected(dialogType))
|
if (dialog.is_selected(dialogType))
|
||||||
{
|
{
|
||||||
path = dialog.path.string();
|
path = filesystem::path_to_utf8(dialog.path);
|
||||||
dialog.reset();
|
dialog.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace anm2ed::imgui
|
|||||||
auto behavior = [&]()
|
auto behavior = [&]()
|
||||||
{
|
{
|
||||||
int id{};
|
int id{};
|
||||||
auto pathString = path.string();
|
auto pathString = filesystem::path_to_utf8(path);
|
||||||
if (anm2.sound_add(document.directory_get(), path, id))
|
if (anm2.sound_add(document.directory_get(), path, id))
|
||||||
{
|
{
|
||||||
selection = {id};
|
selection = {id};
|
||||||
@@ -76,7 +76,7 @@ namespace anm2ed::imgui
|
|||||||
{
|
{
|
||||||
anm2::Sound& sound = anm2.content.sounds[id];
|
anm2::Sound& sound = anm2.content.sounds[id];
|
||||||
sound.reload(document.directory_get());
|
sound.reload(document.directory_get());
|
||||||
auto pathString = sound.path.string();
|
auto pathString = filesystem::path_to_utf8(sound.path);
|
||||||
toasts.push(std::vformat(localize.get(TOAST_RELOAD_SOUND), std::make_format_args(id, pathString)));
|
toasts.push(std::vformat(localize.get(TOAST_RELOAD_SOUND), std::make_format_args(id, pathString)));
|
||||||
logger.info(
|
logger.info(
|
||||||
std::vformat(localize.get(TOAST_RELOAD_SOUND, anm2ed::ENGLISH), std::make_format_args(id, pathString)));
|
std::vformat(localize.get(TOAST_RELOAD_SOUND, anm2ed::ENGLISH), std::make_format_args(id, pathString)));
|
||||||
@@ -95,7 +95,7 @@ namespace anm2ed::imgui
|
|||||||
auto& id = *selection.begin();
|
auto& id = *selection.begin();
|
||||||
anm2::Sound& sound = anm2.content.sounds[id];
|
anm2::Sound& sound = anm2.content.sounds[id];
|
||||||
sound = anm2::Sound(document.directory_get(), path);
|
sound = anm2::Sound(document.directory_get(), path);
|
||||||
auto pathString = sound.path.string();
|
auto pathString = filesystem::path_to_utf8(sound.path);
|
||||||
toasts.push(std::vformat(localize.get(TOAST_REPLACE_SOUND), std::make_format_args(id, pathString)));
|
toasts.push(std::vformat(localize.get(TOAST_REPLACE_SOUND), std::make_format_args(id, pathString)));
|
||||||
logger.info(
|
logger.info(
|
||||||
std::vformat(localize.get(TOAST_REPLACE_SOUND, anm2ed::ENGLISH), std::make_format_args(id, pathString)));
|
std::vformat(localize.get(TOAST_REPLACE_SOUND, anm2ed::ENGLISH), std::make_format_args(id, pathString)));
|
||||||
@@ -215,7 +215,7 @@ namespace anm2ed::imgui
|
|||||||
bool isValid = sound.is_valid();
|
bool isValid = sound.is_valid();
|
||||||
auto& soundIcon = isValid ? resources.icons[icon::SOUND] : resources.icons[icon::NONE];
|
auto& soundIcon = isValid ? resources.icons[icon::SOUND] : resources.icons[icon::NONE];
|
||||||
auto tintColor = !isValid ? ImVec4(1.0f, 0.25f, 0.25f, 1.0f) : ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
auto tintColor = !isValid ? ImVec4(1.0f, 0.25f, 0.25f, 1.0f) : ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
auto pathString = sound.path.string();
|
auto pathString = filesystem::path_to_utf8(sound.path);
|
||||||
|
|
||||||
ImGui::SetNextItemSelectionUserData(id);
|
ImGui::SetNextItemSelectionUserData(id);
|
||||||
ImGui::SetNextItemStorageID(id);
|
ImGui::SetNextItemStorageID(id);
|
||||||
|
|||||||
+20
-6
@@ -3,8 +3,13 @@
|
|||||||
#include <SDL3/SDL_filesystem.h>
|
#include <SDL3/SDL_filesystem.h>
|
||||||
#include <SDL3/SDL_properties.h>
|
#include <SDL3/SDL_properties.h>
|
||||||
#include <SDL3/SDL_stdinc.h>
|
#include <SDL3/SDL_stdinc.h>
|
||||||
|
#include <cstdio>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "filesystem_.h"
|
||||||
|
|
||||||
|
namespace filesystem = anm2ed::util::filesystem;
|
||||||
|
|
||||||
namespace anm2ed::resource
|
namespace anm2ed::resource
|
||||||
{
|
{
|
||||||
MIX_Mixer* Audio::mixer_get()
|
MIX_Mixer* Audio::mixer_get()
|
||||||
@@ -17,16 +22,25 @@ namespace anm2ed::resource
|
|||||||
{
|
{
|
||||||
if (path.empty()) return;
|
if (path.empty()) return;
|
||||||
|
|
||||||
size_t fileSize = 0;
|
filesystem::File file(path, "rb");
|
||||||
void* fileData = SDL_LoadFile(path.string().c_str(), &fileSize);
|
if (!file) return;
|
||||||
if (!fileData || fileSize == 0)
|
|
||||||
|
if (std::fseek(file.get(), 0, SEEK_END) != 0) return;
|
||||||
|
auto size = std::ftell(file.get());
|
||||||
|
if (size <= 0)
|
||||||
{
|
{
|
||||||
if (fileData) SDL_free(fileData);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
std::rewind(file.get());
|
||||||
|
|
||||||
data.assign(static_cast<unsigned char*>(fileData), static_cast<unsigned char*>(fileData) + fileSize);
|
data.resize(static_cast<std::size_t>(size));
|
||||||
SDL_free(fileData);
|
auto read = std::fread(data.data(), 1, data.size(), file.get());
|
||||||
|
if (read == 0)
|
||||||
|
{
|
||||||
|
data.clear();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
data.resize(read);
|
||||||
|
|
||||||
SDL_IOStream* io = SDL_IOFromConstMem(data.data(), data.size());
|
SDL_IOStream* io = SDL_IOFromConstMem(data.data(), data.size());
|
||||||
if (!io)
|
if (!io)
|
||||||
|
|||||||
Reference in New Issue
Block a user