Browse Source

Any*{Importer,Converter}: forgot to port these away from std::string.

Somehow. Heh. This causes a non-deprecated build on MSVC to break due to
a similar reason as in 54394e2c2f. And,
similarly to 3717043ae2, *again*
discovered while building bindings.
pull/557/head
Vladimír Vondruš 4 years ago
parent
commit
be91c51975
  1. 2
      src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp
  2. 2
      src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h
  3. 30
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp
  4. 2
      src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h
  5. 1
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp
  6. 2
      src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp
  7. 2
      src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h
  8. 125
      src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp
  9. 2
      src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h
  10. 14
      src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp
  11. 2
      src/MagnumPlugins/AnyShaderConverter/AnyConverter.h

2
src/MagnumPlugins/AnyImageConverter/AnyImageConverter.cpp

@ -43,7 +43,7 @@ using namespace Containers::Literals;
AnyImageConverter::AnyImageConverter(PluginManager::Manager<AbstractImageConverter>& manager): AbstractImageConverter{manager} {}
AnyImageConverter::AnyImageConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractImageConverter{manager, plugin} {}
AnyImageConverter::AnyImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImageConverter{manager, plugin} {}
AnyImageConverter::~AnyImageConverter() = default;

2
src/MagnumPlugins/AnyImageConverter/AnyImageConverter.h

@ -128,7 +128,7 @@ class MAGNUM_ANYIMAGECONVERTER_EXPORT AnyImageConverter: public AbstractImageCon
explicit AnyImageConverter(PluginManager::Manager<AbstractImageConverter>& manager);
/** @brief Plugin manager constructor */
explicit AnyImageConverter(PluginManager::AbstractManager& manager, const std::string& plugin);
explicit AnyImageConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);
~AnyImageConverter();

30
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.cpp

