// Path: src/main/java/cc/movabletype/SeprateMovabletype.java
// public class SeprateMovabletype
// {
// 	/** 目前字體大細，所在 */
// 	private Vector<PlaneGeometry> 字;
// 	/** 為著保留字體闊，若維護矩陣顛倒愛去顧平移 */
// 	private Vector<PlaneGeometry> 原本字體;
// 	/** 加粗莫合併的外殼 */
// 	private Vector<PlaneGeometry> 字外殼;
// 	/** 這馬的範圍，是為著閃避「一字問題」 */
// 	private Rectangle2D.Double 這馬;
// 	/** 目標範圍，上尾印的時陣愛看印偌大 */
// 	private Rectangle2D.Double 目標;
// 
// 	public SeprateMovabletype()
// 	{
// 		字 = new Vector<PlaneGeometry>();
// 		原本字體 = new Vector<PlaneGeometry>();
// 		字外殼 = null;
// 		這馬 = new Rectangle.Double();
// 		目標 = new Rectangle.Double();
// 	}
// 
// 	public SeprateMovabletype(PlaneGeometry 幾何)
// 	{
// 		this();
// 		字.add(幾何);
// 		原本字體.add(幾何);
// 		這馬字範圍();
// 	}
// 
// Path: src/main/java/cc/stroke/ChineseCharacterTypeBolder.java
// public interface ChineseCharacterTypeBolder
// {
// 	/**
// 	 * 取得筆劃加寬物件
// 	 * 
// 	 * @param width
// 	 *            加寬的寬度
// 	 * @return 筆劃加寬物件
// 	 */
// 	public Stroke getStroke(double width);
// }
// 
// Path: src/main/java/cc/movabletype/PlaneGeometry.java
// public class PlaneGeometry extends Area // implements 活字單元
// {
// 	/**
// 	 * 活字預計位置及大小
// 	 */
// 	private Rectangle2D.Double 目標;
// 
// 	/**
// 	 * 建立一個空的活字。
// 	 */
// 	public PlaneGeometry()
// 	{
// 		目標 = new Rectangle2D.Double();
// 	}
// 
// 	/**
// 	 * 建立一個空的活字，並用<code>Rectangle2D</code>指定活字預計位置及大小
// 	 * 
// 	 * @param 目標
// 	 *            預計位置及大小
// 	 */
// 	@Deprecated
// 	public PlaneGeometry(Rectangle2D 目標)
// 	{
// 		super();
// 		設目標範圍(目標);
// 	}


import java.awt.Stroke;
import java.util.Vector;
import cc.movabletype.SeprateMovabletype;
import cc.stroke.ChineseCharacterTypeBolder;
import cc.movabletype.PlaneGeometry;
package cc.stroketool;



public class MkeSeparateMovableType_Bolder
{
	/** 物件活字加寬工具 */
	private final ChineseCharacterTypeBolder chineseCharacterTypeBolder;
	/** 合併、調整的精細度 */
	private final double precision;

	public MkeSeparateMovableType_Bolder(ChineseCharacterTypeBolder chineseCharacterTypeBolder,
			double precision)
	{
		this.chineseCharacterTypeBolder = chineseCharacterTypeBolder;
		this.precision = precision;
	}

	/**
	 * 計算物件活字粗細半徑
	 * 
	 * @param rectangularArea
	 *            物件活字
	 * @return 粗細半徑
	 */
	protected double computePieceRadius(PlaneGeometry rectangularArea)
	{
		ShapeInformation shapeInformation = new ShapeInformation(
				rectangularArea);
		return shapeInformation.getApproximativeRegion()
				/ shapeInformation.getApproximativeCircumference();
	}

