void Alignment::UpdateChild() { Widget::Ptr child = GetChild(); if( !child ) { return; } sf::FloatRect allocation( GetAllocation() ); sf::Vector2f spare_space( allocation.width, allocation.height ); spare_space -= child->GetRequisition(); spare_space.x *= 1.f - GetScale().x; spare_space.y *= 1.f - GetScale().y; if( ( spare_space.x < 0 ) || ( spare_space.y < 0 ) ) { #ifdef SFGUI_DEBUG std::cerr << "SFGUI warning: Alignment got a smaller allocation than it requested." << std::endl; return; #endif } allocation.left = spare_space.x * GetAlignment().x; allocation.top = spare_space.y * GetAlignment().y; allocation.width -= spare_space.x; allocation.height -= spare_space.y; child->SetAllocation( allocation ); }
sf::Vector2f Alignment::CalculateRequisition() { Widget::Ptr child = GetChild(); if( !child ) { return sf::Vector2f( 0.f, 0.f ); } return child->GetRequisition(); }