// (C) 2001 SyGem Software import java.awt.*; import java.applet.*; import com.sygem.jazz3d3.*; import com.sygem.jazz3d3.primitive.Cube3d; import com.sygem.visimagik.*; public class visimagikDemo extends Applet implements Runnable { Thread m_ce; World myWorld; int light1; int pid; Visimagik vm = new Visimagik(); int filterId = 0; int filterId2 = 0; int filterId3 = 0; int filterId4 = 0; int downx = 0; int downy = 0; double ddx = 0; double ddy = 0; boolean down = false; boolean antialias = false; boolean bilinear = false; //Construct the applet public visimagikDemo() { } //Initialize the applet public void init() { myWorld = new World(this); setLayout(new BorderLayout()); add("Center",myWorld); } //Start the applet public void start() { if (m_ce == null) { m_ce = new Thread(this); m_ce.start(); } } //Stop the applet public void stop() { if (m_ce != null) { m_ce.stop(); m_ce = null; } } //Destroy the applet public void destroy() { } public void run() { int iCount = 0; long lTime0 = System.currentTimeMillis(); double z; ddx = 0.16; ddy = 0.35; z = 0.21; int tt = 0; myWorld.prep(); RenderTextured texture_mapper = new RenderTextured(); painter(1); String temp = "images/koli/koli0.gif"; Texture tx = TextureLoader.loadImage(temp); painter(2); String temp1 = "images/koli/koli1.gif"; Texture tx1 = TextureLoader.loadImage(temp1); painter(3); String temp2 = "images/koli/koli2.gif"; Texture tx2 = TextureLoader.loadImage(temp2); painter(4); String temp3 = "images/koli/koli3.gif"; Texture tx3 = TextureLoader.loadImage(temp3); painter(5); String temp4 = "images/koli/koli4.gif"; Texture tx4 = TextureLoader.loadImage(temp4); painter(6); String temp5 = "images/koli/koli5.gif"; Texture tx5 = TextureLoader.loadImage(temp5); painter(7); String temp6 = "images/koli/koli6.gif"; Texture tx6 = TextureLoader.loadImage(temp6); int t = texture_mapper.setTexture(tx); t = texture_mapper.setTexture(tx1); t = texture_mapper.setTexture(tx2); t = texture_mapper.setTexture(tx3); t = texture_mapper.setTexture(tx4); t = texture_mapper.setTexture(tx5); t = texture_mapper.setTexture(tx6); Cube3d cube = new Cube3d(0,0,8); cube.setRenderer(texture_mapper); pid = myWorld.addObject(cube); FilterEmboss fe = new FilterEmboss(); Texture mask1 = TextureLoader.loadImage("images/mask1.gif", Texture.VSMALL); fe.setMask(mask1.getTextureArray(), mask1.getWidth(), mask1.getHeight()); filterId = vm.addFilter(fe); FilterGreyscale fg = new FilterGreyscale(); Texture mask2 = TextureLoader.loadImage("images/mask2.gif", Texture.VSMALL); fg.setMask(mask2.getTextureArray(), mask2.getWidth(), mask2.getHeight()); filterId2 = vm.addFilter(fg); FilterMotion fm = new FilterMotion(); Texture mask3 = TextureLoader.loadImage("images/mask3.gif", Texture.VSMALL); fm.setMask(mask3.getTextureArray(), mask3.getWidth(), mask3.getHeight()); filterId3 = vm.addFilter(fm); FilterNegative fn = new FilterNegative(); Texture mask4 = TextureLoader.loadImage("images/mask4.gif", Texture.VSMALL); fn.setMask(mask4.getTextureArray(), mask4.getWidth(), mask4.getHeight()); filterId4 = vm.addFilter(fn); Light l1 = new Light(0,0,1); myWorld.addLight(l1); vm.setDimension(myWorld.size()); myWorld.prepNewObjects(); while (true) { myWorld.getParentObject(pid).rotateWorld(ddy,ddx,z); ((RenderTextured)(myWorld.getParentObject(pid).getRenderer())).setTexture(tt++); if (tt > 6) tt = 0; myWorld.prepareCanvas(); myWorld.generateImage(); vm.setImage(myWorld.getImage(), myWorld.size().width, myWorld.size().height); vm.runFilter(filterId); vm.runFilter(filterId2); vm.runFilter(filterId3); vm.runFilter(filterId4); myWorld.setImage(vm.getImage()); myWorld.drawImage(); myWorld.finishCanvas(); } } void painter(int i) { myWorld.prepareCanvas(); myWorld.drawImage(); Graphics g = myWorld.getCanvas(); g.setColor(new Color(255,0,0)); g.drawString("Loading image "+i,20,80); myWorld.finishCanvas(); } public boolean mouseDown(Event evt, int x, int y) { downx = x; downy = y; down = true; return true; } public boolean mouseUp(Event evt, int x, int y) { down = false; return true; } public boolean mouseDrag(Event evt, int x, int y) { if (down) { double dx = x - downx; double dy = y - downy; ddx = (dx / (this.size().width))*10.0; ddy = (dy / (this.size().height))*10.0; } return true; } public boolean keyDown(Event evt,int key) { if ((char)key=='a') {antialias=!antialias; myWorld.setAntiAliasing(antialias); return true; } if ((char)key=='b') {bilinear=!bilinear; myWorld.setBilinear(bilinear); return true; } return true; } }