@ -31,8 +31,8 @@
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/PluginManager/PluginMetadata.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/DebugStl.h>
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/DebugStl.h> /* for PluginMetadata::name() */
#include <Corrade/Utility/Format.h>
#include <Corrade/Utility/Path.h>
#include <Corrade/Utility/String.h>
@ -45,7 +45,7 @@ using namespace Containers::Literals;
AnyImageImporter::AnyImageImporter(PluginManager::Manager<AbstractImporter>& manager): AbstractImporter{manager} {}
AnyImageImporter::AnyImageImporter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractImporter{manager, plugin} {}
AnyImageImporter::AnyImageImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {}
AnyImageImporter::AnyImageImporter(AnyImageImporter&&) noexcept = default;
@ -170,36 +170,36 @@ void AnyImageImporter::doOpenData(Containers::Array<char>&& data, DataFlags) {
const Containers::ArrayView<const char> dataView = data;
const Containers::StringView dataString = dataView;
std::string plugin;
Containers::StringView plugin;
/* https://github.com/BinomialLLC/basis_universal/blob/7d784c728844c007d8c95d63231f7adcc0f65364/transcoder/basisu_file_headers.h#L78 */
if(dataString.hasPrefix("sB"_s))
plugin = "BasisImporter";
plugin = "BasisImporter"_s;
/* https://en.wikipedia.org/wiki/BMP_file_format#Bitmap_file_header */
else if(dataString.hasPrefix("BM"_s))
plugin = "BmpImporter";
plugin = "BmpImporter"_s;
/* https://docs.microsoft.com/cs-cz/windows/desktop/direct3ddds/dx-graphics-dds-pguide */
else if(dataString.hasPrefix("DDS "_s))
plugin = "DdsImporter";
plugin = "DdsImporter"_s;
/* http://www.openexr.com/openexrfilelayout.pdf */
else if(dataString.hasPrefix("\x76\x2f\x31\x01"_s))
plugin = "OpenExrImporter";
plugin = "OpenExrImporter"_s;
/* https://en.wikipedia.org/wiki/Radiance_(software)#HDR_image_format */
else if(dataString.hasPrefix("#?RADIANCE"_s))
plugin = "HdrImporter";
plugin = "HdrImporter"_s;
/* https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure */
else if(dataString.hasPrefix("\xff\xd8\xff"_s))
plugin = "JpegImporter";
plugin = "JpegImporter"_s;
/* https://github.khronos.org/KTX-Specification/#_identifier */
else if(dataString.hasPrefix("\xabKTX 20\xbb\r\n\x1a\n"_s))
plugin = "KtxImporter";
plugin = "KtxImporter"_s;
/* https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header */
else if(dataString.hasPrefix("\x89PNG\x0d\x0a\x1a\x0a"_s))
plugin = "PngImporter";
plugin = "PngImporter"_s;
/* http://paulbourke.net/dataformats/tiff/,
http://paulbourke.net/dataformats/tiff/tiff_summary.pdf */
else if(dataString.hasPrefix("II\x2a\x00"_s) ||
dataString.hasPrefix("MM\x00\x2a"_s))
plugin = "TiffImporter";
plugin = "TiffImporter"_s;
/* https://github.com/file/file/blob/d04de269e0b06ccd0a7d1bf4974fed1d75be7d9e/magic/Magdir/images#L18-L22
TGAs are a complete guesswork, so try after everything else fails. */
else if([dataView]() {
@ -221,7 +221,7 @@ void AnyImageImporter::doOpenData(Containers::Array<char>&& data, DataFlags) {
/* Probably TGA, heh. Or random memory. */
return true;
}()) plugin = "TgaImporter";
}()) plugin = "TgaImporter"_s;
else if(!data.size()) {
Error{} << "Trade::AnyImageImporter::openData(): file is empty";
return;
@ -233,7 +233,7 @@ void AnyImageImporter::doOpenData(Containers::Array<char>&& data, DataFlags) {
if(data.size() > 2) signature |= UnsignedInt(UnsignedByte(data[2])) << 8;
if(data.size() > 3) signature |= UnsignedInt(UnsignedByte(data[3]));
/* If there's less than four bytes, cut the rest away */
Error{} << "Trade::AnyImageImporter::openData(): cannot determine the format from signature 0x" << Debug::nospace << Utility::formatString("{:.8x}", signature).substr(0, data.size() < 4 ? data.size()*2 : std::string::npos);
Error{} << "Trade::AnyImageImporter::openData(): cannot determine the format from signature 0x" << Debug::nospace << Utility::format("{:.8x}", signature).prefix(Math::min(data.size(), std::size_t{4})*2);
return;
}

2
src/MagnumPlugins/AnyImageImporter/AnyImageImporter.h

@ -154,7 +154,7 @@ class MAGNUM_ANYIMAGEIMPORTER_EXPORT AnyImageImporter: public AbstractImporter {
explicit AnyImageImporter(PluginManager::Manager<AbstractImporter>& manager);
/** @brief Plugin manager constructor */
explicit AnyImageImporter(PluginManager::AbstractManager& manager, const std::string& plugin);
explicit AnyImageImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);
/** @brief Copying is not allowed */
AnyImageImporter(const AnyImageImporter&) = delete;

1
src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

@ -137,6 +137,7 @@ const struct {
/* There was a bug where the error message shifted a signed value,
poisoning the output. It also was throwing away leading zero bytes. */
{"leading zeros, negative char", "\x00\xff\x00\xff"_s, "00ff00ff"},
{"lots zero bytes", "\x00\x00\x00\x00"_s, "00000000"},
{"just one byte", "\x33"_s, "33"},
{"just one zero byte", "\x00"_s, "00"},
{"DDS, but no space", "DDS!"_s, "44445321"},

2
src/MagnumPlugins/AnySceneConverter/AnySceneConverter.cpp

@ -43,7 +43,7 @@ using namespace Containers::Literals;
AnySceneConverter::AnySceneConverter(PluginManager::Manager<AbstractSceneConverter>& manager): AbstractSceneConverter{manager} {}
AnySceneConverter::AnySceneConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractSceneConverter{manager, plugin} {}
AnySceneConverter::AnySceneConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractSceneConverter{manager, plugin} {}
AnySceneConverter::~AnySceneConverter() = default;

2
src/MagnumPlugins/AnySceneConverter/AnySceneConverter.h

@ -111,7 +111,7 @@ class MAGNUM_ANYSCENECONVERTER_EXPORT AnySceneConverter: public AbstractSceneCon
explicit AnySceneConverter(PluginManager::Manager<AbstractSceneConverter>& manager);
/** @brief Plugin manager constructor */
explicit AnySceneConverter(PluginManager::AbstractManager& manager, const std::string& plugin);
explicit AnySceneConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);
~AnySceneConverter();

125
src/MagnumPlugins/AnySceneImporter/AnySceneImporter.cpp

@ -29,7 +29,8 @@
#include <Corrade/PluginManager/Manager.h>
#include <Corrade/PluginManager/PluginMetadata.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/DebugStl.h>
#include <Corrade/Utility/DebugStl.h> /* for PluginMetadata::name() */
#include <Corrade/Utility/Path.h>
#include <Corrade/Utility/String.h>
#include "Magnum/Trade/AnimationData.h"
@ -55,9 +56,11 @@
namespace Magnum { namespace Trade {
using namespace Containers::Literals;
AnySceneImporter::AnySceneImporter(PluginManager::Manager<AbstractImporter>& manager): AbstractImporter{manager} {}
AnySceneImporter::AnySceneImporter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractImporter{manager, plugin} {}
AnySceneImporter::AnySceneImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractImporter{manager, plugin} {}
AnySceneImporter::~AnySceneImporter() = default;
@ -74,66 +77,68 @@ void AnySceneImporter::doClose() {
void AnySceneImporter::doOpenFile(const Containers::StringView filename) {
CORRADE_INTERNAL_ASSERT(manager());
/** @todo lowercase only the extension, once Directory::split() is done */
const std::string normalized = Utility::String::lowercase(filename);
/* We don't detect any double extensions yet, so we can normalize just the
extension. In case we eventually might, it'd have to be split() instead
to save at least by normalizing just the filename and not the path. */
const Containers::String normalizedExtension = Utility::String::lowercase(Utility::Path::splitExtension(filename).second());
/* Detect the plugin from extension */
std::string plugin;
if(Utility::String::endsWith(normalized, ".3ds") ||
Utility::String::endsWith(normalized, ".ase"))
plugin = "3dsImporter";
else if(Utility::String::endsWith(normalized, ".ac"))
plugin = "Ac3dImporter";
else if(Utility::String::endsWith(normalized, ".blend"))
plugin = "BlenderImporter";
else if(Utility::String::endsWith(normalized, ".bvh"))
plugin = "BvhImporter";
else if(Utility::String::endsWith(normalized, ".csm"))
plugin = "CsmImporter";
else if(Utility::String::endsWith(normalized, ".dae"))
plugin = "ColladaImporter";
else if(Utility::String::endsWith(normalized, ".x"))
plugin = "DirectXImporter";
else if(Utility::String::endsWith(normalized, ".dxf"))
plugin = "DxfImporter";
else if(Utility::String::endsWith(normalized, ".fbx"))
plugin = "FbxImporter";
else if(Utility::String::endsWith(normalized, ".gltf") ||
Utility::String::endsWith(normalized, ".glb"))
plugin = "GltfImporter";
else if(Utility::String::endsWith(normalized, ".ifc"))
plugin = "IfcImporter";
else if(Utility::String::endsWith(normalized, ".irrmesh") ||
Utility::String::endsWith(normalized, ".irr"))
plugin = "IrrlichtImporter";
else if(Utility::String::endsWith(normalized, ".lwo") ||
Utility::String::endsWith(normalized, ".lws"))
plugin = "LightWaveImporter";
else if(Utility::String::endsWith(normalized, ".lxo"))
plugin = "ModoImporter";
else if(Utility::String::endsWith(normalized, ".ms3d"))
plugin = "MilkshapeImporter";
else if(Utility::String::endsWith(normalized, ".obj"))
plugin = "ObjImporter";
else if(Utility::String::endsWith(normalized, ".xml"))
plugin = "OgreImporter";
else if(Utility::String::endsWith(normalized, ".ogex"))
plugin = "OpenGexImporter";
else if(Utility::String::endsWith(normalized, ".ply"))
plugin = "StanfordImporter";
else if(Utility::String::endsWith(normalized, ".stl"))
plugin = "StlImporter";
else if(Utility::String::endsWith(normalized, ".cob") ||
Utility::String::endsWith(normalized, ".scn"))
plugin = "TrueSpaceImporter";
else if(Utility::String::endsWith(normalized, ".3d"))
plugin = "UnrealImporter";
else if(Utility::String::endsWith(normalized, ".smd") ||
Utility::String::endsWith(normalized, ".vta"))
plugin = "ValveImporter";
else if(Utility::String::endsWith(normalized, ".xgl") ||
Utility::String::endsWith(normalized, ".zgl"))
plugin = "XglImporter";
Containers::StringView plugin;
if(normalizedExtension == ".3ds"_s ||
normalizedExtension == ".ase"_s)
plugin = "3dsImporter"_s;
else if(normalizedExtension == ".ac"_s)
plugin = "Ac3dImporter"_s;
else if(normalizedExtension == ".blend"_s)
plugin = "BlenderImporter"_s;
else if(normalizedExtension == ".bvh"_s)
plugin = "BvhImporter"_s;
else if(normalizedExtension == ".csm"_s)
plugin = "CsmImporter"_s;
else if(normalizedExtension == ".dae"_s)
plugin = "ColladaImporter"_s;
else if(normalizedExtension == ".x"_s)
plugin = "DirectXImporter"_s;
else if(normalizedExtension == ".dxf"_s)
plugin = "DxfImporter"_s;
else if(normalizedExtension == ".fbx"_s)
plugin = "FbxImporter"_s;
else if(normalizedExtension == ".gltf"_s ||
normalizedExtension == ".glb"_s)
plugin = "GltfImporter"_s;
else if(normalizedExtension == ".ifc"_s)
plugin = "IfcImporter"_s;
else if(normalizedExtension == ".irrmesh"_s ||
normalizedExtension == ".irr"_s)
plugin = "IrrlichtImporter"_s;
else if(normalizedExtension == ".lwo"_s ||
normalizedExtension == ".lws"_s)
plugin = "LightWaveImporter"_s;
else if(normalizedExtension == ".lxo"_s)
plugin = "ModoImporter"_s;
else if(normalizedExtension == ".ms3d"_s)
plugin = "MilkshapeImporter"_s;
else if(normalizedExtension == ".obj"_s)
plugin = "ObjImporter"_s;
else if(normalizedExtension == ".xml"_s)
plugin = "OgreImporter"_s;
else if(normalizedExtension == ".ogex"_s)
plugin = "OpenGexImporter"_s;
else if(normalizedExtension == ".ply"_s)
plugin = "StanfordImporter"_s;
else if(normalizedExtension == ".stl"_s)
plugin = "StlImporter"_s;
else if(normalizedExtension == ".cob"_s ||
normalizedExtension == ".scn"_s)
plugin = "TrueSpaceImporter"_s;
else if(normalizedExtension == ".3d"_s)
plugin = "UnrealImporter"_s;
else if(normalizedExtension == ".smd"_s ||
normalizedExtension == ".vta"_s)
plugin = "ValveImporter"_s;
else if(normalizedExtension == ".xgl"_s ||
normalizedExtension == ".zgl"_s)
plugin = "XglImporter"_s;
else {
Error{} << "Trade::AnySceneImporter::openFile(): cannot determine the format of" << filename;
return;

2
src/MagnumPlugins/AnySceneImporter/AnySceneImporter.h

@ -151,7 +151,7 @@ class MAGNUM_ANYSCENEIMPORTER_EXPORT AnySceneImporter: public AbstractImporter {
explicit AnySceneImporter(PluginManager::Manager<AbstractImporter>& manager);
/** @brief Plugin manager constructor */
explicit AnySceneImporter(PluginManager::AbstractManager& manager, const std::string& plugin);
explicit AnySceneImporter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);
~AnySceneImporter();

14
src/MagnumPlugins/AnyShaderConverter/AnyConverter.cpp

@ -31,7 +31,7 @@
#include <Corrade/PluginManager/PluginMetadata.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/DebugStl.h> /* for PluginMetadata::name() */
#include <Corrade/Utility/FormatStl.h>
#include <Corrade/Utility/Format.h>
#include <Corrade/Utility/Path.h>
#include <Corrade/Utility/String.h>
@ -51,7 +51,7 @@ struct AnyConverter::State {
AnyConverter::AnyConverter(PluginManager::Manager<AbstractConverter>& manager): AbstractConverter{manager} {}
AnyConverter::AnyConverter(PluginManager::AbstractManager& manager, const std::string& plugin): AbstractConverter{manager, plugin}, _state{InPlaceInit} {}
AnyConverter::AnyConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin): AbstractConverter{manager, plugin}, _state{InPlaceInit} {}
AnyConverter::~AnyConverter() = default;
@ -186,7 +186,7 @@ std::pair<bool, Containers::String> AnyConverter::doValidateFile(const Stage sta
if(format.isEmpty()) return {};
/* Decide on a plugin name based on the format */
const std::string plugin = Utility::formatString("{}ShaderConverter", format);
const Containers::String plugin = Utility::format("{}ShaderConverter", format);
/* Try to load the plugin */
if(!(manager()->load(plugin) & PluginManager::LoadState::Loaded)) {
@ -242,7 +242,7 @@ std::pair<bool, Containers::String> AnyConverter::doValidateData(const Stage sta
Error{} << "ShaderTools::AnyConverter::validateData(): no input format specified";
return {};
}
const std::string plugin = Utility::formatString("{}ShaderConverter", stringForFormat(_state->inputFormat));
const Containers::String plugin = Utility::format("{}ShaderConverter", stringForFormat(_state->inputFormat));
/* Try to load the plugin */
if(!(manager()->load(plugin) & PluginManager::LoadState::Loaded)) {
@ -308,7 +308,7 @@ bool AnyConverter::doConvertFileToFile(const Stage stage, const Containers::Stri
/* Decide on a plugin name based on the format. This might result in
invalid combinations such as SpirvToGlslShaderConverter which can't be
really handled yet but I think that's okay for now. */
const std::string plugin = Utility::formatString(
const Containers::String plugin = Utility::format(
formatFrom == formatTo ? "{}ShaderConverter" : "{}To{}ShaderConverter",
formatFrom, formatTo);
@ -393,7 +393,7 @@ Containers::Array<char> AnyConverter::doConvertFileToData(const Stage stage, con
/* Decide on a plugin name based on the format. This might result in
invalid combinations such as SpirvToGlslShaderConverter which can't be
really handled yet but I think that's okay for now. */
const std::string plugin = Utility::formatString(
const Containers::String plugin = Utility::format(
formatFrom == formatTo ? "{}ShaderConverter" : "{}To{}ShaderConverter",
formatFrom, formatTo);
@ -476,7 +476,7 @@ Containers::Array<char> AnyConverter::doConvertDataToData(const Stage stage, con
}
const Containers::StringView formatFrom = stringForFormat(_state->inputFormat);
const Containers::StringView formatTo = stringForFormat(_state->outputFormat);
const std::string plugin = Utility::formatString(
const Containers::String plugin = Utility::format(
formatFrom == formatTo ? "{}ShaderConverter" : "{}To{}ShaderConverter",
formatFrom, formatTo);

2
src/MagnumPlugins/AnyShaderConverter/AnyConverter.h

@ -146,7 +146,7 @@ class MAGNUM_ANYSHADERCONVERTER_EXPORT AnyConverter: public AbstractConverter {
explicit AnyConverter(PluginManager::Manager<AbstractConverter>& manager);
/** @brief Plugin manager constructor */
explicit AnyConverter(PluginManager::AbstractManager& manager, const std::string& plugin);
explicit AnyConverter(PluginManager::AbstractManager& manager, const Containers::StringView& plugin);
~AnyConverter();

Loading…
Cancel
Save