1f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.text; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InvalidObjectException; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Serializable; 22b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilsonimport java.lang.reflect.Field; 23b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilsonimport java.lang.reflect.Modifier; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Map; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Set; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Extends the 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@link CharacterIterator} interface, adding support for iterating over 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes and not only characters. An 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code AttributedCharacterIterator} also allows the user to find runs and 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * their limits. Runs are defined as ranges of characters that all have the same 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes with the same values. 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic interface AttributedCharacterIterator extends CharacterIterator { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Defines keys for text attributes. 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public static class Attribute implements Serializable { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final long serialVersionUID = -9142742483513960612L; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This attribute marks segments from an input method. Most input 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * methods create these segments for words. 479b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The value objects are of the type {@code Annotation} which contain 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code null}. 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 5103c0a8e681c776fdba0389ab8593282139afc6d6Elliott Hughes public static final Attribute INPUT_METHOD_SEGMENT = new Attribute("input_method_segment"); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The attribute describing the language of a character. The value 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * objects are of type {@code Locale} or a subtype of it. 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 5703c0a8e681c776fdba0389ab8593282139afc6d6Elliott Hughes public static final Attribute LANGUAGE = new Attribute("language"); 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * For languages that have different reading directions of text (like 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Japanese), this attribute allows to define which reading should be 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * used. The value objects are of type {@code Annotation} which 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contain a {@code String}. 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 6503c0a8e681c776fdba0389ab8593282139afc6d6Elliott Hughes public static final Attribute READING = new Attribute("reading"); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private String name; 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The constructor for an {@code Attribute} with the name passed. 719b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param name 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the name of the new {@code Attribute}. 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Attribute(String name) { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.name = name; 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Compares this attribute with the specified object. Checks if both 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * objects are the same instance. It is defined final so all subclasses 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * have the same behavior for this method. 839b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param object 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the object to compare against. 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return {@code true} if the object passed is equal to this instance; 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code false} otherwise. 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final boolean equals(Object object) { 919b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson return this == object; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the name of this attribute. 969b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the name of this attribute. 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected String getName() { 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return name; 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Calculates the hash code for objects of type {@code Attribute}. It 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is defined final so all sub types calculate their hash code 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * identically. 1079b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the hash code for this instance of {@code Attribute}. 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public final int hashCode() { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return super.hashCode(); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Resolves a deserialized instance to the correct constant attribute. 1179b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the {@code Attribute} this instance represents. 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws InvalidObjectException 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if this instance is not of type {@code Attribute.class} 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * or if it is not a known {@code Attribute}. 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected Object readResolve() throws InvalidObjectException { 124b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson /* 125b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson * This class is used like Java enums, where all instances are 126b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson * defined as fields of their own class. To preserve identity 127b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson * equality, resolve to the canonical instance when deserialized. 128b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson */ 129b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson try { 130b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson for (Field field : getClass().getFields()) { 131b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson if (field.getType() == getClass() && Modifier.isStatic(field.getModifiers())) { 132b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson Attribute candidate = (Attribute) field.get(null); 133b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson if (name.equals(candidate.name)) { 134b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson return candidate; 135b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson } 136b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson } 137b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson } 138b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson } catch (IllegalAccessException e) { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 140b10024c7cf6d4cfbcc6016aa9c0e102f59c15d36Jesse Wilson throw new InvalidObjectException("Failed to resolve " + this); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the name of the class followed by a "(", the name of the 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attribute, and a ")". 1469b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the string representing this instance. 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @Override 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public String toString() { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return getClass().getName() + '(' + getName() + ')'; 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a set of attributes present in the {@code 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * AttributedCharacterIterator}. An empty set is returned if no attributes 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * were defined. 1599b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a set of attribute keys; may be empty. 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Set<Attribute> getAllAttributeKeys(); 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the value stored in the attribute for the current character. If 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the attribute was not defined then {@code null} is returned. 1679b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param attribute the attribute for which the value should be returned. 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the value of the requested attribute for the current character or 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code null} if it was not defined. 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Object getAttribute(Attribute attribute); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns a map of all attributes of the current character. If no 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes were defined for the current character then an empty map is 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * returned. 1789b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a map of all attributes for the current character or an empty 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * map. 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Map<Attribute, Object> getAttributes(); 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the last character in the run having the same 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes as the current character. 1879b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunLimit(); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the last character in the run that has the same 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attribute value for the given attribute as the current character. 1959b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param attribute 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the attribute which the run is based on. 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunLimit(Attribute attribute); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the last character in the run that has the same 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attribute values for the attributes in the set as the current character. 2059b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param attributes 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the set of attributes which the run is based on. 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunLimit(Set<? extends Attribute> attributes); 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the first character in the run that has the same 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attributes as the current character. 2159b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunStart(); 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the first character in the run that has the same 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attribute value for the given attribute as the current character. 2239b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param attribute 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the attribute which the run is based on. 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunStart(Attribute attribute); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns the index of the first character in the run that has the same 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * attribute values for the attributes in the set as the current character. 2339b354e75f2418e54638e02d153216660b67d01b8Jesse Wilson * 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param attributes 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the set of attributes which the run is based on. 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return the index of the last character of the current run. 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public int getRunStart(Set<? extends Attribute> attributes); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 240