/*
* Copyright 2012 GitHub Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.github.mobile.util;
import android.content.Context;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.widget.TextView;
import java.util.Arrays;
/**
* Helpers for dealing with custom typefaces and measuring text to display
*/
public class TypefaceUtils {
/**
* Private repository icon
*/
public static final String ICON_PRIVATE = "\uf26a";
/**
* Public repository icon
*/
public static final String ICON_PUBLIC = "\uf201";
/**
* Fork icon
*/
public static final String ICON_FORK = "\uf202";
/**
* Create icon
*/
public static final String ICON_CREATE = "\uf203";
/**
* Delete icon
*/
public static final String ICON_DELETE = "\uf204";
/**
* Push icon
*/
public static final String ICON_PUSH = "\uf205";
/**
* Wiki icon
*/
public static final String ICON_WIKI = "\uf207";
/**
* Upload icon
*/
public static final String ICON_UPLOAD = "\uf20C";
/**
* Gist icon
*/
public static final String ICON_GIST = "\uf20E";
/**
* Add member icon
*/
public static final String ICON_ADD_MEMBER = "\uf21A";
/**
* Public mirror repository icon
*/
public static final String ICON_MIRROR_PUBLIC = "\uf224";
/**
* Public mirror repository icon
*/
public static final String ICON_MIRROR_PRIVATE = "\uf225";
/**
* Follow icon
*/
public static final String ICON_FOLLOW = "\uf21C";
/**
* Star icon
*/
public static final String ICON_STAR = "\uf02A";
/**
* Pull request icon
*/
public static final String ICON_PULL_REQUEST = "\uf222";
/**
* Issue open icon
*/
public static final String ICON_ISSUE_OPEN = "\uf226";
/**
* Issue reopen icon
*/
public static final String ICON_ISSUE_REOPEN = "\uf227";
/**
* Issue close icon
*/
public static final String ICON_ISSUE_CLOSE = "\uf228";
/**
* Issue comment icon
*/
public static final String ICON_ISSUE_COMMENT = "\uf229";
/**
* Comment icon
*/
public static final String ICON_COMMENT = "\uf22b";
/**
* News icon
*/
public static final String ICON_NEWS = "\uf234";
/**
* Watch icon
*/
public static final String ICON_WATCH = "\uf04e";
/**
* Team icon
*/
public static final String ICON_TEAM = "\uf019";
/**
* Code icon
*/
public static final String ICON_CODE = "\uf010";
/**
* Commit icon
*/
public static final String ICON_COMMIT = "\uf01f";
/**
* Person icon
*/
public static final String ICON_PERSON = "\uf218";
/**
* Add icon
*/
public static final String ICON_ADD = "\uf05d";
/**
* Broadcast icon
*/
public static final String ICON_BROADCAST = "\uf030";
/**
* Edit icon
*/
public static final String ICON_EDIT = "\uf058";
private static Typeface OCTICONS;
/**
* Find the maximum number of digits in the given numbers
*
* @param numbers
* @return max digits
*/
public static int getMaxDigits(int... numbers) {
int max = 1;
for (int number : numbers)
max = Math.max(max, (int) Math.log10(number) + 1);
return max;
}
/**
* Get width of number of digits
*
* @param view
* @param numberOfDigits
* @return number width
*/
public static int getWidth(TextView view, int numberOfDigits) {
Paint paint = new Paint();
paint.setTypeface(view.getTypeface());
paint.setTextSize(view.getTextSize());
char[] text = new char[numberOfDigits];
Arrays.fill(text, '0');
return Math.round(paint.measureText(text, 0, text.length));
}
/**
* Get octicons typeface
*
* @param context
* @return octicons typeface
*/
public static Typeface getOcticons(final Context context) {
if (OCTICONS == null)
OCTICONS = getTypeface(context, "octicons-regular-webfont.ttf");
return OCTICONS;
}
/**
* Set octicons typeface on given text view(s)
*
* @param textViews
*/
public static void setOcticons(final TextView... textViews) {
if (textViews == null || textViews.length == 0)
return;
Typeface typeface = getOcticons(textViews[0].getContext());
for (TextView textView : textViews)
textView.setTypeface(typeface);
}
/**
* Get typeface with name
*
* @param context
* @param name
* @return typeface
*/
public static Typeface getTypeface(final Context context, final String name) {
return Typeface.createFromAsset(context.getAssets(), name);
}
}