+ /* Now we definitely know the vertical position reference we can finish off the position */
+ for (auto& sub: subs) {
+ switch (sub.vertical_position.reference.get()) {
+ case TOP_OF_SCREEN:
+ case TOP_OF_SUBTITLE:
+ /* Just re-add any margins we came in with */
+ sub.vertical_position.proportional = sub.vertical_position.proportional.get() + base.vertical_position.proportional.get_value_or(0);
+ break;
+ case VERTICAL_CENTRE_OF_SCREEN:
+ /* Margins are ignored, but we need to centre */
+ sub.vertical_position.proportional = sub.vertical_position.proportional.get() - ((line_breaks + 1) * line_size) / 2;
+ break;
+ case BOTTOM_OF_SCREEN:
+ /* Re-add margins and account for each line */
+ sub.vertical_position.proportional =
+ sub.vertical_position.proportional.get()
+ + base.vertical_position.proportional.get_value_or(0)
+ + line_breaks * line_size;
+ break;
+ }
+ }
+