/* * Created on 21-Jul-2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ /** * @author Christian * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ Vector color_files; Vector words; PFont mainFont; int nCol; int nRow; int totalConsidered; Vector selectedWords; float minSeg; float maxSeg; int minPhotos; int maxPhotos; float nPhotosFactW; float nPhotosFactH; float segmentationFactW; float segmentationFactH; String userInputStr; Word lastRolled; int bg_color; color bg=color(221,221,204); String[][] availableTags; void setup(){ size(700,480,P3D); words=new Vector(); userInputStr=""; String tag_lines[]=loadStrings("tags.txt"); String[] tags_arr=tag_lines[0].split("_"); int $av_tag_len=tags_arr.length; availableTags=new String[$av_tag_len][2]; for(int i=0; i<$av_tag_len; i++){ availableTags[i]=tags_arr[i].split(">"); } String col_lines[] = loadStrings("colors.txt"); parseColors(col_lines[0]); println("number words:"+words.size()); // order colors inside Word $word; int len=words.size(); for(int i=0; i((Word) selectedWords.get(j)).photos.size()){ selectedWords.add(j,$word); j=$len2; } } if(selectedWords.size()==$len2){ selectedWords.add($word); } } while(selectedWords.size()>totalConsidered){ selectedWords.remove(selectedWords.size()-1); } System.out.println("Number selected: "+selectedWords.size()); minPhotos=((Word) selectedWords.get(totalConsidered-1)).photos.size(); maxPhotos=((Word) selectedWords.get(0)).photos.size(); System.out.println("minPhotos:"+minPhotos+" maxPhotos:"+maxPhotos); nPhotosFactW=(width-(width/nCol))/((maxPhotos-minPhotos)*1f); nPhotosFactH=(height-(height/nRow))/((maxPhotos-minPhotos)*1f); // find max and min Segementation minSeg=1000f; maxSeg=0f; for(int i=0; imaxSeg) maxSeg=$word.segmentationRate; } segmentationFactW=(width-(width/nCol))/(maxSeg-minSeg); segmentationFactH=(height-(height/nRow))/(maxSeg-minSeg); // order selected by hue Vector hueWords=new Vector(); for(int i=0; i=$x && mouseX<$x+$w && mouseY>=$y && mouseY<$y+$h){ $rolledWord=$word; } pushMatrix(); translate($x,$y); scale($word.wScale); $word.drawMe(this); popMatrix(); } } stroke(255); if($rolledWord!=null){ //lastRolled=$rolledWord; fill(221,221,204,150); noStroke(); rect(0,0,width,height); //strokeWeight(4); int $len=$rolledWord.relatedVect.size(); for(int i=0; i<$len; i++){ $word=(Word) $rolledWord.relatedVect.get(i); //System.out.println($word.name); if($word.isSelected){ $s=$word.wScale; $w=$word._width*$word.wScale; $h=$word._height*$word.wScale; $x=$word._x-($w*.5f); $y=$word._y-($h*.5f); pushMatrix(); translate($x,$y); scale($word.wScale); $word.drawMe(this); popMatrix(); } } showLinks($rolledWord); $word=$rolledWord; $s=$word.wScale; $w=$word._width*$word.wScale; $h=$word._height*$word.wScale; $x=$word._x-($w*.5f); $y=$word._y-($h*.5f); pushMatrix(); translate($x,$y); scale($word.wScale); $word.drawMe(this); popMatrix(); //System.out.println("roll: "+$rolledWord.name); bg_color=$word.average_color; } else{ bg_color=0x000000; } } // // void showLinks(Word $word){ int $len=$word.relatedVect.size(); if($len<1) return; Word $rWord; for(int i=0; i<$len; i++){ $rWord=(Word) $word.relatedVect.get(i); if($rWord.isSelected && $rWord._visible){ stroke($word.sharedColors[i]); float l=min(abs($word._x-$rWord._x),abs($word._y-$rWord._y)); if($word._x==$rWord._x || $word._y==$rWord._y){ line($word._x,$word._y,$rWord._x,$rWord._y); }else if($word._x>$rWord._x && $word._y>$rWord._y){ //top left bezier($word._x, $word._y, $word._x, $word._y-l, $rWord._x+l, $rWord._y, $rWord._x, $rWord._y); }else if($word._x<$rWord._x && $word._y>$rWord._y){ //top right bezier($word._x, $word._y, $word._x, $word._y-l, $rWord._x-l, $rWord._y, $rWord._x, $rWord._y); }else if($word._x>$rWord._x && $word._y<$rWord._y){ //bott left bezier($word._x, $word._y, $word._x, $word._y+l, $rWord._x+l, $rWord._y, $rWord._x, $rWord._y); }else if($word._x<$rWord._x && $word._y<$rWord._y){ //bott right bezier($word._x, $word._y, $word._x, $word._y+l, $rWord._x-l, $rWord._y, $rWord._x, $rWord._y); } } } } // // Vector getRelated(String[] $related_tags){ Vector $relatedVect=new Vector(); int $len=$related_tags.length; int $wLen=words.size(); Word $word; for(int i=0; i<$len; i++){ for(int j=0; j<$wLen; j++){ $word=(Word) words.get(j); if($word.name.equals($related_tags[i])){ $relatedVect.addElement($word); j=$wLen; } } } return $relatedVect; } // // void parseColors(String $superString){ println("ss len: "+$superString.length()); String[] colors_arr=$superString.split("_"); int $len=colors_arr.length; println("nColors: "+$len); String[] $col_arr; String $colName; String $tagName; String $photoId; int $len2,$len3; for(int i=0; i<$len; i++){ $col_arr=colors_arr[i].split(">"); $colName=$col_arr[0]; String[] $photos_arr=$col_arr[1].split("-"); $len2=$photos_arr.length; for(int j=0; j<$len2; j++){ String[] $photo_arr=$photos_arr[j].split(","); $len3=$photo_arr.length; if($len3>1){ $photoId=$photo_arr[0]; for(int k=1; k<$len3; k++){ addTag($photo_arr[k], $colName,$photoId); } } } } } // // void addTag(String $name, String $colorname, String $photoId) { //File $src = new File("data/related_tags/"+$name+".txt"); //if(!$src.exists()) return; String[] $related_tags=new String[0]; int $av_tag_len=availableTags.length; boolean isPresent=false; for(int i=0; i<$av_tag_len; i++){ if($name.equals(availableTags[i][0])){ isPresent=true; if(availableTags[i].length>1){ $related_tags=availableTags[i][1].split(","); } i=$av_tag_len; } } if(!isPresent) return; int $wordsLen=words.size(); Word $word; String $wordname; for(int i=0; i<$wordsLen; i++){ $word = (Word) words.get(i); $wordname=$word.name; if($wordname.equals($name)){ $word.addImage($colorname,$photoId); return; } } words.addElement(new Word($name,$colorname,$photoId,$related_tags)); } // // void updateSelection(){ for(int i=0; i=112 && keyCode<112+12){ int k=keyCode-112; for(int i=0; i0){ userInputStr=userInputStr.substring(0,userInputStr.length()-1); } } else if(keyCode >=48 && keyCode<=90){ userInputStr=userInputStr+key; } //System.out.println("code: "+keyCode+" user: "+userInputStr); if(userInputStr.length()!=$strLen){ updateSelection(); } }