home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Font;
- import java.awt.FontMetrics;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import java.awt.Toolkit;
- import javax.swing.text.Position.Bias;
-
- class GlyphPainter1 extends GlyphView.GlyphPainter {
- FontMetrics metrics;
-
- public float getSpan(GlyphView var1, int var2, int var3, TabExpander var4, float var5) {
- this.sync(var1);
- Segment var6 = var1.getText(var2, var3);
- int var7 = Utilities.getTabbedTextWidth(var6, this.metrics, (int)var5, var4, var2);
- return (float)var7;
- }
-
- public float getHeight(GlyphView var1) {
- this.sync(var1);
- return (float)this.metrics.getHeight();
- }
-
- public float getAscent(GlyphView var1) {
- this.sync(var1);
- return (float)this.metrics.getAscent();
- }
-
- public float getDescent(GlyphView var1) {
- this.sync(var1);
- return (float)this.metrics.getDescent();
- }
-
- public void paint(GlyphView var1, Graphics var2, Shape var3, int var4, int var5) {
- this.sync(var1);
- TabExpander var7 = var1.getTabExpander();
- Rectangle var8 = var3 instanceof Rectangle ? (Rectangle)var3 : var3.getBounds();
- int var9 = var8.x;
- int var10 = var1.getStartOffset();
- if (var10 != var4) {
- Segment var6 = var1.getText(var10, var4);
- int var11 = Utilities.getTabbedTextWidth(var6, this.metrics, var9, var7, var10);
- var9 += var11;
- }
-
- int var13 = var8.y + this.metrics.getHeight() - this.metrics.getDescent();
- Segment var12 = var1.getText(var4, var5);
- var2.setFont(this.metrics.getFont());
- Utilities.drawTabbedText(var12, var9, var13, var2, var7, var4);
- }
-
- public Shape modelToView(GlyphView var1, int var2, Position.Bias var3, Shape var4) throws BadLocationException {
- this.sync(var1);
- Rectangle var5 = var4 instanceof Rectangle ? (Rectangle)var4 : var4.getBounds();
- int var6 = var1.getStartOffset();
- int var7 = var1.getEndOffset();
- TabExpander var8 = var1.getTabExpander();
- if (var2 == var7) {
- return new Rectangle(var5.x + var5.width, var5.y, 0, this.metrics.getHeight());
- } else if (var2 >= var6 && var2 <= var7) {
- Segment var9 = var1.getText(var6, var2);
- int var10 = Utilities.getTabbedTextWidth(var9, this.metrics, var5.x, var8, var6);
- return new Rectangle(var5.x + var10, var5.y, 0, this.metrics.getHeight());
- } else {
- throw new BadLocationException("modelToView - can't convert", var7);
- }
- }
-
- public int viewToModel(GlyphView var1, float var2, float var3, Shape var4, Position.Bias[] var5) {
- this.sync(var1);
- Rectangle var6 = var4 instanceof Rectangle ? (Rectangle)var4 : var4.getBounds();
- int var7 = var1.getStartOffset();
- int var8 = var1.getEndOffset();
- TabExpander var9 = var1.getTabExpander();
- Segment var10 = var1.getText(var7, var8);
- int var11 = Utilities.getTabbedTextOffset(var10, this.metrics, var6.x, (int)var2, var9, var7);
- int var12 = var7 + var11;
- if (var12 == var8) {
- var5[0] = Bias.Backward;
- } else {
- var5[0] = Bias.Forward;
- }
-
- return var12;
- }
-
- public int getBoundedPosition(GlyphView var1, int var2, float var3, float var4) {
- this.sync(var1);
- TabExpander var5 = var1.getTabExpander();
- Segment var6 = var1.getText(var2, var1.getEndOffset());
- int var7 = Utilities.getTabbedTextOffset(var6, this.metrics, (int)var3, (int)(var3 + var4), var5, var2, false);
- int var8 = var2 + var7;
- return var8;
- }
-
- void sync(GlyphView var1) {
- Font var2 = var1.getFont();
- if (this.metrics == null || !var2.equals(this.metrics.getFont())) {
- Container var4 = ((View)var1).getContainer();
- Toolkit var3;
- if (var4 != null) {
- var3 = ((Component)var4).getToolkit();
- } else {
- var3 = Toolkit.getDefaultToolkit();
- }
-
- this.metrics = var3.getFontMetrics(var2);
- }
-
- }
- }
-