2023-08-21 01:51:35 -04:00
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { computed } from "vue";
|
|
|
|
|
import { useCameraSettingsStore } from "@/stores/settings/CameraSettingsStore";
|
|
|
|
|
import { useStateStore } from "@/stores/StateStore";
|
2025-08-04 01:15:33 -04:00
|
|
|
import { useTheme } from "vuetify";
|
2025-10-13 16:56:16 -05:00
|
|
|
import { PipelineType } from "@/types/PipelineTypes";
|
2025-08-04 01:15:33 -04:00
|
|
|
|
|
|
|
|
const theme = useTheme();
|
2023-08-21 01:51:35 -04:00
|
|
|
|
2025-05-06 18:21:41 -04:00
|
|
|
const value = defineModel<number[]>();
|
2023-08-21 01:51:35 -04:00
|
|
|
|
|
|
|
|
const processingMode = computed<number>({
|
2023-08-31 16:56:58 -04:00
|
|
|
get: () => (useCameraSettingsStore().currentPipelineSettings.solvePNPEnabled ? 1 : 0),
|
|
|
|
|
set: (v) => {
|
|
|
|
|
if (useCameraSettingsStore().isCurrentVideoFormatCalibrated) {
|
2023-08-21 01:51:35 -04:00
|
|
|
useCameraSettingsStore().changeCurrentPipelineSetting({ solvePNPEnabled: v === 1 }, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
|
|
|
|
<v-card
|
2025-11-16 18:15:42 -06:00
|
|
|
:disabled="
|
|
|
|
|
useCameraSettingsStore().isDriverMode || useCameraSettingsStore().isFocusMode || useStateStore().colorPickingMode
|
|
|
|
|
"
|
2025-08-04 01:15:33 -04:00
|
|
|
class="mt-3 rounded-12"
|
|
|
|
|
color="surface"
|
2025-05-06 18:21:41 -04:00
|
|
|
style="flex-grow: 1; display: flex; flex-direction: column"
|
2023-08-21 01:51:35 -04:00
|
|
|
>
|
2025-01-07 08:45:39 -05:00
|
|
|
<v-row class="pa-3 pb-0 align-center">
|
|
|
|
|
<v-col class="pa-4">
|
2023-08-31 16:56:58 -04:00
|
|
|
<p style="color: white">Processing Mode</p>
|
2025-09-07 00:33:37 -04:00
|
|
|
<v-btn-toggle v-model="processingMode" mandatory class="fill w-100">
|
2025-05-06 18:21:41 -04:00
|
|
|
<v-btn
|
2025-08-04 01:15:33 -04:00
|
|
|
color="buttonPassive"
|
2025-05-06 18:21:41 -04:00
|
|
|
:disabled="!useCameraSettingsStore().hasConnected"
|
2026-03-24 17:49:56 -05:00
|
|
|
:variant="theme.global.current.value.dark ? 'outlined' : 'elevated'"
|
2025-05-06 18:21:41 -04:00
|
|
|
class="w-50"
|
|
|
|
|
>
|
2025-08-04 01:15:33 -04:00
|
|
|
<template #prepend>
|
|
|
|
|
<v-icon size="large">mdi-square-outline</v-icon>
|
|
|
|
|
</template>
|
2023-08-21 01:51:35 -04:00
|
|
|
<span>2D</span>
|
|
|
|
|
</v-btn>
|
2025-01-01 03:04:20 -05:00
|
|
|
<v-btn
|
2025-08-04 01:15:33 -04:00
|
|
|
color="buttonPassive"
|
2025-01-01 03:04:20 -05:00
|
|
|
:disabled="
|
2025-10-13 16:56:16 -05:00
|
|
|
!useCameraSettingsStore().hasConnected ||
|
|
|
|
|
!useCameraSettingsStore().isCurrentVideoFormatCalibrated ||
|
2026-03-23 18:41:11 -04:00
|
|
|
useCameraSettingsStore().currentPipelineSettings.pipelineType === PipelineType.ObjectDetection ||
|
|
|
|
|
useCameraSettingsStore().currentPipelineSettings.pipelineType === PipelineType.ColoredShape
|
2025-01-01 03:04:20 -05:00
|
|
|
"
|
2026-03-24 17:49:56 -05:00
|
|
|
:variant="theme.global.current.value.dark ? 'outlined' : 'elevated'"
|
2025-05-06 18:21:41 -04:00
|
|
|
class="w-50"
|
2025-01-01 03:04:20 -05:00
|
|
|
>
|
2025-08-04 01:15:33 -04:00
|
|
|
<template #prepend>
|
|
|
|
|
<v-icon size="large">mdi-cube-outline</v-icon>
|
|
|
|
|
</template>
|
2023-08-21 01:51:35 -04:00
|
|
|
<span>3D</span>
|
|
|
|
|
</v-btn>
|
|
|
|
|
</v-btn-toggle>
|
|
|
|
|
</v-col>
|
|
|
|
|
</v-row>
|
2025-01-07 08:45:39 -05:00
|
|
|
<v-row class="pa-3 pt-0 align-center">
|
|
|
|
|
<v-col class="pa-4 pt-0">
|
2023-08-31 16:56:58 -04:00
|
|
|
<p style="color: white">Stream Display</p>
|
2025-09-07 00:33:37 -04:00
|
|
|
<v-btn-toggle v-model="value" :multiple="true" mandatory class="fill w-100">
|
2025-08-04 01:15:33 -04:00
|
|
|
<v-btn
|
|
|
|
|
color="buttonPassive"
|
|
|
|
|
class="fill w-50"
|
2026-03-24 17:49:56 -05:00
|
|
|
:variant="theme.global.current.value.dark ? 'outlined' : 'elevated'"
|
2025-08-04 01:15:33 -04:00
|
|
|
>
|
|
|
|
|
<v-icon start class="mode-btn-icon" size="large">mdi-import</v-icon>
|
2024-01-02 11:03:16 -05:00
|
|
|
<span class="mode-btn-label">Raw</span>
|
2023-08-21 01:51:35 -04:00
|
|
|
</v-btn>
|
2025-08-04 01:15:33 -04:00
|
|
|
<v-btn
|
|
|
|
|
color="buttonPassive"
|
|
|
|
|
class="fill w-50"
|
2026-03-24 17:49:56 -05:00
|
|
|
:variant="theme.global.current.value.dark ? 'outlined' : 'elevated'"
|
2025-08-04 01:15:33 -04:00
|
|
|
>
|
|
|
|
|
<v-icon start class="mode-btn-icon" size="large">mdi-export</v-icon>
|
2024-01-02 11:03:16 -05:00
|
|
|
<span class="mode-btn-label">Processed</span>
|
2023-08-21 01:51:35 -04:00
|
|
|
</v-btn>
|
|
|
|
|
</v-btn-toggle>
|
|
|
|
|
</v-col>
|
|
|
|
|
</v-row>
|
|
|
|
|
</v-card>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
2025-05-06 18:21:41 -04:00
|
|
|
.v-btn--disabled {
|
|
|
|
|
background-color: #191919 !important;
|
2023-08-21 01:51:35 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
th {
|
|
|
|
|
width: 80px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
2024-01-02 11:03:16 -05:00
|
|
|
|
|
|
|
|
@media only screen and (max-width: 351px) {
|
|
|
|
|
.mode-btn-icon {
|
|
|
|
|
margin: 0 !important;
|
|
|
|
|
}
|
|
|
|
|
.mode-btn-label {
|
|
|
|
|
display: none;
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-08-21 01:51:35 -04:00
|
|
|
</style>
|