PathIterator 인터페이스

PathIterator 인터페이스

PathIterator 인터페이스는 Shape 인터페이스를 구현하는 객체가 경계의 기하 구조를 한 번에 한 세그먼트씩 검색할 수 있는 메커니즘을 제공해요.

출처: Java API Reference

본문

이 인터페이스는 1차부터 3차까지의 베지어 곡선(직선, 2차·3차 베지어 스플라인)을 사용해서 경계 경로를 한 세그먼트씩 검색할 수 있게 해요.

public interface PathIterator

여러 하위 경로는 MOVETO 세그먼트로 기하 구조에 불연속을 만들어 한 하위 경로의 끝에서 다음 하위 경로의 시작으로 이동함으로써 표현할 수 있어요.

세그먼트 타입 상수

  • SEG_MOVETO — 새 하위 경로의 시작점으로 이동하는 세그먼트
  • SEG_LINETO — 직선 세그먼트
  • SEG_QUADTO — 2차 베지어 세그먼트
  • SEG_CUBICTO — 3차 베지어 세그먼트
  • SEG_CLOSE — 하위 경로를 닫는 세그먼트

각 하위 경로는 마지막 세그먼트를 그 하위 경로의 시작 MOVETO 세그먼트와 같은 좌표에서 끝내거나 CLOSE 세그먼트를 사용해 수동으로 닫을 수 있어요. CLOSE 세그먼트는 마지막 점에서 처음으로 돌아가는 선분을 추가해요.

윈딩 규칙 상수

  • WIND_EVEN_ODD — 짝수-홀수 규칙
  • WIND_NON_ZERO — 0이 아닌 규칙

두 규칙은 경로의 어느 영역이 안쪽인지 결정하는 방식이 달라요.

주의

윤곽선을 수동으로 닫는 것과 CLOSE 세그먼트로 경로를 닫는 것은 끝점에서 다른 선 스타일 장식이 사용될 수 있어요. 예를 들어 BasicStroke 객체는 CLOSE 세그먼트를 만나면 첫 점과 마지막 점을 연결하는 선 JOIN 장식을 사용하지만, 경로를 시작 좌표와 같은 좌표에서 끝내면 끝점에 선 CAP 장식이 사용돼요.

주요 메서드

  • currentSegment(float[] coords) / currentSegment(double[] coords) — 현재 세그먼트의 좌표와 타입을 반환해요.
  • next() — 다음 세그먼트로 이동해요.
  • isDone() — 반복 완료 여부를 확인해요.
  • getWindingRule() — 윈딩 규칙을 반환해요.

더 알아보기