]> git.lizzy.rs Git - irrlicht.git/blobdiff - source/Irrlicht/CNullDriver.cpp
Drop createImagesFromFile in favor of createImageFromFile
[irrlicht.git] / source / Irrlicht / CNullDriver.cpp
index d3b72804f18ca83ea70dcb8acb1109982b089061..43b59d0373b07ee8f358b2e08e7659204e7a16c2 100644 (file)
@@ -553,39 +553,21 @@ ITexture* CNullDriver::getTexture(io::IReadFile* file)
 //! opens the file and loads it into the surface\r
 video::ITexture* CNullDriver::loadTextureFromFile(io::IReadFile* file, const io::path& hashName )\r
 {\r
-       ITexture* texture = 0;\r
-\r
-       E_TEXTURE_TYPE type = ETT_2D;\r
+       ITexture *texture = nullptr;\r
 \r
-       core::array<IImage*> imageArray = createImagesFromFile(file, &type);\r
-\r
-       if (checkImage(imageArray))\r
-       {\r
-               switch (type)\r
-               {\r
-               case ETT_2D:\r
-                       texture = createDeviceDependentTexture(hashName.size() ? hashName : file->getFileName(), imageArray[0]);\r
-                       break;\r
-               case ETT_CUBEMAP:\r
-                       if (imageArray.size() >= 6 && imageArray[0] && imageArray[1] && imageArray[2] && imageArray[3] && imageArray[4] && imageArray[5])\r
-                       {\r
-                               texture = createDeviceDependentTextureCubemap(hashName.size() ? hashName : file->getFileName(), imageArray);\r
-                       }\r
-                       break;\r
-               default:\r
-                       _IRR_DEBUG_BREAK_IF(true);\r
-                       break;\r
-               }\r
+       IImage *image = createImageFromFile(file);\r
+       if (!image)\r
+               return nullptr;\r
 \r
+       core::array<IImage*> imageArray;\r
+       imageArray.push_back(image);\r
+       if (checkImage(imageArray)) {\r
+               texture = createDeviceDependentTexture(hashName.size() ? hashName : file->getFileName(), image);\r
                if (texture)\r
                        os::Printer::log("Loaded texture", file->getFileName(), ELL_DEBUG);\r
        }\r
 \r
-       for (u32 i = 0; i < imageArray.size(); ++i)\r
-       {\r
-               if (imageArray[i])\r
-                       imageArray[i]->drop();\r
-       }\r
+       image->drop();\r
 \r
        return texture;\r
 }\r
@@ -1168,36 +1150,26 @@ bool CNullDriver::getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const
        return (TextureCreationFlags & flag)!=0;\r
 }\r
 \r
-core::array<IImage*> CNullDriver::createImagesFromFile(const io::path& filename, E_TEXTURE_TYPE* type)\r
+IImage *CNullDriver::createImageFromFile(const io::path& filename)\r
 {\r
-       // TO-DO -> use 'move' feature from C++11 standard.\r
+       if (!filename.size())\r
+               return nullptr;\r
 \r
-       core::array<IImage*> imageArray;\r
-\r
-       if (filename.size() > 0)\r
-       {\r
-               io::IReadFile* file = FileSystem->createAndOpenFile(filename);\r
-\r
-               if (file)\r
-               {\r
-                       imageArray = createImagesFromFile(file, type);\r
-                       file->drop();\r
-               }\r
-               else\r
-                       os::Printer::log("Could not open file of image", filename, ELL_WARNING);\r
+       io::IReadFile* file = FileSystem->createAndOpenFile(filename);\r
+       if (!file) {\r
+               os::Printer::log("Could not open file of image", filename, ELL_WARNING);\r
+               return nullptr;\r
        }\r
 \r
-       return imageArray;\r
+       IImage *image = createImageFromFile(file);\r
+       file->drop();\r
+       return image;\r
 }\r
 \r
-core::array<IImage*> CNullDriver::createImagesFromFile(io::IReadFile* file, E_TEXTURE_TYPE* type)\r
+IImage *CNullDriver::createImageFromFile(io::IReadFile* file)\r
 {\r
-       // TO-DO -> use 'move' feature from C++11 standard.\r
-\r
-       core::array<IImage*> imageArray;\r
-\r
        if (!file)\r
-               return imageArray;\r
+               return nullptr;\r
 \r
        // try to load file based on file extension\r
        for (int i = SurfaceLoader.size() - 1; i >= 0; --i) {\r
@@ -1205,10 +1177,8 @@ core::array<IImage*> CNullDriver::createImagesFromFile(io::IReadFile* file, E_TE
                        continue;\r
 \r
                file->seek(0); // reset file position which might have changed due to previous loadImage calls\r
-               if (IImage *image = SurfaceLoader[i]->loadImage(file)) {\r
-                       imageArray.push_back(image);\r
-                       return imageArray;\r
-               }\r
+               if (IImage *image = SurfaceLoader[i]->loadImage(file))\r
+                       return image;\r
        }\r
 \r
        // try to load file based on what is in it\r
@@ -1220,13 +1190,11 @@ core::array<IImage*> CNullDriver::createImagesFromFile(io::IReadFile* file, E_TE
                        continue;\r
 \r
                file->seek(0);\r
-               if (IImage *image = SurfaceLoader[i]->loadImage(file)) {\r
-                       imageArray.push_back(image);\r
-                       return imageArray;\r
-               }\r
+               if (IImage *image = SurfaceLoader[i]->loadImage(file))\r
+                       return image;\r
        }\r
 \r
-       return imageArray;\r
+       return nullptr;\r
 }\r
 \r
 \r