Package org.newdawn.slick.tests

Source Code of org.newdawn.slick.tests.GeomAccuracyTest

package org.newdawn.slick.tests;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.geom.Ellipse;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.geom.RoundedRectangle;

/**
* A simple graphics test for the context allowing vector based graphics
*
* @author kevin
*/
public class GeomAccuracyTest extends BasicGame {
  /** The container holding this test */
  private GameContainer container;
 
  /** The Geometry color */
  private Color geomColor;
 
  /** The overlay color */
  private Color overlayColor;
 
  /** Indicates overlay should be hidden */
  private boolean hideOverlay;
 
  /** The current color pair id */
  private int colorIndex;
 
  /** The current test taking place */
  private int curTest;
 
  /** The number of tests to do */
  private static final int NUMTESTS = 3;
 
  /** An image used to magnify where the mouse is */
  private Image magImage;
 
  /**
   * Create a new test of graphics context rendering
   */
  public GeomAccuracyTest() {
    super("Geometry Accuracy Tests");
  }
 
  /**
   * @see org.newdawn.slick.BasicGame#init(org.newdawn.slick.GameContainer)
   */
  public void init(GameContainer container) throws SlickException {
    this.container = container;
   
    geomColor = Color.magenta;
    overlayColor = Color.white;
   
    magImage = new Image(21, 21);
  }

  /**
   * @see org.newdawn.slick.BasicGame#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
   */
  public void render(GameContainer container, Graphics g) {
   
    String text = new String();
   
    switch(curTest) {
   
    case 0:
        text = "Rectangles";
        rectTest(g);
        break;
       
    case 1:
        text = "Ovals";
        ovalTest(g);
        break;
       
    case 2:
        text ="Arcs";
        arcTest(g);
        break;
    }
   
    g.setColor(Color.white);
    g.drawString("Press T to toggle overlay", 200, 55);
    g.drawString("Press N to switch tests", 200, 35);
    g.drawString("Press C to cycle drawing colors", 200, 15);
    g.drawString("Current Test:", 400, 35);
    g.setColor(Color.blue);
    g.drawString(text, 485, 35);
   
    g.setColor(Color.white);
    g.drawString("Normal:", 10, 150);
    g.drawString("Filled:", 10, 300);
   
    g.drawString("Drawn with Graphics context", 125, 400);
    g.drawString("Drawn using Shapes", 450, 400);
   
    // Grab our mouse position and copy the screen to our magnified image
    g.copyArea(magImage, container.getInput().getMouseX() - 10, container.getInput().getMouseY() - 10);
    magImage.draw(351, 451, 5);
    g.drawString("Mag Area -", 250, 475);
    g.setColor(Color.darkGray);
    g.drawRect(350, 450, 106, 106);
   
    g.setColor(Color.white);
    g.drawString("NOTE:", 500, 450);
    g.drawString("lines should be flush with edges", 525, 470);
    g.drawString("corners should be symetric", 525, 490);
   
  }
 
  /**
   * Draws arcs
   * @param g
   */
  void arcTest(Graphics g) {
   
    if(hideOverlay == false) {
      g.setColor(overlayColor);
      g.drawLine(198, 100, 198, 198);
      g.drawLine(100, 198, 198, 198);
    }
   
    g.setColor(geomColor);
    g.drawArc(100, 100, 99, 99, 0, 90);

 
  }
 
  /**
   * Draws ovals
   * @param g
   */
  void ovalTest(Graphics g) {

    g.setColor(geomColor);
    g.drawOval(100, 100, 99, 99);
    g.fillOval(100, 250, 99, 99);
   
    //Circle circ = new Circle(400, 100, 99);
    Ellipse elip = new Ellipse(449, 149, 49, 49);
    g.draw(elip);
    elip = new Ellipse(449, 299, 49, 49);
    g.fill(elip);
   
    if(hideOverlay == false) {
      g.setColor(overlayColor);
      g.drawLine(100, 149, 198, 149);
      g.drawLine(149, 100, 149, 198);
     
      g.drawLine(100, 149 + 150, 198, 149 + 150);
      g.drawLine(149, 100 + 150, 149, 198 + 150);
     
      g.drawLine(100 + 300, 149, 198 + 300, 149);
      g.drawLine(149 + 300, 100, 149 + 300, 198);     
     
      g.drawLine(100 + 300, 149 + 150, 198 + 300, 149 + 150);
      g.drawLine(149 + 300, 100 + 150, 149 + 300, 198 + 150);     
    }
   

  }
 
