From 09de149c390b87b6c59ee49621ee1ff9fe933d6e Mon Sep 17 00:00:00 2001 From: Bryon Lewis Date: Thu, 10 Mar 2022 10:10:10 -0500 Subject: [PATCH 1/8] initial testing --- .../components/ImageEnhancements.vue | 57 +++++++++++++++++++ client/dive-common/components/Viewer.vue | 22 ++++++- client/dive-common/store/context.ts | 2 + .../components/annotators/ImageAnnotator.vue | 7 +++ client/src/components/controls/Controls.vue | 13 +++++ client/src/provides.ts | 14 ++++- client/src/types.ts | 5 ++ 7 files changed, 118 insertions(+), 2 deletions(-) create mode 100644 client/dive-common/components/ImageEnhancements.vue diff --git a/client/dive-common/components/ImageEnhancements.vue b/client/dive-common/components/ImageEnhancements.vue new file mode 100644 index 000000000..f2898f6ac --- /dev/null +++ b/client/dive-common/components/ImageEnhancements.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/client/dive-common/components/Viewer.vue b/client/dive-common/components/Viewer.vue index 6d9d29e86..b0e37b5ee 100644 --- a/client/dive-common/components/Viewer.vue +++ b/client/dive-common/components/Viewer.vue @@ -41,6 +41,7 @@ import { useApi, FrameImage, DatasetType } from 'dive-common/apispec'; import { usePrompt } from 'dive-common/vue-utilities/prompt-service'; import { cloneDeep } from 'lodash'; import { getResponseError } from 'vue-media-annotator/utils'; +import { SVGFilters } from 'vue-media-annotator/types'; import context from 'dive-common/store/context'; export default defineComponent({ @@ -390,6 +391,18 @@ export default defineComponent({ const newId = `${baseMulticamDatasetId.value}/${camera}`; ctx.emit('update:id', newId); }; + const svgFilters: Ref = ref({}); + const brightnessRef = ref(1); + const interceptRef = ref(0); + const setSVGFilters = ({ brightness, intercept }: + {brightness?: number; intercept?: number }) => { + svgFilters.value.brightness = brightness; + svgFilters.value.intercept = intercept; + if (brightness !== undefined && intercept !== undefined) { + brightnessRef.value = brightness; + interceptRef.value = intercept; + } + }; const globalHandler = { ...handler, @@ -405,6 +418,7 @@ export default defineComponent({ setConfidenceFilters, deleteAttribute, reloadAnnotations, + setSVGFilters, }; provideAnnotator( @@ -431,6 +445,7 @@ export default defineComponent({ time, visibleModes, readOnlyMode: readonlyState, + svgFilters, }, globalHandler, ); @@ -465,6 +480,9 @@ export default defineComponent({ originalFps: time.originalFps, context, readonlyState, + svgFilters, + brightnessRef, + interceptRef, /* methods */ handler: globalHandler, save, @@ -626,7 +644,9 @@ export default defineComponent({ { bind: 'r', handler: () => mediaController.resetZoom() }, { bind: 'esc', handler: () => handler.trackAbort() }, ]" - v-bind="{ imageData, videoUrl, updateTime, frameRate, originalFps }" + v-bind="{ imageData, videoUrl, updateTime, frameRate, + originalFps, brightness: brightnessRef, intercept: interceptRef, + }" class="playback-component" >