[Bf-blender-cvs] [518d6906287] blender-v2.79-release: DPI: add back option to control line width, tweak default width.

Brecht Van Lommel noreply at git.blender.org
Thu Aug 17 14:45:12 CEST 2017


Commit: 518d6906287947fd92388bd6438f6552177e051c
Author: Brecht Van Lommel
Date:   Mon Aug 7 22:42:47 2017 +0200
Branches: blender-v2.79-release
https://developer.blender.org/rB518d6906287947fd92388bd6438f6552177e051c

DPI: add back option to control line width, tweak default width.

Adds thin/default/thick modes to add -1/0/1 to the auto detected line width,
while leaving the overall UI scale unchanged.

Also tweaks the default line width threshold, so thicker lines start from
slightly high UI scales.

Differential Revision: https://developer.blender.org/D2778

===================================================================

M	release/scripts/startup/bl_ui/space_userpref.py
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/intern/rna_userdef.c
M	source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 117b59d6d2f..468b631416a 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -218,6 +218,7 @@ class USERPREF_PT_interface(Panel):
         col = row.column()
         col.label(text="Display:")
         col.prop(view, "ui_scale", text="Scale")
+        col.prop(view, "ui_line_width", text="Line Width")
         col.prop(view, "show_tooltips")
         col.prop(view, "show_tooltips_python")
         col.prop(view, "show_object_info", text="Object Info")
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 6bbf5144d29..cddb1e06b8c 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -473,7 +473,7 @@ typedef struct UserDef {
 	int scrollback;     /* console scrollback limit */
 	int dpi;            /* range 48-128? */
 	float ui_scale;     /* interface scale */
-	int pad1;
+	int ui_line_width;  /* interface line width */
 	char node_margin;   /* node insert offset (aka auto-offset) margin, but might be useful for later stuff as well */
 	char pad2;
 	short transopts;    /* eUserpref_Translation_Flags */
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index f2ed79cb5ff..350cb02223f 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -3304,6 +3304,13 @@ static void rna_def_userdef_view(BlenderRNA *brna)
 		{0, NULL, 0, NULL, NULL}
 	};
 
+	static EnumPropertyItem line_width[] = {
+		{-1, "THIN", 0, "Thin", "Thinner lines than the default"},
+		{ 0, "AUTO", 0, "Auto", "Automatic line width based on UI scale"},
+		{ 1, "THICK", 0, "Thick", "Thicker lines than the default"},
+		{0, NULL, 0, NULL, NULL}
+	};
+
 	PropertyRNA *prop;
 	StructRNA *srna;
 	
@@ -3321,6 +3328,12 @@ static void rna_def_userdef_view(BlenderRNA *brna)
 	RNA_def_property_float_default(prop, 1.0f);
 	RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");
 
+	prop = RNA_def_property(srna, "ui_line_width", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, line_width);
+	RNA_def_property_ui_text(prop, "UI Line Width",
+	                         "Changes the thickness of lines and points in the interface");
+	RNA_def_property_update(prop, 0, "rna_userdef_dpi_update");
+
 	/* display */
 	prop = RNA_def_property(srna, "show_tooltips", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TOOLTIPS);
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index e7a1643a1ff..9fe215f7712 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -377,12 +377,12 @@ void wm_window_title(wmWindowManager *wm, wmWindow *win)
 
 void WM_window_set_dpi(wmWindow *win)
 {
-	int auto_dpi = GHOST_GetDPIHint(win->ghostwin);
+	float auto_dpi = GHOST_GetDPIHint(win->ghostwin);
 
 	/* Clamp auto DPI to 96, since our font/interface drawing does not work well
 	 * with lower sizes. The main case we are interested in supporting is higher
 	 * DPI. If a smaller UI is desired it is still possible to adjust UI scale. */
-	auto_dpi = MAX2(auto_dpi, 96);
+	auto_dpi = max_ff(auto_dpi, 96.0f);
 
 	/* Lazily init UI scale size, preserving backwards compatibility by
 	 * computing UI scale from ratio of previous DPI and auto DPI */
@@ -402,13 +402,16 @@ void WM_window_set_dpi(wmWindow *win)
 	/* Blender's UI drawing assumes DPI 72 as a good default following macOS
 	 * while Windows and Linux use DPI 96. GHOST assumes a default 96 so we
 	 * remap the DPI to Blender's convention. */
+	auto_dpi *= GHOST_GetNativePixelSize(win->ghostwin);
 	int dpi = auto_dpi * U.ui_scale * (72.0 / 96.0f);
 
 	/* Automatically set larger pixel size for high DPI. */
-	int pixelsize = MAX2(1, dpi / 54);
+	int pixelsize = max_ii(1, (int)(dpi / 64));
+	/* User adjustment for pixel size. */
+	pixelsize = max_ii(1, pixelsize + U.ui_line_width);
 
 	/* Set user preferences globals for drawing, and for forward compatibility. */
-	U.pixelsize = GHOST_GetNativePixelSize(win->ghostwin) * pixelsize;
+	U.pixelsize = pixelsize;
 	U.dpi = dpi / pixelsize;
 	U.virtual_pixel = (pixelsize == 1) ? VIRTUAL_PIXEL_NATIVE : VIRTUAL_PIXEL_DOUBLE;
 	U.widget_unit = (U.pixelsize * U.dpi * 20 + 36) / 72;




More information about the Bf-blender-cvs mailing list