[Bf-blender-cvs] [7cc99988093] blender2.8: Edit Mesh: Center text when Edge length & Edge Angle is activated

Clément Foucault noreply at git.blender.org
Tue Sep 25 22:52:36 CEST 2018


Commit: 7cc9998809359dead38bd20de851494e11ab3da1
Author: Clément Foucault
Date:   Mon Sep 24 19:48:08 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB7cc9998809359dead38bd20de851494e11ab3da1

Edit Mesh: Center text when Edge length & Edge Angle is activated

This is more readable as the informations will never overlap and be off the
center of the edge.

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

M	source/blender/draw/intern/draw_anim_viz.c
M	source/blender/draw/intern/draw_armature.c
M	source/blender/draw/intern/draw_manager_text.c
M	source/blender/draw/intern/draw_manager_text.h
M	source/blender/draw/modes/edit_mesh_mode_text.c
M	source/blender/draw/modes/object_mode.c

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

diff --git a/source/blender/draw/intern/draw_anim_viz.c b/source/blender/draw/intern/draw_anim_viz.c
index 20da5e384eb..4ec1f761d04 100644
--- a/source/blender/draw/intern/draw_anim_viz.c
+++ b/source/blender/draw/intern/draw_anim_viz.c
@@ -275,7 +275,7 @@ static void MPATH_cache_motion_path(MPATH_PassList *psl,
 			{
 				numstr_len = sprintf(numstr, " %d", frame);
 				mul_v3_m4v3(co, ob->imat, mpv->co);
-				DRW_text_cache_add(dt, co, numstr, numstr_len, 0, txt_flag, (is_keyframe) ? col_kf : col);
+				DRW_text_cache_add(dt, co, numstr, numstr_len, 0, 0, txt_flag, (is_keyframe) ? col_kf : col);
 			}
 			else if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) {
 				bMotionPathVert *mpvP = (mpv - stepsize);
@@ -284,7 +284,7 @@ static void MPATH_cache_motion_path(MPATH_PassList *psl,
 				if ((equals_v3v3(mpv->co, mpvP->co) == 0) || (equals_v3v3(mpv->co, mpvN->co) == 0)) {
 					numstr_len = sprintf(numstr, " %d", frame);
 					mul_v3_m4v3(co, ob->imat, mpv->co);
-					DRW_text_cache_add(dt, co, numstr, numstr_len, 0, txt_flag, col);
+					DRW_text_cache_add(dt, co, numstr, numstr_len, 0, 0, txt_flag, col);
 				}
 			}
 		}
diff --git a/source/blender/draw/intern/draw_armature.c b/source/blender/draw/intern/draw_armature.c
index 52b076151d8..4eeb306c1c4 100644
--- a/source/blender/draw/intern/draw_armature.c
+++ b/source/blender/draw/intern/draw_armature.c
@@ -1602,7 +1602,7 @@ static void draw_armature_edit(Object *ob)
 					struct DRWTextStore *dt = DRW_text_cache_ensure();
 					DRW_text_cache_add(
 					        dt, vec, eBone->name, strlen(eBone->name),
-					        10, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
+					        10, 0, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
 				}
 
 				/*	Draw additional axes */
@@ -1716,7 +1716,7 @@ static void draw_armature_pose(Object *ob, const float const_color[4])
 					struct DRWTextStore *dt = DRW_text_cache_ensure();
 					DRW_text_cache_add(
 					        dt, vec, pchan->name, strlen(pchan->name),
-					        10, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
+					        10, 0, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
 				}
 
 				/*	Draw additional axes */
diff --git a/source/blender/draw/intern/draw_manager_text.c b/source/blender/draw/intern/draw_manager_text.c
index b32853959c8..1a183e14d60 100644
--- a/source/blender/draw/intern/draw_manager_text.c
+++ b/source/blender/draw/intern/draw_manager_text.c
@@ -50,7 +50,7 @@ typedef struct ViewCachedString {
 		int pack;
 	} col;
 	short sco[2];
-	short xoffs;
+	short xoffs, yoffs;
 	short flag;
 	int str_len;
 
