// http://www.escoitar.org/spip.php?page=processing_paisaxes_tab05 // escoitar.tsv import ddf.minim.*; PFont font; // CLASES Timeline timeline; Place placeSelected; // Each one of the places selected by the mouse. Selector zoomSelector; // The rectangle selector to select the zoom places. SilenceSpace silenceSpace; UiSpace uiSpace; Button zoomOutBtn; Button infoBtn; Instructions instructions; Minim minim; //ControlP5 controlP5; // LIST OF THE COLUMNS FROM THE DATA DOCUMENT String dataDocument = "processing_paisaxes_tab05.tsv"; static final int ID = 0; static final int X = 1; static final int Y = 2; static final int COMARCA = 3; static final int MP3 = 5; static final int IMG = 6; static final int IMGWIDTH = 7; static final int TITLE = 8; static final int URL = 9; static final int AUTOR = 10; static final int DATE = 11; static final int IDCATEGORY = 12; /* static final int TITLECATEGORY = 13; */ // COUNTERS AND ARRAYS int totalCount; int placeCount; Place[] places; // MAP COORDINATES float minX, maxX; float minY, maxY; float mapX1, mapY1; float mapX2, mapY2; // SPACES VARIABLES int silenceSpaceX = 560; int silenceSpaceW = 60; int timelineSpaceX = 620; int timelineSpaceW = 250; int uiSpaceX = 870; int uiSpaceW = 30; int sequencerArea = 650; float distSequencer; color selectedColor = #ffffff; // dark bakground color boolean overOneDetected = false; // switch that changes its value if the mouse is over a place. boolean doSelector = true; // switch used to led zoom selector work only if the mouse is not over a place. boolean doingSelection = false; // switch if we are draging for making zoom. boolean draggingPlace = false; // **************************************************************************** // SETUP. // **************************************************************************** public void setup(){ frameRate(40); size(900, 600); background(0); noStroke(); smooth(); font = loadFont("Futura-Medium-48.vlw"); textFont(font); // Sound minim = new Minim(this); mapX1 = 20; mapX2 = 530 + mapX1; mapY1 = 20; mapY2 = 500 + mapY1; readData(); for(int i=0; i= silenceSpaceX){ placeSelected = null; } if(placeSelected != null){ draggingPlace = true; if(keyPressed && keyCode==SHIFT){ placeSelected.linkUrl(); } } // Scrollbars uiSpace.speedControl.press(mouseX, mouseY); uiSpace.volumeControl.press(mouseX, mouseY); uiSpace.playBtn.press(); uiSpace.pauseBtn.press(); if(uiSpace.playBtn.press()){ timeline.play(); } if(uiSpace.pauseBtn.press()){ timeline.stop(); } if(zoomOutBtn.press()){ resetZoom(); } if(infoBtn.press()){ instructions.setVisible(); } } void mouseDragged(){ if(placeSelected != null){ placeSelected.xx = mouseX; placeSelected.yy = mouseY; placeSelected.colorNormal = #ffffff; placeSelected.colorNormalAlpha = 70; } } void mouseReleased(){ if(placeSelected != null){ placeSelected.release(); placeSelected = null; draggingPlace = false; } if((zoomSelector != null) && ((zoomSelector.x2 - zoomSelector.x > 10) || (zoomSelector.x - zoomSelector.x2 > 10))){ zoomSelector.checkCoor(); for(int i=0; i zoomSelector.x) && (places[i].xx < zoomSelector.x2) && (places[i].yy > zoomSelector.y) && (places[i].yy < (zoomSelector.y + (zoomSelector.x2 - zoomSelector.x)))){ places[i].xx = map(places[i].xx, zoomSelector.x, zoomSelector.x2 , mapX1, mapX2); places[i].yy = map(places[i].yy, zoomSelector.y, zoomSelector.y2 , mapY1, mapY2); places[i].i = 40; }else{ places[i].selected=false; } } } } zoomSelector = null; doingSelection=false; uiSpace.speedControl.release(); if(uiSpace.speedControl.over(mouseX, mouseY)){ timeline.setInterval(uiSpace.speedControl.getPos()); } uiSpace.volumeControl.release(); uiSpace.playBtn.release(); uiSpace.pauseBtn.release(); zoomOutBtn.release(); infoBtn.release(); } void resetZoom(){ for(int i=0; i