package genbook;
/* THE MULTI-HEADED HYDRA BOOK
 * main program to generate the book
 */

import java.io.IOException;

import net.didion.jwnl.JWNLException;
import processing.core.*;
import processing.pdf.PGraphicsPDF;

public class BookBuilder extends PApplet {
	PFont font;

	static public void main(String args[]) {
		PApplet.main(new String[] { "genbook.BookBuilder" });
	}
	
	String rootWord;
	int pages;
	int pageCounter=0;
	public void setup(){
		font = createFont("../data/pdf/lucon.ttf",5);
		//1440,1840
		size(612,792,PDF, "data/pdf/genBook.pdf");
		
		WordsHelper.initialize("data/file_properties.xml");

		background(255);
		//noLoop();
		rootWord = "forget";
		pages = 3;
	}
	
	public void draw() {
		try {
			
			pageCounter = pageCounter+1;
			Concept concept1 = new Concept(rootWord,"hell");
			displayConcept(concept1.getAllConcepts(),15,18);
			//findConnections();
			
			//use the object this way to get its values
			//System.out.println("PAST-->"+concept1.getPast());
			
			//resultWord is the word returned by wordnet for the rootWord
			String resultWord1 = WordsHelper.getRandomSyn(rootWord);
			Concept concept2 = new Concept(resultWord1,"hell");
			displayConcept(concept2.getAllConcepts(),311,18);
			

			String resultWord2 = WordsHelper.getRandomSyn(resultWord1);
			Concept concept3 = new Concept(resultWord2,"hell");
			displayConcept(concept3.getAllConcepts(),15,270);
			
			
			String resultWord3 = WordsHelper.getRandomSyn(resultWord2);
			Concept concept4 = new Concept(resultWord3,"hell");
			displayConcept(concept4.getAllConcepts(),311,270);
			
			
			String resultWord4 = WordsHelper.getRandomSyn(resultWord3);
			Concept concept5 = new Concept(resultWord4,"hell");
			displayConcept(concept5.getAllConcepts(),15,522);
			
			
			String resultWord5 = WordsHelper.getRandomSyn(resultWord4);
			Concept concept6 = new Concept(resultWord5,"hell");
			displayConcept(concept6.getAllConcepts(),311,522);
			
			rootWord = resultWord5;
			
			if (pageCounter > pages) println("finished."); exit();
			PGraphicsPDF pdf = (PGraphicsPDF) g;  // get the renderer
			pdf.nextPage();
			// if this is a single frame, get out
			//println("finished.");
			//exit();

		} catch (JWNLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void displayConcept(String[] input, float x_,float y_){
		String[] tex = input;
		int lengthText;
		float boxW = 285;//720	
		float boxH = 63;//153
		float area = boxW*boxH;
		float xPos = x_;
		float yPos = y_;
		float fSize;
		//System.out.println("array length "+ tex.length);
		for (int i=0; i<=tex.length-1;i++){
			//System.out.println(tex.length + " length of results < >i is "+ i);
			
			lengthText = tex[i].length();
			
			//System.out.println("text length "+lengthText);
			//fsize is the size of the font for this specific length on text called lengthText
			fSize=sqrt(area/lengthText);
			println("font size for this text is"+fSize);
			//if fSize is over boxH it does not show! obviously
			if(fSize>boxH){
				fSize = boxH;
			}
			
			textFont(font,fSize);
			//float percentage = (fSize/boxH)*100;
			//System.out.println("PERCENT "+percentage);
			
			//fill(255);
			//noFill();
			fill(255);
			//stroke(230);
			noStroke();
			rect(xPos,(boxH*i)+yPos,boxW,boxH);
			fill(random(100)+50);
			//textAlign(RIGHT);
			text(tex[i],xPos,(boxH*i)+yPos,boxW,boxH);
		}
	}
}
