|
@@ -23,15 +23,19 @@ import {
|
|
|
rendererMap,
|
|
|
useCursor,
|
|
|
useGlobalResize,
|
|
|
+ useGlobalVar,
|
|
|
useStage,
|
|
|
useViewer,
|
|
|
+ useViewerInvertTransform,
|
|
|
useViewerInvertTransformConfig,
|
|
|
+ useViewerTransform,
|
|
|
useViewerTransformConfig,
|
|
|
} from "./hook";
|
|
|
import { install } from "./install-lib";
|
|
|
+import { Pos } from "./dec";
|
|
|
|
|
|
-const props = defineProps<{ scale: number }>();
|
|
|
-const emit = defineEmits<{ (e: "update:scale", v: number): void }>();
|
|
|
+const props = defineProps<{ scale: { value: number; center: Pos } }>();
|
|
|
+const emit = defineEmits<{ (e: "update:scaleValue", v: number): void }>();
|
|
|
|
|
|
const instance = getCurrentInstance();
|
|
|
install(instance!.appContext.app);
|
|
@@ -60,23 +64,27 @@ watch(
|
|
|
() => props.scale,
|
|
|
(scale) => {
|
|
|
if (size.value) {
|
|
|
- viewer.viewer.scalePixel(
|
|
|
- { x: size.value?.width / 2, y: size.value?.height / 2 },
|
|
|
- { x: scale / viewerConfig.value.scaleX, y: 1 }
|
|
|
- );
|
|
|
+ viewer.viewer.scalePixel(scale.center, {
|
|
|
+ x: scale.value / viewerConfig.value.scaleX,
|
|
|
+ y: 1,
|
|
|
+ });
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+ { deep: true }
|
|
|
);
|
|
|
watchEffect(
|
|
|
() => {
|
|
|
- if (Math.abs(props.scale - viewerConfig.value.scaleX) > 0.001) {
|
|
|
- emit("update:scale", viewerConfig.value.scaleX);
|
|
|
+ if (Math.abs(props.scale.value - viewerConfig.value.scaleX) > 0.001) {
|
|
|
+ console.log("update?", props.scale.value, viewerConfig.value.scaleX);
|
|
|
+ emit("update:scaleValue", viewerConfig.value.scaleX);
|
|
|
}
|
|
|
},
|
|
|
{ flush: "post" }
|
|
|
);
|
|
|
|
|
|
const invConfig = useViewerInvertTransformConfig();
|
|
|
+const viewMat = useViewerTransform();
|
|
|
+const viewInvertMat = useViewerInvertTransform();
|
|
|
const config = computed(
|
|
|
() =>
|
|
|
size.value && {
|
|
@@ -85,8 +93,12 @@ const config = computed(
|
|
|
}
|
|
|
);
|
|
|
const { updateSize } = useGlobalResize();
|
|
|
+const { misPixel } = useGlobalVar();
|
|
|
defineExpose({
|
|
|
updateSize,
|
|
|
+ getTimeScreen(time: number) {
|
|
|
+ return viewMat.value.point({x: time * misPixel, y: 0}).x
|
|
|
+ },
|
|
|
});
|
|
|
</script>
|
|
|
|