37 lines
820 B
C++
37 lines
820 B
C++
#pragma once
|
|
|
|
#include "domain/SpineVersion.hpp"
|
|
|
|
#include <filesystem>
|
|
#include <optional>
|
|
#include <string>
|
|
|
|
namespace dts {
|
|
|
|
enum class SkeletonDataFormat { Json, Binary, Unknown };
|
|
|
|
enum class VersionDetectionStatus {
|
|
Detected,
|
|
FileMissing,
|
|
InvalidData,
|
|
UnsupportedVersion
|
|
};
|
|
|
|
struct VersionDetectionResult {
|
|
SkeletonDataFormat format = SkeletonDataFormat::Unknown;
|
|
VersionDetectionStatus status = VersionDetectionStatus::InvalidData;
|
|
std::optional<SpineVersion> version;
|
|
std::string message;
|
|
};
|
|
|
|
class SpineDataVersionDetector {
|
|
public:
|
|
[[nodiscard]] VersionDetectionResult inspect(const std::filesystem::path& path) const;
|
|
};
|
|
|
|
[[nodiscard]] std::string toString(SkeletonDataFormat format);
|
|
[[nodiscard]] std::string toString(VersionDetectionStatus status);
|
|
|
|
} // namespace dts
|
|
|