package com.spacemangames.biomatcher.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.Paint;
import android.text.TextPaint;
import android.util.AttributeSet;
import com.spacemangames.biomatcher.R;
public class GraphAttributeHandler {
private int daysInView;
private int backgroundColor;
private int graphBackgroundColor;
private int graphTodayColor;
private int emotionalColor;
private int physicalColor;
private int intellectualColor;
private int baseLineColor;
private TextPaint monthTextPaint;
private TextPaint dayNumbersTextPaint;
private Paint dayLinesPaint;
private Paint graphBackgroundPaint;
private Paint graphTodayPaint;
private Paint physicalPaint;
private Paint emotionalPaint;
private Paint intellectualPaint;
private Paint baseLinePaint;
private static final float DAYLINE_STROKE_WIDTH = 1f;
private static final float BASELINE_STROKE_WIDTH = 1f;
public GraphAttributeHandler() {
this.backgroundColor = Color.TRANSPARENT;
this.graphBackgroundColor = Color.TRANSPARENT;
this.graphTodayColor = Color.LTGRAY;
this.emotionalColor = Color.GREEN;
this.physicalColor = Color.RED;
this.intellectualColor = Color.BLUE;
this.baseLineColor = Color.WHITE;
}
public GraphAttributeHandler(Context context, AttributeSet attrs, int defStyle) {
this();
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BioMatchResultGraph, defStyle, 0);
float linethickness = a.getDimension(R.styleable.BioMatchResultGraph_linethickness, 1f);
float daytextsize = a.getDimension(R.styleable.BioMatchResultGraph_daytextsize, 10f);
float monthtextsize = a.getDimension(R.styleable.BioMatchResultGraph_monthtextsize, 10f);
backgroundColor = a.getColor(R.styleable.BioMatchResultGraph_backgroundColor, backgroundColor);
graphBackgroundColor = a.getColor(R.styleable.BioMatchResultGraph_graphBackgroundColor, graphBackgroundColor);
graphTodayColor = a.getColor(R.styleable.BioMatchResultGraph_todayColor, graphTodayColor);
emotionalColor = a.getColor(R.styleable.BioMatchResultGraph_emotionalColor, emotionalColor);
physicalColor = a.getColor(R.styleable.BioMatchResultGraph_physicalColor, physicalColor);
intellectualColor = a.getColor(R.styleable.BioMatchResultGraph_intellectualColor, intellectualColor);
baseLineColor = a.getColor(R.styleable.BioMatchResultGraph_baselineColor, baseLineColor);
int textColor = a.getColor(R.styleable.BioMatchResultGraph_textcolor, Color.WHITE);
daysInView = a.getInt(R.styleable.BioMatchResultGraph_daysinview, 14);
a.recycle();
monthTextPaint = createTextPaint(monthtextsize, textColor);
dayNumbersTextPaint = createTextPaint(daytextsize, textColor);
dayLinesPaint = new Paint();
dayLinesPaint.setColor(Color.LTGRAY);
dayLinesPaint.setAntiAlias(true);
dayLinesPaint.setStrokeWidth(DAYLINE_STROKE_WIDTH);
graphBackgroundPaint = new Paint();
graphBackgroundPaint.setColor(graphBackgroundColor);
graphTodayPaint = new Paint();
graphTodayPaint.setColor(graphTodayColor);
physicalPaint = setupMatchLinePaint(physicalColor, linethickness);
emotionalPaint = setupMatchLinePaint(emotionalColor, linethickness);
intellectualPaint = setupMatchLinePaint(intellectualColor, linethickness);
setupBaseLinePaint();
}
private void setupBaseLinePaint() {
baseLinePaint = new Paint();
baseLinePaint.setColor(baseLineColor);
baseLinePaint.setAntiAlias(true);
baseLinePaint.setStrokeWidth(BASELINE_STROKE_WIDTH);
}
private TextPaint createTextPaint(float monthtextsize, int color) {
TextPaint textPaint = new TextPaint();
textPaint.setColor(color);
textPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
textPaint.setTextSize(monthtextsize);
textPaint.setTextAlign(Paint.Align.CENTER);
return textPaint;
}
private Paint setupMatchLinePaint(int color, float linethickness) {
Paint paint = new Paint();
paint.setStrokeWidth(linethickness);
paint.setAntiAlias(true);
paint.setColor(color);
return paint;
}
public int getBackgroundColor() {
return backgroundColor;
}
public TextPaint getMonthTextPaint() {
return monthTextPaint;
}
public TextPaint getDayNumbersTextPaint() {
return dayNumbersTextPaint;
}
public Paint getDayLinesPaint() {
return dayLinesPaint;
}
public Paint getGraphBackgroundPaint() {
return graphBackgroundPaint;
}
public Paint getGraphTodayPaint() {
return graphTodayPaint;
}
public Paint getPhysicalPaint() {
return physicalPaint;
}
public Paint getEmotionalPaint() {
return emotionalPaint;
}
public Paint getIntellectualPaint() {
return intellectualPaint;
}
public int getDaysInView() {
return daysInView;
}
public Paint getBaseLinePaint() {
return baseLinePaint;
}
}