From 53e9587861fdf8c588f7e51eca522215167250b4 Mon Sep 17 00:00:00 2001
From: SmallJoker <mk939@ymail.com>
Date: Tue, 3 May 2016 20:14:01 +0200
Subject: [PATCH] Add [resize texture modifier Resizes the texture to the given
 dimensions.

---
 doc/lua_api.txt     |  7 +++++++
 src/client/tile.cpp | 26 +++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/doc/lua_api.txt b/doc/lua_api.txt
index e8e74f674..a4592286a 100644
--- a/doc/lua_api.txt
+++ b/doc/lua_api.txt
@@ -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.
 
diff --git a/src/client/tile.cpp b/src/client/tile.cpp
index 72d626da7..ec8c95f02 100644
--- a/src/client/tile.cpp
+++ b/src/client/tile.cpp
@@ -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 "
-- 
GitLab