]> git.lizzy.rs Git - minetest.git/commitdiff
Add [resize texture modifier Resizes the texture to the given dimensions.
authorSmallJoker <mk939@ymail.com>
Tue, 3 May 2016 18:14:01 +0000 (20:14 +0200)
committerest31 <MTest31@outlook.com>
Mon, 9 May 2016 18:48:42 +0000 (20:48 +0200)
doc/lua_api.txt
src/client/tile.cpp

index e8e74f6744a785b89ef90c39d199ffbadd71a164..a4592286a4ea6309afdc16fb1cba771603a7ac6b 100644 (file)
@@ -279,6 +279,13 @@ Example:
 
     [combine:16x32:0,0=default_cobble.png:0,16=default_wood.png
 
+#### `[resize:<w>x<h>`
+Resizes the texture to the given dimensions.
+
+Example:
+
+    default_sandstone.png^[resize:16x16
+
 #### `[brighten`
 Brightens the texture.
 
index 72d626da72ce239c38358753ca4f4b7db960c5f0..ec8c95f02f5fc52d8772fbdee2cdda98cad7cae7 100644 (file)
@@ -1352,7 +1352,6 @@ bool TextureSource::generateImagePart(std::string part_of_name,
                        u32 r1 = stoi(sf.next(","));
                        u32 g1 = stoi(sf.next(","));
                        u32 b1 = stoi(sf.next(""));
-                       std::string filename = sf.next("");
 
                        core::dimension2d<u32> dim = baseimg->getDimension();
 
@@ -1711,6 +1710,31 @@ bool TextureSource::generateImagePart(std::string part_of_name,
                                }
                        }
                }
+               /*
+                       [resize:WxH
+                       Resizes the base image to the given dimensions
+               */
+               else if (str_starts_with(part_of_name, "[resize"))
+               {
+                       if (baseimg == NULL) {
+                               errorstream << "generateImagePart(): baseimg == NULL "
+                                               << "for part_of_name=\""<< part_of_name
+                                               << "\", cancelling." << std::endl;
+                               return false;
+                       }
+
+                       Strfnd sf(part_of_name);
+                       sf.next(":");
+                       u32 width = stoi(sf.next("x"));
+                       u32 height = stoi(sf.next(""));
+                       core::dimension2d<u32> dim(width, height);
+
+                       video::IImage* image = m_device->getVideoDriver()->
+                               createImage(video::ECF_A8R8G8B8, dim);
+                       baseimg->copyToScaling(image);
+                       baseimg->drop();
+                       baseimg = image;
+               }
                else
                {
                        errorstream << "generateImagePart(): Invalid "