diff --git a/org.fox.ttrss/build.gradle b/org.fox.ttrss/build.gradle index d2adfb51..2354165f 100755 --- a/org.fox.ttrss/build.gradle +++ b/org.fox.ttrss/build.gradle @@ -44,5 +44,6 @@ dependencies { compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar' compile 'com.nhaarman.listviewanimations:lib-manipulation:3.1.0@aar' compile 'com.nineoldandroids:library:2.4.0' + compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' compile files('libs/YouTubeAndroidPlayerApi.jar') } diff --git a/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/TextDrawable.java b/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/TextDrawable.java deleted file mode 100644 index db42f8b7..00000000 --- a/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/TextDrawable.java +++ /dev/null @@ -1,316 +0,0 @@ -package com.amulyakhare.textdrawable; - -import android.graphics.*; -import android.graphics.drawable.ShapeDrawable; -import android.graphics.drawable.shapes.OvalShape; -import android.graphics.drawable.shapes.RectShape; -import android.graphics.drawable.shapes.RoundRectShape; - -/** - * @author amulya - * @datetime 14 Oct 2014, 3:53 PM - */ -public class TextDrawable extends ShapeDrawable { - - private final Paint textPaint; - private final Paint borderPaint; - private static final float SHADE_FACTOR = 0.9f; - private final String text; - private final int color; - private final RectShape shape; - private final int height; - private final int width; - private final int fontSize; - private final float radius; - private final int borderThickness; - - private TextDrawable(Builder builder) { - super(builder.shape); - - // shape properties - shape = builder.shape; - height = builder.height; - width = builder.width; - radius = builder.radius; - - // text and color - text = builder.toUpperCase ? builder.text.toUpperCase() : builder.text; - color = builder.color; - - // text paint settings - fontSize = builder.fontSize; - textPaint = new Paint(); - textPaint.setColor(builder.textColor); - textPaint.setAntiAlias(true); - textPaint.setFakeBoldText(builder.isBold); - textPaint.setStyle(Paint.Style.FILL); - textPaint.setTypeface(builder.font); - textPaint.setTextAlign(Paint.Align.CENTER); - textPaint.setStrokeWidth(builder.borderThickness); - - // border paint settings - borderThickness = builder.borderThickness; - borderPaint = new Paint(); - borderPaint.setColor(getDarkerShade(color)); - borderPaint.setStyle(Paint.Style.STROKE); - borderPaint.setStrokeWidth(borderThickness); - - // drawable paint color - Paint paint = getPaint(); - paint.setColor(color); - - } - - private int getDarkerShade(int color) { - return Color.rgb((int)(SHADE_FACTOR * Color.red(color)), - (int)(SHADE_FACTOR * Color.green(color)), - (int)(SHADE_FACTOR * Color.blue(color))); - } - - @Override - public void draw(Canvas canvas) { - super.draw(canvas); - Rect r = getBounds(); - - - // draw border - if (borderThickness > 0) { - drawBorder(canvas); - } - - int count = canvas.save(); - canvas.translate(r.left, r.top); - - // draw text - int width = this.width < 0 ? r.width() : this.width; - int height = this.height < 0 ? r.height() : this.height; - int fontSize = this.fontSize < 0 ? (Math.min(width, height) / 2) : this.fontSize; - textPaint.setTextSize(fontSize); - canvas.drawText(text, width / 2, height / 2 - ((textPaint.descent() + textPaint.ascent()) / 2), textPaint); - - canvas.restoreToCount(count); - - } - - private void drawBorder(Canvas canvas) { - RectF rect = new RectF(getBounds()); - rect.inset(borderThickness/2, borderThickness/2); - - if (shape instanceof OvalShape) { - canvas.drawOval(rect, borderPaint); - } - else if (shape instanceof RoundRectShape) { - canvas.drawRoundRect(rect, radius, radius, borderPaint); - } - else { - canvas.drawRect(rect, borderPaint); - } - } - - @Override - public void setAlpha(int alpha) { - textPaint.setAlpha(alpha); - } - - @Override - public void setColorFilter(ColorFilter cf) { - textPaint.setColorFilter(cf); - } - - @Override - public int getOpacity() { - return PixelFormat.TRANSLUCENT; - } - - @Override - public int getIntrinsicWidth() { - return width; - } - - @Override - public int getIntrinsicHeight() { - return height; - } - - public static IShapeBuilder builder() { - return new Builder(); - } - - public static class Builder implements IConfigBuilder, IShapeBuilder, IBuilder { - - private String text; - - private int color; - - private int borderThickness; - - private int width; - - private int height; - - private Typeface font; - - private RectShape shape; - - public int textColor; - - private int fontSize; - - private boolean isBold; - - private boolean toUpperCase; - - public float radius; - - private Builder() { - text = ""; - color = Color.GRAY; - textColor = Color.WHITE; - borderThickness = 0; - width = -1; - height = -1; - shape = new RectShape(); - font = Typeface.create("sans-serif-light", Typeface.NORMAL); - fontSize = -1; - isBold = false; - toUpperCase = false; - } - - public IConfigBuilder width(int width) { - this.width = width; - return this; - } - - public IConfigBuilder height(int height) { - this.height = height; - return this; - } - - public IConfigBuilder textColor(int color) { - this.textColor = color; - return this; - } - - public IConfigBuilder withBorder(int thickness) { - this.borderThickness = thickness; - return this; - } - - public IConfigBuilder useFont(Typeface font) { - this.font = font; - return this; - } - - public IConfigBuilder fontSize(int size) { - this.fontSize = size; - return this; - } - - public IConfigBuilder bold() { - this.isBold = true; - return this; - } - - public IConfigBuilder toUpperCase() { - this.toUpperCase = true; - return this; - } - - @Override - public IConfigBuilder beginConfig() { - return this; - } - - @Override - public IShapeBuilder endConfig() { - return this; - } - - @Override - public IBuilder rect() { - this.shape = new RectShape(); - return this; - } - - @Override - public IBuilder round() { - this.shape = new OvalShape(); - return this; - } - - @Override - public IBuilder roundRect(int radius) { - this.radius = radius; - float[] radii = {radius, radius, radius, radius, radius, radius, radius, radius}; - this.shape = new RoundRectShape(radii, null, null); - return this; - } - - @Override - public TextDrawable buildRect(String text, int color) { - rect(); - return build(text, color); - } - - @Override - public TextDrawable buildRoundRect(String text, int color, int radius) { - roundRect(radius); - return build(text, color); - } - - @Override - public TextDrawable buildRound(String text, int color) { - round(); - return build(text, color); - } - - @Override - public TextDrawable build(String text, int color) { - this.color = color; - this.text = text; - return new TextDrawable(this); - } - } - - public interface IConfigBuilder { - public IConfigBuilder width(int width); - - public IConfigBuilder height(int height); - - public IConfigBuilder textColor(int color); - - public IConfigBuilder withBorder(int thickness); - - public IConfigBuilder useFont(Typeface font); - - public IConfigBuilder fontSize(int size); - - public IConfigBuilder bold(); - - public IConfigBuilder toUpperCase(); - - public IShapeBuilder endConfig(); - } - - public static interface IBuilder { - - public TextDrawable build(String text, int color); - } - - public static interface IShapeBuilder { - - public IConfigBuilder beginConfig(); - - public IBuilder rect(); - - public IBuilder round(); - - public IBuilder roundRect(int radius); - - public TextDrawable buildRect(String text, int color); - - public TextDrawable buildRoundRect(String text, int color, int radius); - - public TextDrawable buildRound(String text, int color); - } -} \ No newline at end of file diff --git a/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/util/ColorGenerator.java b/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/util/ColorGenerator.java deleted file mode 100644 index 99e7467f..00000000 --- a/org.fox.ttrss/src/main/java/com/amulyakhare/textdrawable/util/ColorGenerator.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.amulyakhare.textdrawable.util; - -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -/** - * @author amulya - * @datetime 14 Oct 2014, 5:20 PM - */ -public class ColorGenerator { - - public static ColorGenerator DEFAULT; - - static { - DEFAULT = create(Arrays.asList( - 0xfff16364, - 0xfff58559, - 0xfff9a43e, - 0xffe4c62e, - 0xff67bf74, - 0xff59a2be, - 0xff2093cd, - 0xffad62a7, - 0xff805781 - )); - } - - private final List mColors; - private final Random mRandom; - - public static ColorGenerator create(List colorList) { - return new ColorGenerator(colorList); - } - - private ColorGenerator(List colorList) { - mColors = colorList; - mRandom = new Random(System.currentTimeMillis()); - } - - public int getRandomColor() { - return mColors.get(mRandom.nextInt(mColors.size())); - } - - public int getColor(Object key) { - return mColors.get(Math.abs(key.hashCode()) % mColors.size()); - } -}