// računa vrednosti za transform-scale (x, y) // transform: scale(x,y) se uporablja za raztegovanje videa, ne pa za približevanje // calculates values for transform scale(x, y) // transform: scale(x,y) is used for stretching, not zooming. class Stretcher { // internal variables // functions constructor(videoData) { this.conf = videoData; this.settings = videoData.settings; this.mode = this.settings.active.stretch.initialMode; } applyConditionalStretch(stretchFactors, actualAr){ var playerAr = this.conf.player.dimensions.width / this.conf.player.dimensions.height; var videoAr = this.conf.video.videoWidth / this.conf.video.videoHeight; if (! actualAr){ actualAr = playerAr; } var newWidth = this.conf.video.offsetWidth * stretchFactors.xFactor; var newHeight = this.conf.video.offsetHeight * stretchFactors.yFactor; var actualWidth, actualHeight; // determine the dimensions of the video (sans black bars) after scaling if(actualAr < videoAr){ actualHeight = newHeight; actualWidth = newHeight * actualAr; } else { actualHeight = newWidth / actualAr; actualWidth = newWidth; } var minW = this.conf.player.dimensions.width * (1 - this.settings.active.stretch.conditionalDifferencePercent); var maxW = this.conf.player.dimensions.width * (1 + this.settings.active.stretch.conditionalDifferencePercent); var minH = this.conf.player.dimensions.height * (1 - this.settings.active.stretch.conditionalDifferencePercent); var maxH = this.conf.player.dimensions.height * (1 + this.settings.active.stretch.conditionalDifferencePercent); if (actualWidth >= minW && actualWidth <= maxW) { stretchFactors.xFactor *= this.conf.player.dimensions.width / actualWidth; } if (actualHeight >= minH && actualHeight <= maxH) { stretchFactors.yFactor *= this.conf.player.dimensions.height / actualHeight; } } calculateBasicStretch() { // video.videoWidth in video.videoHeight predstavljata velikost datoteke. // velikost video datoteke je lahko drugačna kot velikost