SDLPP: add option to specify render object alignment

This commit is contained in:
2021-04-27 15:54:30 +02:00
parent fc1d06a2b8
commit e5d0610f6d
11 changed files with 66 additions and 83 deletions
+35
View File
@@ -242,4 +242,39 @@ void RenderObject::setAnimationSpeed( const double fps ) {
void RenderObject::visit( Visitor &visitor ) {
visitor.visit( *this );
}
void RenderObject::setAlignment( ObjectAlignment horizontal,
ObjectAlignment vertical ) {
_horizontal = horizontal;
_vertical = vertical;
}
Vec2D< double > RenderObject::computeAlignmentAdditions() {
double x_addition = 0, y_addition = 0;
auto dimensions = renderer->getDoubleDimensions();
auto width_diff = dimensions.getX() - 1;
auto height_diff = dimensions.getY() - 1;
switch ( _horizontal ) {
case OBJ_CENTER:
x_addition = width_diff / 2;
break;
case OBJ_END:
x_addition = width_diff;
default:
break;
}
switch ( _vertical ) {
case OBJ_CENTER:
y_addition = height_diff / 2;
break;
case OBJ_END:
y_addition = height_diff;
default:
break;
}
return { x_addition, y_addition };
}
void RenderObject::updateXY() {
auto additions = computeAlignmentAdditions();
current = { original.getX() + additions.getX(),
original.getY() + additions.getY() };
}
} // namespace SDLPP