diff options
| -rw-r--r-- | core/math/math_2d.h | 19 | ||||
| -rw-r--r-- | core/variant_call.cpp | 4 | 
2 files changed, 23 insertions, 0 deletions
| diff --git a/core/math/math_2d.h b/core/math/math_2d.h index dc4850eeed..3369e2ec4f 100644 --- a/core/math/math_2d.h +++ b/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 { diff --git a/core/variant_call.cpp b/core/variant_call.cpp index 6568dc877e..9ead727a80 100644 --- a/core/variant_call.cpp +++ b/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()); |