HTMLSubtitles use arbitrary values for subtitles size

This commit is contained in:
nklhrstv 2020-03-10 15:48:35 +02:00
parent bd428e3ec1
commit b75c36eda3

View file

@ -8,13 +8,7 @@ var ERROR_CODE = Object.freeze({
FETCH_FAILED: 70,
PARSE_FAILED: 71
});
var FONT_SIZE = Object.freeze({
1: '3vmin',
2: '4vmin',
3: '5vmin',
4: '8vmin',
5: '10vmin'
});
var SIZE_COEF = 25;
function HTMLSubtitles(options) {
var containerElement = options && options.containerElement;
@ -37,7 +31,7 @@ function HTMLSubtitles(options) {
events.on('error', function() { });
containerElement.appendChild(stylesElement);
var subtitlesContainerStylesIndex = stylesElement.sheet.insertRule('#' + containerElement.id + ' .subtitles { position: absolute; right: 0; bottom: 0; left: 0; z-index: 0; text-align: center; }', stylesElement.sheet.cssRules.length);
var subtitlesCueStylesIndex = stylesElement.sheet.insertRule('#' + containerElement.id + ' .subtitles .cue { display: inline-block; padding: 0.2em; text-shadow: 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff; background-color: #00000000; color: #ffffffff; font-size: ' + FONT_SIZE[2] + '; }', stylesElement.sheet.cssRules.length);
var subtitlesCueStylesIndex = stylesElement.sheet.insertRule('#' + containerElement.id + ' .subtitles .cue { display: inline-block; padding: 0.2em; text-shadow: 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff, 0 0 0.03em #222222ff; background-color: #00000000; color: #ffffffff; font-size: 4vmin; }', stylesElement.sheet.cssRules.length);
containerElement.appendChild(subtitlesElement);
subtitlesElement.classList.add('subtitles');
@ -205,16 +199,14 @@ function HTMLSubtitles(options) {
return null;
}
return parseInt(Object.keys(FONT_SIZE).find(function(size) {
return FONT_SIZE[size] === stylesElement.sheet.cssRules[subtitlesCueStylesIndex].style.fontSize;
}));
return parseInt(stylesElement.sheet.cssRules[subtitlesCueStylesIndex].style.fontSize) * SIZE_COEF
},
set: function(value) {
if (destroyed || isNaN(value) || value === null) {
return;
}
stylesElement.sheet.cssRules[subtitlesCueStylesIndex].style.fontSize = FONT_SIZE[Math.max(1, Math.min(5, parseInt(value)))];
stylesElement.sheet.cssRules[subtitlesCueStylesIndex].style.fontSize = Math.floor(value / SIZE_COEF) + 'vmin';
events.emit('propChanged', 'size');
}
},