diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-09-13 11:05:47 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-09-13 11:05:47 -0300 |
commit | 8bcb6a290c61d40333cf3aa73e362836b6e12659 (patch) | |
tree | dfa1d1e4607059d6bde2bfd135b7ffc889d4fe72 /tools | |
parent | 08b096ccc2a46949d5c45e135bc66699f6c4d7cd (diff) |
-Added VeryLowDPI and MidDPI modes to Godot editor.
-Improved HiDPI detection (requires resolution of > 2000 in X axis)
Diffstat (limited to 'tools')
-rw-r--r-- | tools/editor/editor_fonts.cpp | 15 | ||||
-rw-r--r-- | tools/editor/editor_node.cpp | 12 | ||||
-rw-r--r-- | tools/editor/editor_scale.cpp | 11 | ||||
-rw-r--r-- | tools/editor/editor_scale.h | 6 | ||||
-rw-r--r-- | tools/editor/editor_settings.cpp | 2 | ||||
-rw-r--r-- | tools/editor/editor_themes.cpp | 5 | ||||
-rw-r--r-- | tools/editor/icons/SCsub | 6 | ||||
-rw-r--r-- | tools/editor/project_manager.cpp | 12 |
8 files changed, 36 insertions, 33 deletions
diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp index 47891eef6c..bcf41cbac8 100644 --- a/tools/editor/editor_fonts.cpp +++ b/tools/editor/editor_fonts.cpp @@ -158,17 +158,10 @@ void editor_register_fonts(Ref<Theme> p_theme) { p_theme->set_font("doc_source","EditorFonts",df_doc_code); - if (editor_is_hidpi()) { - //replace default theme - Ref<Texture> di; - Ref<StyleBox> ds; - fill_default_theme(p_theme,df,df_doc,di,ds,true); + //replace default theme + Ref<Texture> di; + Ref<StyleBox> ds; + fill_default_theme(p_theme,df,df_doc,di,ds,EDSCALE); - } else { - Ref<Texture> di; - Ref<StyleBox> ds; - fill_default_theme(p_theme,df,df_doc,di,ds,false); - - } } diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 6df40ad9e5..65cc383a00 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -5369,11 +5369,15 @@ EditorNode::EditorNode() { { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); if (dpi_mode==0) { - editor_set_hidpi( OS::get_singleton()->get_screen_dpi(0) > 150 ); + editor_set_scale( OS::get_singleton()->get_screen_dpi(0) > 150 ? 2.0 : 1.0 ); + } else if (dpi_mode==1) { + editor_set_scale(0.75); } else if (dpi_mode==2) { - editor_set_hidpi(true); - } else { - editor_set_hidpi(false); + editor_set_scale(1.0); + } else if (dpi_mode==3) { + editor_set_scale(1.5); + } else if (dpi_mode==4) { + editor_set_scale(2.0); } } diff --git a/tools/editor/editor_scale.cpp b/tools/editor/editor_scale.cpp index c332acc0ca..8575e1c30a 100644 --- a/tools/editor/editor_scale.cpp +++ b/tools/editor/editor_scale.cpp @@ -1,14 +1,13 @@ #include "editor_scale.h" #include "os/os.h" -static bool editor_hidpi=false; +static float scale = 1.0; -void editor_set_hidpi(bool p_hidpi) { +void editor_set_scale(float p_scale) { - editor_hidpi=p_hidpi; + scale=p_scale; } +float editor_get_scale() { -bool editor_is_hidpi() { - - return editor_hidpi; + return scale; } diff --git a/tools/editor/editor_scale.h b/tools/editor/editor_scale.h index a60cf00f0a..90e575f771 100644 --- a/tools/editor/editor_scale.h +++ b/tools/editor/editor_scale.h @@ -1,8 +1,8 @@ #ifndef EDITOR_SCALE_H #define EDITOR_SCALE_H -void editor_set_hidpi(bool p_hidpi); -bool editor_is_hidpi(); +void editor_set_scale(float p_scale); +float editor_get_scale(); -#define EDSCALE (editor_is_hidpi() ? 2 : 1) +#define EDSCALE (editor_get_scale()) #endif // EDITOR_SCALE_H diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index ad5cd86b4b..4778a7ce90 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -511,7 +511,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { } set("global/hidpi_mode",0); - hints["global/hidpi_mode"]=PropertyInfo(Variant::INT,"global/hidpi_mode",PROPERTY_HINT_ENUM,"Auto,LoDPI,HiDPI",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + hints["global/hidpi_mode"]=PropertyInfo(Variant::INT,"global/hidpi_mode",PROPERTY_HINT_ENUM,"Auto,VeryLoDPI,LoDPI,MidDPI,HiDPI",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/show_script_in_scene_tabs",false); set("global/font_size",14); hints["global/font_size"]=PropertyInfo(Variant::INT,"global/font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); diff --git a/tools/editor/editor_themes.cpp b/tools/editor/editor_themes.cpp index 80ba4c46e0..08f14ec167 100644 --- a/tools/editor/editor_themes.cpp +++ b/tools/editor/editor_themes.cpp @@ -32,6 +32,7 @@ #include "editor_fonts.h" #include "editor_settings.h" #include "core/io/resource_loader.h" +#include "editor_scale.h" Ref<Theme> create_editor_theme() { @@ -43,8 +44,8 @@ Ref<Theme> create_editor_theme() Ref<StyleBoxTexture> focus_sbt=memnew( StyleBoxTexture ); focus_sbt->set_texture(theme->get_icon("EditorFocus","EditorIcons")); for(int i=0;i<4;i++) { - focus_sbt->set_margin_size(Margin(i),16); - focus_sbt->set_default_margin(Margin(i),16); + focus_sbt->set_margin_size(Margin(i),16*EDSCALE); + focus_sbt->set_default_margin(Margin(i),16*EDSCALE); } focus_sbt->set_draw_center(false); theme->set_stylebox("EditorFocus","EditorStyles",focus_sbt); diff --git a/tools/editor/icons/SCsub b/tools/editor/icons/SCsub index bc104294cb..44e28f49e6 100644 --- a/tools/editor/icons/SCsub +++ b/tools/editor/icons/SCsub @@ -61,8 +61,10 @@ def make_editor_icons_action(target, source, env): s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n") s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n") - s.write("\tImage img((editor_is_hidpi()&&p_hidpi_png)?p_hidpi_png:p_png);\n") - s.write("\tif (editor_is_hidpi() && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); }\n") + s.write("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n") + s.write("\tImage img(use_hidpi_image?p_hidpi_png:p_png);\n") + s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); use_hidpi_image=true;}\n") + s.write("\timg.resize(img.get_width()*EDSCALE/(use_hidpi_image?2:1),img.get_height()*EDSCALE/(use_hidpi_image?2:1));\n") s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n") s.write("\treturn texture;\n") s.write("}\n\n") diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index b884e0d111..b9691ee7c4 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -1185,11 +1185,15 @@ ProjectManager::ProjectManager() { { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); if (dpi_mode==0) { - editor_set_hidpi( OS::get_singleton()->get_screen_dpi(0) > 150 ); + editor_set_scale( OS::get_singleton()->get_screen_dpi(0) > 150 ? 2.0 : 1.0 ); + } else if (dpi_mode==1) { + editor_set_scale(0.75); } else if (dpi_mode==2) { - editor_set_hidpi(true); - } else { - editor_set_hidpi(false); + editor_set_scale(1.0); + } else if (dpi_mode==3) { + editor_set_scale(1.5); + } else if (dpi_mode==4) { + editor_set_scale(2.0); } } |