SDLPP: add option to specify render object alignment
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user