/*
 * OverlayCanvas3D.java
 *
 * Created on February 12, 2002, 11:15 PM
 */

package Astroblocks.Application.GUIParts.Overlay;

/**
 *
 * @author  Ian Nieves
 * @version 
 */
public class OverlayCanvas3D extends javax.media.j3d.Canvas3D  {

    OverlayPanel overlayPanel;
    OverlayGraphics overlayGraphics;
    
    
    public OverlayCanvas3D(java.awt.GraphicsConfiguration graphicsConfiguration, boolean offScreen, OverlayPanel inOverlayPanel) {
        super(graphicsConfiguration, offScreen);
        overlayPanel = inOverlayPanel; 
        overlayGraphics = new OverlayGraphics(this);
    }
    
    public OverlayCanvas3D(java.awt.GraphicsConfiguration graphicsConfiguration, OverlayPanel inOverlayPanel) {
        super(graphicsConfiguration);
        overlayPanel = inOverlayPanel; 
        overlayGraphics = new OverlayGraphics(this);
    }
    
/*
    public void processComponentEvent(java.awt.event.ComponentEvent e){
        //overlayPanel.dispatchEvent(e);
        //System.out.println(e);
    }

    public void processKeyEvent(java.awt.event.KeyEvent e){
        //overlayPanel.dispatchEvent(e);
        //System.out.println(e);
    }
    
    public void processInputMethodEvent(java.awt.event.InputMethodEvent e){
        //overlayPanel.dispatchEvent(e);
        //System.out.println(e);
    }
    
    public void processMouseEvent(java.awt.event.MouseEvent e){
        //overlayPanel.dispatchEvent(e);
        //System.out.println(e.isConsumed() + "XXX" + e.getSource());
    }

    public void processMouseMotionEvent(java.awt.event.MouseEvent e){
        //overlayPanel.dispatchEvent(e);
        //System.out.println(e.isConsumed() + "XXX" + e.getSource());
    }
    */
    // after rendering the backbuffer, but before the swap
    public void postRender(){
        
        
        overlayPanel.paintOverlay(overlayGraphics);
        overlayGraphics.flush(false);
        

    }
    

    
    // after rendering the backbuffer, but after the swap
    //public void postSwap(){
    //    super.postSwap();
        /*if(printTime ){
            swapTime  = System.currentTimeMillis() - overlayFlushTime - overlayDrawTime - overlayPaintTime - renderTime - initialTime;
            totalTime = renderTime + overlayPaintTime + overlayDrawTime + overlayFlushTime + swapTime;
            //if(totalTime >= 70){
                System.out.println("renderTime: " + renderTime);
                System.out.println("overlayPaintTime: " + overlayPaintTime);
                System.out.println("overlayDrawTime: " + overlayDrawTime);
                System.out.println("overlayFlushTime: " + overlayFlushTime);
                System.out.println("swapTime: " + swapTime);
                System.out.println("totalTime: " + (renderTime + overlayPaintTime + overlayDrawTime + overlayFlushTime + swapTime));
                System.out.println("---------------------------------");
            //}
        }*/
    //}
    

}
// by flushing(true) after draw and paint times went from 250 -> 150
// by flushing(false) after draw and paint times went to about 50, with intermittent 150s in the swap
// deal with redundant calls to paint caused by the normal event loop