	/**
	 * 計算物件活字粗細係數
	 * 
	 * @param rectangularArea
	 *            物件活字
	 * @return 粗細係數
	 */
// Path: src/main/java/cc/movabletype/SeprateMovabletype.java
// public class SeprateMovabletype
// {
// 	/** 目前字體大細，所在 */
// 	private Vector<PlaneGeometry> 字;
// 	/** 為著保留字體闊，若維護矩陣顛倒愛去顧平移 */
// 	private Vector<PlaneGeometry> 原本字體;
// 	/** 加粗莫合併的外殼 */
// 	private Vector<PlaneGeometry> 字外殼;
// 	/** 這馬的範圍，是為著閃避「一字問題」 */
// 	private Rectangle2D.Double 這馬;
// 	/** 目標範圍，上尾印的時陣愛看印偌大 */
// 	private Rectangle2D.Double 目標;
// 
// 	public SeprateMovabletype()
// 	{
// 		字 = new Vector<PlaneGeometry>();
// 		原本字體 = new Vector<PlaneGeometry>();
// 		字外殼 = null;
// 		這馬 = new Rectangle.Double();
// 		目標 = new Rectangle.Double();
// 	}
// 
// 	public SeprateMovabletype(PlaneGeometry 幾何)
// 	{
// 		this();
// 		字.add(幾何);
// 		原本字體.add(幾何);
// 		這馬字範圍();
// 	}
// 
// Path: src/main/java/cc/stroke/ChineseCharacterTypeBolder.java
// public interface ChineseCharacterTypeBolder
// {
// 	/**
// 	 * 取得筆劃加寬物件
// 	 * 
// 	 * @param width
// 	 *            加寬的寬度
// 	 * @return 筆劃加寬物件
// 	 */
// 	public Stroke getStroke(double width);
// }
// 
// Path: src/main/java/cc/movabletype/PlaneGeometry.java
// public class PlaneGeometry extends Area // implements 活字單元
// {
// 	/**
// 	 * 活字預計位置及大小
// 	 */
// 	private Rectangle2D.Double 目標;
// 
// 	/**
// 	 * 建立一個空的活字。
// 	 */
// 	public PlaneGeometry()
// 	{
// 		目標 = new Rectangle2D.Double();
// 	}
// 
// 	/**
// 	 * 建立一個空的活字，並用<code>Rectangle2D</code>指定活字預計位置及大小
// 	 * 
// 	 * @param 目標
// 	 *            預計位置及大小
// 	 */
// 	@Deprecated
// 	public PlaneGeometry(Rectangle2D 目標)
// 	{
// 		super();
// 		設目標範圍(目標);
// 	}


// Path: src/main/java/cc/stroketool/MkeSeparateMovableType_Bolder.java
import java.awt.Stroke;
import java.util.Vector;
import cc.movabletype.SeprateMovabletype;
import cc.stroke.ChineseCharacterTypeBolder;
import cc.movabletype.PlaneGeometry;

package cc.stroketool;



public class MkeSeparateMovableType_Bolder
{
	/** 物件活字加寬工具 */
	private final ChineseCharacterTypeBolder chineseCharacterTypeBolder;
	/** 合併、調整的精細度 */
	private final double precision;

	public MkeSeparateMovableType_Bolder(ChineseCharacterTypeBolder chineseCharacterTypeBolder,
			double precision)
	{
		this.chineseCharacterTypeBolder = chineseCharacterTypeBolder;
		this.precision = precision;
	}

	/**
	 * 計算物件活字粗細半徑
	 * 
	 * @param rectangularArea
	 *            物件活字
	 * @return 粗細半徑
	 */
	protected double computePieceRadius(PlaneGeometry rectangularArea)
	{
		ShapeInformation shapeInformation = new ShapeInformation(
				rectangularArea);
		return shapeInformation.getApproximativeRegion()
				/ shapeInformation.getApproximativeCircumference();
	}

	/**
	 * 計算物件活字粗細係數
	 * 
	 * @param rectangularArea
	 *            物件活字
	 * @return 粗細係數
	 */
	public double computeBoldCoefficient(PlaneGeometry rectangularArea)