// 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 #include #include 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 inline T& BaseWidget::Add(Args&&... args) { std::unique_ptr widget = std::make_unique(this, std::forward(args)...); T& widgetRef = *widget; AddChild(std::move(widget)); return widgetRef; } inline void BaseWidget::AddChild(std::unique_ptr&& 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; } }