That fuck shit the fascists are using
at master 61 lines 2.1 kB view raw
1package org.tm.archive.util; 2 3import android.text.Layout; 4 5import androidx.annotation.NonNull; 6 7/** 8 * Utility functions for dealing with {@link Layout}. 9 * 10 * Ported and modified from https://github.com/googlearchive/android-text/tree/master/RoundedBackground-Kotlin 11 */ 12public class LayoutUtil { 13 private static final float DEFAULT_LINE_SPACING_EXTRA = 0f; 14 15 private static final float DEFAULT_LINE_SPACING_MULTIPLIER = 1f; 16 17 public static int getLineHeight(@NonNull Layout layout, int line) { 18 return layout.getLineTop(line + 1) - layout.getLineTop(line); 19 } 20 21 public static int getLineTopWithoutPadding(@NonNull Layout layout, int line) { 22 int lineTop = layout.getLineTop(line); 23 if (line == 0) { 24 lineTop -= layout.getTopPadding(); 25 } 26 return lineTop; 27 } 28 29 public static int getLineBottomWithoutPadding(@NonNull Layout layout, int line) { 30 int lineBottom = getLineBottomWithoutSpacing(layout, line); 31 if (line == layout.getLineCount() - 1) { 32 lineBottom -= layout.getBottomPadding(); 33 } 34 return lineBottom; 35 } 36 37 public static int getLineBottomWithoutSpacing(@NonNull Layout layout, int line) { 38 int lineBottom = layout.getLineBottom(line); 39 boolean isLastLine = line == layout.getLineCount() - 1; 40 float lineSpacingExtra = layout.getSpacingAdd(); 41 float lineSpacingMultiplier = layout.getSpacingMultiplier(); 42 boolean hasLineSpacing = lineSpacingExtra != DEFAULT_LINE_SPACING_EXTRA || lineSpacingMultiplier != DEFAULT_LINE_SPACING_MULTIPLIER; 43 44 int lineBottomWithoutSpacing; 45 if (!hasLineSpacing || isLastLine) { 46 lineBottomWithoutSpacing = lineBottom; 47 } else { 48 float extra; 49 if (Float.compare(lineSpacingMultiplier, DEFAULT_LINE_SPACING_MULTIPLIER) != 0) { 50 int lineHeight = getLineHeight(layout, line); 51 extra = lineHeight - (lineHeight - lineSpacingExtra) / lineSpacingMultiplier; 52 } else { 53 extra = lineSpacingExtra; 54 } 55 56 lineBottomWithoutSpacing = (int) (lineBottom - extra); 57 } 58 59 return lineBottomWithoutSpacing; 60 } 61}