/*
* PROJECT: NyARToolkit
* --------------------------------------------------------------------------------
* This work is based on the original ARToolKit developed by
* Hirokazu Kato
* Mark Billinghurst
* HITLab, University of Washington, Seattle
* http://www.hitl.washington.edu/artoolkit/
*
* The NyARToolkit is Java edition ARToolKit class library.
* Copyright (C)2008-2009 Ryo Iizuka
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For further information please contact.
* http://nyatla.jp/nyatoolkit/
* <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>
*
*/
package jp.nyatla.nyartoolkit.core.rasterreader;
import jp.nyatla.nyartoolkit.*;
import jp.nyatla.nyartoolkit.core.raster.rgb.*;
/**
* このインタフェイスは、ラスタからRGBピクセル値を読みだす関数を定義します。
* {@link INyARRgbRaster}インタフェイスを実装したクラスで使うことを想定しています。
* RGBデータは、0から255までの範囲を持ちます。
*/
public interface INyARRgbPixelReader
{
/**
* この関数は、指定した座標の1ピクセル分のRGBデータを、配列に格納して返します。
* 実装クラスでは、バッファから指定した座標のRGB値を取得する処理を実装してください。
* @param i_x
* 取得するピクセルの座標。画像の範囲内である事。
* @param i_y
* 取得するピクセルの座標。画像の範囲内である事。
* @param i_rgb
* ピクセル値を返却する配列を指定します。3要素以上の配列が必要です。
* 値は、[R][G][B]の順に格納します。
* @throws NyARException
*/
public void getPixel(int i_x, int i_y, int[] i_rgb) throws NyARException;
/**
* この関数は、座標群から、ピクセルごとのRGBデータを、配列に格納して返します。
* 実装クラスでは、バッファから、座標軍のRGB値を取得する処理を実装してください。
* @param i_x
* 取得するピクセルの座標配列。画像の範囲内である事。
* @param i_y
* 取得するピクセルの座標配列。画像の範囲内である事。
* @param i_num
* 取得するピクセルの数を指定します。
* @param i_intrgb
* ピクセル値を返却する配列を指定します。3要素以上の配列が必要です。
* 値は、[R1][G1][B1][R2][G2][B2]の順に格納します。
* @throws NyARException
*/
public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] i_intrgb) throws NyARException;
/**
* この関数は、RGBデータを指定した座標のピクセルにセットします。
* 実装クラスでは、バッファにRGB値を書込む処理を実装してください。
* @param i_x
* 書込むピクセルの座標。画像の範囲内である事。
* @param i_y
* 書込むピクセルの座標。画像の範囲内である事。
* @param i_r
* R成分のピクセル値。
* @param i_g
* G成分のピクセル値。
* @param i_b
* B成分のピクセル値。
* @throws NyARException
*/
public void setPixel(int i_x, int i_y, int i_r,int i_g,int i_b) throws NyARException;
/**
* この関数は、RGBデータを指定した座標のピクセルにセットします。
* 実装クラスでは、バッファにRGB値を書込む処理を実装してください。
* @param i_x
* 書込むピクセルの座標。画像の範囲内である事。
* @param i_y
* 書込むピクセルの座標。画像の範囲内である事。
* @param i_rgb
* 設定するピクセル値。3要素以上の配列が必要です。
* 値は、[R][G][B]の順に格納します。
* @throws NyARException
*/
public void setPixel(int i_x, int i_y, int[] i_rgb) throws NyARException;
/**
* この関数は、座標群にピクセルごとのRGBデータをセットします。
* 実装クラスでは、バッファにRGB値を書込む処理を実装してください。
* @param i_x
* 取得するピクセルの座標配列。画像の範囲内である事。
* @param i_y
* 取得するピクセルの座標配列。画像の範囲内である事。
* @param i_num
* 設定するピクセルの数を指定します。
* @param i_intrgb
* 設定するピクセル値を格納する配列を指定します。3×i_num要素以上の配列が必要です。
* 値は、[R1][G1][B1][R2][G2][B2]の順に格納します。
* @throws NyARException
*/
public void setPixels(int[] i_x, int[] i_y, int i_num, int[] i_intrgb) throws NyARException;
/**
* この関数は、参照しているバッファをi_ref_bufferへ切り替えます。
* 通常は、このインスタンスを所有するクラスが使います。ユーザが使うことはありません。
* 内部パラメータのチェックは、実装依存です。
* @param i_ref_buffer
* 切り替えるバッファ
* @throws NyARException
*/
public void switchBuffer(Object i_ref_buffer) throws NyARException;
}