]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texture.cpp
Use default member initializers in async loaders
[libs/gl.git] / source / core / texture.cpp
index 54577aacd55e06f389361f0eda96305b42a63057..175e76a2365688c8aef1f30592759d8addbefab1 100644 (file)
@@ -87,11 +87,12 @@ Texture::Loader::Loader(Texture &t, Collection *c):
        CollectionObjectLoader<Texture>(t, c),
        levels(0)
 {
-       add("external_image", &Loader::external_image);
-       add("external_image_srgb", &Loader::external_image_srgb);
+       add("external_image", &Loader::external_image, false);
+       add("external_image_srgb", &Loader::external_image, true);
        add("generate_mipmap", &Loader::generate_mipmap);
        add("image_data", &Loader::image_data);
        add("mipmap_levels", &Loader::mipmap_levels);
+       add("raw_data", &Loader::raw_data);
 }
 
 void Texture::Loader::finish()
@@ -108,20 +109,9 @@ void Texture::Loader::load_external_image(Graphics::Image &img, const string &fn
        img.load_io(*io);
 }
 
-void Texture::Loader::external_image(const string &fn)
-{
-       obj.use_srgb_format = false;
-       external_image_common(fn);
-}
-
-void Texture::Loader::external_image_srgb(const string &fn)
-{
-       obj.use_srgb_format = true;
-       external_image_common(fn);
-}
-
-void Texture::Loader::external_image_common(const string &fn)
+void Texture::Loader::external_image(bool srgb, const string &fn)
 {
+       obj.use_srgb_format = srgb;
        if(obj.manager)
                obj.manager->set_resource_location(obj, get_collection(), fn);
        else
@@ -154,5 +144,13 @@ void Texture::Loader::mipmap_levels(unsigned l)
        levels = l;
 }
 
+void Texture::Loader::raw_data(const string &data)
+{
+       if(obj.manager)
+               obj.set_manager(0);
+
+       obj.image(0, data.data());
+}
+
 } // namespace GL
 } // namespace Msp