1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/dashboard-ui/bower_components/emby-webcomponents/subtitlesettings/subtitleappearancehelper.js

211 lines
6.8 KiB
JavaScript
Raw Normal View History

2018-10-23 01:05:09 +03:00
define([], function() {
"use strict";
function getTextStyles(settings, isCue) {
var list = [];
if (isCue) switch (settings.textSize || "") {
case "smaller":
list.push({
name: "font-size",
value: ".5em"
});
break;
case "small":
list.push({
name: "font-size",
value: ".7em"
});
break;
case "large":
list.push({
name: "font-size",
value: "1.3em"
});
break;
case "larger":
list.push({
name: "font-size",
value: "1.72em"
});
break;
case "extralarge":
list.push({
name: "font-size",
value: "2em"
});
break;
default:
case "medium":
} else switch (settings.textSize || "") {
case "smaller":
list.push({
name: "font-size",
value: ".8em"
});
break;
case "small":
list.push({
name: "font-size",
value: "inherit"
});
break;
case "larger":
list.push({
name: "font-size",
value: "2em"
});
break;
case "extralarge":
list.push({
name: "font-size",
value: "2.2em"
});
break;
case "large":
list.push({
name: "font-size",
value: "1.72em"
});
break;
default:
case "medium":
list.push({
name: "font-size",
value: "1.36em"
})
}
switch (settings.dropShadow || "") {
case "raised":
list.push({
name: "text-shadow",
value: "-1px -1px white, 0px -1px white, -1px 0px white, 1px 1px black, 0px 1px black, 1px 0px black"
});
break;
case "depressed":
list.push({
name: "text-shadow",
value: "1px 1px white, 0px 1px white, 1px 0px white, -1px -1px black, 0px -1px black, -1px 0px black"
});
break;
case "uniform":
list.push({
name: "text-shadow",
value: "-1px 0px #000000, 0px 1px #000000, 1px 0px #000000, 0px -1px #000000"
});
break;
case "none":
list.push({
name: "text-shadow",
value: "none"
});
break;
default:
case "dropshadow":
list.push({
name: "text-shadow",
value: "#000000 0px 0px 7px"
})
}
var background = settings.textBackground || "transparent";
background && list.push({
name: "background-color",
value: background
});
var textColor = settings.textColor || "#ffffff";
switch (textColor && list.push({
name: "color",
value: textColor
}), settings.font || "") {
case "typewriter":
list.push({
name: "font-family",
value: '"Courier New",monospace'
}), list.push({
name: "font-variant",
value: "none"
});
break;
case "print":
list.push({
name: "font-family",
value: "Georgia,Times New Roman,Arial,Helvetica,serif"
}), list.push({
name: "font-variant",
value: "none"
});
break;
case "console":
list.push({
name: "font-family",
value: "Consolas,Lucida Console,Menlo,Monaco,monospace"
}), list.push({
name: "font-variant",
value: "none"
});
break;
case "cursive":
list.push({
name: "font-family",
value: "Lucida Handwriting,Brush Script MT,Segoe Script,cursive,Quintessential,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"
}), list.push({
name: "font-variant",
value: "none"
});
break;
case "casual":
list.push({
name: "font-family",
value: "Gabriola,Segoe Print,Comic Sans MS,Chalkboard,Short Stack,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"
}), list.push({
name: "font-variant",
value: "none"
});
break;
case "smallcaps":
list.push({
name: "font-family",
value: "Copperplate Gothic,Copperplate Gothic Bold,Copperplate,system-ui,-apple-system,BlinkMacSystemFont,sans-serif"
}), list.push({
name: "font-variant",
value: "small-caps"
});
break;
default:
list.push({
name: "font-family",
value: "inherit"
}), list.push({
name: "font-variant",
value: "none"
})
}
return list
}
function getWindowStyles(settings) {
return []
}
function getStyles(settings, isCue) {
return {
text: getTextStyles(settings, isCue),
window: getWindowStyles(settings)
}
}
function applyStyleList(styles, elem) {
for (var i = 0, length = styles.length; i < length; i++) {
var style = styles[i];
elem.style[style.name] = style.value
}
}
function applyStyles(elements, appearanceSettings) {
var styles = getStyles(appearanceSettings);
elements.text && applyStyleList(styles.text, elements.text), elements.window && applyStyleList(styles.window, elements.window)
}
return {
getStyles: getStyles,
applyStyles: applyStyles
}
});