@@ -78,7 +78,7 @@ void DRW_text_cache_add(
         DRWTextStore *dt,
         const float co[3],
         const char *str, const int str_len,
-        short xoffs, short flag,
+        short xoffs, short yoffs, short flag,
         const uchar col[4])
 {
 	int alloc_len;
@@ -99,6 +99,7 @@ void DRW_text_cache_add(
 	copy_v3_v3(vos->vec, co);
 	copy_v4_v4_uchar(vos->col.ub, col);
 	vos->xoffs = xoffs;
+	vos->yoffs = yoffs;
 	vos->flag = flag;
 	vos->str_len = str_len;
 
@@ -162,7 +163,7 @@ void DRW_text_cache_draw(DRWTextStore *dt, ARegion *ar)
 
 				BLF_position(
 				        font_id,
-				        (float)(vos->sco[0] + vos->xoffs), (float)(vos->sco[1]), 2.0f);
+				        (float)(vos->sco[0] + vos->xoffs), (float)(vos->sco[1] + vos->yoffs), 2.0f);
 
 				((vos->flag & DRW_TEXT_CACHE_ASCII) ?
 				 BLF_draw_ascii :
diff --git a/source/blender/draw/intern/draw_manager_text.h b/source/blender/draw/intern/draw_manager_text.h
index 14c33be4cf8..6798f36e7f4 100644
--- a/source/blender/draw/intern/draw_manager_text.h
+++ b/source/blender/draw/intern/draw_manager_text.h
@@ -33,7 +33,7 @@ void DRW_text_cache_add(
         struct DRWTextStore *dt,
         const float co[3],
         const char *str, const int str_len,
-        short xoffs, short flag,
+        short xoffs, short yoffs, short flag,
         const uchar col[4]);
 
 void DRW_text_cache_draw(struct DRWTextStore *dt, struct ARegion *ar);
diff --git a/source/blender/draw/modes/edit_mesh_mode_text.c b/source/blender/draw/modes/edit_mesh_mode_text.c
index 56a015d0e6b..27f4237dba2 100644
--- a/source/blender/draw/modes/edit_mesh_mode_text.c
+++ b/source/blender/draw/modes/edit_mesh_mode_text.c
@@ -71,7 +71,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 	const bool do_moving = (G.moving & G_TRANSFORM_EDIT) != 0;
 	/* when 2 edge-info options are enabled, space apart */
 	const bool do_edge_textpair = (me->drawflag & ME_DRAWEXTRA_EDGELEN) && (me->drawflag & ME_DRAWEXTRA_EDGEANG);
-	const float edge_texpair_sep = 0.4f;
+	const short edge_texpair_sep = (short)(5.0f * U.ui_scale);
 	float clip_planes[4][4];
 	/* allow for displaying shape keys and deform mods */
 	BMIter iter;
@@ -109,12 +109,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 
 				if (clip_segment_v3_plane_n(v1, v2, clip_planes, 4, v1_clip, v2_clip)) {
 
-					if (do_edge_textpair) {
-						interp_v3_v3v3(vmid, v1, v2, edge_texpair_sep);
-					}
-					else {
-						mid_v3_v3v3(vmid, v1_clip, v2_clip);
-					}
+					mid_v3_v3v3(vmid, v1_clip, v2_clip);
 
 					if (do_global) {
 						mul_mat3_m4_v3(ob->obmat, v1);
@@ -130,7 +125,9 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), conv_float, len_v3v3(v1, v2));
 					}
 
-					DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, txt_flag, col);
+					DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0,
+					                   (do_edge_textpair) ? edge_texpair_sep : 0,
+					                   txt_flag, col);
 				}
 			}
 		}
@@ -167,12 +164,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						float no_a[3], no_b[3];
 						float angle;
 
-						if (do_edge_textpair) {
-							interp_v3_v3v3(vmid, v2_clip, v1_clip, edge_texpair_sep);
-						}
-						else {
-							mid_v3_v3v3(vmid, v1_clip, v2_clip);
-						}
+						mid_v3_v3v3(vmid, v1_clip, v2_clip);
 
 						copy_v3_v3(no_a, l_a->f->no);
 						copy_v3_v3(no_b, l_b->f->no);
