CrownyAI 오피스 그래프 punch #5 — 연결선(커넥터) 생성
개요
크라우니 오피스 그래프(다이어그램/순서도 에디터) 모듈의 punch #5 완성 — C(연결선) 도구로 도형→도형
드래그해 앵커식 커넥터 {id,from,to}를 gConn에 생성. 앱 번들 무수정(§25 installGraphBridge 확장).
무엇을 했는지
- 한선씨 정본
bundle/office/bridge/그래프연결.한선 (18/18 PASS): 사각형 가장자리 교차 앵커(중심→상대중심
방향), 선길이(루트 floor), 화살표 머리 후퇴점, 커넥터유효(같은 도형 거부·순환 허용).
★VM 실측: crownyc 정수÷정수 = 자연반올림 정수 반환(6600/180→37) → 정수 나눗셈엔 내림() 무동작.
앵커 부축 좌표는 자연반올림을 결정값으로 채택, JS 미러는 Math.round로 1:1 파리티. 선길이만 루트()
실수 → 내림() 진짜 floor.
crownyBridge.js §25 확장(+182줄, 13783→13965):
buildGraphVals 커넥터 매핑: 레거시 위치식(connVal 1:1 무회귀) + 앵커식({from,to})=선+화살표(+라벨)
다중 아이템 확장. 앵커는 도형 x/y/w/h로 파생 → 도형 이동/리사이즈 시 자동 재계산(따라감).
캔버스 W/H 캐시(픽셀 공간 앵커 계산용, graphFixupNow 150ms 갱신).
punch #2 mousedown에 tool==='연결선' 가드(도형 이동 미개시).
punch #5 블록: C-도구 캡처 드래그(mousedown 시작도형→mousemove 고무줄 미리보기→mouseup 끝도형),
같은 도형/빈 곳 취소, addConnector(gConn 세트 교체 setState), gDragHappened 재사용 click 스왈로.
CDP 프로브: __crownyGraphAddConnector/Connectors/AnchorConnCount/ConnAnchors/DeleteConn/ConnReady.게이트 실측 (CDP :9333, 오피스 앱 번들 + 브릿지 주입)
- 연결선 생성: C 도구 GUI 드래그(Input.dispatchMouseEvent 도형A→도형B) → connCount 7→8, anchorConn 0→1,
{id:gcx1_…, from:f0, to:f1} 생성.
- 고무줄 미리보기: 드래그 중 rubberPresent=true, 릴리스 후 제거.
- 앵커 가장자리: ax=bx=102.88(세로 정렬 도형 → 같은 x, f0 하변 ay=115.78·f1 상변 by=187.88).
- 도형 이동 따라감: f0 +66,+44 이동 → 앵커 재계산(102.88,115.78 → 144.66,167.02, len 72→27).
- 취소: 같은 도형/빈 곳(미존재 id) drop → null, connCount 불변(8).
- 순환 허용: B→A 추가 성공(anchorConn 2).
- 문서 회귀 27/27 PASS · 그래프 #1~#4,#6 무회귀(hoist·라벨(f2편집·f4독립)·드래그·리사이즈·추가/삭제·
fills키정합(f1=#3E8F8A)·키보드·스텐실 6/3/5/4).
- 파일 무절단: 13965줄·921103바이트·node --check OK. 앱 바이너리·crowny-browser.m·crowny-shell.m·
Makefile·app/index.html(md5 decec46…) 무수정.
관련 파일
- bundle/office/bridge/crownyBridge.js §25(punch #5, +182줄)
- bundle/office/bridge/그래프연결.한선 (정본 18/18)
- spec/그래프기능-판정표.md (punch #5)
- 백업: 백업/crownyBridge-그래프punch5착수-0718-1921.js.bak
잔여 이슈
- dist/CrownyAI.app 미러 미동기(패키징 단계 — SSOT=bundle/).
- 후속 punch: #7 정렬·#8 그룹·#9 줌·#10 테두리/상태바 파생·#11 SVG 내보내기.
- 커넥터 선택/Delete는 __crownyGraphDeleteConn(최소 프로그램 경로)만 — GUI 선택 UI는 후속(punch #4 커넥터 정리와 대칭).