]> git.lizzy.rs Git - irrlicht.git/commitdiff
Drop createImagesFromFile in favor of createImageFromFile
authornumzero <numzer0@yandex.ru>
Fri, 7 Apr 2023 22:36:43 +0000 (01:36 +0300)
committersfan5 <sfan5@live.de>
Sat, 8 Apr 2023 17:07:16 +0000 (19:07 +0200)
include/IVideoDriver.h
source/Irrlicht/CNullDriver.cpp
source/Irrlicht/CNullDriver.h

index f93d761261ef53f1b58cd04ea3b09029e4b8cd89..ef8e38e1d13e3bf5d00aaa99d399988da7e8c69d 100644 (file)
@@ -959,28 +959,6 @@ namespace video
                \return The current texture creation flag enabled mode. */\r
                virtual bool getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const =0;\r
 \r
-               //! Creates a software images from a file.\r
-               /** No hardware texture will be created for those images. This\r
-               method is useful for example if you want to read a heightmap\r
-               for a terrain renderer.\r
-               \param filename Name of the file from which the images are created.\r
-               \param type Pointer to E_TEXTURE_TYPE where a recommended type of the texture will be stored.\r
-               \return The array of created images.\r
-               If you no longer need those images, you should call IImage::drop() on each of them.\r
-               See IReferenceCounted::drop() for more information. */\r
-               virtual core::array<IImage*> createImagesFromFile(const io::path& filename, E_TEXTURE_TYPE* type = 0) = 0;\r
-\r
-               //! Creates a software images from a file.\r
-               /** No hardware texture will be created for those images. This\r
-               method is useful for example if you want to read a heightmap\r
-               for a terrain renderer.\r
-               \param file File from which the image is created.\r
-               \param type Pointer to E_TEXTURE_TYPE where a recommended type of the texture will be stored.\r
-               \return The array of created images.\r
-               If you no longer need those images, you should call IImage::drop() on each of them.\r
-               See IReferenceCounted::drop() for more information. */\r
-               virtual core::array<IImage*> createImagesFromFile(io::IReadFile* file, E_TEXTURE_TYPE* type = 0) = 0;\r
-\r
                //! Creates a software image from a file.\r
                /** No hardware texture will be created for this image. This\r
                method is useful for example if you want to read a heightmap\r
@@ -990,15 +968,7 @@ namespace video
                \return The created image.\r
                If you no longer need the image, you should call IImage::drop().\r
                See IReferenceCounted::drop() for more information. */\r
-               IImage* createImageFromFile(const io::path& filename)\r
-               {\r
-                       core::array<IImage*> imageArray = createImagesFromFile(filename);\r
-\r
-                       for (u32 i = 1; i < imageArray.size(); ++i)\r
-                               imageArray[i]->drop();\r
-\r
-                       return (imageArray.size() > 0) ? imageArray[0] : 0;\r
-               }\r
+               virtual IImage* createImageFromFile(const io::path& filename) = 0;\r
 \r
                //! Creates a software image from a file.\r
                /** No hardware texture will be created for this image. This\r
@@ -1008,15 +978,7 @@ namespace video
                \return The created image.\r
                If you no longer need the image, you should call IImage::drop().\r
                See IReferenceCounted::drop() for more information. */\r
-               IImage* createImageFromFile(io::IReadFile* file)\r
-               {\r
-                       core::array<IImage*> imageArray = createImagesFromFile(file);\r
-\r
-                       for (u32 i = 1; i < imageArray.size(); ++i)\r
-                               imageArray[i]->drop();\r
-\r
-                       return (imageArray.size() > 0) ? imageArray[0] : 0;\r
-               }\r
+               virtual IImage* createImageFromFile(io::IReadFile* file) = 0;\r
 \r
                //! Writes the provided image to a file.\r
                /** Requires that there is a suitable image writer registered\r
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
index e6b27d87718b3397c7f8ad9e9c0ecce24ebc1a9a..95fc0d9e4120424d2155014c2d402b1df792fbfc 100644 (file)
@@ -314,9 +314,9 @@ namespace video
                //! Returns if a texture creation flag is enabled or disabled.\r
                bool getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const override;\r
 \r
-               core::array<IImage*> createImagesFromFile(const io::path& filename, E_TEXTURE_TYPE* type = 0) override;\r
+               IImage *createImageFromFile(const io::path& filename) override;\r
 \r
-               core::array<IImage*> createImagesFromFile(io::IReadFile* file, E_TEXTURE_TYPE* type = 0) override;\r
+               IImage *createImageFromFile(io::IReadFile* file) override;\r
 \r
                //! Creates a software image from a byte array.\r
                /** \param useForeignMemory: If true, the image will use the data pointer\r