29 #ifndef THOR_SFMLLOADERS_HPP
30 #define THOR_SFMLLOADERS_HPP
33 #include <Thor/Resources/Detail/ResourceLoaderHelpers.hpp>
35 #include <Aurora/Meta/Templates.hpp>
57 return detail::makeResourceLoader<R>(
58 [=] (R& resource) {
return resource.loadFromFile(filename); },
59 detail::Tagger(
"File") << filename);
66 template <
class R,
typename T>
69 return detail::makeResourceLoader<R>(
70 [=] (R& resource) {
return resource.loadFromFile(filename, arg1); },
71 detail::Tagger(
"File") << filename << arg1);
78 template <
class R,
typename T,
typename U>
81 return detail::makeResourceLoader<R>(
82 [=] (R& resource) {
return resource.loadFromMemory(arg1, arg2); },
83 detail::Tagger(
"Memory") << arg1 << arg2);
91 template <
class R,
typename T,
typename U,
typename V>
94 return detail::makeResourceLoader<R>(
95 [=] (R& resource) {
return resource.loadFromMemory(arg1, arg2, arg3); },
96 detail::Tagger(
"Memory") << arg1 << arg2 << arg3);
105 return detail::makeResourceLoader<R>(
106 [&] (R& resource) {
return resource.loadFromStream(stream); },
107 detail::Tagger(
"Stream") << &stream);
117 return detail::makeResourceLoader<R>(
118 [&] (R& resource) {
return resource.loadFromStream(vertexShaderStream, fragmentShaderStream); },
119 detail::Tagger(
"Stream") << &vertexShaderStream << &fragmentShaderStream);
126 template <
class R,
typename T>
128 AURORA_ENABLE_IF(!std::is_base_of<sf::InputStream, T>::value))
130 return detail::makeResourceLoader<R>(
131 [&stream, arg1] (R& resource) {
return resource.loadFromStream(stream, arg1); },
132 detail::Tagger(
"Stream") << &stream << arg1);
144 return detail::makeResourceLoader<R>(
145 [=] (R& resource) {
return resource.loadFromSamples(samples, sampleCount, channelCount, sampleRate); },
146 detail::Tagger(
"Samples") << samples << sampleCount << channelCount << sampleRate);
156 return detail::makeResourceLoader<R>(
157 [=] (R& resource) ->
bool
159 resource.create(width, height, pixels);
162 detail::Tagger(
"Pixels") << width << height << pixels);
172 return detail::makeResourceLoader<R>(
173 [=] (R& resource) ->
bool
175 resource.create(width, height, color);
178 detail::Tagger(
"Color") << width << height << color);
188 return detail::makeResourceLoader<R>(
189 [&image, area] (R& resource) {
return resource.loadFromImage(image, area); },
190 detail::Tagger(
"Image") << &image << area);
199 #endif // THOR_SFMLLOADERS_HPP
Definition: Animator.hpp:42
ResourceLoader< R > fromFile(const std::string &filename)
Load the resource from a file on hard disk.
Definition: SfmlLoaders.hpp:55
ResourceLoader< R > fromImage(const sf::Image &image, const sf::IntRect area=sf::IntRect())
Load the resource (usually sf::Texture) from a sf::Image.
Definition: SfmlLoaders.hpp:186
ResourceLoader< R > fromStream(sf::InputStream &stream)
Load the resource from an input stream.
Definition: SfmlLoaders.hpp:103
ResourceLoader< R > fromPixels(unsigned int width, unsigned int height, const sf::Uint8 *pixels)
Load resource (usually sf::Image) from array of pixels.
Definition: SfmlLoaders.hpp:154
ResourceLoader< R > fromSamples(const sf::Int16 *samples, std::size_t sampleCount, unsigned int channelCount, unsigned int sampleRate)
Load sf::SoundBuffer from array of audio samples in memory.
Definition: SfmlLoaders.hpp:142
Class storing loading information for resources.
Definition: ResourceLoader.hpp:48
Class template thor::ResourceLoader.
ResourceLoader< R > fromColor(unsigned int width, unsigned int height, const sf::Color &color)
Load resource (usually sf::Image) from size and fill color.
Definition: SfmlLoaders.hpp:170
ResourceLoader< R > fromMemory(T arg1, U arg2)
Load the resource from a file in memory.
Definition: SfmlLoaders.hpp:79