From 262f19aa631fb7fe80366a3c7d4afdc164e930c4 Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 1 Apr 2020 16:06:47 +0100 Subject: [PATCH] Add vertical text support to SubtitleWebView PiperOrigin-RevId: 304186326 --- .../exoplayer2/ui/SubtitleWebView.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java index 1ce1d16d28..4e869de7ff 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/SubtitleWebView.java @@ -212,6 +212,19 @@ import java.util.List; String textAlign = convertAlignmentToCss(cue.textAlignment); + String writingMode = convertVerticalTypeToCss(cue.verticalType); + + // All measurements are done orthogonally for vertical text (i.e. from left of screen instead + // of top, or vice versa). So flip the position & translation values. + if (cue.verticalType == Cue.VERTICAL_TYPE_LR || cue.verticalType == Cue.VERTICAL_TYPE_RL) { + float tmpFloat = horizontalPositionPercent; + horizontalPositionPercent = verticalPositionPercent; + verticalPositionPercent = tmpFloat; + int tmpInt = horizontalTranslatePercent; + horizontalTranslatePercent = verticalTranslatePercent; + verticalTranslatePercent = tmpInt; + } + html.append( Util.formatInvariant( "
", horizontalPositionPercent, verticalPositionPercent, width, textAlign, + writingMode, horizontalTranslatePercent, verticalTranslatePercent)) .append(SpannedToHtmlConverter.convert(cue.text)) @@ -241,6 +256,18 @@ import java.util.List; "base64"); } + private String convertVerticalTypeToCss(@Cue.VerticalType int verticalType) { + switch (verticalType) { + case Cue.VERTICAL_TYPE_LR: + return "vertical-lr"; + case Cue.VERTICAL_TYPE_RL: + return "vertical-rl"; + case Cue.TYPE_UNSET: + default: + return "horizontal-tb"; + } + } + private String convertAlignmentToCss(@Nullable Layout.Alignment alignment) { if (alignment == null) { return "unset";