// (c) Matti Katila and Tuomas J. Lukka package gzz.vob; import java.awt.Color; import java.awt.Graphics; import java.awt.Dimension; import gzz.gfx.gl.*; import gzz.client.GraphicsAPI; import gzz.util.ColorUtil; /** A solid clear-and-paint-background vob. */ public class SolidBgVob extends Vob{ GraphicsAPI.Window win; Color color; /** Create a new SolidBgVob. * @param win The window this vob will be used in. This is * needed to get the dimensions of the rectangle * java.awt.Graphics needs to fill; OpenGL doesn't * need this. */ public SolidBgVob(GraphicsAPI.Window win, Color color) { this.win = win; this.color = color; } // AWT public void render(Graphics g, boolean fast, Vob.RenderInfo info1, Vob.RenderInfo info2) { Dimension dim = win.getSize(); g.setColor(color); g.fillRect(0, 0, dim.width, dim.height); g.setColor(Color.black); } // GL private String getGLStr() { return "ClearColor " + ColorUtil.colorGLString(color) + " 0\n"+ "Clear COLOR_BUFFER_BIT DEPTH_BUFFER_BIT\n"+ "Enable TEXTURE_2D\n"+ "Enable ALPHA_TEST\n"+ "AlphaFunc GREATER 0\n"+ "Enable BLEND\n"+ "BlendFunc SRC_ALPHA ONE_MINUS_SRC_ALPHA\n"+ "Color 1 1 1 1\n"+ ""; } Vob glList; public int addToListGL(gzz.client.GraphicsAPI.Window win, int[] list, int curs, int coordsys1, int coordsys2) { if(glList == null) { glList = GZZGL.createCallList( getGLStr() ); } curs = glList.addToListGL( win, list, curs, coordsys1, coordsys2); return curs; } }