home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Font;
- import java.awt.font.TextAttribute;
- import java.text.AttributedCharacterIterator;
- import java.util.HashSet;
- import java.util.Hashtable;
- import java.util.Map;
- import java.util.Set;
- import javax.swing.text.Position.Bias;
-
- class TextLayoutStrategy$AttributedSegment extends Segment implements AttributedCharacterIterator {
- // $FF: renamed from: v javax.swing.text.View
- View field_0;
- static Set keys = new HashSet();
-
- View getView() {
- return this.field_0;
- }
-
- void setView(View var1) {
- this.field_0 = var1;
- Document var2 = var1.getDocument();
- int var3 = var1.getStartOffset();
- int var4 = var1.getEndOffset();
-
- try {
- var2.getText(var3, var4 - var3, this);
- } catch (BadLocationException var6) {
- throw new IllegalArgumentException("Invalid view");
- }
-
- ((Segment)this).first();
- }
-
- int getFontBoundary(int var1, int var2) {
- View var3 = this.field_0.getView(var1);
- Font var4 = this.getFont(var1);
-
- for(int var6 = var1 + var2; var6 >= 0 && var6 < this.field_0.getViewCount(); var6 += var2) {
- Font var5 = this.getFont(var6);
- if (var5 != var4) {
- break;
- }
-
- var3 = this.field_0.getView(var6);
- }
-
- return var2 < 0 ? var3.getStartOffset() : var3.getEndOffset();
- }
-
- Font getFont(int var1) {
- View var2 = this.field_0.getView(var1);
- return var2 instanceof GlyphView ? ((GlyphView)var2).getFont() : null;
- }
-
- int toModelPosition(int var1) {
- return this.field_0.getStartOffset() + (var1 - ((Segment)this).getBeginIndex());
- }
-
- int toIteratorIndex(int var1) {
- return var1 - this.field_0.getStartOffset() + ((Segment)this).getBeginIndex();
- }
-
- public int getRunStart() {
- int var1 = this.toModelPosition(((Segment)this).getIndex());
- int var2 = this.field_0.getViewIndex(var1, Bias.Forward);
- View var3 = this.field_0.getView(var2);
- return this.toIteratorIndex(var3.getStartOffset());
- }
-
- public int getRunStart(AttributedCharacterIterator.Attribute var1) {
- if (var1 instanceof TextAttribute) {
- int var2 = this.toModelPosition(((Segment)this).getIndex());
- int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
- if (var1 == TextAttribute.FONT) {
- return this.toIteratorIndex(this.getFontBoundary(var3, -1));
- }
- }
-
- return ((Segment)this).getBeginIndex();
- }
-
- public int getRunStart(Set var1) {
- int var2 = ((Segment)this).getBeginIndex();
- Object[] var3 = var1.toArray();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- TextAttribute var5 = (TextAttribute)var3[var4];
- var2 = Math.max(this.getRunStart((AttributedCharacterIterator.Attribute)var5), var2);
- }
-
- return Math.min(((Segment)this).getIndex(), var2);
- }
-
- public int getRunLimit() {
- int var1 = this.toModelPosition(((Segment)this).getIndex());
- int var2 = this.field_0.getViewIndex(var1, Bias.Forward);
- View var3 = this.field_0.getView(var2);
- return this.toIteratorIndex(var3.getEndOffset());
- }
-
- public int getRunLimit(AttributedCharacterIterator.Attribute var1) {
- if (var1 instanceof TextAttribute) {
- int var2 = this.toModelPosition(((Segment)this).getIndex());
- int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
- if (var1 == TextAttribute.FONT) {
- return this.toIteratorIndex(this.getFontBoundary(var3, 1));
- }
- }
-
- return ((Segment)this).getEndIndex();
- }
-
- public int getRunLimit(Set var1) {
- int var2 = ((Segment)this).getEndIndex();
- Object[] var3 = var1.toArray();
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- TextAttribute var5 = (TextAttribute)var3[var4];
- var2 = Math.min(this.getRunLimit((AttributedCharacterIterator.Attribute)var5), var2);
- }
-
- return Math.max(((Segment)this).getIndex(), var2);
- }
-
- public Map getAttributes() {
- Object[] var1 = keys.toArray();
- Hashtable var2 = new Hashtable();
-
- for(int var3 = 0; var3 < var1.length; ++var3) {
- TextAttribute var4 = (TextAttribute)var1[var3];
- Object var5 = this.getAttribute(var4);
- if (var5 != null) {
- var2.put(var4, var5);
- }
- }
-
- return var2;
- }
-
- public Object getAttribute(AttributedCharacterIterator.Attribute var1) {
- int var2 = this.toModelPosition(((Segment)this).getIndex());
- int var3 = this.field_0.getViewIndex(var2, Bias.Forward);
- if (var1 == TextAttribute.FONT) {
- return this.getFont(var3);
- } else {
- return var1 == TextAttribute.RUN_DIRECTION ? this.field_0.getDocument().getProperty(TextAttribute.RUN_DIRECTION) : null;
- }
- }
-
- public Set getAllAttributeKeys() {
- return keys;
- }
-
- static {
- keys.add(TextAttribute.FONT);
- keys.add(TextAttribute.RUN_DIRECTION);
- }
- }
-