|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
java.lang.Objectjava.awt.font.TextLayout
public final class TextLayout
TextLayout
는, 서식 첨부 문자 데이터의 불변의 그래픽 표현입니다.
이 클래스는 다음의 기능을 제공합니다.
TextLayout
객체는,draw
메소드를 사용해 draw 할 수 있습니다.
TextLayout
는, 직접 또는 LineBreakMeasurer
를 개입시켜 작성할 수 있습니다. 직접 작성되는 경우, 소스 텍스트는 1 개의 단락을 나타냅니다. LineBreakMeasurer
에서는, 특정의 폭에 들어가는 복수의 행에 서식 첨부 텍스트를 분할할 수 있습니다. 자세한 것은,LineBreakMeasurer
의 문서를 참조해 주세요.
TextLayout
의 구축은, 논리적이게는 다음의 순서로 행해집니다.
TextAttribute.FONT
가 있는 경우는 폰트가 사용되어 그렇지 않은 경우는, 정의 끝난 속성을 사용해 디폴트 폰트가 계산된다
TextLayout
객체의 메소드로부터 반환되는 모든 그래픽 정보는,TextLayout
객체의 baseline와 좌단의 교점인 TextLayout
의 원점을 기준으로 하고 있습니다. 또,TextLayout
객체의 메소드에게 건네지는 좌표는,TextLayout
객체의 원점을 기준으로 하고 있는 것이라고 보여집니다. 일반적으로, 클라이언트는,TextLayout
객체의 좌표계와 다른 객체 (Graphics
객체등)의 좌표계와의 사이에 변환이 필요하게 됩니다.
TextLayout
객체는, 서식 첨부 텍스트로부터 구축됩니다만, 소스 텍스트에의 참조는 보관 유지하지 않습니다. 이 때문에,TextLayout
를 생성하기 위해서 사용된 텍스트에 그 후 변경이 더해져도,TextLayout
에 영향은 없습니다.
TextLayout
객체의 3 개의 메소드 (getNextRightHit
,getNextLeftHit
, 및 hitTestChar
)는,TextHitInfo
의 인스턴스를 돌려줍니다. 그러한 TextHitInfo
객체에 포함되는 오프셋(offset)는,TextLayout
를 작성하기 위해서 사용된 텍스트는 아니고,TextLayout
의 선두를 기준으로 합니다. 똑같이,TextHitInfo
의 인스턴스를 파라미터로서 받는 TextLayout
의 메소드도,TextHitInfo
객체의 오프셋(offset)의 기준은 TextLayout
이며, 기본이 되는 텍스트 스토리지 모델은 아니면 상정합니다.
례:
TextLayout
와 그 경계의 구형의 작성 및 draw
Graphics2D g = ...; Point2D loc = ...; Font font = Font.getFont("Helvetica-bold-italic"); FontRenderContext frc = g.getFontRenderContext(); TextLayout layout = new TextLayout("This is a string", font, frc); layout.draw(g, (float) loc.getX(), (float) loc.getY()); Rectangle2D bounds = layout.getBounds(); bounds.setRect(bounds.getX() +loc.getX(), bounds.getY() +loc.getY(), bounds.getWidth(), bounds.getHeight()); g.draw(bounds);
TextLayout
로 히트를 테스트합니다 (특정의 그래픽 위치에 있는 문자를 판정한다).
Point2D click = ...; TextHitInfo hit = layout.hitTestChar( (float) (click.getX() - loc.getX()), (float) (click.getY() - loc.getY()));
오른쪽 커서 키가 밀렸던 것에 반응합니다.
int insertionIndex = ...; TextHitInfo next = layout.getNextRightHit(insertionIndex); if (next ! = null) { // translate graphics to origin of layout on screen g.translate(loc.getX(), loc.getY()); Shape[] carets = layout.getCaretShapes(next.getInsertionIndex()); g.draw(carets[0]); if (carets[1] ! = null) { g.draw(carets[1]); } }
소스 텍스트의 부분 캐릭터 라인에 대응하는 선택 범위를 draw 합니다. 선택된 영역은, 시각적으로 연속하지 않은 경우가 있습니다.
// selStart, selLimit should be relative to the layout, // not to the source text int selStart = ..., selLimit = ...; Color selectionColor = ...; Shape selection = layout.getLogicalHighlightShape(selStart, selLimit); // selection may consist of disjoint areas // graphics is assumed to be tranlated to origin of layout g.setColor(selectionColor); g.fill(selection);
시각적으로 연속한 선택 범위를 draw 합니다. 선택 범위는, 소스 텍스트의 복수의 부분 캐릭터 라인에 대응하는 일이 있습니다. 대응하는 소스 텍스트의 부분 캐릭터 라인의 범위는,getLogicalRangesForVisualSelection()
에 의해 취득할 수 있습니다.
TextHitInfo selStart = ..., selLimit = ...; Shape selection = layout.getVisualHighlightShape(selStart, selLimit); g.setColor(selectionColor); g.fill(selection); int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit); // ranges[0], ranges[1] is the first selection range, // ranges[2], ranges[3] is the second selection range, etc.
주:폰트를 회전하면(자) 텍스트의 baseline가 회전하는 일이 있어, 복수의 런으로 회전이 다르면(자), baseline가 굴곡 하거나 지그재그가 되는 일이 있습니다. 이 보기 드문 가능성에 대처하기 위해서, 일부의 폰트 API 는 지정에 따라 「baseline를 기준으로 한 좌표로」메트릭스를 돌려주거나 파라미터를 받거나 합니다 (아센트나 유효폭 등). 그 이외의 API 는, 「표준의 좌표로」처리합니다 (getBounds 등). baseline를 기준으로 한 좌표에서는, x 좌표는 baseline에 따른 거리 (정의 x 는 baseline에 따라 진행될 방향), y 좌표는 x 에서의 baseline에 대한 수선에 따른 거리 (정의 y 는 baseline 벡터로부터 시계회전에 90 번의 방향)에 맵 됩니다. 표준의 좌표에서는, 좌표는 TextLayout 의 원점을 0,0 으로서 x 축 및 y 축으로 따라 측정됩니다. 관련하는 각 API 의 문서에는, 어느 값이 어느 좌표계로 나타내질지가 나타나고 있습니다. 일반적으로, 측정에 관련하는 API 는 baseline를 기준으로 한 좌표, 표시에 관련하는 API 는 표준의 좌표를 사용합니다.
LineBreakMeasurer
,
TextAttribute
,
TextHitInfo
,
LayoutPath
상자의 클래스의 개요 | |
---|---|
static class |
TextLayout.CaretPolicy
강한 caret의 장소를 결정하는 정책를 정의합니다. |
필드의 개요 | |
---|---|
static TextLayout.CaretPolicy |
DEFAULT_CARET_POLICY
이 CaretPolicy 는, 정책가 클라이언트에 의해 지정되어 있지 않은 경우에 사용됩니다. |
생성자 의 개요 | |
---|---|
TextLayout (AttributedCharacterIterator text,
FontRenderContext frc)
서식 첨부 텍스트의 반복자로부터 TextLayout 를 구축합니다. |
|
TextLayout (String string,
Font font,
FontRenderContext frc)
String 및 Font 로부터 TextLayout 를 구축합니다. |
|
TextLayout (String string,
Map <? extends AttributedCharacterIterator.Attribute ,? > attributes,
FontRenderContext frc)
String 및 속성 세트로부터 TextLayout 를 구축합니다. |
메소드의 개요 | |
---|---|
protected Object |
clone ()
이 TextLayout 의 카피를 작성합니다. |
void |
draw (Graphics2D g2,
float x,
float y)
지정된 Graphics2D 문맥의 지정된 위치에 이 TextLayout 를 draw 합니다. |
boolean |
equals (Object obj)
지정된 Object 가 TextLayout 객체로, 지정된 Object 가 이 TextLayout 와 동일한 경우에 true 를 돌려줍니다. |
boolean |
equals (TextLayout rhs)
2 개의 레이아웃이 동일한 경우에 true 를 돌려줍니다. |
float |
getAdvance ()
이 TextLayout 의 유효폭을 돌려줍니다. |
float |
getAscent ()
이 TextLayout 의 아센트를 돌려줍니다. |
byte |
getBaseline ()
이 TextLayout 의 baseline를 돌려줍니다. |
float[] |
getBaselineOffsets ()
이 TextLayout 로 사용되는 baseline의 오프셋(offset) 배열을 돌려줍니다. |
Shape |
getBlackBoxBounds (int firstEndpoint,
int secondEndpoint)
지정된 범위에 있는 모든 문자의 블랙 박스 경계를 돌려줍니다. |
Rectangle2D |
getBounds ()
이 TextLayout 의 경계를 돌려줍니다. |
float[] |
getCaretInfo (TextHitInfo hit)
hit 에 대응하는 caret에 대한 정보를 돌려줍니다. |
float[] |
getCaretInfo (TextHitInfo hit,
Rectangle2D bounds)
hit 에 대응하는 caret에 대한 정보를 돌려줍니다. |
Shape |
getCaretShape (TextHitInfo hit)
이 TextLayout 의 자연 경계내의 지정된 히트에 있는 caret를 나타내는 Shape 를 돌려줍니다. |
Shape |
getCaretShape (TextHitInfo hit,
Rectangle2D bounds)
지정된 경계내의 지정된 히트에 있는 caret를 나타내는 Shape 를 돌려줍니다. |
Shape [] |
getCaretShapes (int offset)
강한 caret와 약한 caret에 대응하는 2 개의 윤곽선을 돌려줍니다. |
Shape [] |
getCaretShapes (int offset,
Rectangle2D bounds)
강한 caret와 약한 caret에 대응하는 2 개의 윤곽선을 돌려줍니다. |
Shape [] |
getCaretShapes (int offset,
Rectangle2D bounds,
TextLayout.CaretPolicy policy)
강한 caret와 약한 caret에 대응하는 2 개의 윤곽선을 돌려줍니다. |
int |
getCharacterCount ()
이 TextLayout 가 나타내는 문자수를 돌려줍니다. |
byte |
getCharacterLevel (int index)
index 에 있는 문자의 레벨을 돌려줍니다. |
float |
getDescent ()
이 TextLayout 의 디 센트를 돌려줍니다. |
TextLayout |
getJustifiedLayout (float justificationWidth)
지정된 폭에 행 가지런히 하고 된, 이 TextLayout 의 카피를 작성합니다. |
LayoutPath |
getLayoutPath ()
LayoutPath 를 돌려줍니다. |
float |
getLeading ()
TextLayout 의 leading를 돌려줍니다. |
Shape |
getLogicalHighlightShape (int firstEndpoint,
int secondEndpoint)
지정된 범위의 논리적인 선택 범위를 둘러싸는 Shape 를, 이 TextLayout 의 자연 경계까지 확장해 돌려줍니다. |
Shape |
getLogicalHighlightShape (int firstEndpoint,
int secondEndpoint,
Rectangle2D bounds)
지정된 범위의 논리적인 선택 범위를 둘러싸는 Shape 를, 지정된 bounds 까지 확장해 돌려줍니다. |
int[] |
getLogicalRangesForVisualSelection (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
시각적인 선택 범위에 대응하는 텍스트의 논리적인 범위를 돌려줍니다. |
TextHitInfo |
getNextLeftHit (int offset)
왼쪽 (상) 방향의 다음의 caret의 히트를 돌려줍니다. |
TextHitInfo |
getNextLeftHit (int offset,
TextLayout.CaretPolicy policy)
왼쪽 (상) 방향의 다음의 caret의 히트를 돌려줍니다. |
TextHitInfo |
getNextLeftHit (TextHitInfo hit)
왼쪽 (상) 방향의 다음의 caret의 히트를 돌려줍니다. |
TextHitInfo |
getNextRightHit (int offset)
오른쪽 (하) 방향의 다음의 caret의 히트를 돌려줍니다. |
TextHitInfo |
getNextRightHit (int offset,
TextLayout.CaretPolicy policy)
오른쪽 (하) 방향의 다음의 caret의 히트를 돌려줍니다. |
TextHitInfo |
getNextRightHit (TextHitInfo hit)
오른쪽 (하) 방향의 다음의 caret의 히트를 돌려줍니다. |
Shape |
getOutline (AffineTransform tx)
이 TextLayout 의 윤곽을 나타내는 Shape 를 돌려줍니다. |
Rectangle |
getPixelBounds (FontRenderContext frc,
float x,
float y)
지정된 위치에서 지정된 FontRenderContext 를 사용해, 그래픽스내에 이 TextLayout 가 draw 될 때의 인덱스의 위치에 있는 Glyph의 픽셀 경계를 돌려줍니다. |
float |
getVisibleAdvance ()
이 TextLayout 의 유효폭을 돌려줍니다. |
Shape |
getVisualHighlightShape (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
지정된 범위의 시각적인 선택 범위를 둘러싸는 Shape 를, 경계까지 확장해 돌려줍니다. |
Shape |
getVisualHighlightShape (TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint,
Rectangle2D bounds)
지정된 범위의 시각적인 선택 범위를 둘러싸는 윤곽선을, bounds 까지 확장해 돌려줍니다. |
TextHitInfo |
getVisualOtherHit (TextHitInfo hit)
지정된 히트의 caret의 반대측의 히트를 돌려줍니다. |
protected void |
handleJustify (float justificationWidth)
이 레이아웃을 행 가지런히 합니다. |
int |
hashCode ()
이 TextLayout 의 해시 코드를 돌려줍니다. |
TextHitInfo |
hitTestChar (float x,
float y)
지정된 점에 대응하는 TextHitInfo 를 돌려줍니다. |
TextHitInfo |
hitTestChar (float x,
float y,
Rectangle2D bounds)
지정된 점에 대응하는 TextHitInfo 를 돌려줍니다. |
void |
hitToPoint (TextHitInfo hit,
Point2D point)
히트를 표준 좌표의 포인트로 변환합니다. |
boolean |
isLeftToRight ()
이 TextLayout 의 베이스가 될 방향이 왼쪽에서 오른쪽의 경우에 true 를 돌려주어, 오른쪽에서 왼쪽의 경우에 false 를 돌려줍니다. |
boolean |
isVertical ()
이 TextLayout 가 수직의 경우에 true 를 돌려줍니다. |
String |
toString ()
이 TextLayout 의 디버그 정보를 돌려줍니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
finalize , getClass , notify , notifyAll , wait , wait , wait |
필드의 상세 |
---|
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicy
는, 정책가 클라이언트에 의해 지정되어 있지 않은 경우에 사용됩니다. 이 정책에서는, 방향이 행의 방향과 같은 문자의 히트가, 반대 방향의 문자의 히트보다 강해집니다. 문자의 방향이 같은 경우, 문자의 리딩 엣지의 히트가, 문자의 트레이 링 엣지의 히트보다 강해집니다.
생성자 의 상세 |
---|
public TextLayout(String string, Font font, FontRenderContext frc)
String
및 Font
로부터 TextLayout
를 구축합니다. 모든 텍스트는, 지정된 Font
를 사용해 서식이 설정됩니다.
String
에는, 1 단락의 텍스트를 지정할 필요가 있습니다. 쌍방향 알고리즘에서는, 단락 전체가 요구되기 때문입니다.
string
- 표시하는 텍스트font
- 텍스트의 서식을 설정하기 위해서 사용되는 Font
frc
- 텍스트를 정확하게 측정하기 위해서 필요한
그래픽스 디바이스에 관한 정보를 포함한다.
텍스트 측정은, 디바이스의 해상도에 의해 조금 달라,
에일리어징 제거등의 속성에 따라서 다르다.
이 파라미터는,
TextLayout
와 사용자 공간의 사이의 이동은 지정하지 않는다public TextLayout(String string, Map <? extends AttributedCharacterIterator.Attribute ,? > attributes, FontRenderContext frc)
String
및 속성 세트로부터 TextLayout
를 구축합니다. 모든 텍스트는, 지정된 속성에 의해 서식이 설정됩니다.
string
에는, 1 단락의 텍스트를 지정할 필요가 있습니다. 쌍방향 알고리즘에서는, 단락 전체가 요구되기 때문입니다.
string
- 표시하는 텍스트attributes
- 텍스트의 서식을 설정하기 위해서 사용되는 속성frc
- 텍스트를 정확하게 측정하기 위해서 필요한
그래픽스 디바이스에 관한 정보를 포함한다.
텍스트 측정은, 디바이스의 해상도에 의해 조금 달라,
에일리어징 제거등의 속성에 따라서 다르다.
이 파라미터는,
TextLayout
와 사용자 공간의 사이의 이동은 지정하지 않는다public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
TextLayout
를 구축합니다. 반복자는, 1 단락의 텍스트를 지정할 필요가 있습니다. 쌍방향 알고리즘에서는, 단락 전체가 요구되기 때문입니다.
text
- 표시하는 서식 첨부 텍스트frc
- 텍스트를 정확하게 측정하기 위해서 필요한
그래픽스 디바이스에 관한 정보를 포함한다.
텍스트 측정은, 디바이스의 해상도에 의해 조금 달라,
에일리어징 제거등의 속성에 따라서 다르다.
이 파라미터는,
TextLayout
와 사용자 공간의 사이의 이동은 지정하지 않는다메소드의 상세 |
---|
protected Object clone()
TextLayout
의 카피를 작성합니다.
Object
내의 clone
Cloneable
public TextLayout getJustifiedLayout(float justificationWidth)
TextLayout
의 카피를 작성합니다.
이 TextLayout
가 벌써 행 가지런히 하고 되고 있는 경우는 예외가 throw 됩니다. 이 TextLayout
객체의 행 가지런히 하고 비율이 제로의 경우, 이 TextLayout
과 동일한 TextLayout
가 돌려주어집니다.
justificationWidth
- 행 가지런히 하고 하기 위해서 사용하는 폭.
최선의 결과를 얻기 위해서(때문에)는,
행의 현재의 유효폭과의 차이는 작은 것이 좋다
TextLayout
Error
- 이 레이아웃이 벌써 행 가지런히 하고 되고 있는 경우, Error 가
throw 된다protected void handleJustify(float justificationWidth)
코드에 따라서는, 레이아웃의 불변성에 의존하는 경우가 있습니다. 사브크라사는 이 메소드를 직접 호출하는 것이 아니라, getJustifiedLayout 를 호출하는 것이 좋을 것입니다. getJustifiedLayout 는, 이 레이아웃의 복제에 대해서 이 메소드를 호출하므로, 원의 레이아웃은 보존됩니다.
justificationWidth
- 행 가지런히 하고 하기 위해서 사용하는 폭.
최선의 결과를 얻기 위해서(때문에)는,
행의 현재의 유효폭과의 차이는 작은 것이 좋은getJustifiedLayout(float)
public byte getBaseline()
TextLayout
의 baseline를 돌려줍니다. baseline는,Font
로 정의되는 값 (roman, centered, hanging)의 1 개입니다. 아센트 및 디 센트는, 이 baseline를 기준으로 합니다. baselineOffsets
도 이 baseline를 기준으로 합니다.
TextLayout
의 baselinegetBaselineOffsets()
,
Font
public float[] getBaselineOffsets()
TextLayout
로 사용되는 baseline의 오프셋(offset) 배열을 돌려줍니다.
이 배열은,Font
로 정의되는 값 (roman, centered, hanging)의 1 개로 인덱스 붙이고 됩니다. 이러한 값은, 이 TextLayout
객체의 baseline를 기준으로 합니다. 그 때문에,getBaselineOffsets[getBaseline()] == 0
이 됩니다. 오프셋(offset)를 TextLayout
객체의 baseline의 위치에 가산하면(자), 새로운 baseline의 위치를 취득할 수 있습니다.
TextLayout
에 사용되는 baseline를 포함한다
오프셋(offset) 배열getBaseline()
,
Font
public float getAdvance()
TextLayout
의 유효폭을 돌려줍니다. 유효폭은, 원점에서 우단 (하단)의 문자의 유효폭까지의 거리입니다. 이것은 baseline를 기준으로 한 좌표로 나타내집니다.
TextLayout
의 유효폭public float getVisibleAdvance()
TextLayout
의 유효폭을 돌려줍니다. 말미의 공백은 포함되지 않습니다. 이것은 baseline를 기준으로 한 좌표로 나타내집니다.
TextLayout
의 말미의 공백을 제외했다
유효폭getAdvance()
public float getAscent()
TextLayout
의 아센트를 돌려줍니다. 아센트는,TextLayout
위 ( 오른쪽)로부터 baseline까지의 거리입니다. 이 거리는 항상 정의 값 또는 제로입니다. 아센트는, 상 첨부 텍스트를 포함하기 위해서 충분한 크기이며, 각 Glyph의 아센트, 오프셋(offset), 및 baseline의 합계의 최대치입니다. 이것은, TextLayout 내의 모든 텍스트의 baseline로부터의 최대 아센트입니다. baseline를 기준으로 한 좌표로 나타내집니다.
TextLayout
의 아센트public float getDescent()
TextLayout
의 디 센트를 돌려줍니다. 디 센트는, baseline로부터 TextLayout
아래 (왼쪽)까지의 거리입니다. 이 거리는 항상 정의 값 또는 제로입니다. 디 센트는, 하부나무 텍스트를 포함하기 위해서 충분한 크기이며, 각 Glyph의 디 센트, 오프셋(offset), 및 baseline의 합계의 최대치입니다. 이것은, TextLayout 내의 모든 텍스트의 baseline로부터의 최대 디 센트입니다. baseline를 기준으로 한 좌표로 나타내집니다.
TextLayout
의 디 센트public float getLeading()
TextLayout
의 leading를 돌려줍니다. leading는, 이 TextLayout
용으로서 추천 되고 있는 행간 스페이스입니다. 이것은 baseline를 기준으로 한 좌표로 나타내집니다.
leading는,TextLayout
의 모든 Glyph베크톨의 leading, 디 센트, 및 baseline로부터 계산됩니다. 알고리즘은, 대략 다음과 같습니다.
maxD = 0; maxDL = 0; for (GlyphVector g in all glyphvectors) { maxD = max(maxD, g.getDescent() + offsets[g.getBaseline()]); maxDL = max(maxDL, g.getDescent() + g.getLeading() + offsets[g.getBaseline()]); } return maxDL - maxD;
TextLayout
의 선두public Rectangle2D getBounds()
TextLayout
의 경계를 돌려줍니다. 경계는 표준의 좌표로 나타내집니다.
래스터화이기 때문에, TextLayout 에 의해 draw 된 픽셀이 모두 이 경계내에 들어간다고는 할 수 없습니다.
TextLayout 의 아센트, 디 센트, 원점, 또는 유효폭과 완전하게는 일치하지 않는 경우가 있습니다.
TextLayout
의 경계이다
Rectangle2D
public Rectangle getPixelBounds(FontRenderContext frc, float x, float y)
FontRenderContext
를 사용해, 그래픽스내에 이 TextLayout
가 draw 될 때의 인덱스의 위치에 있는 Glyph의 픽셀 경계를 돌려줍니다. 그래픽스 draw 문맥은, 이 TextLayout
의 작성에 사용되는 FontRenderContext
와 같은 필요는 없고, null 에서도 괜찮습니다. null 의 경우, 이 TextLayout
의 FontRenderContext
가 사용됩니다.
frc
- Graphics
의 FontRenderContext
x
- 이 TextLayout
을 draw 하는 x 좌표y
- 이 TextLayout
를 draw 하는 y 좌표
Rectangle
GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)
public boolean isLeftToRight()
TextLayout
의 베이스가 될 방향이 왼쪽에서 오른쪽의 경우에 true
를 돌려주어, 오른쪽에서 왼쪽의 경우에 false
를 돌려줍니다. TextLayout
에는, 왼쪽에서 오른쪽 (LTR) 또는 오른쪽에서 왼쪽 (RTL)의 어느 쪽인가의 베이스가 될 방향이 있습니다. 베이스가 될 방향은, 행의 텍스트의 실제의 방향 (LTR, RTL, 또는 혼합)에는 의존하지 않습니다. 왼쪽에서 오른쪽의 레이아웃은, 디폴트에서는 좌단 가지런히 하가 됩니다. 레이아웃이 탭 첨부의 행에 놓여졌을 경우, 탭은 왼쪽에서 오른쪽이 되므로, 논리적으로 연속하는 레이아웃은 왼쪽에서 오른쪽으로 배치됩니다. RTL 레이아웃의 경우는 이 반대입니다. 이 경우, 디폴트에서는 우단 가지런히 해 탭은 오른쪽에서 왼쪽이 됩니다.
TextLayout
의 베이스가 될 방향이
왼쪽에서 오른쪽의 경우는 true
,
그렇지 않은 경우는 false
public boolean isVertical()
TextLayout
가 수직의 경우에 true
를 돌려줍니다.
TextLayout
가 수직의 경우는 true
,
그렇지 않은 경우는 false
public int getCharacterCount()
TextLayout
가 나타내는 문자수를 돌려줍니다.
TextLayout
의 문자수public float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds)
hit
에 대응하는 caret에 대한 정보를 돌려줍니다. 배열의 최초의 요소는, caret와 baseline의 교점입니다. baseline에 따른 거리로 나타내집니다. 배열의 2 번째의 요소는, caret의 역기울기 (런/라이즈)입니다. 그 점에서의 baseline를 기준으로 해 측정됩니다.
이 메소드는, 정보 (을) 위해서만 사용됩니다. caret를 표시하려면 ,getCaretShapes
를 사용해 주세요.
hit
- 이 TextLayout
의 문자의 히트bounds
- caret 정보가 구축되는 경계.
경계는 baseline를 기준으로 한 좌표로 나타내진다
getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy)
,
Font.getItalicAngle()
public float[] getCaretInfo(TextHitInfo hit)
hit
에 대응하는 caret에 대한 정보를 돌려줍니다. 이 메소드는,getCaretInfo
의 간이 overload이며, 이 TextLayout
의 자연 경계를 사용합니다.
hit
- 이 TextLayout
의 문자의 히트
public TextHitInfo getNextRightHit(TextHitInfo hit)
null
를 돌려줍니다. 히트 문자의 인덱스가 경계내에 없는 경우는,IllegalArgumentException
가 throw 됩니다.
hit
- 이 레이아웃의 문자의 히트
null
public TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy)
null
가 돌려주어집니다. 히트는, 지정된 정책에 의한, 지정된 오프셋(offset) 위치의 강한 caret의 우측에 있습니다. 반환되는 히트는, 지정된 정책에 의한, 2 개의 히트의 강한 (분)편입니다.
offset
- 이 TextLayout
의 삽입 오프셋(offset).
0 보다 작은 값이나 TextLayout
객체의
문자 카운트보다 큰 값은 불가policy
- 강한 caret를 선택하기 위해서 사용되는 정책
null
public TextHitInfo getNextRightHit(int offset)
null
가 돌려주어집니다. 히트는, 디폴트의 정책에 의한, 지정된 오프셋(offset) 위치의 강한 caret의 오른쪽에 있습니다. 반환되는 히트는, 디폴트의 정책에 의한, 2 개의 히트의 강한 (분)편입니다.
offset
- 이 TextLayout
의 삽입 오프셋(offset).
0 보다 작은 값이나 TextLayout
객체의
문자 카운트보다 큰 값은 불가
null
public TextHitInfo getNextLeftHit(TextHitInfo hit)
null
가 돌려주어집니다. 히트 문자의 인덱스가 경계내에 없는 경우는,IllegalArgumentException
가 throw 됩니다.
hit
- 이 TextLayout
의 문자의 히트
null
public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
null
가 돌려주어집니다. 히트는, 지정된 정책에 의한, 지정된 오프셋(offset) 위치의 강한 caret의 왼쪽에 있습니다. 반환되는 히트는, 지정된 정책에 의한, 2 개의 히트의 강한 (분)편입니다.
offset
- 이 TextLayout
의 삽입 오프셋(offset).
0 보다 작은 값이나 TextLayout
객체의
문자 카운트보다 큰 값은 불가policy
- 강한 caret를 선택하기 위해서 사용되는 정책
null
public TextHitInfo getNextLeftHit(int offset)
null
가 돌려주어집니다. 히트는, 디폴트의 정책에 의한, 지정된 오프셋(offset) 위치의 강한 caret의 왼쪽입니다. 반환되는 히트는, 디폴트의 정책에 의한, 2 개의 히트의 강한 (분)편입니다.
offset
- 이 TextLayout
의 삽입 오프셋(offset).
0 보다 작은 값이나 TextLayout
객체의
문자 카운트보다 큰 값은 불가
null
public TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit
- 지정된 히트
public Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
Shape
를 돌려줍니다.
hit
- caret를 생성하는 히트bounds
- caret의 생성으로 사용한다
TextLayout
의 경계. 경계는 baseline를 기준으로 한 좌표로
나타내진다
Shape
반환된다
형상은 표준의 좌표로 나타내진다public Shape getCaretShape(TextHitInfo hit)
TextLayout
의 자연 경계내의 지정된 히트에 있는 caret를 나타내는 Shape
를 돌려줍니다.
hit
- caret를 생성하는 히트
Shape
반환된다
형상은 표준의 좌표로 나타내진다public byte getCharacterLevel(int index)
index
에 있는 문자의 레벨을 돌려줍니다. 인덱스 -1 및 characterCount
에는, 이 TextLayout
의 기저 레벨을 할당할 수 있습니다.
index
- 레벨을 취득하는 문자의 인덱스
public Shape [] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
offset
- 이 TextLayout
의 오프셋(offset)bounds
- caret를 확장하는 경계. 이
경계는 baseline를 기준으로 한 좌표로 나타내지는policy
- 지정한 CaretPolicy
null
. 반환되는 형상은
표준의 좌표로 나타내진다public Shape [] getCaretShapes(int offset, Rectangle2D bounds)
getCaretShapes
의 간이 overload이며, 디폴트의 caret 정책를 사용합니다.
offset
- 이 TextLayout
의 오프셋(offset)bounds
- caret를 확장하는 경계. 이것은
baseline를 기준으로 한 좌표로 나타내진다
DEFAULT_CARET_POLICY
에서의 정의에 의한,
강한 caret와 약한 caret에 대응하는 2 살의 패스. 이것들은
표준의 좌표로 나타내진다public Shape [] getCaretShapes(int offset)
getCaretShapes
의 간이 overload이며, 디폴트의 caret 정책 및 이 TextLayout
객체의 자연 경계를 사용합니다.
offset
- 이 TextLayout
의 오프셋(offset)
DEFAULT_CARET_POLICY
에서의 정의에 의한,
강한 caret와 약한 caret에 대응하는 2 살의 패스. 이것들은
표준의 좌표로 나타내진다public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
firstEndpoint
- 시각적인 범위의 한편의 단 점secondEndpoint
- 시각적인 범위의 이제(벌써) 한편의 단 점.
firstEndpoint
보다 작아도 가능
getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)
bounds
까지 확장해 돌려줍니다.
선택 범위에, 좌단 (상단)의 위치가 포함되는 경우, 그 선택 범위는 bounds
의 왼쪽 (위)까지 확장됩니다. 그 선택 범위에 우단 (하단)의 위치가 포함되는 경우, 선택 범위는 경계의 오른쪽 (아래)까지 확장됩니다. 선택 범위의 높이 (수직선상의 폭)는, 항상 bounds
까지 확장됩니다.
선택 범위는 항상 연속하고 있습니다만, 혼합 방향 텍스트의 행의 경우, 논리적으로 선택된 텍스트는 불연속이 되는 일이 있습니다. 선택된 텍스트의 논리적인 범위는,getLogicalRangesForVisualSelection
를 사용해 취득할 수 있습니다. 예를 들어, 「ABCdef」라고 하는 텍스트를 예에 생각해 보겠습니다. 대문자는 오른쪽에서 왼쪽의 텍스트를 나타내, 오른쪽에서 왼쪽의 행으로 draw 되어 시각적인 선택 범위는 0L ( 「A」의 리딩 엣지)에서 3T ( 「d」의 트레이 링 엣지)입니다. 이 텍스트는 다음과 같이 표시됩니다. 밑줄 첨부 볼드의 영역은 선택 범위를 나타내고 있습니다.
defCBA논리적인 선택 범위는, 0 ~ 3, 4 ~ 6 (ABC, ef)입니다. 왜냐하면, 시각적으로 연속한 텍스트는 논리적이게는 불연속이기 때문입니다. 또, 레이아웃의 우단의 위치 ( 「A」의 우측)가 선택되고 있으므로, 선택 범위는 경계의 오른쪽까지 확장됩니다.
firstEndpoint
- 시각적인 선택 범위의 한편의 단 점secondEndpoint
- 시각적인 선택 범위의 이제(벌써) 한편의 단 점bounds
- 선택 범위가 확장되는 경계의 구형.
이것은 baseline를 기준으로 한 좌표로 나타내진다
Shape
이것은
표준의 좌표로 나타내지는getLogicalRangesForVisualSelection(TextHitInfo, TextHitInfo)
,
getLogicalHighlightShape(int, int, Rectangle2D)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)
Shape
를, 경계까지 확장해 돌려줍니다. 이 메소드는,getVisualHighlightShape
의 간이 overload이며, 이 TextLayout
의 자연 경계를 사용합니다.
firstEndpoint
- 시각적인 선택 범위의 한편의 단 점secondEndpoint
- 시각적인 선택 범위의 이제(벌써) 한편의 단 점
Shape
이것은
표준의 좌표로 나타내진다public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)
Shape
를, 지정된 bounds
까지 확장해 돌려줍니다.
선택 범위에 최초의 논리 문자가 포함되어 있는 경우, 그 선택 범위는 이 TextLayout
의 선두의 앞의 bounds
의 부분까지 확장됩니다. 선택 범위에 마지막 논리 문자가 포함되어 있는 경우, 그 선택 범위는 이 TextLayout
의 마지막 나머지의 bounds
의 부분까지 확장됩니다. 선택 범위의 높이 (수직선상의 폭)는, 항상 bounds
까지 확장됩니다.
혼합 방향 텍스트의 행의 경우, 선택 범위가 불연속이 되는 일이 있습니다. 선두와 리밋트의 사이의 논리적인 범위에 위치하는 문자만이 선택되어 있는 것처럼 보입니다. 예를 들어, 「ABCdef」라고 하는 텍스트를 예에 생각해 보겠습니다. 대문자는 오른쪽에서 왼쪽의 텍스트를 나타내, 오른쪽에서 왼쪽의 행으로 draw 되어 논리적인 선택 범위는 0 ~ 4 (ABCd)입니다. 텍스트는 다음과 같이 표시됩니다. 선택 범위는 볼드로 표시되어 확장 부분은 밑줄로 표시됩니다.
defCBA선택 범위는 불연속입니다. 그 이유는, 선택된 문자가 시각적으로 불연속이기 때문입니다. 또, 선택 범위에 최초의 논리 문자 (A)가 포함되기 (위해)때문에, 선택 범위는 레이아웃의 선두보다 전의
bounds
의 부분까지 확장됩니다. 이 경우 ( 오른쪽에서 왼쪽의 행)는,bounds
의 오른쪽의 부분입니다.
firstEndpoint
- 선택하는 문자의 범위의 단 점secondEndpoint
- 선택하는 문자의 범위의 이제(벌써) 한편의 단 점.
firstEndpoint
보다 작아도 가능. 이 범위에는,
min(firstEndpoint, secondEndpoint)의 문자는 포함되지만,
max(firstEndpoint, secondEndpoint)의 문자는 제외되는bounds
- 선택 범위가 확장되는 경계의 구형.
이것은 baseline를 기준으로 한 좌표로 나타내진다
getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
public Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint)
Shape
를, 이 TextLayout
의 자연 경계까지 확장해 돌려줍니다. 이 메소드는,getLogicalHighlightShape
의 간이 overload이며, 이 TextLayout
의 자연 경계를 사용합니다.
firstEndpoint
- 선택하는 문자의 범위의 단 점secondEndpoint
- 선택하는 문자의 범위의 이제(벌써) 한편의 단 점.
firstEndpoint
보다 작아도 가능.. 이 범위에는,
min(firstEndpoint, secondEndpoint)의 문자는 포함되지만,
max(firstEndpoint, secondEndpoint)의 문자는 제외된다
Shape
이것은
표준의 좌표로 나타내진다public Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint)
firstEndpoint
- 문자의 범위의 한편의 단 점secondEndpoint
- 문자의 범위의 이제(벌써) 한편의 단 점. 이것은
firstEndpoint
보다 작아도 가능
Shape
. 이것은
표준의 좌표로 나타내진다public TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds)
TextHitInfo
를 돌려줍니다. TextLayout 의 경계의 외측의 좌표는, 행의 문자의 위치에 관계없이, 최초의 논리 문자의 리딩 엣지, 또는 마지막 논리 문자의 트레이 링 엣지의 어느 쪽인지 적절한 (분)편의 히트에 대응합니다. baseline에 따른 방향만이, 이 평가에 사용됩니다.
x
- 이 TextLayout
의
원점으로부터의 x 오프셋(offset). 이것은 표준의 좌표로 나타내지는y
- 이 TextLayout
의
원점으로부터의 y 오프셋(offset). 이것은 표준의 좌표로 나타내지는bounds
- TextLayout
의 경계. 이것은
baseline를 기준으로 한 좌표로 나타내진다
public TextHitInfo hitTestChar(float x, float y)
TextHitInfo
를 돌려줍니다. 이 메소드는,hitTestChar
의 간이 overload이며, 이 TextLayout
의 자연스러운 경계를 사용합니다.
x
- 이 TextLayout
의
원점으로부터의 x 오프셋(offset). 이것은 표준의 좌표로 나타내지는y
- 이 TextLayout
의
원점으로부터의 y 오프셋(offset). 이것은 표준의 좌표로 나타내진다
public int hashCode()
TextLayout
의 해시 코드를 돌려줍니다.
Object
내의 hashCode
TextLayout
의 해시 코드Object.equals(java.lang.Object)
,
Hashtable
public boolean equals(Object obj)
Object
가 TextLayout
객체로, 지정된 Object
가 이 TextLayout
와 동일한 경우에 true
를 돌려줍니다.
Object
내의 equals
obj
- 동일한지 어떤지가 판정되는 Object
Object
가
이 TextLayout
와 동일한 경우는 true
,
그렇지 않은 경우는 false
Object.hashCode()
,
Hashtable
public boolean equals(TextLayout rhs)
true
를 돌려줍니다. 2 개의 레이아웃은, 그것들이 같은 순서로 같은 Glyph베크톨을 포함하고 있는 경우에 동일해집니다.
rhs
- 이 TextLayout
와 비교한다
TextLayout
TextLayout
가
이 TextLayout
와 동일한 경우는 true
public String toString()
TextLayout
의 디버그 정보를 돌려줍니다.
Object
내의 toString
TextLayout
의 textLine
를 나타낸다
String
public void draw(Graphics2D g2, float x, float y)
Graphics2D
문맥의 지정된 위치에 이 TextLayout
를 draw 합니다. 레이아웃의 원점은 x, y 입니다. draw는, 이 정도치의 getBounds()
내의 임의의 점에 접합니다. g2
는 변경되지 않습니다. 텍스트는 baseline의 패스에 따라 draw 됩니다.
g2
- 레이아웃의 draw처의 Graphics2D
문맥x
- 이 TextLayout
의 원점의 X 좌표y
- 이 TextLayout
의 원점의 Y 좌표getBounds()
public Shape getOutline(AffineTransform tx)
TextLayout
의 윤곽을 나타내는 Shape
를 돌려줍니다.
tx
- 이 TextLayout
의 윤곽에 적용한다
임의 지정 AffineTransform
TextLayout
의 윤곽이다
Shape
. 이것은 표준의 좌표로 나타내진다public LayoutPath getLayoutPath()
public void hitToPoint(TextHitInfo hit, Point2D point)
hit
- 체크 대상의 히트. 이것은 TextLayout 상의
유효한 히트가 아니면 안되는point
- 반환되는 포인트. 포인트는
표준의 좌표로 나타내진다
IllegalArgumentException
- 히트가 TextLayout 에 대해서 유효하지 않다
경우
NullPointerException
- hit 또는 point 가 null 의 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요 : 상자 | 필드 | 생성자 | 메소드 | 상세 : 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.