package com.js.photosdk.operate;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
public class TextObject extends ImageObject
{
private int textSize = 90;
private int color = Color.BLACK;
private String typeface;
private String text;
private boolean bold = false;
private boolean italic = false;
private Context context;
Paint paint = new Paint();
/**
* 构造方法
*
* @param context
* 上下文
* @param text
* 输入的文字
* @param x
* 位置x坐标
* @param y
* 位置y坐标
* @param rotateBm
* 旋转按钮的图片
* @param deleteBm
* 删除按钮的图片
*/
public TextObject(Context context, String text, int x, int y,
Bitmap rotateBm, Bitmap deleteBm)
{
super(text);
this.context = context;
this.text = text;
mPoint.x = x;
mPoint.y = y;
this.rotateBm = rotateBm;
this.deleteBm = deleteBm;
regenerateBitmap();
}
public TextObject()
{
}
/**
* 绘画出字体
*/
public void regenerateBitmap()
{
paint.setAntiAlias(true);
paint.setTextSize(textSize);
paint.setTypeface(getTypefaceObj());
paint.setColor(color);
paint.setStyle(Paint.Style.FILL);
paint.setDither(true);
paint.setFlags(Paint.SUBPIXEL_TEXT_FLAG);
String lines[] = text.split("\n");
int textWidth = 0;
for (String str : lines)
{
int temp = (int) paint.measureText(str);
if (temp > textWidth)
textWidth = temp;
}
if (textWidth < 1)
textWidth = 1;
if (srcBm != null)
srcBm.recycle();
srcBm = Bitmap.createBitmap(textWidth, textSize * (lines.length) + 8,
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(srcBm);
canvas.drawARGB(0, 0, 0, 0);
for (int i = 1; i <= lines.length; i++)
{
canvas.drawText(lines[i - 1], 0, i * textSize, paint);
}
setCenter();
}
/**
* 设置字体样式
*
* @return Typeface 默认系统字体,设置属性后变换字体 目前支持本地两种字体 by3500.ttf 、 bygf3500.ttf
*/
public Typeface getTypefaceObj()
{
Typeface tmptf = Typeface.DEFAULT;
if (typeface != null)
{
if (OperateConstants.FACE_BY.equals(typeface)
|| OperateConstants.FACE_BYGF.equals(typeface))
{
tmptf = Typeface.createFromAsset(context.getAssets(), "fonts/"
+ typeface + ".ttf");
}
}
if (bold && !italic)
tmptf = Typeface.create(tmptf, Typeface.BOLD);
if (italic && !bold)
tmptf = Typeface.create(tmptf, Typeface.ITALIC);
if (italic && bold)
tmptf = Typeface.create(tmptf, Typeface.BOLD_ITALIC);
return tmptf;
}
/**
* 设置属性值后,提交方法
*/
public void commit()
{
regenerateBitmap();
}
/**
* 公共的getter和setter方法
*/
public int getTextSize()
{
return textSize;
}
public void setTextSize(int textSize)
{
this.textSize = textSize;
}
public int getColor()
{
return color;
}
public void setColor(int color)
{
this.color = color;
}
public String getTypeface()
{
return typeface;
}
public void setTypeface(String typeface)
{
this.typeface = typeface;
}
public boolean isBold()
{
return bold;
}
public void setBold(boolean bold)
{
this.bold = bold;
}
public boolean isItalic()
{
return italic;
}
public void setItalic(boolean italic)
{
this.italic = italic;
}
public int getX()
{
return mPoint.x;
}
public void setX(int x)
{
this.mPoint.x = x;
}
public int getY()
{
return mPoint.y;
}
public void setY(int y)
{
this.mPoint.y = y;
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text = text;
}
}