/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.util;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.client.android.ui.view.ClickableButton;
/**
*
* @author sihai
*
*/
public class LinksRenderUtils {
protected static Paint sAppInviteTopAreaBackgroundPaint;
protected static Bitmap sDeepLinkIcon;
protected static TextPaint sDeepLinkTextPaint;
protected static int sHorizontalSpacing;
protected static int sIconHorizontalSpacing;
protected static Paint sImageBorderPaint;
protected static int sImageHorizontalSpacing;
protected static float sImageMaxWidthPercentage;
protected static TextPaint sLinkTitleTextPaint;
protected static TextPaint sLinkUrlTextPaint;
private static boolean sLinksCardViewInitialized;
protected static Paint sLinksTopAreaBackgroundPaint;
protected static int sMaxImageDimension;
protected static final Paint sResizePaint = new Paint(2);
protected static Paint sTransparentOverlayPaint;
public static void createBackgroundDestRect(int i, int j, int k, int l, Rect rect)
{
rect.set(i, j, k, l);
}
public static void createBackgroundSourceRect(Bitmap bitmap, Rect rect, Rect rect1)
{
int i = bitmap.getWidth();
int j = bitmap.getHeight();
float f = (float)i / (float)j;
float f1 = (float)rect.width() / (float)rect.height();
if(f > f1)
{
int l = (i - (int)(f1 * (float)j)) / 2;
rect1.set(l, 0, i - l, j);
} else
{
int k = (j - (int)((float)i / f1)) / 2;
rect1.set(0, k, i, j - k);
}
}
public static ClickableButton createDeepLinkButton(Context context, String s, int i, int j, int k, ClickableButton.ClickableButtonListener clickablebuttonlistener)
{
ClickableButton clickablebutton;
if(!TextUtils.isEmpty(s))
{
int l = Math.max(0, k - sDeepLinkIcon.getWidth() - ClickableButton.getTotalPadding(context, true, true) - sHorizontalSpacing - sImageHorizontalSpacing);
CharSequence charsequence = TextUtils.ellipsize(s, PlusBarUtils.sNotPlusOnedTextPaint, l, android.text.TextUtils.TruncateAt.END);
clickablebutton = new ClickableButton(context, sDeepLinkIcon, charsequence, PlusBarUtils.sInteractivePostButtonTextPaint, PlusBarUtils.sButtonDrawable, PlusBarUtils.sButtonPressedDrawable, clickablebuttonlistener, i, j, charsequence, true);
} else
{
clickablebutton = null;
}
return clickablebutton;
}
public static void createImageRects(int i, int j, int k, int l, Rect rect, Rect rect1)
{
int i1 = k + sHorizontalSpacing;
int j1 = l + (i - j) / 2;
rect.set(i1, j1, i1 + j, j1 + j);
int k1 = (int)sImageBorderPaint.getStrokeWidth();
rect1.set(i1 + k1, j1 + k1, (i1 + j) - k1, (j1 + j) - k1);
}
public static void createImageSourceRect(Bitmap bitmap, Rect rect)
{
int i = bitmap.getWidth();
int j = bitmap.getHeight();
int k = Math.min(i, j);
if(i > k)
rect.set((i - k) / 2, 0, (i + k) / 2, j);
else
rect.set(0, (j - k) / 2, i, (j + k) / 2);
}
public static StaticLayout createTitle(String s, int i, int j) {
if(TextUtils.isEmpty(s))
return null;
int k = Math.min(3, i / (int)(sLinkTitleTextPaint.descent() - sLinkTitleTextPaint.ascent()));
if(k <= 0)
return null;
return TextPaintUtils.createConstrainedStaticLayout(sLinkTitleTextPaint, s, j - 2 * sHorizontalSpacing - sImageHorizontalSpacing, k);
}
public static StaticLayout createUrl(String s, int i, int j, int k) {
if(TextUtils.isEmpty(s))
return null;
int l = Math.min(1, (i - k) / (int)(sLinkTitleTextPaint.descent() - sLinkTitleTextPaint.ascent()));
if(l <= 0)
return null;
return TextPaintUtils.createConstrainedStaticLayout(sLinkUrlTextPaint, s, j - 2 * sHorizontalSpacing - sImageHorizontalSpacing - sIconHorizontalSpacing, l);
}
public static void drawBitmap(Canvas canvas, Bitmap bitmap, Rect rect, Rect rect1, Rect rect2, Rect rect3, Rect rect4)
{
canvas.drawBitmap(bitmap, rect1, rect2, sResizePaint);
canvas.drawRect(rect2, sTransparentOverlayPaint);
canvas.drawBitmap(bitmap, rect, rect3, sResizePaint);
canvas.drawRect(rect4, sImageBorderPaint);
}
public static void drawTitleDeepLinkAndUrl(Canvas canvas, int i, int j, StaticLayout staticlayout, ClickableButton clickablebutton, StaticLayout staticlayout1, Bitmap bitmap)
{
int k = i + (sHorizontalSpacing + sImageHorizontalSpacing);
if(staticlayout != null)
{
canvas.translate(k, j);
staticlayout.draw(canvas);
canvas.translate(-k, -j);
j += staticlayout.getHeight();
}
if(clickablebutton != null)
{
Rect rect = clickablebutton.getRect();
rect.offset(k - rect.left, j - rect.top);
clickablebutton.draw(canvas);
j += rect.height();
}
if(staticlayout1 != null)
{
canvas.drawBitmap(bitmap, k, j + (staticlayout1.getHeight() - bitmap.getHeight()) / 2, null);
int l = k + (bitmap.getWidth() + sIconHorizontalSpacing);
canvas.translate(l, j);
staticlayout1.draw(canvas);
canvas.translate(-l, -j);
staticlayout1.getHeight();
}
}
public static Paint getAppInviteTopAreaBackgroundPaint()
{
return sAppInviteTopAreaBackgroundPaint;
}
public static float getImageMaxWidthPercentage()
{
return sImageMaxWidthPercentage;
}
public static String getLinkTitle(Resources resources, String s, String s1, String s2, boolean flag, boolean flag1) {
if(!flag1 || TextUtils.isEmpty(s) || flag)
return s1;
if(TextUtils.isEmpty(s1)) {
if(!TextUtils.isEmpty(s2))
s = resources.getString(R.string.stream_app_invite_title, new Object[] {
s, s2
});
return s;
}
s = resources.getString(R.string.stream_app_invite_title, new Object[] {
s, s1
});
return s;
}
public static Paint getLinksTopAreaBackgroundPaint()
{
return sLinksTopAreaBackgroundPaint;
}
public static int getMaxImageDimension()
{
return sMaxImageDimension;
}
public static Paint getTransparentOverlayPaint()
{
return sTransparentOverlayPaint;
}
public static void init(Context context)
{
if(!sLinksCardViewInitialized)
{
sLinksCardViewInitialized = true;
Resources resources = context.getResources();
sDeepLinkIcon = ImageUtils.decodeResource(resources, R.drawable.ic_app_invite);
Paint paint = new Paint();
sTransparentOverlayPaint = paint;
paint.setColor(resources.getColor(R.color.card_links_background_tint));
Paint paint1 = new Paint();
sLinksTopAreaBackgroundPaint = paint1;
paint1.setColor(resources.getColor(R.color.solid_black));
Paint paint2 = new Paint();
sAppInviteTopAreaBackgroundPaint = paint2;
paint2.setColor(resources.getColor(R.color.card_app_invite_background));
Paint paint3 = new Paint();
sImageBorderPaint = paint3;
paint3.setColor(resources.getColor(R.color.card_links_image_border));
sImageBorderPaint.setStyle(android.graphics.Paint.Style.STROKE);
sImageBorderPaint.setStrokeWidth(resources.getDimension(R.dimen.card_links_image_stroke_dimension));
TextPaint textpaint = new TextPaint();
sDeepLinkTextPaint = textpaint;
textpaint.setAntiAlias(true);
sDeepLinkTextPaint.setColor(resources.getColor(R.color.card_not_plus_oned_text));
sDeepLinkTextPaint.setTextSize(resources.getDimension(R.dimen.card_plus_oned_text_size));
sDeepLinkTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
sDeepLinkTextPaint.linkColor = resources.getColor(R.color.card_link);
sDeepLinkTextPaint.setShadowLayer(resources.getDimension(R.dimen.card_plus_oned_text_shadow_radius), resources.getDimension(R.dimen.card_plus_oned_text_shadow_x), resources.getDimension(R.dimen.card_plus_oned_text_shadow_y), resources.getColor(R.color.card_not_plus_oned_shadow_text));
TextPaintUtils.registerTextPaint(sDeepLinkTextPaint, R.dimen.card_plus_oned_text_size);
TextPaint textpaint1 = new TextPaint();
sLinkTitleTextPaint = textpaint1;
textpaint1.setAntiAlias(true);
sLinkTitleTextPaint.setColor(resources.getColor(R.color.card_links_title_text));
sLinkTitleTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
sLinkTitleTextPaint.setTextSize(resources.getDimension(R.dimen.card_links_title_text_size));
sLinkTitleTextPaint.setShadowLayer(resources.getDimension(R.dimen.card_links_title_text_shadow_radius), resources.getDimension(R.dimen.card_links_title_text_shadow_x), resources.getDimension(R.dimen.card_links_title_text_shadow_y), resources.getColor(R.color.card_links_title_text_shadow));
TextPaintUtils.registerTextPaint(sLinkTitleTextPaint, R.dimen.card_links_title_text_size);
TextPaint textpaint2 = new TextPaint();
sLinkUrlTextPaint = textpaint2;
textpaint2.setAntiAlias(true);
sLinkUrlTextPaint.setColor(resources.getColor(R.color.card_links_url_text));
sLinkUrlTextPaint.setTypeface(Typeface.DEFAULT_BOLD);
sLinkUrlTextPaint.setTextSize(resources.getDimension(R.dimen.card_links_url_text_size));
sLinkUrlTextPaint.setShadowLayer(resources.getDimension(R.dimen.card_links_url_text_shadow_radius), resources.getDimension(R.dimen.card_links_url_text_shadow_x), resources.getDimension(R.dimen.card_links_url_text_shadow_y), resources.getColor(R.color.card_links_url_text_shadow));
TextPaintUtils.registerTextPaint(sLinkUrlTextPaint, R.dimen.card_links_url_text_size);
sImageMaxWidthPercentage = resources.getDimension(R.dimen.card_links_image_max_width_percent);
sMaxImageDimension = (int)resources.getDimension(R.dimen.card_links_image_dimension);
sHorizontalSpacing = (int)resources.getDimension(R.dimen.card_links_x_padding);
sImageHorizontalSpacing = (int)resources.getDimension(R.dimen.card_links_image_x_padding);
sIconHorizontalSpacing = (int)resources.getDimension(R.dimen.card_links_icon_x_padding);
}
}
}