controlp5 icon indicating copy to clipboard operation
controlp5 copied to clipboard

IndexOutOfBounds exception with console on Windows

Open nielmistry opened this issue 6 years ago • 1 comments

We get an StringIndexOutOfBoundsException on the .draw() function when we have console output on the screen:

java.lang.StringIndexOutOfBoundsException: String index out of range: -1
	at java.lang.String.substring(String.java:1967)
	at controlP5.ControlFont.calculateHeight(Unknown Source)
	at controlP5.ControlFont.adjust(Unknown Source)
	at controlP5.Label$MultilineLabel.draw(Unknown Source)
	at controlP5.Label.draw(Unknown Source)
	at controlP5.ControllerGroup.draw(Unknown Source)
	at controlP5.ControllerGroup.drawControllers(Unknown Source)
	at controlP5.ControllerGroup.draw(Unknown Source)
	at controlP5.ControlWindow.draw(Unknown Source)
	at controlP5.ControlWindow.draw(Unknown Source)
	at controlP5.ControlP5.draw(Unknown Source)
	at PBAI_Engine$VisGui.go(PBAI_Engine.java:3219)
	at PBAI_Engine.do_gui(PBAI_Engine.java:293)
	at PBAI_Engine.draw(PBAI_Engine.java:260)
	at processing.core.PApplet.handleDraw(PApplet.java:2476)
	at processing.opengl.PSurfaceJOGL$DrawListener.display(PSurfaceJOGL.java:866)
	at jogamp.opengl.GLDrawableHelper.displayImpl(GLDrawableHelper.java:692)
	at jogamp.opengl.GLDrawableHelper.display(GLDrawableHelper.java:674)
	at jogamp.opengl.GLAutoDrawableBase$2.run(GLAutoDrawableBase.java:443)
	at jogamp.opengl.GLDrawableHelper.invokeGLImpl(GLDrawableHelper.java:1293)
	at jogamp.opengl.GLDrawableHelper.invokeGL(GLDrawableHelper.java:1147)
	at com.jogamp.newt.opengl.GLWindow.display(GLWindow.java:759)
	at com.jogamp.opengl.util.AWTAnimatorImpl.display(AWTAnimatorImpl.java:81)
	at com.jogamp.opengl.util.AnimatorBase.display(AnimatorBase.java:452)
	at com.jogamp.opengl.util.FPSAnimator$MainTask.run(FPSAnimator.java:178)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)

Here are the lines that seem to be causing the problem:

myConsole = vgui.addTextarea("txt")
                  .setPosition(50, 550)
                  .setSize(600, 200)
                  .setFont(new ControlFont(gill, 12))    // createFont("gill", 10))
                  .setLineHeight(14)
                  .setColor(color(200))
                  .setColorBackground(color(0, 100))
                  .setColorForeground(color(255, 100));
  ;

     console = vgui.addConsole(myConsole) // if this line is removed, the index out of bounds exception goes away
                   .setMax(50); 

This issue only happens on Windows computers but never on MacOS computers. Thank you!

nielmistry avatar Mar 18 '19 13:03 nielmistry

PS - "console" in the above example is an instance of controlP5 Println:

class VisGui {

  Textarea myConsole;
  Println console; 
  ButtonBar bar;
...

And I'll reiterate that this all works perfectly on MacOS X but not on any Windows machines, oddly.

(Also, we've tried different fonts, sizes etc. and it doesn't seem to make a difference).

mgorbet avatar Mar 18 '19 14:03 mgorbet