[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53003] trunk/blender/source/blender: Fixes for correct UI scaling display:

Ton Roosendaal ton at blender.org
Fri Dec 14 16:09:59 CET 2012


Revision: 53003
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53003
Author:   ton
Date:     2012-12-14 15:09:59 +0000 (Fri, 14 Dec 2012)
Log Message:
-----------
Fixes for correct UI scaling display:

- Move to layer (and more popups) didn't scale yet
- User Prefs and render window now open on right location on Mac Retinas
- Brush sizes for painting now scale for Mac Retina

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/brush.c
    trunk/blender/source/blender/editors/physics/particle_edit.c
    trunk/blender/source/blender/editors/render/render_view.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/blenkernel/intern/brush.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/brush.c	2012-12-14 15:05:05 UTC (rev 53002)
+++ trunk/blender/source/blender/blenkernel/intern/brush.c	2012-12-14 15:09:59 UTC (rev 53003)
@@ -39,6 +39,7 @@
 #include "DNA_color_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_object_types.h"
+#include "DNA_userdef_types.h"
 #include "DNA_windowmanager_types.h"
 
 #include "WM_types.h"
@@ -51,6 +52,7 @@
 #include "BLI_rand.h"
 #include "BLI_utildefines.h"
 
+#include "BKE_blender.h"
 #include "BKE_brush.h"
 #include "BKE_colortools.h"
 #include "BKE_global.h"
@@ -644,8 +646,9 @@
 int BKE_brush_size_get(const Scene *scene, Brush *brush)
 {
 	UnifiedPaintSettings *ups = &scene->toolsettings->unified_paint_settings;
-
-	return (ups->flag & UNIFIED_PAINT_SIZE) ? ups->size : brush->size;
+	int size = (ups->flag & UNIFIED_PAINT_SIZE) ? ups->size : brush->size;
+	
+	return (int)((float)size * U.pixelsize);
 }
 
 int BKE_brush_use_locked_size(const Scene *scene, Brush *brush)

Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c	2012-12-14 15:05:05 UTC (rev 53002)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c	2012-12-14 15:09:59 UTC (rev 53003)
@@ -53,10 +53,9 @@
 #include "BLI_rand.h"
 #include "BLI_utildefines.h"
 
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
 #include "BKE_DerivedMesh.h"
-#include "BKE_depsgraph.h"
-
-#include "BKE_context.h"
 #include "BKE_global.h"
 #include "BKE_object.h"
 #include "BKE_mesh.h"
@@ -193,6 +192,16 @@
 	return scene->toolsettings ? &scene->toolsettings->particle : NULL;
 }
 
+static float pe_brush_size_get(const Scene *UNUSED(scene), ParticleBrushData *brush)
+{
+	// here we can enable unified brush size, needs more work...
+	// UnifiedPaintSettings *ups = &scene->toolsettings->unified_paint_settings;
+	// float size = (ups->flag & UNIFIED_PAINT_SIZE) ? ups->size : brush->size;
+	
+	return brush->size * U.pixelsize;
+}
+
+
 /* always gets at least the first particlesystem even if PSYS_CURRENT flag is not set
  *
  * note: this function runs on poll, therefor it can runs many times a second
@@ -2500,7 +2509,8 @@
 
 static void brush_drawcursor(bContext *C, int x, int y, void *UNUSED(customdata))
 {
-	ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
+	Scene *scene = CTX_data_scene(C);
+	ParticleEditSettings *pset= PE_settings(scene);
 	ParticleBrushData *brush;
 
 	if (pset->brushtype < 0)
@@ -2516,7 +2526,7 @@
 		glColor4ub(255, 255, 255, 128);
 		glEnable(GL_LINE_SMOOTH);
 		glEnable(GL_BLEND);
-		glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40);
+		glutil_draw_lined_arc(0.0, M_PI*2.0, pe_brush_size_get(scene, brush), 40);
 		glDisable(GL_BLEND);
 		glDisable(GL_LINE_SMOOTH);
 		
@@ -3535,7 +3545,7 @@
 		selected= (short)count_selected_keys(scene, edit);
 
 		dmax = max_ff(fabsf(dx), fabsf(dy));
-		tot_steps = dmax/(0.2f * brush->size) + 1;
+		tot_steps = dmax/(0.2f * pe_brush_size_get(scene, brush)) + 1;
 
 		dx /= (float)tot_steps;
 		dy /= (float)tot_steps;
@@ -3549,7 +3559,7 @@
 				{
 					const float mval_f[2] = {dx, dy};
 					data.mval= mval;
-					data.rad= (float)brush->size;
+					data.rad= pe_brush_size_get(scene, brush);
 
 					data.combfac= (brush->strength - 0.5f) * 2.0f;
 					if (data.combfac < 0.0f)
@@ -3569,7 +3579,7 @@
 				{
 					if (edit->psys && edit->pathcache) {
 						data.mval= mval;
-						data.rad= (float)brush->size;
+						data.rad= pe_brush_size_get(scene, brush);
 						data.cutfac= brush->strength;
 
 						if (selected)
@@ -3590,7 +3600,7 @@
 				{
 					data.mval= mval;
 				
-					data.rad= (float)brush->size;
+					data.rad= pe_brush_size_get(scene, brush);
 					data.growfac= brush->strength / 50.0f;
 
 					if (brush->invert ^ flip)
@@ -3609,7 +3619,7 @@
 					if (edit->psys) {
 						data.dm= psmd->dm;
 						data.mval= mval;
-						data.rad= (float)brush->size;
+						data.rad= pe_brush_size_get(scene, brush);
 						data.select= selected;
 
 						data.pufffac= (brush->strength - 0.5f) * 2.0f;
@@ -3642,7 +3652,7 @@
 				case PE_BRUSH_SMOOTH:
 				{
 					data.mval= mval;
-					data.rad= (float)brush->size;
+					data.rad= pe_brush_size_get(scene, brush);
 
 					data.vec[0] = data.vec[1] = data.vec[2] = 0.0f;
 					data.tot= 0;
@@ -3665,7 +3675,7 @@
 					if (edit->psys) {
 						data.dm= psmd->dm;
 						data.mval= mval;
-						data.rad= (float)brush->size;
+						data.rad= pe_brush_size_get(scene, brush);
 
 						data.weightfac = brush->strength; /* note that this will never be zero */
 

