Hi, I'm having some issues with the text() function that I haven't had before. I'm creating a timeline of books read, and it relies upon a .tsv table (imported using Ben Fry's Table class code from his website). All of that's fine, and I haven't had trouble like this before, but when I go to create text for when the mouse hovers over one of the points on the timeline, it only shows text if it refers to a number (whether int or float), not a bunch of letters.
Below is my code (not including the Table code - that's available on Ben Fry's website):
Code://Books that changed my life
//by Meiko Georgouras
PFont headerFont;
PFont titleFont;
PFont bodyFont;
PShape bookShape;
Table bookList;
int rowCount;
void setup() {
size(800, 500);
headerFont = loadFont("1942report-22.vlw");
titleFont = loadFont("BookmanOldStyle-BoldItalic-12.vlw");
bodyFont = loadFont("BookmanOldStyle-12.vlw");
bookList = new Table("booklist.tsv");
bookShape = loadShape("book.svg");
rowCount = bookList.getRowCount();
}
void draw() {
background(200,210,214);
smooth();
shape(bookShape, 30, 30, 120, 96);
fill(0);
textFont(headerFont, 22);
text("The Books that Shaped My Life", 200, 80);
fill(173,201,203);
noStroke();
rect(0, 350, 800, 150);
for (int row = 0; row < rowCount; row++) {
String header = bookList.getRowName(row);
float title = bookList.getFloat(row, 0);
float author = bookList.getFloat(row, 1);
float name = bookList.getFloat(row,5);
int read = bookList.getInt(row, 2);
int birth = bookList.getInt(row, 3);
int yr = bookList.getInt(row, 4);
int l = (yr-birth)*10;
fill(255, 30);
textFont(bodyFont,12);
noStroke();
rect(30, 349, l, 2);
stroke(255);
line(30,349, 30, 359);
text(birth, 15, 380);
line(30+l, 349, 30+l, 359);
text(yr, l+15, 380);
int x = (read-birth)*10+30;
fill(255);
noStroke();
ellipse(x,350,6,6);
fill(0);
if (mouseX<=x+6 && mouseY<=350+6 && mouseX>=x-6 && mouseY>=350-6) {
fill(0);
text(read,mouseX+5,mouseY);
fill(255,0,0);
text(author,mouseX+3, mouseY+10);
} else {
fill(0);
text(" ",mouseX,mouseY);
}
}
}
However, this other project I did has no problem working and happily shows both the area's name and the indicator:
Code:PImage mapImage;
PFont font;
Table locationTable;
int rowCount;
void setup() {
size(1126,732);
font = loadFont("Calibri-12.vlw");
textFont(font, 12);
mapImage = loadImage("vic3.png");
locationTable = new Table("vic_financialstress.tsv");
rowCount = locationTable.getRowCount();
}
void draw() {
background(255);
image(mapImage, 0, 0);
smooth();
noStroke();
for (int row = 0; row < rowCount; row++) {
String title = locationTable.getRowName(row);
float name = locationTable.getFloat(row,0);
float x = locationTable.getFloat(row, 1);
float y = locationTable.getFloat(row, 2);
float mapping = locationTable.getFloat(row, 3);
int number = locationTable.getInt(row, 4);
float colour = locationTable.getFloat(row, 5);
fill(#b22222, number*3);
ellipse(x, y, colour/6, colour/6);
if (mouseX<=x+10 && mouseY<=y+10 && mouseX>=x-10 && mouseY>=y-10) {
fill(0);
text(title,mouseX+5,mouseY);
fill(255,0,0);
text(number,mouseX+3, mouseY+10);
} else {
fill(0);
text(" ",mouseX,mouseY);
}
}
}
Could you please help me with this?