/*
 * 作成日: 2004/05/08
 *
 * この生成されたコメントの挿入されるテンプレートを変更するため
 * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
 */
package jp.riken.brain.ni.samuraigraph.figure.java2d;

import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.util.*;
import javax.swing.plaf.FontUIResource;
import jp.riken.brain.ni.samuraigraph.base.*;
import jp.riken.brain.ni.samuraigraph.data.*;
import jp.riken.brain.ni.samuraigraph.figure.*;


/**
 * @author LANDAU
 *
 * この生成されたコメントの挿入されるテンプレートを変更するため
 * ウィンドウ > 設定 > Java > コード生成 > コードとコメント
 */
public class SGUtilityJava2D
{


	/**
	 * 
	 */
	public static Rectangle2D getBoundingBox(
		final ArrayList list )
	{
		ArrayList rectList = new ArrayList();
		for( int ii=0; ii<list.size(); ii++ )
		{
			Object obj = list.get(ii);
			if( obj==null )
			{
				throw new NullPointerException("obj==null");
			}
			if( !(obj instanceof SGIDrawingElementJava2D) )
			{
				throw new IllegalArgumentException(
					"!(obj instanceof SGIDrawingElementJava2D)"
				);
			}

			SGIDrawingElementJava2D el
				= (SGIDrawingElementJava2D)obj;
			rectList.add( el.getElementBounds() );
		}

		Rectangle2D rectAll = SGUtility.createUnion( rectList );

		return rectAll;
	}



	/**
	 * 
	 * @param itr
	 * @return
	 */
	public static ArrayList getSegmentList( final PathIterator itr )
	{
		ArrayList list = new ArrayList();
		while( !itr.isDone() )
		{
			final float[] array = new float[6];
			final int type = itr.currentSegment( array );

			if( type==PathIterator.SEG_MOVETO || type==PathIterator.SEG_LINETO )
			{
				list.add( new Point2D.Float( array[0], array[1] ) );
			}
			else if( type==PathIterator.SEG_QUADTO )
			{
				list.add( new Point2D.Float( array[0], array[1] ) );
				list.add( new Point2D.Float( array[2], array[3] ) );
			}
			else if( type==PathIterator.SEG_CUBICTO )
			{
				list.add( new Point2D.Float( array[0], array[1] ) );
				list.add( new Point2D.Float( array[2], array[3] ) );
				list.add( new Point2D.Float( array[4], array[5] ) );
			}

			itr.next();
		}

		return list;
	}



}
