/*
 Just a little fun.
 Rasterbars
 (c)2005 John Strömstedt (john (AT) netrogenic.com
  Enjoy
*/

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.MIDlet;
import java.io.*;

class theGame extends GameCanvas implements Runnable {
  static RasterBars I;
  static boolean running = true;
  Image tmp;
  static final int ySize = 220;
  int[][] ca = new int[3][ySize];
  sinus sin = new sinus();
  int sa1 = 0;
  int sa2 = 0;
  int sa3 = 0;
  int sa4 = 0;
  int sb4 = 0;
  
  

  public theGame() {
    super(false);
  }
  
  
  void clearTables() {
    for(int i = 0; i < ySize; i++) {
      ca[0][i] = 0;
      ca[1][i] = 0;
      ca[2][i] = 0;
    }
  }
  
  void drawBar(int col,int yPos) {
    int size = 50;
    int a = 1000 / size;
    int s = 0;
    for(int i = 0; i < size; i++) {
      int v = sin.sin(s);	
      ca[col][yPos+i] += v >> 8;
      s += a;	
    }
  }
  
  void drawTable(Graphics g) {
    for(int i = 0; i < ySize; i++) {
    	int cr = ca[0][i];
    	int cg = ca[1][i];
    	int cb = ca[2][i];
     	int c = (cr << 16) | 
     		      (cg << 8)  |
     		       cb
     	;
      g.setColor(c);
      g.drawLine(0,i,this.getWidth(),i);
    }
  }
  
    
  public final void run() {
    running = true;
    
    long ll1 = System.currentTimeMillis();
    while(running) {

      clearTables();

      Graphics g = getGraphics();

//      g.setColor(0x000000);
//      g.fillRect(0,0,this.getWidth(),this.getHeight());
      
      int pos1 = 60+((sin.sin(sa1)*60) >> 16);
      sa1+=10;
      int pos2 = 60+((sin.sin(sa2)*60) >> 16);
      sa2+=13;
      int pos3 = 60+((sin.sin(sa3)*60) >> 16);
      sa3+=16;
      
      drawBar(0,pos1);
      drawBar(1,pos2);
      drawBar(2,pos3);
      drawTable(g);
      sa4 = sb4;
      sb4 += 10;

      flushGraphics();

      try { Thread.sleep(5); }
      catch (InterruptedException ie) { }

    
    }
    I.destroyApp(false);
    I.notifyDestroyed();
  }

   
} // EoC