From 53e9587861fdf8c588f7e51eca522215167250b4 Mon Sep 17 00:00:00 2001 From: SmallJoker 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:x` +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 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 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 "