From 84b8d3801dafe50cdae3de7df81443e5c90973a7 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Wed, 7 Jan 2026 10:18:09 +0330 Subject: [PATCH] fix line and peykan in viwer --- src/pages/viewer/components/BookPage.tsx | 2 ++ src/pages/viewer/utils/dataTransformer.ts | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/pages/viewer/components/BookPage.tsx b/src/pages/viewer/components/BookPage.tsx index 8553936..dd0e53f 100644 --- a/src/pages/viewer/components/BookPage.tsx +++ b/src/pages/viewer/components/BookPage.tsx @@ -249,6 +249,7 @@ const BookPage = forwardRef(({ page, scale = 1 }, // در Konva Line، points به صورت [0, 0, endX - startX, endY - startY] است const startX = (obj.x || 0) * scale; const startY = (obj.y || 0) * scale; + // width و height مستقیماً مختصات نقطه پایان هستند const endX = (obj.width ?? obj.x ?? 0) * scale; const endY = (obj.height ?? obj.y ?? 0) * scale; const dx = endX - startX; @@ -279,6 +280,7 @@ const BookPage = forwardRef(({ page, scale = 1 }, // در Konva Arrow، points به صورت [0, 0, endX - startX, endY - startY] است const startX = (obj.x || 0) * scale; const startY = (obj.y || 0) * scale; + // width و height مستقیماً مختصات نقطه پایان هستند const endX = (obj.width ?? obj.x ?? 0) * scale; const endY = (obj.height ?? obj.y ?? 0) * scale; const dx = endX - startX; diff --git a/src/pages/viewer/utils/dataTransformer.ts b/src/pages/viewer/utils/dataTransformer.ts index 0b1578a..38580f4 100644 --- a/src/pages/viewer/utils/dataTransformer.ts +++ b/src/pages/viewer/utils/dataTransformer.ts @@ -51,15 +51,15 @@ export function transformViewerDataToPages(data: ViewerData): PageData[] { visible: true, }; - // برای line و arrow، width و height در viewer-data.json به عنوان اندازه هستند - // اما در EditorObject به عنوان مختصات انتهایی استفاده می‌شوند + // برای line و arrow، width و height در viewer-data.json به عنوان مختصات انتهایی هستند + // در EditorObject هم به عنوان مختصات انتهایی ذخیره می‌شوند if (obj.type === 'line' || obj.type === 'arrow') { + // width و height مستقیماً مختصات نقطه پایان هستند if (obj.width !== undefined) { - baseObject.width = obj.x + obj.width; + baseObject.width = obj.width; } if (obj.height !== undefined) { - // برای line، height ممکن است ضخامت باشد، اما برای arrow طول عمودی است - baseObject.height = obj.y + obj.height; + baseObject.height = obj.height; } } else { if (obj.width !== undefined) baseObject.width = obj.width;