/*
 * $Id: PixelPointer.java,v 1.2 2000/06/15 13:55:51 yamauchi Exp $
 *     (M\pi)^2 : PixelPointer 
 *	Copyright 1999 By YAMAUCHI Hitoshi 山内 斉 
 *	@author YAMAUCHI Hitoshi 山内 斉
 *
 *	RayTracing での初期光分散のための pixel pointer
 *	
 * original source screenPointer.h
 *
 *	pixel pointer class 
 *	    scan type : allscan 	全画面を順番にスキャンする
 *			scanlinescan 	scanline を PE に割り当てる
 *			distributedscan	distributed に PE へ割り当てる
 *	初期レイ発生時に screen 上の pixel をスキャンする
 *	
 * オブジェクト空間分割型並列計算モデルに基づく並列計算での初期光分散
 * の考えは 1997 に前田隆之によって提案され、最初に前田隆之によって実
 * 装された. 前田君の実装では，#ifdef によって切り換えていたため，変更
 * 点の効果を見るにはコンパイルしなおしが必要であった．私はそれを統一
 * して扱えるよう rewrite した．   
 *
 * 1999年8月 6日(金)
 */

package jp.ac.tohoku.is.archi.mpi2.raytrace;

/**
 * screen の pixel 位置を保持し、次の位置を発生する PixelPointer の 
 * Interface 
 */
public abstract class PixelPointer  {
    protected int mMaxX;	// screen max X
    protected int mMaxY;	// 	      Y
    protected int mX;		// 現在の screen 位置 X
    protected int mY;		// 		      Y
 
    public PixelPointer()
    {
	this.mMaxX	= -1;
	this.mMaxY 	= -1;
	this.mX 	= -1;
	this.mY 	= -1;
    }
    
    /**
     * 自分の scan type を返す
     */
    public abstract String getScreenPointerType();

    /**
     * 次の pixel 位置を取り出す
     */
    public abstract boolean next();

    /**
     * 今の screen 位置を取り出す
     */
    public int getPixelPosX()
    {
	return(this.mX);
    }
    public int getPixelPosY()
    {
	return(this.mY);
    }
}

