diff options
| author | Rémi Verschelde | 2017-11-19 21:59:11 +0100 |
|---|---|---|
| committer | GitHub | 2017-11-19 21:59:11 +0100 |
| commit | d2bc9613887d9ad02f5c3f95ebd65714fe5c4aee (patch) | |
| tree | 7ca65f5bc48ea07f8ed1f2340b693fd1e50af0bd /editor/editor_node.cpp | |
| parent | d40b1825fc7c21b80a9482ff7e3ee571dc237d17 (diff) | |
| parent | 59c2e8906a5cb64b55f29d656a5a27366ace38a0 (diff) | |
| download | godot-d2bc9613887d9ad02f5c3f95ebd65714fe5c4aee.tar.gz godot-d2bc9613887d9ad02f5c3f95ebd65714fe5c4aee.tar.zst godot-d2bc9613887d9ad02f5c3f95ebd65714fe5c4aee.zip | |
Merge pull request #13000 from djrm/pr_import_fixes
import fixes
Diffstat (limited to 'editor/editor_node.cpp')
| -rw-r--r-- | editor/editor_node.cpp | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index a209aca9d..c7201ef04 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -906,23 +906,29 @@ void EditorNode::_save_scene_with_preview(String p_file, int p_idx) { int preview_size = EditorSettings::get_singleton()->get("filesystem/file_dialog/thumbnail_size"); preview_size *= EDSCALE; - int width, height; - if (img->get_width() > preview_size && img->get_width() >= img->get_height()) { - width = preview_size; - height = img->get_height() * preview_size / img->get_width(); - } else if (img->get_height() > preview_size && img->get_height() >= img->get_width()) { + // consider a square region + int vp_size = MIN(img->get_width(), img->get_height()); + int x = (img->get_width() - vp_size) / 2; + int y = (img->get_height() - vp_size) / 2; - height = preview_size; - width = img->get_width() * preview_size / img->get_height(); + img->convert(Image::FORMAT_RGB8); + + if (vp_size < preview_size) { + // just square it. + img->crop_from_point(x, y, vp_size, vp_size); } else { + int ratio = vp_size / preview_size; + int size = preview_size * (ratio / 2); - width = img->get_width(); - height = img->get_height(); + x = (img->get_width() - size) / 2; + y = (img->get_height() - size) / 2; + + img->crop_from_point(x, y, size, size); + // We could get better pictures with better filters + img->resize(preview_size, preview_size, Image::INTERPOLATE_CUBIC); } - img->convert(Image::FORMAT_RGB8); - img->resize(width, height); img->flip_y(); //save thumbnail directly, as thumbnailer may not update due to actual scene not changing md5 |
