Automatic line break (text() command)

Hello,
My code draws lines to the screen, each line in a random size in a single frame. But some lines are too long. I have to split them, but not to another frame and another random size. It should still remain in the same frame. I only need a linebreak, but can’t do it by hand because it’s always different due to the random sizes. I really tried hard to do something with the width, but just can’t come to a solution. Could somebody help me out?
Thanks a lot!!

PFont font;

String [] lines;
int index = 0;
int xvalue;
int x=10;
int y =40;

void setup() {
  size(600,600);
  font = createFont("UtopiaStd-Regular", 20);


  String everything; 
  everything = "Die Einsamkeit ist meinem Herzen köstlicher Balsam in dieser paradiesischen Gegend, und diese Jahreszeit der Jugend wärmt mit aller Fülle mein oft schauderndes Herz. Jeder Baum, jede Hecke ist ein Strauß von Blüten, und man möchte zum Maienkäfer werden, um in dem Meer von Wohlgerüchen herumschweben und alle seine Nahrung darin finden zu können. Die Stadt selbst ist unangenehm, dagegen rings umher eine unaussprechliche Schönheit der Natur. Das bewog den verstorbenen Grafen von M., einen Garten auf einem der Hügel anzulegen, die mit der schönsten Mannigfaltigkeit sich kreuzen und die lieblichsten Täler bilden.";
  println(everything);
  lines = splitTokens(everything, ",.?!;:-–—");
  textFont(font);
  
}


void draw() {
  background(0);
  frameRate(random(0.5,2));
  if(random(100) > 50){
     xvalue=15;
                      }
  else {
    xvalue = 30;
                      }
  textSize(xvalue);

  text(lines[index], x, y);
    if (x >= width) {
      x=10; 
      y+=40;
                      }

    index++; 
}

void keyPressed() {
  redraw();
}

Hello Sophie!

The text() command itself is able to do this.

Similar to rect() command, you can tell text() to be within a rectangle.

for example:

 text(lines[index], x, y, 
    width-100, 900);

Here width-100 and 900 are the width and height of the rectangle the text should be in!

The value width-100 is important, it lets the text flow into the next line within the rectangle.

The 900 is just a big value for the height.

Warm regards,

Chrisir

Full Sketch




String everything = 
  "Die Einsamkeit ist meinem Herzen köstlicher Balsam in dieser paradiesischen Gegend, und diese Jahreszeit der Jugend wärmt mit aller Fülle mein oft schauderndes Herz. "
  +"Jeder Baum, jede Hecke ist ein Strauß von Blüten, und man möchte zum Maienkäfer werden, um in dem Meer von Wohlgerüchen herumschweben und alle seine Nahrung darin finden zu können. "
  +"Die Stadt selbst ist unangenehm, dagegen rings umher eine unaussprechliche Schönheit der Natur. "
  +"Das bewog den verstorbenen Grafen von M., einen Garten auf einem der Hügel anzulegen, "
  +"die mit der schönsten Mannigfaltigkeit sich kreuzen und die lieblichsten Täler bilden.";

PFont font;

String [] lines;
int index = 0;

int x = 10;
int y = 40;

void setup() {
  size(600, 600);

  font = createFont("UtopiaStd-Regular", 20);
  textFont(font);

  println(everything);
  lines = splitTokens(everything, ",.?!;:-–—");
}

void draw() {
  background(0);

  frameRate(random(0.5, 2));

  int xvalue;
  if (random(100) > 50) {
    xvalue=15;
  } else {
    xvalue = 30;
  }
  textSize(xvalue);

  text(lines[index], x, y, 
    width-100, 900);
  if (x >= width) {
    x=10; 
    y+=40;
  }

  index++;
}

void keyPressed() {
  redraw();
}

1 Like