diff --git a/app/css/app.css b/app/css/app.css index 04e69d0..986c1f6 100644 --- a/app/css/app.css +++ b/app/css/app.css @@ -739,7 +739,7 @@ button:focus { background: black; color: #fff; } -#video input[type=text], +#video input, #video select { display: block; border-radius: 5px; @@ -755,25 +755,25 @@ button:focus { font-size: 21px; min-width: 300px; } -#video input[type=text] span, +#video input span, #video select span { display: block; font-size: 16px; font-weight: 200; } -#video input[type=text]:active, +#video input:active, #video select:active, -#video input[type=text] .active, +#video input .active, #video select .active { background: #fff; color: #272b30; outline: none; } -#video input[type=text]:focus, +#video input:focus, #video select:focus { outline: none; } -#video input[type=text].active, +#video input.active, #video select.active { border-color: #DAE035; color: #DAE035; @@ -805,6 +805,7 @@ button:focus { box-sizing: border-box; height: 360px; margin: 0 auto; + position: relative; } #filmout_monitor.on { display: block; @@ -815,14 +816,18 @@ button:focus { height: 360px; } #filmout { - height: 360px; - min-height: 360px; - width: auto; - margin: 0 auto; + position: absolute; + background-repeat: no-repeat; + background-size: contain; + background-position: center; + top: 0; + left: 0; + right: 0; + bottom: 0; display: block; opacity: 0; } -#filmout .on { +#filmout.on { opacity: 1; } #filmout_position_wrap { diff --git a/app/display.html b/app/display.html index 39c180a..3f4171f 100644 --- a/app/display.html +++ b/app/display.html @@ -57,30 +57,75 @@ } img.style.backgroundImage = `url('${src}')`; - //img.onload = () => { - //document.body.appendChild(img) - //return resolve(img) - //} - //img.onerror = reject - //img.src = src - }) + }); } async function onMeter () { + console.log('meter') const body = document.querySelector('body') if (!body.classList.contains('meter')) { body.classList.add('meter') } } - async function onField () { + async function onFocus () { + console.log('focus') const can = document.getElementById('can') - const ctx = can.getContext('2d') + const dpr = window.devicePixelRatio || 1 + let ctx; if (!can.classList.contains('show')) { can.classList.add('show') } - can.width = window.innerWidth - can.height = window.innerHeight + can.width = window.innerWidth * dpr + can.height = window.innerHeight * dpr + can.style.width = `${window.innerWidth}px` can.style.height = `${window.innerHeight}px` + + ctx = can.getContext('2d') + ctx.scale(dpr, dpr) + + try{ + await drawFocus(can, ctx) + } catch (err) { + alert(JSON.stringify(err)) + } + } + async function drawFocus (can, ctx) { + const count = 20 + const half = Math.round(count / 2) + const dpr = window.devicePixelRatio || 1 + const w = can.width / dpr + const h = can.height / dpr + const opp = (Math.tan(360 / count) * ((h / 2) + h - w) / 1.5) + + console.log(opp) + for (let i = 0; i < count; i++) { + ctx.beginPath() + ctx.moveTo(w / 2, h / 2) + ctx.lineTo((w / 2) + opp, h - w) + ctx.lineTo((w / 2) - opp, h - w) + ctx.fill() + ctx.translate(w / 2, h / 2); + ctx.rotate((360 / count) * Math.PI / 180) + ctx.translate(- w / 2, -h / 2) + } + } + async function onField () { + console.log('field guide') + const can = document.getElementById('can') + const dpr = window.devicePixelRatio || 1 + let ctx; + if (!can.classList.contains('show')) { + can.classList.add('show') + } + can.width = window.innerWidth * dpr + can.height = window.innerHeight * dpr + + can.style.width = `${window.innerWidth}px` + can.style.height = `${window.innerHeight}px` + + ctx = can.getContext('2d') + ctx.scale(dpr, dpr) + try{ await drawField(can, ctx) } catch (err) { @@ -91,10 +136,13 @@ async function drawField (can, ctx) { const count = 20 const half = Math.round(count / 2) - const w = can.width - const h = can.height + const dpr = window.devicePixelRatio || 1 + const w = can.width / dpr + const h = can.height / dpr const wsec = w / count - const hsec= h / count + const hsec = h / count + const spacer = 12 + const fontSize = 18; ctx.moveTo(w / 2, 0) ctx.lineTo(w / 2, h) @@ -111,34 +159,21 @@ ctx.lineTo(w - (wsec * i), hsec * i) ctx.stroke() } - ctx.font = '30px Arial' + ctx.font = `${fontSize}px Arial` for (let i = 0; i < half; i++) { - ctx.fillText(`${(half - i)}`, (wsec * i) + 15, (h / 2) - 15) - ctx.fillText(`${(half - i)}`, (w - (wsec * i)) - 25, (h / 2) - 15) - ctx.fillText(`${(half - i)}`, (w / 2) + 15, (hsec * i) + 25 ) - ctx.fillText(`${(half - i)}`, (w / 2) + 15, (h - (hsec * i)) - 15) + ctx.fillText(`${(half - i)}`, (wsec * i) + spacer, (h / 2) - spacer) + //ctx.fillText(`${(half - i)}`, (w - (wsec * i)) - spacer, (h / 2) - spacer) + ctx.fillText(`${(half - i)}`, (w / 2) + spacer, (hsec * i) + spacer + (fontSize / 2) ) + //ctx.fillText(`${(half - i)}`, (w / 2) + spacer, (h - (hsec * i)) - spacer) } } async function onDigital (event, arg) { - console.log('called') if (arg.src) { try { await setImage(arg.src) } catch (err) { console.error(err) } - } else if (arg.meter) { - try { - await setMeter() - } catch (err) { - console.error(err) - } - } else if (arg.grid) { - try { - await setGrid() - } catch (err) { - console.error(err) - } } return event.returnValue = true } @@ -160,6 +195,7 @@ ipcRenderer.on('display', onDigital) ipcRenderer.on('field', onField) ipcRenderer.on('meter', onMeter) + ipcRenderer.on('focus', onFocus) document.onkeydown = onEscape diff --git a/app/index.html b/app/index.html index 7f172f3..7af5fe5 100644 --- a/app/index.html +++ b/app/index.html @@ -353,7 +353,7 @@
- +
@@ -372,17 +372,17 @@
- - - + + +
- - - + + +
diff --git a/app/less/filmout.less b/app/less/filmout.less index 48427e2..ff39389 100644 --- a/app/less/filmout.less +++ b/app/less/filmout.less @@ -1,5 +1,5 @@ #video{ - input[type=text],select{ + input,select{ .button(); display: inline-block; padding: 6px 12px; @@ -41,6 +41,7 @@ box-sizing: border-box; height: 360px; margin: 0 auto; + position: relative; &.on{ display: block; } @@ -51,13 +52,17 @@ height: 360px; } #filmout { - height: 360px; - min-height: 360px; - width: auto; - margin: 0 auto; + position: absolute; + background-repeat:no-repeat; + background-size: contain; + background-position: center; + top: 0; + left: 0; + right: 0; + bottom: 0; display: block; opacity: 0; - & .on { + &.on { opacity: 1.0; } } diff --git a/app/lib/display/index.js b/app/lib/display/index.js index 0407527..412543a 100644 --- a/app/lib/display/index.js +++ b/app/lib/display/index.js @@ -60,7 +60,7 @@ class WebView { console.error(err); } this.showing = true; - await delay_1.delay(100); + await delay_1.delay(200); return true; } async focus() { @@ -68,6 +68,7 @@ class WebView { console.warn(`Cannot show focus screen because window does not exist`); return false; } + await delay_1.delay(500); try { this.digitalWindow.webContents.send('focus', { focus: true }); } @@ -80,7 +81,7 @@ class WebView { console.warn(`Cannot show field guide because window does not exist`); return false; } - //aspect ratio + await delay_1.delay(500); try { this.digitalWindow.webContents.send('field', { field: true }); } @@ -93,6 +94,7 @@ class WebView { console.warn(`Cannot show meter screen because window does not exist`); return false; } + await delay_1.delay(500); try { this.digitalWindow.webContents.send('meter', { meter: true }); } diff --git a/app/lib/display/index.js.map b/app/lib/display/index.js.map index 0dc756f..87e9a50 100644 --- a/app/lib/display/index.js.map +++ b/app/lib/display/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/display/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/lib/filmout/index.js b/app/lib/filmout/index.js index 6bbaea5..1e2274e 100644 --- a/app/lib/filmout/index.js +++ b/app/lib/filmout/index.js @@ -41,6 +41,8 @@ class FilmOut { this.ipc.on('field', this.field.bind(this)); this.ipc.on('meter', this.meter.bind(this)); this.ipc.on('filmout_close', this.close.bind(this)); + //preview + this.ipc.on('preview_frame', this.previewFrame.bind(this)); } /** * @@ -127,6 +129,21 @@ class FilmOut { this.state.enabled = true; return await this.ui.send(this.id, { valid: true, state: JSON.stringify(this.state) }); } + async previewFrame(evt, arg) { + const state = JSON.parse(JSON.stringify(this.state)); + let path; + state.frame = arg.frame; + try { + path = await this.ffmpeg.frame(state, { color: [255, 255, 255] }); + } + catch (err) { + console.error(err); + throw err; + } + this.ui.send('preview_frame', { path, frame: arg.frame }); + } + async preview(evt, arg) { + } async focus(evt, arg) { try { await this.display.open(); diff --git a/app/lib/filmout/index.js.map b/app/lib/filmout/index.js.map index c7c757b..304a187 100644 --- a/app/lib/filmout/index.js.map +++ b/app/lib/filmout/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filmout/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/filmout/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/app/lib/ui/filmout.js b/app/lib/ui/filmout.js index 0049307..e704aca 100644 --- a/app/lib/ui/filmout.js +++ b/app/lib/ui/filmout.js @@ -35,6 +35,9 @@ class FilmOut { constructor() { this.id = 'filmout'; this.displays = []; + this.state = { + frame: 0 + }; } init() { this.listen(); @@ -42,6 +45,7 @@ class FilmOut { listen() { ipcRenderer.on(this.id, this.onFilmout.bind(this)); ipcRenderer.on('system', this.onSystem.bind(this)); + ipcRenderer.on('preview_frame', this.onFrame.bind(this)); } onSystem(evt, args) { let option; @@ -58,6 +62,7 @@ class FilmOut { if (args.displays.length > 1) { $('#filmout_displays').on('change', this.onChange.bind(this)); } + $('#filmout_position').on('change', this.previewFrame.bind(this)); } onChange() { const val = $('#filmout_displays').val(); @@ -87,8 +92,9 @@ class FilmOut { elem.width(w); } elem.addClass('on'); - $('#filmout_stats_monitor_size').text(`${display.width}x${display.height}`); + $('#filmout_stats_monitor_size').text(`${display.width} x ${display.height}`); $('#filmout_stats_monitor_aspect').text(`${aspect}`); + $('#filmout_stats_monitor_scale').text(`${parseFloat(display.scale).toFixed(1)} scale factor`); console.dir(display); } selectFile() { @@ -156,8 +162,8 @@ class FilmOut { if (args.valid && args.valid === true) { //success state state = JSON.parse(args.state); - console.dir(args); - console.dir(state); + //console.dir(args) + //console.dir(state) $('#digital').addClass('active'); $('#projector_type_digital').prop('checked', 'checked'); gui.notify('DEVICES', `Using video ${state.fileName}`); @@ -169,17 +175,61 @@ class FilmOut { if (light.disabled) { light.enable(); } + this.state.frame = 0; + this.state.frames = state.frames; + this.state.width = state.info.width; + this.state.height = state.info.height; + this.state.name = state.fileName; $('#seq_loop').val(`${state.frames - 1}`).trigger('change'); $('#filmout_stats_video_name').text(state.fileName); - $('#filmout_stats_video_size').text(`${state.info.width}x${state.info.height}`); + $('#filmout_stats_video_size').text(`${state.info.width} x ${state.info.height}`); $('#filmout_stats_video_frames').text(`${state.frames} frames`); gui.updateState(); + this.previewFrame(); } else { $('#projector_type_digital').prop('checked', 'checked'); $('#digital').removeClass('active'); } } + previewFrame() { + const frameStr = $('#filmout_position').val(); + const frame = parseInt(frameStr, 10); + this.state.frame = frame; + ipcRenderer.send('preview_frame', { frame }); + } + onFrame(evt, args) { + const elem = $('#filmout'); + elem[0].style.backgroundImage = `url('${args.path}')`; + elem.addClass('on'); + } + advance() { + this.state.frame++; + if (this.state.frame >= this.state.frames) { + this.state.frame = 0; + } + $('#filmout_position').val(this.state.frame).trigger('change'); + } + rewind() { + this.state.frame--; + if (this.state.frame < 0) { + this.state.frame = this.state.frames - 1; + } + $('#filmout_position').val(this.state.frame).trigger('change'); + } + preview(evt, arg) { + } + focus() { + ipcRenderer.send('focus', { focus: true }); + } + field() { + ipcRenderer.send('field', { field: true }); + } + meter() { + ipcRenderer.send('meter', { meter: true }); + } + close(evt, arg) { + } } filmout = new FilmOut(); module.exports = filmout; diff --git a/app/src/lib/ui/filmout.ts b/app/src/lib/ui/filmout.ts index de1a9b6..1b01d0b 100644 --- a/app/src/lib/ui/filmout.ts +++ b/app/src/lib/ui/filmout.ts @@ -50,6 +50,9 @@ let filmout : FilmOut; class FilmOut { private id : string = 'filmout'; private displays : any[] = []; + private state : any = { + frame : 0 + } constructor () { } @@ -59,9 +62,11 @@ class FilmOut { listen () { ipcRenderer.on(this.id, this.onFilmout.bind(this)); ipcRenderer.on('system', this.onSystem.bind(this)); + ipcRenderer.on('preview_frame', this.onFrame.bind(this)); } onSystem (evt : Event, args : any) { let option : any; + for (let display of args.displays) { this.displays.push(display); option = $('