Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ArrayList<TextBox> textBoxes = new ArrayList<TextBox>();
- float scrollSpeed = 10;
- void setup()
- {
- size(1280, 720, P2D);
- frameRate(60);
- String someText = "One two three four five six seven eight nine\n\n";
- someText += someText;
- someText += someText;
- someText += someText;
- TextBox textBox1 = new TextBox(20,20, 200, 500);
- textBox1 .setBackCol (color(0));
- textBox1 .setEdgeCol (color(255,0,0));
- textBox1 .setTextCol (color(0,255,0));
- textBox1 .setFont (createFont("Comic Sans MS", 24));
- textBox1 .text = someText;
- TextBox textBox2 = new TextBox(600, 20, 500, 200);
- textBox2 .setEdgeCol (color(0,0,0, 150));
- textBox2 .setTextCol (color(0,0,0));
- textBox2 .setFont (createFont("Courier New", 18));
- textBox2 .setMargin (10, 10);
- textBox2 .text = someText;
- textBoxes.add(textBox1);
- textBoxes.add(textBox2);
- }
- void draw()
- {
- background(255);
- for (TextBox textBox : textBoxes)
- {
- textBox.draw();
- }
- }
- void mouseWheel(MouseEvent event)
- {
- for (TextBox textBox : textBoxes)
- {
- if (textBox.isInside(mouseX, mouseY))
- {
- textBox.scroll(event.getCount()*scrollSpeed);
- }
- }
- }
- public class TextBox
- {
- public String text = "";
- private PGraphics buffer = new PGraphics();
- private PVector pos = new PVector();
- private PVector size = new PVector();
- private PVector margin = new PVector();
- private float scroll = 0;
- private color backCol = color(255,255,255,0);
- private color edgeCol = color(255,255,255,0);
- private color textCol = color(0);
- private PFont font = new PFont();
- public PVector getPos() {return pos;}
- public PVector getSize() {return size;}
- public void setPos (PVector pos) {setPos(pos.x, pos.y);}
- public void setPos (float x, float y) {pos.x = x; pos.y = y;}
- public void setMargin (PVector margin) {setMargin(margin.x, margin.y);}
- public void setMargin (float w, float h) {margin.x = w; margin.y = h;}
- public void scroll (float scroll) {this.scroll = max(this.scroll+scroll, 0);} // Scroll cannot go below 0.
- public void setBackCol (color c) {this.backCol = c;}
- public void setEdgeCol (color c) {this.edgeCol = c;}
- public void setTextCol (color c) {this.textCol = c;}
- public void setFont (PFont font) {this.font = font;}
- public void draw()
- {
- buffer.beginDraw();
- {
- buffer.clear();
- buffer.background (backCol);
- buffer.stroke (edgeCol);
- buffer.fill (backCol);
- buffer.rect (0, 0, buffer.width-1, buffer.height-1); // Border.
- buffer.textFont (font);
- buffer.fill (textCol);
- buffer.textAlign (LEFT, TOP);
- buffer.text (text, margin.x, margin.y-scroll, buffer.width-margin.x, buffer.height+scroll);
- }
- buffer.endDraw();
- image(buffer, pos.x, pos.y);
- }
- public boolean isInside(PVector checkPos) {return isInside(checkPos.x, checkPos.y);}
- public boolean isInside(float checkPosX, float checkPosY)
- {
- boolean inWidth = checkPosX > pos.x && checkPosX < pos.x+size.x;
- boolean inHeight = checkPosY > pos.y && checkPosY < pos.y+size.y;
- return inWidth && inHeight;
- }
- public TextBox(PVector size, PVector pos) {this(pos.x, pos.y, size.x, size.y);}
- public TextBox(float x, float y, float w, float h)
- {
- pos.x = x; pos.y = y; size.x = w; size.y = h;
- buffer = createGraphics(floor(w), floor(h), P2D);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement