home *** CD-ROM | disk | FTP | other *** search
Wrap
package javax.swing.text; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.font.TextHitInfo; import java.awt.font.TextLayout; import java.awt.geom.Rectangle2D; import java.awt.geom.RectangularShape; import javax.swing.text.Position.Bias; class GlyphPainter2 extends GlyphView.GlyphPainter { TextLayout layout; public GlyphPainter2(TextLayout var1) { this.layout = var1; } public GlyphView.GlyphPainter getPainter(GlyphView var1, int var2, int var3) { return null; } public float getSpan(GlyphView var1, int var2, int var3, TabExpander var4, float var5) { if (var2 == var1.getStartOffset() && var3 == var1.getEndOffset()) { return this.layout.getAdvance(); } else { int var6 = var1.getStartOffset(); int var7 = var2 - var6; int var8 = var3 - var6; TextHitInfo var9 = TextHitInfo.afterOffset(var7); TextHitInfo var10 = TextHitInfo.beforeOffset(var8); float[] var11 = this.layout.getCaretInfo(var9); float var12 = var11[0]; var11 = this.layout.getCaretInfo(var10); float var13 = var11[0]; return var13 > var12 ? var13 - var12 : var12 - var13; } } public float getHeight(GlyphView var1) { return this.layout.getAscent() + this.layout.getDescent() + this.layout.getLeading(); } public float getAscent(GlyphView var1) { return this.layout.getAscent(); } public float getDescent(GlyphView var1) { return this.layout.getDescent(); } public void paint(GlyphView var1, Graphics var2, Shape var3, int var4, int var5) { if (var2 instanceof Graphics2D) { Rectangle2D var6 = var3.getBounds2D(); Graphics2D var7 = (Graphics2D)var2; float var8 = (float)((RectangularShape)var6).getY() + this.layout.getAscent() + this.layout.getLeading(); float var9 = (float)((RectangularShape)var6).getX(); if (var4 <= var1.getStartOffset() && var5 >= var1.getEndOffset()) { this.layout.draw(var7, var9, var8); } else { try { Shape var10 = ((View)var1).modelToView(var4, Bias.Forward, var5, Bias.Backward, var3); Shape var11 = var2.getClip(); var2.setClip(var10); this.layout.draw(var7, var9, var8); var2.setClip(var11); } catch (BadLocationException var12) { } } } } public Shape modelToView(GlyphView var1, int var2, Position.Bias var3, Shape var4) throws BadLocationException { int var5 = var2 - var1.getStartOffset(); Rectangle2D var6 = var4.getBounds2D(); TextHitInfo var7 = var3 == Bias.Forward ? TextHitInfo.afterOffset(var5) : TextHitInfo.beforeOffset(var5); float[] var8 = this.layout.getCaretInfo(var7); var6.setRect(((RectangularShape)var6).getX() + (double)var8[0], ((RectangularShape)var6).getY(), (double)1.0F, ((RectangularShape)var6).getHeight()); return var6; } public int viewToModel(GlyphView var1, float var2, float var3, Shape var4, Position.Bias[] var5) { Rectangle2D var6 = var4 instanceof Rectangle2D ? (Rectangle2D)var4 : var4.getBounds2D(); TextHitInfo var7 = this.layout.hitTestChar(var2 - (float)((RectangularShape)var6).getX(), 0.0F); int var8 = var7.getInsertionIndex(); var5[0] = var7.isLeadingEdge() ? Bias.Forward : Bias.Backward; return var8 + var1.getStartOffset(); } public int getBoundedPosition(GlyphView var1, int var2, float var3, float var4) { if (var4 < 0.0F) { throw new IllegalArgumentException("Length must be >= 0."); } else { TextHitInfo var5 = this.layout.hitTestChar(var4, 0.0F); if (var5.getCharIndex() == -1 && !this.layout.isLeftToRight()) { return var1.getEndOffset(); } else { int var6 = var5.isLeadingEdge() ? var5.getInsertionIndex() : var5.getInsertionIndex() - 1; return var6 + var1.getStartOffset(); } } } public int getNextVisualPositionFrom(GlyphView var1, int var2, Position.Bias var3, Shape var4, int var5, Position.Bias[] var6) throws BadLocationException { int var7 = var1.getStartOffset(); int var8 = var1.getEndOffset(); switch (var5) { case 1: case 5: return var2; case 2: case 4: case 6: default: throw new IllegalArgumentException("Bad direction: " + var5); case 3: AbstractDocument var19 = (AbstractDocument)((View)var1).getDocument(); boolean var20 = var19.isLeftToRight(var7, var8); if (var7 == var19.getLength()) { if (var2 == -1) { var6[0] = Bias.Forward; return var7; } return -1; } else if (var2 == -1) { if (var20) { var6[0] = Bias.Forward; return var7; } else { Segment var18 = var1.getText(var8 - 1, var8); if (var18.array[var18.offset] == '\n') { var6[0] = Bias.Forward; return var8 - 1; } var6[0] = Bias.Backward; return var8; } } else { TextHitInfo var21; if (var3 == Bias.Forward) { var21 = TextHitInfo.afterOffset(var2 - var7); } else { var21 = TextHitInfo.beforeOffset(var2 - var7); } TextHitInfo var22 = this.layout.getNextRightHit(var21); if (var22 == null) { return -1; } else { if (var20 != this.layout.isLeftToRight()) { var22 = this.layout.getVisualOtherHit(var22); } var2 = var22.getInsertionIndex() + var7; if (var2 == var8) { Segment var17 = var1.getText(var8 - 1, var8); if (var17.array[var17.offset] == '\n') { return -1; } var6[0] = Bias.Backward; } else { var6[0] = Bias.Forward; } return var2; } } case 7: AbstractDocument var10 = (AbstractDocument)((View)var1).getDocument(); boolean var11 = var10.isLeftToRight(var7, var8); if (var7 == var10.getLength()) { if (var2 == -1) { var6[0] = Bias.Forward; return var7; } else { return -1; } } else if (var2 == -1) { if (var11) { Segment var16 = var1.getText(var8 - 1, var8); if (var16.array[var16.offset] == '\n') { var6[0] = Bias.Forward; return var8 - 1; } else { var6[0] = Bias.Backward; return var8; } } else { var6[0] = Bias.Forward; return var7; } } else { TextHitInfo var12; if (var3 == Bias.Forward) { var12 = TextHitInfo.afterOffset(var2 - var7); } else { var12 = TextHitInfo.beforeOffset(var2 - var7); } TextHitInfo var13 = this.layout.getNextLeftHit(var12); if (var13 == null) { return -1; } else { if (var11 != this.layout.isLeftToRight()) { var13 = this.layout.getVisualOtherHit(var13); } var2 = var13.getInsertionIndex() + var7; if (var2 == var8) { Segment var9 = var1.getText(var8 - 1, var8); if (var9.array[var9.offset] == '\n') { return -1; } var6[0] = Bias.Backward; } else { var6[0] = Bias.Forward; } return var2; } } } } }