package org.awesomeapp.messenger.ui.widgets;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.text.TextUtils;
import org.ironrabbit.type.CustomTypefaceManager;
public class LetterAvatar extends ColorDrawable {
Paint paint = new Paint();
Rect bounds = new Rect();
String pLetters;
private float ONE_DP = 0.0f;
private Resources pResources;
private int pPadding;
int pSize = 0;
float pMesuredTextWidth;
int pBoundsTextwidth;
int pBoundsTextHeight;
int backgroundColor;
Context context;
RectF rectBounds = new RectF();
public LetterAvatar (Context context, String nickname, int paddingInDp) {
super(Color.TRANSPARENT);
this.context = context;
if (!TextUtils.isEmpty(nickname))
this.pLetters = nickname.substring(0,1);
else
this.pLetters = "?";
this.pResources = context.getResources();
ONE_DP = 1 * pResources.getDisplayMetrics().density;
this.pPadding = Math.round(paddingInDp * ONE_DP);
this.rectBounds = new RectF();
this.backgroundColor = ColorGenerator.MATERIAL.getColor(nickname);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
paint.setAntiAlias(true);
paint.setColor(backgroundColor);
canvas.drawOval(rectBounds, paint);
if (CustomTypefaceManager.hasCustomTypeface())
paint.setTypeface(CustomTypefaceManager.getCurrentTypeface(context));
else {
paint.setTypeface(Typeface.SANS_SERIF);
}
pLetters = pLetters.toUpperCase();
do {
paint.setTextSize(++pSize);
paint.getTextBounds(pLetters, 0, pLetters.length(), bounds);
} while ((bounds.height() < (canvas.getHeight() - pPadding)) && (paint.measureText(pLetters) < (canvas.getWidth() - pPadding)));
paint.setTextSize(pSize);
pMesuredTextWidth = paint.measureText(pLetters);
pBoundsTextHeight = bounds.height();
float xOffset = ((canvas.getWidth() - pMesuredTextWidth) / 2f);
float yOffset = (pBoundsTextHeight + (canvas.getHeight() - pBoundsTextHeight) / 2f);
paint.setColor(0xffffffff);
canvas.drawText(pLetters, xOffset, yOffset, paint);
}
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
rectBounds.set(bounds);
}
}