@@ -187,9 +179,12 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						angle = angle_normalized_v3v3(no_a, no_b);
 
 						numstr_len = BLI_snprintf_rlen(
-						        numstr, sizeof(numstr), "%.3f", is_rad ? angle : RAD2DEGF(angle));
+						        numstr, sizeof(numstr), "%.3f%s", (is_rad) ? angle : RAD2DEGF(angle),
+						                                          (is_rad) ? "r" : "°");
 
-						DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, txt_flag, col);
+						DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0,
+						                   (do_edge_textpair) ? -edge_texpair_sep : 0,
+						                   txt_flag, col);
 					}
 				}
 			}
@@ -242,7 +237,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 					numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), conv_float, area);
 				}
 
-				DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, txt_flag, col);
+				DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, 0, txt_flag, col);
 			}
 		}
 	}
@@ -290,9 +285,10 @@ void DRW_edit_mesh_mode_text_measure_stats(
 						float angle = angle_v3v3v3(v1, v2, v3);
 
 						numstr_len = BLI_snprintf_rlen(
-						        numstr, sizeof(numstr), "%.3f", is_rad ? angle : RAD2DEGF(angle));
+						        numstr, sizeof(numstr), "%.3f%s", (is_rad) ? angle : RAD2DEGF(angle),
+						                                          (is_rad) ? "r" : "°");
 						interp_v3_v3v3(fvec, vmid, v2_local, 0.8f);
-						DRW_text_cache_add(dt, fvec, numstr, numstr_len, 0, txt_flag, col);
+						DRW_text_cache_add(dt, fvec, numstr, numstr_len, 0, 0, txt_flag, col);
 					}
 				}
 			}
@@ -312,7 +308,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 			BM_ITER_MESH_INDEX(v, &iter, em->bm, BM_VERTS_OF_MESH, i) {
 				if (BM_elem_flag_test(v, BM_ELEM_SELECT)) {
 					numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
-					DRW_text_cache_add(dt, v->co, numstr, numstr_len, 0, txt_flag, col);
+					DRW_text_cache_add(dt, v->co, numstr, numstr_len, 0, 0, txt_flag, col);
 				}
 			}
 		}
@@ -330,7 +326,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 					if (clip_segment_v3_plane_n(v1, v2, clip_planes, 4, v1_clip, v2_clip)) {
 						mid_v3_v3v3(vmid, v1_clip, v2_clip);
 						numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
-						DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, txt_flag, col);
+						DRW_text_cache_add(dt, vmid, numstr, numstr_len, 0, 0, txt_flag, col);
 					}
 				}
 			}
@@ -344,7 +340,7 @@ void DRW_edit_mesh_mode_text_measure_stats(
 					BM_face_calc_center_mean(f, v1);
 
 					numstr_len = BLI_snprintf_rlen(numstr, sizeof(numstr), "%d", i);
-					DRW_text_cache_add(dt, v1, numstr, numstr_len, 0, txt_flag, col);
+					DRW_text_cache_add(dt, v1, numstr, numstr_len, 0, 0, txt_flag, col);
 				}
 			}
 		}
diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index bea32cc1af1..99d71939e2f 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -1789,7 +1789,7 @@ static void DRW_shgroup_camera(OBJECT_ShadingGroupList *sgl, Object *ob, ViewLay
 					                   bundle_mat[3],
 					                   track->name,
 					                   strlen(track->name),
-					                   10,
+					                   10, 0,
 					                   DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR,
 					                   is_selected ? text_color_selected : text_color_unselected);
 				}
@@ -2822,7 +2822,7 @@ static void OBJECT_cache_populate(void *vedata, Object *ob)
 			DRW_text_cache_add(
 			        dt, ob->obmat[3],
 			        ob->id.name + 2, strlen(ob->id.name + 2),
-			        10, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
+			        10, 0, DRW_TEXT_CACHE_GLOBALSPACE | DRW_TEXT_CACHE_STRING_PTR, color);
 		}
 
 		if ((ob->dtx & OB_TEXSPACE) && ELEM(ob->type, OB_MESH, OB_CURVE, OB_MBALL)) {



More information about the Bf-blender-cvs mailing list