  /**
   * Draws rects
   * @param g
   */
  void rectTest(Graphics g) {

    g.setColor(geomColor);
   
    // Draw using graphics routines
    g.drawRect(100, 100, 99, 99);
    g.fillRect(100, 250, 99, 99);
   
    g.drawRoundRect(250, 100, 99, 99, 10);
    g.fillRoundRect(250, 250, 99, 99, 10);
   
    // Draw using shape routines
    Rectangle rect = new Rectangle(400, 100, 99, 99);
    g.draw(rect);
    rect = new Rectangle(400, 250, 99, 99);
    g.fill(rect);
   
    RoundedRectangle rrect = new RoundedRectangle(550, 100, 99, 99, 10);
    g.draw(rrect);
    rrect = new RoundedRectangle(550, 250, 99, 99, 10);
    g.fill(rrect);
   
    // Draw our overlays
    if(hideOverlay == false) {
       g.setColor(overlayColor);
      
       // Upper row
      g.drawLine(100, 149, 198, 149);
      g.drawLine(149, 100, 149, 198);
     
      g.drawLine(100 + 150, 149, 198 + 150, 149);
      g.drawLine(149 + 150, 100, 149 + 150, 198);
 
      g.drawLine(100 + 300, 149, 198 + 300, 149);
      g.drawLine(149 + 300, 100, 149 + 300, 198);
     
      g.drawLine(100 + 450, 149, 198 + 450, 149);
      g.drawLine(149 + 450, 100, 149 + 450, 198);
     
       // Lower row
      g.drawLine(100, 149 + 150, 198, 149 + 150);
      g.drawLine(149, 100 + 150, 149, 198 + 150);
     
      g.drawLine(100 + 150, 149 + 150, 198 + 150, 149 + 150);
      g.drawLine(149 + 150, 100 + 150, 149 + 150, 198 + 150);
 
      g.drawLine(100 + 300, 149 + 150, 198 + 300, 149 + 150);
      g.drawLine(149 + 300, 100 + 150, 149 + 300, 198 + 150);
     
      g.drawLine(100 + 450, 149 + 150, 198 + 450, 149 + 150);
      g.drawLine(149 + 450, 100 + 150, 149 + 450, 198 + 150);
    }   
  }

  /**
   * @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
   */
  public void update(GameContainer container, int delta) {
   
  }

  /**
   * @see org.newdawn.slick.BasicGame#keyPressed(int, char)
   */
  public void keyPressed(int key, char c) {
    if (key == Input.KEY_ESCAPE) {
      System.exit(0);
    }
   
    if(key == Input.KEY_N) {
      curTest++;
      curTest %= NUMTESTS;
    }
   
    if(key == Input.KEY_C) {
      colorIndex++;
     
      colorIndex %= 4;
      setColors();
    }
   
    if(key == Input.KEY_T) {
      hideOverlay = !hideOverlay;
    }

  }
 
  /**
   * Used to set the colors for overlay and geometry
   *
   */
  private void setColors() {
    switch(colorIndex)
    {
      case 0:
        overlayColor = Color.white;
        geomColor = Color.magenta;
        break;
 
      case 1:
        overlayColor = Color.magenta;
        geomColor = Color.white;
        break;
 
      case 2:
        overlayColor = Color.red;
        geomColor = Color.green;
        break;
 
      case 3:
        overlayColor = Color.red;
        geomColor = Color.white;
        break;
    }
  }
 
  /**
   * Entry point to our test
   *
   * @param argv
   *            The arguments passed to the test
   */
  public static void main(String[] argv) {
    try {
      AppGameContainer container = new AppGameContainer(new GeomAccuracyTest());
      container.setDisplayMode(800, 600, false);
      container.start();
    } catch (SlickException e) {
      e.printStackTrace();
    }
  }
}
TOP

Related Classes of org.newdawn.slick.tests.GeomAccuracyTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.