std::unique_ptr<float []> readVolumeData(const std::string& dtype, const std::string& fpath, size_t volx, size_t voly, size_t volz) { bd::DataType t = bd::to_dataType(dtype); float* rawdata = nullptr; switch (t) { case bd::DataType::Float: { bd::DataReader<float, float> reader; reader.loadRaw3d(fpath, volx, voly, volz, false); rawdata = reader.takeOwnership(); break; } case bd::DataType::UnsignedCharacter: { bd::DataReader<unsigned char, float> reader; reader.loadRaw3d(fpath, volx, voly, volz, false); rawdata = reader.takeOwnership(); break; } case bd::DataType::UnsignedShort: { DataReader<unsigned short, float> reader; reader.loadRaw3d(fpath, volx, voly, volz, false); rawdata = reader.takeOwnership(); break; } default: break; } return std::unique_ptr<float[]>(rawdata); }