initial commit of the lexical attack engine
This commit is contained in:
commit
874d8ccdcd
12665
lexical_attack/data/surveiller_et_punir.csv
Normal file
12665
lexical_attack/data/surveiller_et_punir.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
lexical_attack/fonts/Bitstream Charter Bold Italic.ttf
Normal file
BIN
lexical_attack/fonts/Bitstream Charter Bold Italic.ttf
Normal file
Binary file not shown.
BIN
lexical_attack/fonts/Bitstream Charter Bold.ttf
Normal file
BIN
lexical_attack/fonts/Bitstream Charter Bold.ttf
Normal file
Binary file not shown.
BIN
lexical_attack/fonts/Bitstream Charter Italic.ttf
Normal file
BIN
lexical_attack/fonts/Bitstream Charter Italic.ttf
Normal file
Binary file not shown.
BIN
lexical_attack/fonts/Bitstream Charter.ttf
Normal file
BIN
lexical_attack/fonts/Bitstream Charter.ttf
Normal file
Binary file not shown.
126
lexical_attack/lexical_attack.pde
Normal file
126
lexical_attack/lexical_attack.pde
Normal file
@ -0,0 +1,126 @@
|
||||
import java.util.*;
|
||||
/**
|
||||
* Lexical Attack is a word display processor, aimed at virtually
|
||||
* shooting the spectator with a lexical field that comes from
|
||||
* a csv file produced by wordocc https://git.tetalab.org:8888/Mutah/wordocc
|
||||
*
|
||||
*/
|
||||
|
||||
//- some variable to customize to your needs
|
||||
|
||||
// data file
|
||||
String WORDS_CSV_FILE = "data/surveiller_et_punir.csv";
|
||||
|
||||
// foreground color
|
||||
int FG_COLOR = 255;
|
||||
|
||||
// background color
|
||||
int BG_COLOR = 0;
|
||||
|
||||
// main font
|
||||
String FONT_FILE = "fonts/Bitstream Charter.ttf";
|
||||
|
||||
// bolder font for word with more score
|
||||
String BOLD_FONT_FILE = "fonts/Bitstream Charter Bold.ttf";
|
||||
|
||||
//- end of visual customization. TODO : extract the variables of chaos
|
||||
|
||||
void setup() {
|
||||
//size(1280, 720);
|
||||
fullScreen();
|
||||
|
||||
frameRate(3);
|
||||
|
||||
background(BG_COLOR);
|
||||
fill(FG_COLOR);
|
||||
smooth();
|
||||
|
||||
f = createFont(FONT_FILE, 24, true);
|
||||
bf = createFont(BOLD_FONT_FILE, 24, true);
|
||||
|
||||
loadData();
|
||||
}
|
||||
|
||||
void draw() {
|
||||
// let's get a random word with some chaos formula
|
||||
int id = round(random(words.size() / random(1, 12)));
|
||||
Word word = words.get(id);
|
||||
|
||||
// draw a transparent rectangle over the text
|
||||
// so it disappear slowly
|
||||
fill(BG_COLOR, random(16, 32));
|
||||
rect(0, 0, width, height);
|
||||
|
||||
float size = map(word.count, 1, maxCount, 40, 128);
|
||||
if (id < words.size() / 8 && random(10) > 3) {
|
||||
textFont(bf);
|
||||
size = size * 1.33;
|
||||
} else {
|
||||
textFont(f);
|
||||
}
|
||||
textSize(size);
|
||||
|
||||
float wordw = textWidth(word.text);
|
||||
fill(FG_COLOR);
|
||||
String cap = word.text.substring(0, 1).toUpperCase() + word.text.substring(1);
|
||||
text(cap, random(width - wordw), random(height - size));
|
||||
// saveFrame("frames/mw-######.png");
|
||||
}
|
||||
|
||||
PFont f, bf;
|
||||
|
||||
int maxCount = 0;
|
||||
|
||||
// the list of word objects read from the csv files
|
||||
ArrayList<Word> words = new ArrayList<Word>();
|
||||
|
||||
/*
|
||||
* class wrapping a word. note some attributes are not used yet
|
||||
*/
|
||||
class Word implements Comparable {
|
||||
|
||||
/* the word string */
|
||||
String text;
|
||||
|
||||
/* the weight, understood as a number of occurence */
|
||||
int count;
|
||||
|
||||
/* x position : not used yet */
|
||||
int x;
|
||||
|
||||
/* y position : not used yet */
|
||||
int y;
|
||||
|
||||
float size;
|
||||
|
||||
int compareTo(Object other) {
|
||||
Word w = (Word) other;
|
||||
if(count < w.count) {
|
||||
return 1;
|
||||
} else if (count > w.count) {
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void loadData() {
|
||||
|
||||
Table table = loadTable(WORDS_CSV_FILE);
|
||||
|
||||
println(table.getRowCount() + " total rows in table");
|
||||
|
||||
for (TableRow row : table.rows()) {
|
||||
Word word = new Word();
|
||||
word.text = row.getString(0);
|
||||
word.count = row.getInt(1);
|
||||
if(word.text.length() > 0) {
|
||||
if(word.count > maxCount) {
|
||||
maxCount = word.count;
|
||||
}
|
||||
words.add(word);
|
||||
}
|
||||
}
|
||||
Collections.sort(words);
|
||||
}
|
Loading…
Reference in New Issue
Block a user