치수선, 문자 폰트 추가
This commit is contained in:
parent
dafee30e4e
commit
83640cc89b
@ -2,13 +2,16 @@ import { useEffect } from 'react'
|
|||||||
import { useRecoilValue } from 'recoil'
|
import { useRecoilValue } from 'recoil'
|
||||||
import { wordDisplaySelector } from '@/store/settingAtom'
|
import { wordDisplaySelector } from '@/store/settingAtom'
|
||||||
import { useEvent } from '@/hooks/useEvent'
|
import { useEvent } from '@/hooks/useEvent'
|
||||||
import { checkLineOrientation, getDistance } from '@/util/canvas-util'
|
import { checkLineOrientation, getDistance, setSurfaceShapePattern } from '@/util/canvas-util'
|
||||||
import { dimensionLineSettingsState } from '@/store/commonUtilsAtom'
|
import { dimensionLineSettingsState } from '@/store/commonUtilsAtom'
|
||||||
|
import { fontSelector } from '@/store/fontAtom'
|
||||||
|
|
||||||
export function useCommonUtils({ canvas, commonFunctionState, setCommonFunctionState }) {
|
export function useCommonUtils({ canvas, commonFunctionState, setCommonFunctionState }) {
|
||||||
const wordDisplay = useRecoilValue(wordDisplaySelector)
|
const wordDisplay = useRecoilValue(wordDisplaySelector)
|
||||||
const { addCanvasMouseEventListener, addDocumentEventListener, initEvent } = useEvent()
|
const { addCanvasMouseEventListener, addDocumentEventListener, initEvent } = useEvent()
|
||||||
const dimensionSettings = useRecoilValue(dimensionLineSettingsState)
|
const dimensionSettings = useRecoilValue(dimensionLineSettingsState)
|
||||||
|
const dimensionLineTextFont = useRecoilValue(fontSelector('dimensionLineText'))
|
||||||
|
const commonTextFont = useRecoilValue(fontSelector('commonText'))
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initEvent()
|
initEvent()
|
||||||
@ -19,21 +22,31 @@ export function useCommonUtils({ canvas, commonFunctionState, setCommonFunctionS
|
|||||||
} else if (commonFunctionState.distance) {
|
} else if (commonFunctionState.distance) {
|
||||||
commonDistanceMode()
|
commonDistanceMode()
|
||||||
}
|
}
|
||||||
}, [commonFunctionState, dimensionSettings])
|
}, [commonFunctionState, dimensionSettings, commonTextFont, dimensionLineTextFont])
|
||||||
|
|
||||||
|
const loadDataInitialize = () => {
|
||||||
|
const roofs = canvas.getObjects().filter((obj) => obj.name === 'roof')
|
||||||
|
roofs.forEach((roof) => {})
|
||||||
|
}
|
||||||
|
|
||||||
const commonTextMode = () => {
|
const commonTextMode = () => {
|
||||||
let textbox
|
let textbox
|
||||||
if (commonFunctionState.text) {
|
if (commonFunctionState.text) {
|
||||||
|
console.log(commonTextFont)
|
||||||
|
|
||||||
addCanvasMouseEventListener('mouse:down', (event) => {
|
addCanvasMouseEventListener('mouse:down', (event) => {
|
||||||
const pointer = canvas?.getPointer(event.e)
|
const pointer = canvas?.getPointer(event.e)
|
||||||
textbox = new fabric.Textbox('', {
|
textbox = new fabric.Textbox('', {
|
||||||
left: pointer.x,
|
left: pointer.x,
|
||||||
top: pointer.y,
|
top: pointer.y,
|
||||||
width: 200,
|
width: 200,
|
||||||
fontSize: 14,
|
|
||||||
editable: true,
|
editable: true,
|
||||||
name: 'commonText',
|
name: 'commonText',
|
||||||
visible: wordDisplay,
|
visible: wordDisplay,
|
||||||
|
fill: commonTextFont.fontColor.value,
|
||||||
|
fontFamily: commonTextFont.fontFamily.value,
|
||||||
|
fontSize: commonTextFont.fontSize.value,
|
||||||
|
fontStyle: commonTextFont.fontWeight.value,
|
||||||
})
|
})
|
||||||
|
|
||||||
canvas?.add(textbox)
|
canvas?.add(textbox)
|
||||||
@ -187,21 +200,19 @@ export function useCommonUtils({ canvas, commonFunctionState, setCommonFunctionS
|
|||||||
canvas.add(arrow1)
|
canvas.add(arrow1)
|
||||||
canvas.add(arrow2)
|
canvas.add(arrow2)
|
||||||
|
|
||||||
console.log(dimensionSettings)
|
|
||||||
|
|
||||||
// 거리 텍스트가 이미 있으면 업데이트하고, 없으면 새로 생성
|
|
||||||
distanceText = new fabric.Text(`${distance * 10} `, {
|
distanceText = new fabric.Text(`${distance * 10} `, {
|
||||||
left: (p1CenterX + p2CenterX) / 2 + (lineDirection === 'horizontal' ? 0 : -15),
|
left: (p1CenterX + p2CenterX) / 2 + (lineDirection === 'horizontal' ? 0 : -15),
|
||||||
top: (p1CenterY + p2CenterY) / 2 + (lineDirection === 'horizontal' ? +15 : 0),
|
top: (p1CenterY + p2CenterY) / 2 + (lineDirection === 'horizontal' ? +15 : 0),
|
||||||
fill: dimensionSettings.fontColor,
|
fill: dimensionLineTextFont.fontColor.value,
|
||||||
fontSize: dimensionSettings.fontSize,
|
fontSize: dimensionLineTextFont.fontSize.value,
|
||||||
// fontFamily : dimensionSettings.font, //폰트
|
fontFamily: dimensionLineTextFont.fontFamily.value,
|
||||||
// fontStyle : dimensionSettings.fontStyle, //폰트스타일
|
fontStyle: dimensionLineTextFont.fontWeight.value,
|
||||||
selectable: true,
|
selectable: true,
|
||||||
textAlign: 'center',
|
textAlign: 'center',
|
||||||
originX: 'center',
|
originX: 'center',
|
||||||
originY: 'center',
|
originY: 'center',
|
||||||
angle: lineDirection === 'horizontal' ? 0 : 270,
|
angle: lineDirection === 'horizontal' ? 0 : 270,
|
||||||
|
name: 'dimensionLineText',
|
||||||
// lockMovementX: false,
|
// lockMovementX: false,
|
||||||
// lockMovementY: false,
|
// lockMovementY: false,
|
||||||
})
|
})
|
||||||
@ -361,11 +372,12 @@ export function useCommonUtils({ canvas, commonFunctionState, setCommonFunctionS
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setCommonFunctionState(tempStates)
|
if (setCommonFunctionState) setCommonFunctionState(tempStates)
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
commonFunctions,
|
commonFunctions,
|
||||||
dimensionSettings,
|
dimensionSettings,
|
||||||
|
loadDataInitialize,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,9 +11,35 @@ export function useFont() {
|
|||||||
const lengthText = useRecoilValue(fontSelector('lengthText'))
|
const lengthText = useRecoilValue(fontSelector('lengthText'))
|
||||||
const circuitNumberText = useRecoilValue(fontSelector('circuitNumberText'))
|
const circuitNumberText = useRecoilValue(fontSelector('circuitNumberText'))
|
||||||
|
|
||||||
useEffect(() => {}, [commonText])
|
useEffect(() => {
|
||||||
|
if (canvas) {
|
||||||
|
const textObjs = canvas?.getObjects().filter((obj) => obj.name === 'commonText')
|
||||||
|
textObjs.forEach((obj) => {
|
||||||
|
obj.set({
|
||||||
|
fontFamily: commonText.fontFamily.value,
|
||||||
|
fontWeight: commonText.fontWeight.value,
|
||||||
|
fontSize: commonText.fontSize.value,
|
||||||
|
fill: commonText.fontColor.value,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
canvas.renderAll()
|
||||||
|
}
|
||||||
|
}, [commonText])
|
||||||
|
|
||||||
useEffect(() => {}, [dimensionLineText])
|
useEffect(() => {
|
||||||
|
if (canvas) {
|
||||||
|
const textObjs = canvas?.getObjects().filter((obj) => obj.name === 'dimensionLineText')
|
||||||
|
textObjs.forEach((obj) => {
|
||||||
|
obj.set({
|
||||||
|
fontFamily: dimensionLineText.fontFamily.value,
|
||||||
|
fontWeight: dimensionLineText.fontWeight.value,
|
||||||
|
fontSize: dimensionLineText.fontSize.value,
|
||||||
|
fill: dimensionLineText.fontColor.value,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
canvas.renderAll()
|
||||||
|
}
|
||||||
|
}, [dimensionLineText])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (canvas) {
|
if (canvas) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user