summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2016-09-13 11:05:47 -0300
committerJuan Linietsky <reduzio@gmail.com>2016-09-13 11:05:47 -0300
commit8bcb6a290c61d40333cf3aa73e362836b6e12659 (patch)
treedfa1d1e4607059d6bde2bfd135b7ffc889d4fe72 /tools
parent08b096ccc2a46949d5c45e135bc66699f6c4d7cd (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.cpp15
-rw-r--r--tools/editor/editor_node.cpp12
-rw-r--r--tools/editor/editor_scale.cpp11
-rw-r--r--tools/editor/editor_scale.h6
-rw-r--r--tools/editor/editor_settings.cpp2
-rw-r--r--tools/editor/editor_themes.cpp5
-rw-r--r--tools/editor/icons/SCsub6
-rw-r--r--tools/editor/project_manager.cpp12
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);
}
}