home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / TextLayoutStrategy$AttributedSegment.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.3 KB  |  161 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Font;
  4. import java.awt.font.TextAttribute;
  5. import java.text.AttributedCharacterIterator;
  6. import java.util.HashSet;
  7. import java.util.Hashtable;
  8. import java.util.Map;
  9. import java.util.Set;
  10. import javax.swing.text.Position.Bias;
  11.  
  12. class TextLayoutStrategy$AttributedSegment extends Segment implements AttributedCharacterIterator {
  13.    // $FF: renamed from: v javax.swing.text.View
  14.    View field_0;
  15.    static Set keys = new HashSet();
  16.  
  17.    View getView() {
  18.       return this.field_0;
  19.    }
  20.  
  21.    void setView(View var1) {
  22.       this.field_0 = var1;
  23.       Document var2 = var1.getDocument();
  24.       int var3 = var1.getStartOffset();
  25.       int var4 = var1.getEndOffset();
  26.  
  27.       try {
  28.          var2.getText(var3, var4 - var3, this);
  29.       } catch (BadLocationException var6) {
  30.          throw new IllegalArgumentException("Invalid view");
  31.       }
  32.  
  33.       ((Segment)this).first();
  34.    }
  35.  
  36.    int getFontBoundary(int var1, int var2) {
  37.       View var3 = this.field_0.getView(var1);
  38.       Font var4 = this.getFont(var1);
  39.  
  40.       for(int var6 = var1 + var2; var6 >= 0 && var6 < this.field_0.getViewCount(); var6 += var2) {
  41.          Font var5 = this.getFont(var6);
  42.          if (var5 != var4) {
  43.             break;
  44.          }
  45.  
  46.          var3 = this.field_0.getView(var6);
  47.       }
  48.  
  49.       return var2 < 0 ? var3.getStartOffset() : var3.getEndOffset();
  50.    }
  51.  
  52.    Font getFont(int var1) {
  53.       View var2 = this.field_0.getView(var1);
  54.       return var2 instanceof GlyphView ? ((GlyphView)var2).getFont() : null;
  55.    }
  56.  
  57.    int toModelPosition(int var1) {
  58.       return this.field_0.getStartOffset() + (var1 - ((Segment)this).getBeginIndex());
  59.    }
  60.  
  61.    int toIteratorIndex(int var1) {
  62.       return var1 - this.field_0.getStartOffset() + ((Segment)this).getBeginIndex();
  63.    }
  64.  
  65.    public int getRunStart() {
  66.       int var1 = this.toModelPosition(((Segment)this).getIndex());
  67.       int var2 = this.field_0.getViewIndex(var1, Bias.Forward);
  68.       View var3 = this.field_0.getView(var2);
  69.       return this.toIteratorIndex(var3.getStartOffset());
  70.    }
  71.  
  72.    public int getRunStart(AttributedCharacterIterator.Attribute var1) {
  73.       if (var1 instanceof TextAttribute) {
  74.          int var2 = this.toModelPosition(((Segment)this).getIndex());
  75.          int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
  76.          if (var1 == TextAttribute.FONT) {
  77.             return this.toIteratorIndex(this.getFontBoundary(var3, -1));
  78.          }
  79.       }
  80.  
  81.       return ((Segment)this).getBeginIndex();
  82.    }
  83.  
  84.    public int getRunStart(Set var1) {
  85.       int var2 = ((Segment)this).getBeginIndex();
  86.       Object[] var3 = var1.toArray();
  87.  
  88.       for(int var4 = 0; var4 < var3.length; ++var4) {
  89.          TextAttribute var5 = (TextAttribute)var3[var4];
  90.          var2 = Math.max(this.getRunStart((AttributedCharacterIterator.Attribute)var5), var2);
  91.       }
  92.  
  93.       return Math.min(((Segment)this).getIndex(), var2);
  94.    }
  95.  
  96.    public int getRunLimit() {
  97.       int var1 = this.toModelPosition(((Segment)this).getIndex());
  98.       int var2 = this.field_0.getViewIndex(var1, Bias.Forward);
  99.       View var3 = this.field_0.getView(var2);
  100.       return this.toIteratorIndex(var3.getEndOffset());
  101.    }
  102.  
  103.    public int getRunLimit(AttributedCharacterIterator.Attribute var1) {
  104.       if (var1 instanceof TextAttribute) {
  105.          int var2 = this.toModelPosition(((Segment)this).getIndex());
  106.          int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
  107.          if (var1 == TextAttribute.FONT) {
  108.             return this.toIteratorIndex(this.getFontBoundary(var3, 1));
  109.          }
  110.       }
  111.  
  112.       return ((Segment)this).getEndIndex();
  113.    }
  114.  
  115.    public int getRunLimit(Set var1) {
  116.       int var2 = ((Segment)this).getEndIndex();
  117.       Object[] var3 = var1.toArray();
  118.  
  119.       for(int var4 = 0; var4 < var3.length; ++var4) {
  120.          TextAttribute var5 = (TextAttribute)var3[var4];
  121.          var2 = Math.min(this.getRunLimit((AttributedCharacterIterator.Attribute)var5), var2);
  122.       }
  123.  
  124.       return Math.max(((Segment)this).getIndex(), var2);
  125.    }
  126.  
  127.    public Map getAttributes() {
  128.       Object[] var1 = keys.toArray();
  129.       Hashtable var2 = new Hashtable();
  130.  
  131.       for(int var3 = 0; var3 < var1.length; ++var3) {
  132.          TextAttribute var4 = (TextAttribute)var1[var3];
  133.          Object var5 = this.getAttribute(var4);
  134.          if (var5 != null) {
  135.             var2.put(var4, var5);
  136.          }
  137.       }
  138.  
  139.       return var2;
  140.    }
  141.  
  142.    public Object getAttribute(AttributedCharacterIterator.Attribute var1) {
  143.       int var2 = this.toModelPosition(((Segment)this).getIndex());
  144.       int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
  145.       if (var1 == TextAttribute.FONT) {
  146.          return this.getFont(var3);
  147.       } else {
  148.          return var1 == TextAttribute.RUN_DIRECTION ? this.field_0.getDocument().getProperty(TextAttribute.RUN_DIRECTION) : null;
  149.       }
  150.    }
  151.  
  152.    public Set getAllAttributeKeys() {
  153.       return keys;
  154.    }
  155.  
  156.    static {
  157.       keys.add(TextAttribute.FONT);
  158.       keys.add(TextAttribute.RUN_DIRECTION);
  159.    }
  160. }
  161.