package cn.edu.chd.domain;
import android.graphics.BlurMaskFilter;
import android.graphics.Color;
import android.graphics.EmbossMaskFilter;
import android.graphics.MaskFilter;
import android.graphics.Paint;
import android.util.Log;
import cn.edu.chd.values.ApplicationValues;
/**
*���ɻ��ʵ���ʽ
*/
public class PaintStyle
{
private static final String TAG = "PaintStyle";
private Paint mPenPaint = null;
private int type = ApplicationValues.PaintStyle.MODE_PLAIN_PEN;
public PaintStyle(int type)
{
this.type = type;
mPenPaint = new Paint();
}
/**
* ������ǰ�Ļ�����ʽ
*/
public PaintStyle newInstance()
{
PaintStyle instance = new PaintStyle(type);
return instance;
}
public void setPaintStyle(int type)
{
this.type = type;
}
public Paint getPaintStyle()
{
switch (type)
{
case ApplicationValues.PaintStyle.MODE_PLAIN_PEN:
Log.i(TAG,"MODE_PLAIN_PEN");
plainPen();//��ͨ
break;
case ApplicationValues.PaintStyle.MODE_EMBOSS_PEN:
Log.i(TAG,"MODE_EMBOSS_PEN");
embossPen();
break;
case ApplicationValues.PaintStyle.MODE_BLUR_PEN:
Log.i(TAG,"MODE_BLUR_PEN");
blurPen();
break;
case ApplicationValues.PaintStyle.MODE_SHADER_PEN:
Log.i(TAG,"MODE_SHADER_PEN");
shaderPen();
break;
default:
throw new RuntimeException("YITU:no such pen style found...");
}
return mPenPaint;
}
private void embossPen()
{
MaskFilter mEmboss = new EmbossMaskFilter(new float[]{ 1, 1, 1 }, 0.4f, 6, 3.5f);
mPenPaint.setDither(true);
mPenPaint.setAntiAlias(true);
mPenPaint.setStyle(Paint.Style.STROKE);
mPenPaint.setStrokeJoin(Paint.Join.ROUND);
mPenPaint.setStrokeCap(Paint.Cap.ROUND);
mPenPaint.setMaskFilter(mEmboss);
}
private void blurPen()
{
MaskFilter mBlur = new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL);
mPenPaint.setDither(true);
mPenPaint.setAntiAlias(true);
mPenPaint.setStyle(Paint.Style.STROKE);
mPenPaint.setStrokeJoin(Paint.Join.ROUND);
mPenPaint.setStrokeCap(Paint.Cap.ROUND);
mPenPaint.setMaskFilter(mBlur);
}
private void plainPen()
{
mPenPaint.setDither(true);
mPenPaint.setAntiAlias(true);
mPenPaint.setStyle(Paint.Style.STROKE);
mPenPaint.setStrokeJoin(Paint.Join.ROUND);
mPenPaint.setStrokeCap(Paint.Cap.ROUND);
}
private void shaderPen()
{
mPenPaint.setDither(true);
mPenPaint.setAntiAlias(true);
mPenPaint.setStyle(Paint.Style.STROKE);
mPenPaint.setStrokeJoin(Paint.Join.ROUND);
mPenPaint.setStrokeCap(Paint.Cap.ROUND);
mPenPaint.setShadowLayer(15,2,2,Color.WHITE);
}
}