@@ -0,0 +1,2280 @@
+/*%0A * Copyright 2016 Philip Cohn-Cort%0A *%0A * Licensed under the Apache License, Version 2.0 (the %22License%22);%0A * you may not use this file except in compliance with the License.%0A * You may obtain a copy of the License at%0A *%0A *      http://www.apache.org/licenses/LICENSE-2.0%0A *%0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage com.fuzz.indicator.text;%0A%0Aimport android.support.annotation.NonNull;%0A%0A/**%0A * These are designed to be translated (in a 2-dimensional plane) above%0A * their associated %7B@link android.text.Spannable Spannables%7D.%0A *%0A * @author Philip Cohn-Cort (Fuzz)%0A */%0Apublic interface MigratorySpan %7B%0A%0A    /**%0A     * Consider a Spannable sequence has a lower bound at 0%25 of its length%0A     * and upper bound at 100%25 of that length. The MigratoryRange returned%0A     * by this method represents some portion of indices within that sequence.%0A     * %3Cp%3E%0A     *     Sample caller code may be as follows:%0A     *     %3Cpre%3E%0A     *         MigratorySpan ms;%0A     *         //...%0A     *         Range%3CFloat%3E bounds = ms.getCoverage();%0A     *         String percentLower = String.format(%22%250.2f%22, bounds.getLower()/100);%0A     *         String percentUpper = String.format(%22%250.2f%22, bounds.getUpper()/100);%0A     *     %3C/pre%3E%0A     * %3C/p%3E%0A     *%0A     * @return a range which can be used to figure out what%0A     * percentages of the Spannable is covered.%0A     */%0A    @NonNull%0A    MigratoryRange%3CFloat%3E getCoverage();%0A%0A    /**%0A     * Whatever is returned here should be a valid argument into%0A     * %7B@link android.text.Spannable#setSpan(Object, int, int, int)%7D's%0A     * %7B@code flags%7D argument. Feel free to return the parameter directly%0A     * if they don't need to change.%0A     *%0A     * @return a combination of valid span-laying-out flags%0A     * @param previousFlags    flags used for the previous layout - will%0A     *                         be 0 if not currently attached to a%0A     *                         %7B@link android.text.Spannable Spannable%7D%0A     */%0A    int preferredFlags(int previousFlags);%0A%7D%0A

Create dedicated interface for Migratory spans