mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-09 13:21:51 +09:00
added sources for Slick
Former-commit-id: 1647fa32ef6894bd7db44f741f07c2f4dcdf9054 Former-commit-id: 0e5810dcfbe1fd59b13e7cabe9f1e93c5542da2d
This commit is contained in:
167
lib/slick-source/org/newdawn/slick/tests/ImageGraphicsTest.java
Normal file
167
lib/slick-source/org/newdawn/slick/tests/ImageGraphicsTest.java
Normal file
@@ -0,0 +1,167 @@
|
||||
package org.newdawn.slick.tests;
|
||||
|
||||
import org.newdawn.slick.AngelCodeFont;
|
||||
import org.newdawn.slick.AppGameContainer;
|
||||
import org.newdawn.slick.BasicGame;
|
||||
import org.newdawn.slick.Color;
|
||||
import org.newdawn.slick.Font;
|
||||
import org.newdawn.slick.GameContainer;
|
||||
import org.newdawn.slick.Graphics;
|
||||
import org.newdawn.slick.Image;
|
||||
import org.newdawn.slick.SlickException;
|
||||
import org.newdawn.slick.opengl.pbuffer.GraphicsFactory;
|
||||
|
||||
/**
|
||||
* A test for rendering to an image
|
||||
*
|
||||
* @author kevin
|
||||
*/
|
||||
public class ImageGraphicsTest extends BasicGame {
|
||||
/** The image loaded and then rendered to */
|
||||
private Image preloaded;
|
||||
/** The image rendered to */
|
||||
private Image target;
|
||||
/** The image cut from the screen */
|
||||
private Image cut;
|
||||
/** The offscreen graphics */
|
||||
private Graphics gTarget;
|
||||
/** The offscreen graphics */
|
||||
private Graphics offscreenPreload;
|
||||
/** The image loaded */
|
||||
private Image testImage;
|
||||
/** The font loaded */
|
||||
private Font testFont;
|
||||
/** The angle of the rotation */
|
||||
private float ang;
|
||||
/** The name of the dynamic image technique in use */
|
||||
private String using = "none";
|
||||
|
||||
/**
|
||||
* Create a new image rendering test
|
||||
*/
|
||||
public ImageGraphicsTest() {
|
||||
super("Image Graphics Test");
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#init(org.newdawn.slick.GameContainer)
|
||||
*/
|
||||
public void init(GameContainer container) throws SlickException {
|
||||
testImage = new Image("testdata/logo.png");
|
||||
preloaded = new Image("testdata/logo.png");
|
||||
testFont = new AngelCodeFont("testdata/hiero.fnt","testdata/hiero.png");
|
||||
target = new Image(400,300);
|
||||
cut = new Image(100,100);
|
||||
gTarget = target.getGraphics();
|
||||
offscreenPreload = preloaded.getGraphics();
|
||||
|
||||
offscreenPreload.drawString("Drawing over a loaded image", 5, 15);
|
||||
offscreenPreload.setLineWidth(5);
|
||||
offscreenPreload.setAntiAlias(true);
|
||||
offscreenPreload.setColor(Color.blue.brighter());
|
||||
offscreenPreload.drawOval(200, 30, 50, 50);
|
||||
offscreenPreload.setColor(Color.white);
|
||||
offscreenPreload.drawRect(190,20,70,70);
|
||||
offscreenPreload.flush();
|
||||
|
||||
if (GraphicsFactory.usingFBO()) {
|
||||
using = "FBO (Frame Buffer Objects)";
|
||||
} else if (GraphicsFactory.usingPBuffer()) {
|
||||
using = "Pbuffer (Pixel Buffers)";
|
||||
}
|
||||
|
||||
System.out.println(preloaded.getColor(50,50));
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#render(org.newdawn.slick.GameContainer, org.newdawn.slick.Graphics)
|
||||
*/
|
||||
public void render(GameContainer container, Graphics g) throws SlickException {
|
||||
|
||||
// RENDERING TO AN IMAGE AND THEN DRAWING IT TO THE DISPLAY
|
||||
// Draw graphics and text onto our graphics context from the Image target
|
||||
gTarget.setBackground(new Color(0,0,0,0));
|
||||
gTarget.clear();
|
||||
gTarget.rotate(200,160,ang);
|
||||
gTarget.setFont(testFont);
|
||||
gTarget.fillRect(10, 10, 50, 50);
|
||||
gTarget.drawString("HELLO WORLD",10,10);
|
||||
|
||||
gTarget.drawImage(testImage,100,150);
|
||||
gTarget.drawImage(testImage,100,50);
|
||||
gTarget.drawImage(testImage,50,75);
|
||||
|
||||
// Note we started by clearing the offscreen graphics area and then end
|
||||
// by calling flush
|
||||
gTarget.flush();
|
||||
|
||||
g.setColor(Color.red);
|
||||
g.fillRect(250, 50, 200, 200);
|
||||
// The image has been updated using its graphics context, so now draw the image
|
||||
// to the screen a few times
|
||||
target.draw(300,100);
|
||||
target.draw(300,410,200,150);
|
||||
target.draw(505,410,100,75);
|
||||
|
||||
// Draw some text on the screen to indicate what we did and put some
|
||||
// nice boxes around the three areas
|
||||
g.setColor(Color.white);
|
||||
g.drawString("Testing On Offscreen Buffer", 300, 80);
|
||||
g.setColor(Color.green);
|
||||
g.drawRect(300, 100, target.getWidth(), target.getHeight());
|
||||
g.drawRect(300, 410, target.getWidth()/2, target.getHeight()/2);
|
||||
g.drawRect(505, 410, target.getWidth()/4, target.getHeight()/4);
|
||||
|
||||
// SCREEN COPY EXAMPLE
|
||||
// Put some text and simple graphics on the screen to test copying
|
||||
// from the screen to a target image
|
||||
g.setColor(Color.white);
|
||||
g.drawString("Testing Font On Back Buffer", 10, 100);
|
||||
g.drawString("Using: "+using, 10, 580);
|
||||
g.setColor(Color.red);
|
||||
g.fillRect(10,120,200,5);
|
||||
|
||||
// Copy the screen area into a destination image
|
||||
int xp = (int) (60 + (Math.sin(ang / 60) * 50));
|
||||
g.copyArea(cut,xp,50);
|
||||
|
||||
// Draw the copied image to the screen and put some nice
|
||||
// boxes around the source and the destination
|
||||
cut.draw(30,250);
|
||||
g.setColor(Color.white);
|
||||
g.drawRect(30, 250, cut.getWidth(), cut.getHeight());
|
||||
g.setColor(Color.gray);
|
||||
g.drawRect(xp, 50, cut.getWidth(), cut.getHeight());
|
||||
|
||||
// ALTERING A LOADED IMAGE EXAMPLE
|
||||
// Draw the image we loaded in the init method and then modified
|
||||
// by drawing some text and simple geometry on it
|
||||
preloaded.draw(2,400);
|
||||
g.setColor(Color.blue);
|
||||
g.drawRect(2,400,preloaded.getWidth(),preloaded.getHeight());
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.newdawn.slick.BasicGame#update(org.newdawn.slick.GameContainer, int)
|
||||
*/
|
||||
public void update(GameContainer container, int delta) {
|
||||
ang += delta * 0.1f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Entry point to our test
|
||||
*
|
||||
* @param argv The arguments to pass into the test
|
||||
*/
|
||||
public static void main(String[] argv) {
|
||||
try {
|
||||
GraphicsFactory.setUseFBO(false);
|
||||
|
||||
AppGameContainer container = new AppGameContainer(new ImageGraphicsTest());
|
||||
container.setDisplayMode(800,600,false);
|
||||
container.start();
|
||||
} catch (SlickException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user