Files
NazaraEngine/SDK/include/NDK/BaseWidget.inl
Lynix 7cab7cacaa Sdk/BaseWidget: Add Center() method
Former-commit-id: 337837199f8909bd39dd10129b379331e9344dd7 [formerly e29dfa72869a7e4831cdf1880db92a7f96cb7755] [formerly fef5a65af9b6bc7b12813a79db818aa6f8034c5f [formerly 5e38bf5eda4f96df7bb2f13d406830a48f293bb9]]
Former-commit-id: b06665741f29f91b9e26fe270e6addd699c5111b [formerly aaf5e62dbdda284ec70dae55b7c37c5e86b75ebc]
Former-commit-id: a9c1a3dc6df30f1688ad9143ba56912d02285c19
2016-10-11 15:41:19 +02:00

86 lines
2.0 KiB
C++

// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Development Kit"
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
#include <NDK/BaseWidget.hpp>
#include <Nazara/Core/Error.hpp>
#include <Nazara/Math/Algorithm.hpp>
namespace Ndk
{
inline BaseWidget::BaseWidget() :
m_backgroundColor(Nz::Color(230, 230, 230, 255)),
m_canvas(nullptr),
m_contentSize(50.f, 50.f),
m_widgetParent(nullptr)
{
SetPadding(5.f, 5.f, 5.f, 5.f);
}
template<typename T, typename... Args>
inline T& BaseWidget::Add(Args&&... args)
{
std::unique_ptr<T> widget = std::make_unique<T>(this, std::forward<Args>(args)...);
T& widgetRef = *widget;
AddChild(std::move(widget));
return widgetRef;
}
inline void BaseWidget::AddChild(std::unique_ptr<BaseWidget>&& widget)
{
m_children.emplace_back(std::move(widget));
}
inline void BaseWidget::Center()
{
NazaraAssert(m_widgetParent, "Widget has no parent");
Nz::Vector2f parentSize = m_widgetParent->GetSize();
Nz::Vector2f mySize = GetSize();
SetPosition((parentSize.x - mySize.x) / 2.f, (parentSize.y - mySize.y) / 2.f);
}
inline Canvas* BaseWidget::GetCanvas()
{
return m_canvas;
}
inline const BaseWidget::Padding& BaseWidget::GetPadding() const
{
return m_padding;
}
inline const Nz::Vector2f& BaseWidget::GetContentSize() const
{
return m_contentSize;
}
inline Nz::Vector2f BaseWidget::GetSize() const
{
return Nz::Vector2f(m_contentSize.x + m_padding.left + m_padding.right, m_contentSize.y + m_padding.top + m_padding.bottom);
}
inline void BaseWidget::SetContentSize(const Nz::Vector2f& size)
{
m_contentSize = size;
Layout();
}
inline void BaseWidget::SetPadding(float left, float top, float right, float bottom)
{
m_padding.left = left;
m_padding.top = top;
m_padding.bottom = bottom;
m_padding.right = right;
Layout();
}
inline void BaseWidget::UpdateCanvasIndex(std::size_t index)
{
m_canvasIndex = index;
}
}