TextHitInfo 클래스
TextHitInfo 클래스
TextHitInfo 클래스는 텍스트 모델의 문자 위치와 그 문자의 bias("측면")를 나타내요. bias는 leading(왼쪽에서 오른쪽 문자 기준 왼쪽 가장자리) 또는 trailing(오른쪽 가장자리) 중 하나예요. TextHitInfo 인스턴스는 텍스트 안에서 캐럿·삽입 위치를 지정하는 데 사용돼요.
본문
예를 들어 텍스트 "abc"를 생각해 보죠. TextHitInfo.trailing(1)은 텍스트에서 'b'의 오른쪽에 해당해요.
public final class TextHitInfo
extends Object
TextHitInfo는 주로 TextLayout과 TextLayout의 클라이언트가 사용해요. TextLayout 클라이언트는 새 텍스트가 텍스트 모델에 삽입될 삽입 오프셋을 TextHitInfo 인스턴스로 조회해요. 삽입 오프셋은 bias가 leading이면 TextHitInfo의 문자 위치와 같고, trailing이면 그보다 한 문자 뒤예요. TextHitInfo.trailing(1)의 삽입 오프셋은 2예요.
getOtherHit
때로는 기존 TextHitInfo와 같은 삽입 오프셋을 갖되 반대쪽 문자의 히트로 TextHitInfo를 구성하는 게 편리해요. getOtherHit 메서드는 기존 인스턴스와 같은 삽입 오프셋을 갖고, 삽입 오프셋의 반대쪽 문자에 히트한 새 TextHitInfo를 만들어요. trailing(1)에 getOtherHit을 호출하면 leading(2)를 반환해요. 일반적으로 trailing(n)의 getOtherHit은 leading(n+1)을, leading(n)의 getOtherHit은 trailing(n-1)을 반환해요.
사용 예제 (그래픽 점을 삽입 위치로 변환)
TextLayout layout = ...;
Point2D.Float hitPoint = ...;
TextHitInfo hitInfo = layout.hitTestChar(hitPoint.x, hitPoint.y);
int insPoint = hitInfo.getInsertionIndex();
// insPoint는 layout에 상대적이므로, 텍스트 모델에서 쓰려면 보정 필요
주요 메서드
leading(int charIndex)— 지정한 문자의 leading 쪽 히트를 만들어요.trailing(int charIndex)— 지정한 문자의 trailing 쪽 히트를 만들어요.getCharIndex()— 히트의 문자 위치를 반환해요.getInsertionIndex()— 삽입 오프셋을 반환해요.isLeadingEdge()— leading 쪽인지 확인해요.getOtherHit()— 삽입 오프셋이 같은 반대쪽 히트를 만들어요.