Tool to display Walter Giers' notebooks in either chronological or in random order
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

Interaction.pde 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. void mousePressed() {
  2. interactive = true;
  3. startInteractionTime = millis();
  4. if (timeline.hovering()) {
  5. timeline.clicked = true;
  6. timelinectrl();
  7. } else {
  8. nextSlide(interactMode);
  9. }
  10. }
  11. void mouseReleased() {
  12. if (timeline.clicked) {
  13. timeline.clicked = false;
  14. timelinectrl();
  15. }
  16. }
  17. int currentYear;
  18. void timelinectrl() {
  19. if (interactiveTimeline && displayTimeline) {
  20. int toYear = (int)constrain(map(mouseX, timeline.x, timeline.x + timeline.l, 1966, 2012), 1966, 2012);
  21. if (toYear != currentYear) {
  22. timeline.cursorPos = constrain(mouseX, timeline.x, timeline.x +timeline.l);
  23. boolean succ = false;
  24. for (int i = 0; i < notebooks.size(); i ++) {
  25. if (notebooks.get(i).year == toYear) {
  26. nextSlide(i, 0);
  27. succ = true;
  28. break;
  29. }
  30. }
  31. if (!succ) {
  32. for (int i = 0; i < notebooks.size(); i ++) {
  33. if (notebooks.get(i).year == toYear-1 || notebooks.get(i).year == toYear+1) {
  34. nextSlide(i, 0);
  35. succ = true;
  36. break;
  37. }
  38. }
  39. }
  40. }
  41. }
  42. }
  43. class Timeline { //currently timeline has to be from left to right to work
  44. int x, y, l, cursorPos;
  45. boolean clicked;
  46. Timeline(int x_, int y_, int l_) {
  47. x = x_;
  48. y = y_;
  49. l = l_;
  50. }
  51. boolean hovering() {
  52. if (mouseX > x - 20 && mouseX < x + l + 20 && mouseY > y - 20 && mouseY < y + 20) {
  53. return true;
  54. } else {
  55. return false;
  56. }
  57. }
  58. void update() {
  59. cursorPos = (int)map(notebooks.get(currentNotebookNo).year, 1966, 2012, 50, width-50);
  60. }
  61. void display() {
  62. stroke(255, 127);
  63. strokeWeight(4);
  64. line(x, y, l+x, y);
  65. if (clicked) {
  66. cursorPos = (int)constrain(mouseX, x, x+l);
  67. }
  68. ellipse(cursorPos, height-30, 20, 20);
  69. if (displayText){
  70. String labelText;
  71. if(!clicked) labelText = str(notebooks.get(currentNotebookNo).year);
  72. else labelText = str((int)constrain(map(mouseX, timeline.x, timeline.x + timeline.l, 1966, 2012), 1966, 2012));
  73. text(labelText, cursorPos, y-20);
  74. }
  75. }
  76. }