Widget::ComputeElementPadding
This commit is contained in:
@@ -50,9 +50,9 @@ namespace JUI {
|
||||
/// An event that triggers when the widget loses focus.
|
||||
Event<> Unfocused;
|
||||
/// This event triggers when a new widget is added to this widget, or any descendant of this widget.
|
||||
Event<Widget *> DescendantAdded;
|
||||
Event<Widget *> DescendantAdded; // TODO: Debug
|
||||
/// This event triggers when a widget is removed from this widget's children, or any of it's childrens' children, and so forth.
|
||||
Event<Widget *> DescendantRemoved;
|
||||
Event<Widget *> DescendantRemoved; // TODO: Debug
|
||||
/// This event triggers when the hierarchy this widget is contained within changes.
|
||||
Event<Widget *, Widget*> AncestryChanged;
|
||||
/// This event triggers when a widget is added to this widget's list of children.
|
||||
@@ -284,6 +284,12 @@ namespace JUI {
|
||||
|
||||
void SetViewportSize(const Vector2& vps);
|
||||
|
||||
float ComputeElementPadding(float size, const UDim& padding) {
|
||||
return padding.Pixels + (padding.Scale * size);
|
||||
}
|
||||
|
||||
Vector2 ComputeElementPadding(const Vector2& size, const UDim2& padding) const;
|
||||
|
||||
public:
|
||||
|
||||
// TODO: Consider calling J2D::Begin here.
|
||||
|
@@ -179,14 +179,16 @@ std::vector<Widget*> Widget::GetAncestors() {
|
||||
|
||||
Vector2 Widget::GetAbsolutePaddingTopLeft() const {
|
||||
auto parent_abs_size = this->GetParent()->GetAbsoluteSize();
|
||||
UDim2 pad_topleft = {parent->PaddingLeft(), parent->PaddingTop()};
|
||||
return ComputeElementPadding(parent_abs_size, pad_topleft);
|
||||
|
||||
UDim padding_h = parent->PaddingLeft();
|
||||
UDim padding_v = parent->PaddingTop();
|
||||
//UDim padding_h = parent->PaddingLeft();
|
||||
//UDim padding_v = parent->PaddingTop();
|
||||
|
||||
float padding_x = padding_h.Pixels + (padding_h.Scale * parent_abs_size.x);
|
||||
float padding_y = padding_v.Pixels + (padding_v.Scale * parent_abs_size.y);
|
||||
//float padding_x = padding_h.Pixels + (padding_h.Scale * parent_abs_size.x);
|
||||
//float padding_y = padding_v.Pixels + (padding_v.Scale * parent_abs_size.y);
|
||||
|
||||
return {padding_x, padding_y};
|
||||
//return {padding_x, padding_y};
|
||||
}
|
||||
|
||||
Vector2 Widget::GetAbsoluteMarginTopLeft() {
|
||||
@@ -195,15 +197,24 @@ Vector2 Widget::GetAbsoluteMarginTopLeft() {
|
||||
}
|
||||
|
||||
Vector2 Widget::GetAbsolutePaddingBottomRight() const {
|
||||
// Returns the amount by which the widget size should be shrunk.
|
||||
// This combines the Left + Right for horizontal,
|
||||
// and Top + Bottom for vertical padding.
|
||||
|
||||
UDim padding_h = parent->PaddingLeft() + parent->PaddingRight();
|
||||
float final_pad_x = padding_h.Pixels + (padding_h.Scale * parent->GetAbsoluteSize().x);
|
||||
//float final_pad_x = padding_h.Pixels + (padding_h.Scale * parent->GetAbsoluteSize().x);
|
||||
|
||||
UDim padding_v = parent->PaddingTop() + parent->PaddingBottom();
|
||||
float final_pad_y = padding_v.Pixels + (padding_v.Scale * parent->GetAbsoluteSize().y);
|
||||
//float final_pad_y = padding_v.Pixels + (padding_v.Scale * parent->GetAbsoluteSize().y);
|
||||
|
||||
Vector2 padding = {final_pad_x, final_pad_y};
|
||||
UDim2 pad_bottom_left = {padding_h, padding_v};
|
||||
|
||||
return padding;
|
||||
return ComputeElementPadding(parent->GetAbsoluteSize(), pad_bottom_left);
|
||||
|
||||
|
||||
//Vector2 padding = {final_pad_x, final_pad_y};
|
||||
|
||||
//return padding;
|
||||
}
|
||||
|
||||
Vector2 Widget::GetAbsoluteMarginBottomRight() {
|
||||
@@ -393,6 +404,13 @@ void Widget::SetViewportSize(const Vector2 &vps) {
|
||||
child->SetViewportSize(viewport_size);
|
||||
}
|
||||
|
||||
Vector2 Widget::ComputeElementPadding(const Vector2 &size, const UDim2 &padding) const {
|
||||
float pad_x = padding.X.Pixels + (padding.X.Scale * size.x);
|
||||
float pad_y = padding.Y.Pixels + (padding.Y.Scale * size.y);
|
||||
|
||||
return {pad_x, pad_y};
|
||||
}
|
||||
|
||||
AABB2D Widget::AbsoluteBounds() const {
|
||||
return {GetAbsolutePosition(), GetAbsoluteSize()};
|
||||
}
|
||||
|
Reference in New Issue
Block a user