19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.text.style; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.ColorStateList; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.TypedArray; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Typeface; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.ParcelableSpan; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextPaint; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextUtils; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets the text color, size, style, and typeface to match a TextAppearance 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * resource. 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class TextAppearanceSpan extends MetricAffectingSpan implements ParcelableSpan { 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final String mTypeface; 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mStyle; 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final int mTextSize; 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final ColorStateList mTextColor; 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final ColorStateList mTextColorLink; 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Uses the specified TextAppearance resource to determine the 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * text appearance. The <code>appearance</code> should be, for example, 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <code>android.R.style.TextAppearance_Small</code>. 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TextAppearanceSpan(Context context, int appearance) { 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this(context, appearance, -1); 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Uses the specified TextAppearance resource to determine the 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * text appearance, and the specified text color resource 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * to determine the color. The <code>appearance</code> should be, 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * for example, <code>android.R.style.TextAppearance_Small</code>, 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and the <code>colorList</code> should be, for example, 540f9ae274b4a9641d8e6933108466dc432f5a0474Gilles Debunne * <code>android.R.styleable.Theme_textColorPrimary</code>. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 560f9ae274b4a9641d8e6933108466dc432f5a0474Gilles Debunne public TextAppearanceSpan(Context context, int appearance, int colorList) { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ColorStateList textColor; 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TypedArray a = 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project context.obtainStyledAttributes(appearance, 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.styleable.TextAppearance); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project textColor = a.getColorStateList(com.android.internal.R.styleable. 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextAppearance_textColor); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColorLink = a.getColorStateList(com.android.internal.R.styleable. 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextAppearance_textColorLink); 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextSize = a.getDimensionPixelSize(com.android.internal.R.styleable. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextAppearance_textSize, -1); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStyle = a.getInt(com.android.internal.R.styleable.TextAppearance_textStyle, 0); 71d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien String family = a.getString(com.android.internal.R.styleable.TextAppearance_fontFamily); 72d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien if (family != null) { 73d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien mTypeface = family; 74d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien } else { 75d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien int tf = a.getInt(com.android.internal.R.styleable.TextAppearance_typeface, 0); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 77d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien switch (tf) { 78d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien case 1: 79d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien mTypeface = "sans"; 80d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien break; 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 82d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien case 2: 83d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien mTypeface = "serif"; 84d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien break; 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 86d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien case 3: 87d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien mTypeface = "monospace"; 88d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien break; 89d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien 90d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien default: 91d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien mTypeface = null; 92d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien break; 93d570e8987ae50ee101c3d4cfa973e1a6b6ecc8f5Raph Levien } 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a.recycle(); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (colorList >= 0) { 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a = context.obtainStyledAttributes(com.android.internal.R.style.Theme, 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project com.android.internal.R.styleable.Theme); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project textColor = a.getColorStateList(colorList); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project a.recycle(); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColor = textColor; 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Makes text be drawn with the specified typeface, size, style, 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and colors. 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TextAppearanceSpan(String family, int style, int size, 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ColorStateList color, ColorStateList linkColor) { 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTypeface = family; 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStyle = style; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextSize = size; 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColor = color; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColorLink = linkColor; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public TextAppearanceSpan(Parcel src) { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTypeface = src.readString(); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStyle = src.readInt(); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextSize = src.readInt(); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (src.readInt() != 0) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColor = ColorStateList.CREATOR.createFromParcel(src); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColor = null; 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (src.readInt() != 0) { 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColorLink = ColorStateList.CREATOR.createFromParcel(src); 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColorLink = null; 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getSpanTypeId() { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return TextUtils.TEXT_APPEARANCE_SPAN; 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(mTypeface); 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mStyle); 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(mTextSize); 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTextColor != null) { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColor.writeToParcel(dest, flags); 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTextColorLink != null) { 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mTextColorLink.writeToParcel(dest, flags); 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the typeface family specified by this span, or <code>null</code> 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if it does not specify one. 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getFamily() { 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTypeface; 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the text color specified by this span, or <code>null</code> 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if it does not specify one. 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ColorStateList getTextColor() { 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTextColor; 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the link color specified by this span, or <code>null</code> 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if it does not specify one. 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ColorStateList getLinkTextColor() { 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTextColorLink; 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the text size specified by this span, or <code>-1</code> 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if it does not specify one. 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getTextSize() { 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mTextSize; 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the text style specified by this span, or <code>0</code> 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if it does not specify one. 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getTextStyle() { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mStyle; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void updateDrawState(TextPaint ds) { 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project updateMeasureState(ds); 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTextColor != null) { 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ds.setColor(mTextColor.getColorForState(ds.drawableState, 0)); 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTextColorLink != null) { 213b8503eb8ac26c4801b565fcfc655fca02f9bb726Fabrice Di Meglio ds.linkColor = mTextColorLink.getColorForState(ds.drawableState, 0); 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void updateMeasureState(TextPaint ds) { 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTypeface != null || mStyle != 0) { 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Typeface tf = ds.getTypeface(); 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int style = 0; 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (tf != null) { 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project style = tf.getStyle(); 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project style |= mStyle; 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTypeface != null) { 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project tf = Typeface.create(mTypeface, style); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (tf == null) { 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project tf = Typeface.defaultFromStyle(style); 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project tf = Typeface.create(tf, style); 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int fake = style & ~tf.getStyle(); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((fake & Typeface.BOLD) != 0) { 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ds.setFakeBoldText(true); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if ((fake & Typeface.ITALIC) != 0) { 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ds.setTextSkewX(-0.25f); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ds.setTypeface(tf); 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (mTextSize > 0) { 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ds.setTextSize(mTextSize); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 255