diff --git a/src/ext/conf/ActionList.js b/src/ext/conf/ActionList.js
index 74fdc76..ccc3687 100644
--- a/src/ext/conf/ActionList.js
+++ b/src/ext/conf/ActionList.js
@@ -101,7 +101,7 @@ var ActionList = {
page: true
}
},
- 'set-zoom': {
+ 'change-zoom': {
name: 'Zoom',
args: [{
name: 'Zoom level increase/decrease',
@@ -112,6 +112,17 @@ var ActionList = {
page: true,
}
},
+ 'set-zoom': {
+ name: 'Set zoom level',
+ args: [{
+ name: 'Zoom level increase/decrease',
+ customArg: true,
+ hintHTML: 'Examples: 0.5 sets zoom to 50%, 1 sets zoom to 100%, 2 sets zoom to 200%. Don\'t use negative values unless you want to experience Australian youtube.'
+ }],
+ scopes: {
+ page: true,
+ }
+ },
'set-extension-mode': {
name: 'Set extension mode',
args: [{
diff --git a/src/ext/conf/ExtensionConf.js b/src/ext/conf/ExtensionConf.js
index 0855298..7aa4c5e 100644
--- a/src/ext/conf/ExtensionConf.js
+++ b/src/ext/conf/ExtensionConf.js
@@ -329,7 +329,7 @@ var ExtensionConf = {
name: 'Zoom in',
label: 'Zoom',
cmd: [{
- action: 'set-zoom',
+ action: 'change-zoom',
arg: 0.1
}],
scopes: {
@@ -353,7 +353,7 @@ var ExtensionConf = {
name: 'Zoom out',
label: 'Unzoom',
cmd: [{
- action: 'set-zoom',
+ action: 'change-zoom',
arg: -0.1
}],
scopes: {
diff --git a/src/ext/lib/ActionHandler.js b/src/ext/lib/ActionHandler.js
index 9b590b3..ae48785 100644
--- a/src/ext/lib/ActionHandler.js
+++ b/src/ext/lib/ActionHandler.js
@@ -184,8 +184,10 @@ class ActionHandler {
if (action.scope === 'page') {
if (cmd.action === "set-ar") {
this.pageInfo.setAr(cmd.arg);
- } else if (cmd.action === "set-zoom") {
+ } else if (cmd.action === "change-zoom") {
this.pageInfo.zoomStep(cmd.arg);
+ } else if (cmd.action === "set-zoom") {
+ this.pageInfo.setZoom(cmd.arg);
} else if (cmd.action === "set-stretch") {
this.pageInfo.setStretchMode(cmd.arg);
} else if (cmd.action === "toggle-pan") {
diff --git a/src/ext/lib/comms/CommsClient.js b/src/ext/lib/comms/CommsClient.js
index 4c5f4da..6a7d188 100644
--- a/src/ext/lib/comms/CommsClient.js
+++ b/src/ext/lib/comms/CommsClient.js
@@ -84,7 +84,9 @@ class CommsClient {
// todo: autoArStatus
this.pageInfo.resumeProcessing(message.autoArStatus, message.playing);
} else if (message.cmd === 'set-zoom') {
- this.pageInfo.setZoom(message.zoom, true, message.playing);
+ this.pageInfo.setZoom(message.arg, true, message.playing);
+ } else if (message.cmd === 'change-zoom') {
+ this.pageInfo.zoomStep(message.arg, message.playing);
} else if (message.cmd === 'mark-player') {
this.pageInfo.markPlayer(message.name, message.color);
} else if (message.cmd === 'unmark-player') {
diff --git a/src/ext/lib/video-transform/Zoom.js b/src/ext/lib/video-transform/Zoom.js
index 2f82e67..32a7a83 100644
--- a/src/ext/lib/video-transform/Zoom.js
+++ b/src/ext/lib/video-transform/Zoom.js
@@ -39,10 +39,14 @@ class Zoom {
}
setZoom(scale, no_announce){
+ if (Debug.debug) {
+ console.log("[Zoom::setZoom] Setting zoom to", scale, "!");
+ }
+
// NOTE: SCALE IS NOT LOGARITHMIC
- if(scale < Math.pow(this.minScale)) {
+ if(scale < Math.pow(2, this.minScale)) {
scale = this.minScale;
- } else if (scale > Math.pow(this.maxScale)) {
+ } else if (scale > Math.pow(2, this.maxScale)) {
scale = this.maxScale;
}
@@ -55,8 +59,16 @@ class Zoom {
}
applyZoom(stretchFactors){
+ if (Debug.debug) {
+ console.log("[Zoom::setZoom] Applying zoom. Stretch factors pre:", stretchFactors, " —> scale:", this.scale);
+ }
+
stretchFactors.xFactor *= this.scale;
stretchFactors.yFactor *= this.scale;
+
+ if (Debug.debug) {
+ console.log("[Zoom::setZoom] Applying zoom. Stretch factors post:", stretchFactors);
+ }
}
}
diff --git a/src/options/controls-settings/controls-settings.vue b/src/options/controls-settings/controls-settings.vue
index 672f341..ba2d351 100644
--- a/src/options/controls-settings/controls-settings.vue
+++ b/src/options/controls-settings/controls-settings.vue
@@ -43,6 +43,7 @@