/**
 * 
 */
package math.geom2d.circulinear;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

import math.geom2d.Point2D;
import math.geom2d.curve.Curve2D;
import math.geom2d.polygon.LinearRing2D;

/**
 * Check if a two continuous contours (here two linear rings) which intersect
 * each other are correctly splitted into disjoint parts.
 * @author dlegland
 *
 */
public class CheckSplit2Contours extends JPanel{
	private static final long serialVersionUID = 1L;

	CirculinearContour2D ring1, ring2;
	Curve2D parallel;
	
	public CheckSplit2Contours(){
		
		ring1 = new LinearRing2D(new Point2D[]{
				new Point2D(100, 100),
				new Point2D(250, 100),
				new Point2D(250, 300),
				new Point2D(200, 300),
				new Point2D(200, 150),
				new Point2D(150, 150),
				new Point2D(150, 300),
				new Point2D(100, 300) });
		
		ring2 = new LinearRing2D(new Point2D[]{
				new Point2D(50, 200),
				new Point2D(300, 200),
				new Point2D(300, 250),
				new Point2D(50, 250) });
	}
	
	public void paintComponent(Graphics g){
		Graphics2D g2 = (Graphics2D) g;
		
		g2.setColor(Color.BLACK);
		ring1.draw(g2);
		ring2.draw(g2);
		
		Color[] colors = new Color[]{
				Color.RED, Color.GREEN, Color.BLUE, Color.MAGENTA, Color.ORANGE};
		int i= 0;

		g2.setColor(Color.BLUE);
		for(CirculinearContinuousCurve2D cont :
			CirculinearCurves2D.splitIntersectingContours(ring1, ring2)){
			g2.setColor(colors[i++]);
			cont.draw(g2);
		}
	}
	
	public final static void main(String[] args){
		System.out.println("check splitting of closed contours");
		
		JPanel panel = new CheckSplit2Contours();
		panel.setPreferredSize(new Dimension(500, 400));
		JFrame frame = new JFrame("Split intersecting contours");
		frame.setContentPane(panel);
		frame.pack();
		frame.setVisible(true);		
	}
}