Modified: trunk/blender/source/blender/editors/render/render_view.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_view.c	2012-12-14 15:05:05 UTC (rev 53002)
+++ trunk/blender/source/blender/editors/render/render_view.c	2012-12-14 15:09:59 UTC (rev 53003)
@@ -35,6 +35,7 @@
 #include "BLI_utildefines.h"
 
 #include "DNA_scene_types.h"
+#include "DNA_userdef_types.h"
 
 #include "BKE_blender.h"
 #include "BKE_context.h"
@@ -151,9 +152,10 @@
 		if (sizex < 320) sizex = 320;
 		if (sizey < 256) sizey = 256;
 
-		/* XXX some magic to calculate postition */
-		rect.xmin = mx + win->posx - sizex / 2;
-		rect.ymin = my + win->posy - sizey / 2;
+		/* some magic to calculate postition */
+		/* pixelsize: mouse coords are in U.pixelsize units :/ */
+		rect.xmin = (mx / U.pixelsize) + win->posx - sizex / 2;
+		rect.ymin = (my / U.pixelsize) + win->posy - sizey / 2;
 		rect.xmax = rect.xmin + sizex;
 		rect.ymax = rect.ymin + sizey;
 

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2012-12-14 15:05:05 UTC (rev 53002)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2012-12-14 15:09:59 UTC (rev 53003)
@@ -3419,8 +3419,9 @@
 	sizey = 480;
 	
 	/* some magic to calculate postition */
-	rect.xmin = event->x + CTX_wm_window(C)->posx - sizex / 2;
-	rect.ymin = event->y + CTX_wm_window(C)->posy - sizey / 2;
+	/* pixelsize: mouse coords are in U.pixelsize units :/ */
+	rect.xmin = (event->x / U.pixelsize) + CTX_wm_window(C)->posx - sizex / 2;
+	rect.ymin = (event->y / U.pixelsize) + CTX_wm_window(C)->posy - sizey / 2;
 	rect.xmax = rect.xmin + sizex;
 	rect.ymax = rect.ymin + sizey;
 	

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-12-14 15:05:05 UTC (rev 53002)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-12-14 15:09:59 UTC (rev 53003)
@@ -1079,7 +1079,7 @@
 	uiBlock *block;
 	uiLayout *layout;
 	uiStyle *style = UI_GetStyle();
-	int width = 300;
+	int width = 15 * UI_UNIT_X;
 
 	block = uiBeginBlock(C, ar, __func__, UI_EMBOSS);
 	uiBlockClearFlag(block, UI_BLOCK_LOOP);
@@ -1263,7 +1263,7 @@
 	/* if we don't have global undo, we can't do undo push for automatic redo,
 	 * so we require manual OK clicking in this popup */
 	if (!(U.uiflag & USER_GLOBALUNDO))
-		return WM_operator_props_dialog_popup(C, op, 300, UI_UNIT_Y);
+		return WM_operator_props_dialog_popup(C, op, 15 * UI_UNIT_X, UI_UNIT_Y);
 
 	uiPupBlock(C, wm_block_create_redo, op);
 




More information about the Bf-blender-cvs mailing list