Bladeren bron

Merge pull request #8981 from toger5/addedGrowFunction

implemented grow(left,top,right,bottom) function
Rémi Verschelde 8 jaren geleden
bovenliggende
commit
bee81d5214
2 gewijzigde bestanden met toevoegingen van 23 en 0 verwijderingen
  1. 19 0
      core/math/math_2d.h
  2. 4 0
      core/variant_call.cpp

+ 19 - 0
core/math/math_2d.h

@@ -329,6 +329,25 @@ struct Rect2 {
 		g.size.height += p_by * 2;
 		return g;
 	}
+	inline Rect2 grow_margin(Margin p_margin, real_t p_amount) const {
+		Rect2 g = *this;
+		g.grow_individual((MARGIN_LEFT == p_margin) ? p_amount : 0,
+				(MARGIN_TOP == p_margin) ? p_amount : 0,
+				(MARGIN_RIGHT == p_margin) ? p_amount : 0,
+				(MARGIN_BOTTOM == p_margin) ? p_amount : 0);
+		return g;
+	}
+
+	inline Rect2 grow_individual(real_t p_left, real_t p_top, real_t p_right, real_t p_bottom) const {
+
+		Rect2 g = *this;
+		g.pos.x -= p_left;
+		g.pos.y -= p_top;
+		g.size.width += p_left + p_right;
+		g.size.height += p_top + p_bottom;
+
+		return g;
+	}
 
 	inline Rect2 expand(const Vector2 &p_vector) const {
 

+ 4 - 0
core/variant_call.cpp

@@ -354,6 +354,8 @@ struct _VariantCall {
 	VCALL_LOCALMEM1R(Rect2, merge);
 	VCALL_LOCALMEM1R(Rect2, has_point);
 	VCALL_LOCALMEM1R(Rect2, grow);
+	VCALL_LOCALMEM2R(Rect2, grow_margin);
+	VCALL_LOCALMEM4R(Rect2, grow_individual);
 	VCALL_LOCALMEM1R(Rect2, expand);
 
 	VCALL_LOCALMEM0R(Vector3, min_axis);
@@ -1433,6 +1435,8 @@ void register_variant_methods() {
 	ADDFUNC1(RECT2, RECT2, Rect2, merge, RECT2, "b", varray());
 	ADDFUNC1(RECT2, BOOL, Rect2, has_point, VECTOR2, "point", varray());
 	ADDFUNC1(RECT2, RECT2, Rect2, grow, REAL, "by", varray());
+	ADDFUNC2(RECT2, RECT2, Rect2, grow_margin, INT, "margin", REAL, "by", varray());
+	ADDFUNC4(RECT2, RECT2, Rect2, grow_individual, REAL, "left", REAL, "top", REAL, "right", REAL, " bottom", varray());
 	ADDFUNC1(RECT2, RECT2, Rect2, expand, VECTOR2, "to", varray());
 
 	ADDFUNC0(VECTOR3, INT, Vector3, min_axis, varray());