#4306 - grouping line/lineAnchor and position/positionAnchor assignments, setting Cue's textAlignment to def value - null

This commit is contained in:
Arnold Szabo 2018-10-02 18:45:06 +03:00
parent 75a7385bbb
commit 56c7e1ff47

View File

@ -202,69 +202,63 @@ public final class SubripDecoder extends SimpleSubtitleDecoder {
* @return Built cue * @return Built cue
*/ */
private Cue buildCue(Spanned text, String alignmentTag) { private Cue buildCue(Spanned text, String alignmentTag) {
// Default values used for positioning the subtitle in case of align tags float line, position;
float line = DEFAULT_END_FRACTION, position = DEFAULT_MID_FRACTION; @Cue.AnchorType int positionAnchor;
@Cue.AnchorType int positionAnchor = Cue.ANCHOR_TYPE_MIDDLE; @Cue.AnchorType int lineAnchor;
@Cue.AnchorType int lineAnchor = Cue.ANCHOR_TYPE_END;
// Set position and position anchor (horizontal alignment)
switch (alignmentTag) { switch (alignmentTag) {
case ALIGN_BOTTOM_LEFT: case ALIGN_BOTTOM_LEFT:
line = DEFAULT_END_FRACTION; case ALIGN_MID_LEFT:
case ALIGN_TOP_LEFT:
position = DEFAULT_START_FRACTION; position = DEFAULT_START_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_START; positionAnchor = Cue.ANCHOR_TYPE_START;
lineAnchor = Cue.ANCHOR_TYPE_END;
break; break;
case ALIGN_BOTTOM_MID: case ALIGN_BOTTOM_MID:
line = DEFAULT_END_FRACTION; case ALIGN_MID_MID:
case ALIGN_TOP_MID:
position = DEFAULT_MID_FRACTION; position = DEFAULT_MID_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_MIDDLE; positionAnchor = Cue.ANCHOR_TYPE_MIDDLE;
lineAnchor = Cue.ANCHOR_TYPE_END;
break; break;
case ALIGN_BOTTOM_RIGHT: case ALIGN_BOTTOM_RIGHT:
line = DEFAULT_END_FRACTION;
position = DEFAULT_END_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_END;
lineAnchor = Cue.ANCHOR_TYPE_END;
break;
case ALIGN_MID_LEFT:
line = DEFAULT_MID_FRACTION;
position = DEFAULT_START_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_START;
lineAnchor = Cue.ANCHOR_TYPE_MIDDLE;
break;
case ALIGN_MID_MID:
line = DEFAULT_MID_FRACTION;
position = DEFAULT_MID_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_MIDDLE;
lineAnchor = Cue.ANCHOR_TYPE_MIDDLE;
break;
case ALIGN_MID_RIGHT: case ALIGN_MID_RIGHT:
line = DEFAULT_MID_FRACTION; case ALIGN_TOP_RIGHT:
position = DEFAULT_END_FRACTION; position = DEFAULT_END_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_END; positionAnchor = Cue.ANCHOR_TYPE_END;
lineAnchor = Cue.ANCHOR_TYPE_MIDDLE;
break; break;
case ALIGN_TOP_LEFT: default:
line = DEFAULT_START_FRACTION;
position = DEFAULT_START_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_START;
lineAnchor = Cue.ANCHOR_TYPE_START;
break;
case ALIGN_TOP_MID:
line = DEFAULT_START_FRACTION;
position = DEFAULT_MID_FRACTION; position = DEFAULT_MID_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_MIDDLE; positionAnchor = Cue.ANCHOR_TYPE_MIDDLE;
lineAnchor = Cue.ANCHOR_TYPE_START;
break;
case ALIGN_TOP_RIGHT:
line = DEFAULT_START_FRACTION;
position = DEFAULT_END_FRACTION;
positionAnchor = Cue.ANCHOR_TYPE_END;
lineAnchor = Cue.ANCHOR_TYPE_START;
break; break;
} }
return new Cue(text, Layout.Alignment.ALIGN_NORMAL, line, Cue.LINE_TYPE_FRACTION, lineAnchor, position, positionAnchor, Cue.DIMEN_UNSET); // Set line and line anchor (vertical alignment)
switch (alignmentTag) {
case ALIGN_BOTTOM_LEFT:
case ALIGN_BOTTOM_MID:
case ALIGN_BOTTOM_RIGHT:
line = DEFAULT_END_FRACTION;
lineAnchor = Cue.ANCHOR_TYPE_END;
break;
case ALIGN_MID_LEFT:
case ALIGN_MID_MID:
case ALIGN_MID_RIGHT:
line = DEFAULT_MID_FRACTION;
lineAnchor = Cue.ANCHOR_TYPE_MIDDLE;
break;
case ALIGN_TOP_LEFT:
case ALIGN_TOP_MID:
case ALIGN_TOP_RIGHT:
line = DEFAULT_START_FRACTION;
lineAnchor = Cue.ANCHOR_TYPE_START;
break;
default:
line = DEFAULT_END_FRACTION;
lineAnchor = Cue.ANCHOR_TYPE_END;
break;
}
return new Cue(text, null, line, Cue.LINE_TYPE_FRACTION, lineAnchor, position, positionAnchor, Cue.DIMEN_UNSET);
} }
private static long parseTimecode(Matcher matcher, int groupOffset) { private static long parseTimecode(Matcher matcher, int groupOffset) {