Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.lwjgl.LWJGLException;
- import org.lwjgl.Sys;
- import org.lwjgl.input.Keyboard;
- import org.lwjgl.input.Mouse;
- import org.lwjgl.opengl.Display;
- import org.lwjgl.opengl.DisplayMode;
- import org.lwjgl.opengl.GL11;
- public class Core {
- final int WIDTH=800, HEIGHT=600;
- int lastFrame;
- GUI stack;
- public void Start(){
- try {
- Display.setDisplayMode(new DisplayMode(WIDTH,HEIGHT));
- Display.create();
- } catch (LWJGLException e) {
- e.printStackTrace();
- System.exit(0);
- }
- initGL();
- System.out.println("OpenGL version: " + GL11.glGetString(GL11.GL_VERSION));
- boolean Close = Display.isCloseRequested();
- Layer[] layers = new Layer[2];
- Element[] elementsA = new Element[2];
- Element[] elementsB = new Element[4];
- elementsA[0] = new Element("button one", 1, new Square(50,50,150,100));
- elementsA[1] = new Element("button two", 2, new Square(200,50,300,100));
- elementsB[0] = new Element("button three", 3, new Square(50,50,150,100));
- elementsB[1] = new Element("button four", 4, new Square(200,50,300,100));
- elementsB[2] = new Element("button five", 5, new Square(50,200,150,250));
- elementsB[3] = new Element("button six", 6, new Square(200,200,300,250));
- layers[0] = new Layer("layer one", elementsA, new Square(0,0,400,200), new Square(0,0,400,200));
- layers[1] = new Layer("layer two", elementsB, new Square(100,100,500,300), new Square(100,100,500,400));
- stack = new GUI(layers);
- while(!Close){
- GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
- if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE) || Display.isCloseRequested())
- Close = true;
- int delta=getDelta();
- mouseHandler();
- draw();
- Display.update();
- //Display.sync(1);
- }
- }
- private void draw() {
- for(int i=stack.layers.length-1; i>=0; --i){
- double x1 = stack.layers[i].geomVisible.x1;
- double y1 = stack.layers[i].geomVisible.y1;
- double x2 = stack.layers[i].geomVisible.x2;
- double y2 = stack.layers[i].geomVisible.y2;
- double h1 = x1 + ((x2-x1)*(stack.layers[i].hMin));
- double h2 = x1 + ((x2-x1)*(stack.layers[i].hMax));
- double v1 = y1 + ((y2-y1)*(stack.layers[i].vMin));
- double v2 = y1 + ((y2-y1)*(stack.layers[i].vMax));
- //layer
- GL11.glColor3d(0.5,0.5,0.5);
- GL11.glBegin(GL11.GL_QUADS);
- GL11.glVertex2d(x1,y1);
- GL11.glVertex2d(x2,y1);
- GL11.glVertex2d(x2,y2);
- GL11.glVertex2d(x1,y2);
- GL11.glEnd();
- //scroll bars
- GL11.glColor3d(1, 1, 1);
- GL11.glBegin(GL11.GL_QUADS);
- GL11.glVertex2d(h1,y1);
- GL11.glVertex2d(h2,y1);
- GL11.glVertex2d(h2,y1+10);
- GL11.glVertex2d(h1,y1+10);
- GL11.glEnd();
- GL11.glColor3d(1, 1, 1);
- GL11.glBegin(GL11.GL_QUADS);
- GL11.glVertex2d(x2,v1);
- GL11.glVertex2d(x2-10,v1);
- GL11.glVertex2d(x2-10,v2);
- GL11.glVertex2d(x2,v2);
- GL11.glEnd();
- for(int j=0; j<stack.layers[i].elements.length; j++){
- double a1 = stack.layers[i].elements[j].geom.x1 +stack.layers[i].geomActual.x1;
- double b1 = stack.layers[i].elements[j].geom.y1 +stack.layers[i].geomActual.y1;
- double a2 = stack.layers[i].elements[j].geom.x2 +stack.layers[i].geomActual.x1;
- double b2 = stack.layers[i].elements[j].geom.y2 +stack.layers[i].geomActual.y1;
- //button
- GL11.glColor3d(1, 0, 0);
- GL11.glBegin(GL11.GL_QUADS);
- GL11.glVertex2d(a1,b1);
- GL11.glVertex2d(a2,b1);
- GL11.glVertex2d(a2,b2);
- GL11.glVertex2d(a1,b2);
- GL11.glEnd();
- }
- }
- }
- public void mouseHandler(){
- /*if(Mouse.isButtonDown(0)){
- stack.update(true, Mouse.getX(), HEIGHT-Mouse.getY(), Mouse.getDX(), -Mouse.getDY(), 0);
- }*/
- while(Mouse.next()){
- if(Mouse.getEventButton()==0){
- if(Mouse.getEventButtonState()){
- stack.mouseX = Mouse.getEventX();
- stack.mouseY = HEIGHT-Mouse.getEventY();
- //stack.update();
- }else{
- stack.deltaX = Mouse.getEventX()-stack.mouseX;
- stack.deltaY = HEIGHT-Mouse.getEventY()-stack.mouseY;
- stack.update();
- stack.mouseX = 0;
- stack.mouseY = 0;
- stack.deltaX = 0;
- stack.deltaY = 0;
- }
- }
- }
- }
- public int getDelta(){
- long time = getTime();
- int delta = (int) (time - lastFrame);
- lastFrame = (int) time;
- return delta;
- }
- public long getTime(){
- return (Sys.getTime()*1000)/Sys.getTimerResolution();
- }
- public void initGL(){
- GL11.glEnable(GL11.GL_TEXTURE_2D);
- //GL11.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
- GL11.glViewport(0,0,WIDTH,HEIGHT);
- GL11.glMatrixMode(GL11.GL_MODELVIEW);
- GL11.glMatrixMode(GL11.GL_PROJECTION);
- GL11.glLoadIdentity();
- GL11.glOrtho(0, WIDTH, HEIGHT, 0, 1, -1);
- GL11.glMatrixMode(GL11.GL_MODELVIEW);
- }
- public static void main(String args[]){
- Core m = new Core();
- m.Start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement