+ if (i.h_position() > ALIGN_EPSILON) {
+ if (standard == SMPTE) {
+ text->set_attribute ("Hposition", raw_convert<string> (i.h_position() * 100, 6));
+ } else {
+ text->set_attribute ("HPosition", raw_convert<string> (i.h_position() * 100, 6));
+ }
+ }
+
+ if (standard == SMPTE) {
+ text->set_attribute ("Valign", valign_to_string (i.v_align()));
+ } else {
+ text->set_attribute ("VAlign", valign_to_string (i.v_align()));
+ }
+
+ if (i.v_position() > ALIGN_EPSILON) {
+ if (standard == SMPTE) {
+ text->set_attribute ("Vposition", raw_convert<string> (i.v_position() * 100, 6));
+ } else {
+ text->set_attribute ("VPosition", raw_convert<string> (i.v_position() * 100, 6));
+ }
+ } else {
+ if (standard == SMPTE) {
+ text->set_attribute ("Vposition", "0");
+ } else {
+ text->set_attribute ("VPosition", "0");
+ }
+ }
+
+ /* Interop only supports "horizontal" or "vertical" for direction, so only write this
+ for SMPTE.
+ */
+ if (i.direction() != DIRECTION_LTR && standard == SMPTE) {
+ text->set_attribute ("Direction", direction_to_string (i.direction ()));
+ }
+
+ text->add_child_text (i.text());
+ }