If filmout picture source is set, set the field guide to match the aspect ratio of the image. Right now that only works if ratio is lower than the screen. Need to add case in display.html that corrects for when screen ratio is lower than image ratio.
This commit is contained in:
parent
51acbdfd30
commit
9b2ed018bf
|
@ -30,7 +30,8 @@
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: none;
|
display: none;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 0;
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
#can.show{
|
#can.show{
|
||||||
|
@ -113,18 +114,27 @@
|
||||||
ctx.translate(- w / 2, -h / 2)
|
ctx.translate(- w / 2, -h / 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function onField () {
|
async function onField (evt, arg) {
|
||||||
console.log('field guide')
|
console.log('field guide')
|
||||||
|
console.dir(arg)
|
||||||
const can = document.getElementById('can')
|
const can = document.getElementById('can')
|
||||||
const dpr = window.devicePixelRatio || 1
|
const dpr = window.devicePixelRatio || 1
|
||||||
let ctx;
|
let ctx;
|
||||||
if (!can.classList.contains('show')) {
|
if (!can.classList.contains('show')) {
|
||||||
can.classList.add('show')
|
can.classList.add('show')
|
||||||
}
|
}
|
||||||
|
if (arg.ratio) {
|
||||||
|
can.width = (window.innerHeight * arg.ratio) * dpr
|
||||||
|
} else {
|
||||||
can.width = window.innerWidth * dpr
|
can.width = window.innerWidth * dpr
|
||||||
|
}
|
||||||
can.height = window.innerHeight * dpr
|
can.height = window.innerHeight * dpr
|
||||||
|
|
||||||
|
if (arg.ratio) {
|
||||||
|
can.style.width = `${window.innerHeight * arg.ratio}px`
|
||||||
|
} else {
|
||||||
can.style.width = `${window.innerWidth}px`
|
can.style.width = `${window.innerWidth}px`
|
||||||
|
}
|
||||||
can.style.height = `${window.innerHeight}px`
|
can.style.height = `${window.innerHeight}px`
|
||||||
|
|
||||||
ctx = can.getContext('2d')
|
ctx = can.getContext('2d')
|
||||||
|
|
|
@ -86,14 +86,14 @@ class WebView {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
if (!this.digitalWindow) {
|
if (!this.digitalWindow) {
|
||||||
console.warn(`Cannot show field guide because window does not exist`);
|
console.warn(`Cannot show field guide because window does not exist`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
await delay_1.delay(500);
|
await delay_1.delay(500);
|
||||||
try {
|
try {
|
||||||
this.digitalWindow.webContents.send('field', { field: true });
|
this.digitalWindow.webContents.send('field', { field: true, ratio });
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
@ -189,8 +189,8 @@ class Display {
|
||||||
async focus() {
|
async focus() {
|
||||||
return await this.wv.focus();
|
return await this.wv.focus();
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
return await this.wv.field();
|
return await this.wv.field(ratio);
|
||||||
}
|
}
|
||||||
async meter() {
|
async meter() {
|
||||||
return await this.wv.meter();
|
return await this.wv.meter();
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -290,10 +290,11 @@ class FilmOut {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async field(evt, arg) {
|
async field(evt, arg) {
|
||||||
|
const ratio = arg.ratio;
|
||||||
this.log.info(`Showing field guide screen`);
|
this.log.info(`Showing field guide screen`);
|
||||||
try {
|
try {
|
||||||
await this.display.open();
|
await this.display.open();
|
||||||
await this.display.field();
|
await this.display.field(ratio);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err, 'FILMOUT', true, true);
|
this.log.error(err, 'FILMOUT', true, true);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -235,7 +235,11 @@ class FilmOut {
|
||||||
ipcRenderer.send('focus', { focus: true });
|
ipcRenderer.send('focus', { focus: true });
|
||||||
}
|
}
|
||||||
field() {
|
field() {
|
||||||
ipcRenderer.send('field', { field: true });
|
let ratio = null;
|
||||||
|
if (this.state.name) {
|
||||||
|
ratio = this.state.width / this.state.height;
|
||||||
|
}
|
||||||
|
ipcRenderer.send('field', { field: true, ratio });
|
||||||
}
|
}
|
||||||
meter() {
|
meter() {
|
||||||
ipcRenderer.send('meter', { meter: true });
|
ipcRenderer.send('meter', { meter: true });
|
||||||
|
|
|
@ -172,7 +172,7 @@ class FilmOut {
|
||||||
let obj : any = {
|
let obj : any = {
|
||||||
path : filePath,
|
path : filePath,
|
||||||
fileName
|
fileName
|
||||||
}
|
};
|
||||||
|
|
||||||
if (filePath && filePath !== '') {
|
if (filePath && filePath !== '') {
|
||||||
proceed = confirm(`Are you sure you want to use ${fileName}?`);
|
proceed = confirm(`Are you sure you want to use ${fileName}?`);
|
||||||
|
@ -183,7 +183,7 @@ class FilmOut {
|
||||||
if (proceed) {
|
if (proceed) {
|
||||||
gui.overlay(true);
|
gui.overlay(true);
|
||||||
gui.spinner(true, `Getting info about ${fileName}`);
|
gui.spinner(true, `Getting info about ${fileName}`);
|
||||||
ipcRenderer.send('filmout', obj)
|
ipcRenderer.send('filmout', obj);
|
||||||
} else {
|
} else {
|
||||||
$('#projector_type_digital').prop('checked', 'checked');
|
$('#projector_type_digital').prop('checked', 'checked');
|
||||||
$('#digital').removeClass('active');
|
$('#digital').removeClass('active');
|
||||||
|
@ -267,7 +267,11 @@ class FilmOut {
|
||||||
}
|
}
|
||||||
|
|
||||||
field () {
|
field () {
|
||||||
ipcRenderer.send('field', { field : true });
|
let ratio : number = null;
|
||||||
|
if (this.state.name) {
|
||||||
|
ratio = this.state.width / this.state.height
|
||||||
|
}
|
||||||
|
ipcRenderer.send('field', { field : true, ratio });
|
||||||
}
|
}
|
||||||
|
|
||||||
meter () {
|
meter () {
|
||||||
|
|
|
@ -86,14 +86,14 @@ class WebView {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
if (!this.digitalWindow) {
|
if (!this.digitalWindow) {
|
||||||
console.warn(`Cannot show field guide because window does not exist`);
|
console.warn(`Cannot show field guide because window does not exist`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
await delay_1.delay(500);
|
await delay_1.delay(500);
|
||||||
try {
|
try {
|
||||||
this.digitalWindow.webContents.send('field', { field: true });
|
this.digitalWindow.webContents.send('field', { field: true, ratio });
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
@ -189,8 +189,8 @@ class Display {
|
||||||
async focus() {
|
async focus() {
|
||||||
return await this.wv.focus();
|
return await this.wv.focus();
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
return await this.wv.field();
|
return await this.wv.field(ratio);
|
||||||
}
|
}
|
||||||
async meter() {
|
async meter() {
|
||||||
return await this.wv.meter();
|
return await this.wv.meter();
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -290,10 +290,11 @@ class FilmOut {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async field(evt, arg) {
|
async field(evt, arg) {
|
||||||
|
const ratio = arg.ratio;
|
||||||
this.log.info(`Showing field guide screen`);
|
this.log.info(`Showing field guide screen`);
|
||||||
try {
|
try {
|
||||||
await this.display.open();
|
await this.display.open();
|
||||||
await this.display.field();
|
await this.display.field(ratio);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err, 'FILMOUT', true, true);
|
this.log.error(err, 'FILMOUT', true, true);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -86,14 +86,14 @@ class WebView {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
if (!this.digitalWindow) {
|
if (!this.digitalWindow) {
|
||||||
console.warn(`Cannot show field guide because window does not exist`);
|
console.warn(`Cannot show field guide because window does not exist`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
await delay_1.delay(500);
|
await delay_1.delay(500);
|
||||||
try {
|
try {
|
||||||
this.digitalWindow.webContents.send('field', { field: true });
|
this.digitalWindow.webContents.send('field', { field: true, ratio });
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
@ -189,8 +189,8 @@ class Display {
|
||||||
async focus() {
|
async focus() {
|
||||||
return await this.wv.focus();
|
return await this.wv.focus();
|
||||||
}
|
}
|
||||||
async field() {
|
async field(ratio) {
|
||||||
return await this.wv.field();
|
return await this.wv.field(ratio);
|
||||||
}
|
}
|
||||||
async meter() {
|
async meter() {
|
||||||
return await this.wv.meter();
|
return await this.wv.meter();
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -290,10 +290,11 @@ class FilmOut {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async field(evt, arg) {
|
async field(evt, arg) {
|
||||||
|
const ratio = arg.ratio;
|
||||||
this.log.info(`Showing field guide screen`);
|
this.log.info(`Showing field guide screen`);
|
||||||
try {
|
try {
|
||||||
await this.display.open();
|
await this.display.open();
|
||||||
await this.display.field();
|
await this.display.field(ratio);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err, 'FILMOUT', true, true);
|
this.log.error(err, 'FILMOUT', true, true);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -93,14 +93,14 @@ class WebView {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async field () {
|
async field (ratio : number) {
|
||||||
if (!this.digitalWindow) {
|
if (!this.digitalWindow) {
|
||||||
console.warn(`Cannot show field guide because window does not exist`);
|
console.warn(`Cannot show field guide because window does not exist`);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
await delay(500);
|
await delay(500);
|
||||||
try {
|
try {
|
||||||
this.digitalWindow.webContents.send('field', { field : true });
|
this.digitalWindow.webContents.send('field', { field : true, ratio });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
|
@ -210,8 +210,8 @@ class Display {
|
||||||
public async focus () {
|
public async focus () {
|
||||||
return await this.wv.focus();
|
return await this.wv.focus();
|
||||||
}
|
}
|
||||||
public async field () {
|
public async field ( ratio : number) {
|
||||||
return await this.wv.field();
|
return await this.wv.field(ratio);
|
||||||
}
|
}
|
||||||
public async meter () {
|
public async meter () {
|
||||||
return await this.wv.meter();
|
return await this.wv.meter();
|
||||||
|
|
|
@ -292,10 +292,11 @@ class FilmOut {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async field (evt : any, arg : any) {
|
async field (evt : any, arg : any) {
|
||||||
|
const ratio : number = arg.ratio;
|
||||||
this.log.info(`Showing field guide screen`);
|
this.log.info(`Showing field guide screen`);
|
||||||
try {
|
try {
|
||||||
await this.display.open();
|
await this.display.open();
|
||||||
await this.display.field();
|
await this.display.field(ratio);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.log.error(err, 'FILMOUT', true, true);
|
this.log.error(err, 'FILMOUT', true, true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue