View System

뷰 관리 시스템 - 레이어, 선택, 공간 인덱싱, 타일 렌더링

모듈 개요

View System은 CAD 도면의 시각적 표현을 관리합니다. 레이어 기반 표시/숨김, 아이템 선택, R-tree 공간 인덱싱, 타일 기반 대규모 도면 최적화 등을 제공합니다.

10 header files R-tree Indexing Tile Rendering

c_view - 뷰 컨테이너

모든 뷰 가능 요소를 관리하는 최상위 컨테이너입니다.

👁

레이어 기반 표시/숨김

각 레이어의 가시성을 독립 제어. PCB 동박, 실크스크린, 솔더마스크 등 개별 전환.

🖱

선택 관리

단일/다중/영역 선택. 하이라이트 표시 및 Object Inspector 연동.

🔎

줌 / 팬 상태

줌 레벨, 팬 오프셋, 회전 각도 관리. 뷰 히스토리 유지.

c_view_item - 뷰 가능 요소

모든 CAD 도형이 상속하는 기본 클래스입니다.

속성설명
viewBBox()바운딩 박스 반환 (R-tree 인덱싱)
viewLayer()소속 레이어 ID
viewVisible()가시성 상태
viewSelected()선택 상태
viewDraw()GAL을 통한 자기 렌더링

c_view_layer - 레이어별 뷰

개별 레이어의 가시성, 색상, 렌더링 순서(Z-order)를 제어합니다.

레이어 렌더링 순서 (아래에서 위로)
Background
CU_BK
SM_BK
SILK_BK
CU_IN_1 ~ CU_IN_60
CU_FR
SM_FR
SILK_FR
Overlay (Selection, Snap)

c_view_controls - 뷰 제어

조작동작처리
마우스 휠줌 인/아웃커서 위치 기준
중버튼 드래그뷰 오프셋 이동
Ctrl+휠수평 스크롤뷰 수평 이동
Home/Fit전체 보기전체 아이템 줌

c_view_rtree - R-tree 공간 인덱싱

수만 개의 CAD 아이템 중 화면에 보이는 영역만 빠르게 검색하기 위한 공간 인덱스입니다.

성능 특성

R-tree로 영역 검색이 O(log N) 시간에 수행됩니다. 10만 개 아이템에서도 밀리초 단위 검색.

BOX2I viewport = view->GetViewport(); std::vector<c_view_item*> items; rtree->Query(viewport, items);

c_tile_manager - 타일 기반 렌더링

대규모 도면을 타일로 분할하여 화면에 보이는 타일만 렌더링합니다.

타일 렌더링 개념
Tile(0,0)
Tile(1,0)
Tile(2,0)
Tile(3,0)
Tile(0,1)
Tile(1,1)
Tile(2,1)
Tile(3,1)
Tile(0,2)
Tile(1,2)
Tile(2,2)
Tile(3,2)
highlight = 현재 뷰포트, blue = 인접 프리로드

c_offscreen_view - 오프스크린 렌더링

썸네일 생성

라이브러리 브라우저에서 심볼/풋프린트 미리보기를 오프스크린으로 렌더링.

출력/내보내기

PDF, SVG, PNG 출력 시 고해상도 이미지 생성.

c_view_overlay - 오버레이 표시

유형설명
선택 하이라이트선택된 아이템을 강조 색상으로 표시
스냅 포인트그리드, 끝점, 중점 등 스냅 위치 표시
HV 스냅라인수평/수직 정렬 가이드라인
러버밴드드로잉 도구 실시간 미리보기
선택 영역영역 선택 시 반투명 사각형

주요 헤더 파일

파일설명
view.h뷰 컨테이너
view_item.h뷰 가능 요소 기본 클래스
view_layer.h레이어별 뷰 속성
view_controls.h마우스/키보드 뷰 제어
view_rtree.hR-tree 공간 인덱싱
tile_manager.h타일 기반 렌더링
offscreen_view.h오프스크린 렌더링
view_overlay.h오버레이 표시