Skip to content

Commit 2c72f6d

Browse files
kaezaShadowNinja
authored andcommitted
Add options for screenshot format and quality
1 parent 37b4f0d commit 2c72f6d

5 files changed

+29
-2
lines changed

builtin/settingtypes.txt

+8
Original file line numberDiff line numberDiff line change
@@ -554,6 +554,14 @@ fallback_font_shadow_alpha (Fallback font shadow alpha) int 128 0 255
554554
# Path to save screenshots at.
555555
screenshot_path (Screenshot folder) path
556556

557+
# Format of screenshots.
558+
screenshot_format (Screenshot format) enum png png,jpg,bmp,pcx,ppm,tga
559+
560+
# Screenshot quality. Only used for JPEG format.
561+
# 1 means worst quality; 100 means best quality.
562+
# Use 0 for default quality.
563+
screenshot_quality (Screenshot quality) int 0 0 100
564+
557565
[**Advanced]
558566

559567
# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.

minetest.conf.example

+10
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,16 @@
653653
# type: path
654654
# screenshot_path =
655655

656+
# Format of screenshots.
657+
# type: enum values: png, jpg, bmp, pcx, ppm, tga
658+
# screenshot_format = png
659+
660+
# Screenshot quality. Only used for JPEG format.
661+
# 1 means worst quality; 100 means best quality.
662+
# Use 0 for default quality.
663+
# type: int min: 0 max: 100
664+
# screenshot_quality = 0
665+
656666
### Advanced
657667

658668
# Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.

src/client.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -1813,9 +1813,12 @@ void Client::makeScreenshot(IrrlichtDevice *device)
18131813
+ DIR_DELIM
18141814
+ std::string("screenshot_")
18151815
+ std::string(timetstamp_c);
1816-
std::string filename_ext = ".png";
1816+
std::string filename_ext = "." + g_settings->get("screenshot_format");
18171817
std::string filename;
18181818

1819+
u32 quality = (u32)g_settings->getS32("screenshot_quality");
1820+
quality = MYMIN(MYMAX(quality, 0), 100) / 100.0 * 255;
1821+
18191822
// Try to find a unique filename
18201823
unsigned serial = 0;
18211824

@@ -1837,7 +1840,7 @@ void Client::makeScreenshot(IrrlichtDevice *device)
18371840
raw_image->copyTo(image);
18381841

18391842
std::ostringstream sstr;
1840-
if (driver->writeImageToFile(image, filename.c_str())) {
1843+
if (driver->writeImageToFile(image, filename.c_str(), quality)) {
18411844
sstr << "Saved screenshot to '" << filename << "'";
18421845
} else {
18431846
sstr << "Failed to save screenshot '" << filename << "'";

src/defaultsettings.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ void set_default_settings(Settings *settings)
123123
settings->setDefault("invert_mouse", "false");
124124
settings->setDefault("enable_clouds", "true");
125125
settings->setDefault("screenshot_path", ".");
126+
settings->setDefault("screenshot_format", "png");
127+
settings->setDefault("screenshot_quality", "0");
126128
settings->setDefault("view_bobbing_amount", "1.0");
127129
settings->setDefault("fall_bobbing_amount", "0.0");
128130
settings->setDefault("enable_3d_clouds", "true");

src/settings_translation_file.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,10 @@ fake_function() {
272272
gettext("Fallback font shadow alpha");
273273
gettext("Screenshot folder");
274274
gettext("Path to save screenshots at.");
275+
gettext("Screenshot format");
276+
gettext("Format of screenshots.");
277+
gettext("Screenshot quality");
278+
gettext("Screenshot quality. Only used for JPEG format.\n1 means worst quality; 100 means best quality.\nUse 0 for default quality.");
275279
gettext("Advanced");
276280
gettext("DPI");
277281
gettext("Adjust dpi configuration to your screen (non X11/Android only) e.g. for 4k screens.");

0 commit comments

Comments
 (0)