// Path: ARMusicKit/base/src/main/java/org/artoolkit/ar/base/camera/CameraRotationInfo.java
// public class CameraRotationInfo {
// 	// 基準からの回転角度
// 	public int rotation;
// 
// 	// 左右反転必要かどうか
// 	public boolean mirror;
// 
// 	/**
// 	 * @param rotation setCameraDisplayOrientation()のboilarplateで、最後に算出されたresult角度.
// 	 * @param front フロントカメラかどうか
// 	 */
// 	public CameraRotationInfo(int rotation, boolean front) {
// 		if( front ) {
// 			// フロントカメラは180度がベース
// 			this.rotation = (rotation + 180) % 360;
// 			// 鏡面反転する
// 			this.mirror = true;
// 		} else {
// 			// リアカメラは0度がベース
// 			this.rotation = rotation;
// 			// 鏡面反転しない
// 			this.mirror = false;
// 		}
// 	}
// }


import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import org.artoolkit.ar.base.ARToolKit;
import org.artoolkit.ar.base.camera.CameraRotationInfo;
	}

	/**
	 * マーカー認識時に表示するテクスチャ(ストライプ画像)をロード
	 * (MusicBoxの場合は呼ばれない)
	 */
	boolean loadMarkerTexture(GL10 gl, Context context, String textureAssetPath) {
		return markerPlane.loadGLTexture(gl, context, textureAssetPath);
	}

	/**
	 * 発音時に表示するテクスチャ(パッ画像)をロード
	 */
	boolean loadActionTexture(GL10 gl, Context context, String textureAssetPath) {
		return actionPlane.loadGLTexture(gl, context, textureAssetPath);
	}

	protected boolean isTracked() {
		ARToolKit ar = ARToolKit.getInstance();
		return ar.queryMarkerVisible(markerId);
	}

	protected void cacheMarkerMatrix(float markerMatrix[]) {
		if (cachedMarkerMatrix == null || cachedMarkerMatrix.length != markerMatrix.length) {
			cachedMarkerMatrix = new float[markerMatrix.length];
		}
		System.arraycopy(markerMatrix, 0, cachedMarkerMatrix, 0, markerMatrix.length);
		markerMatrixCached = true;
	}

// Path: ARMusicKit/base/src/main/java/org/artoolkit/ar/base/camera/CameraRotationInfo.java
// public class CameraRotationInfo {
// 	// 基準からの回転角度
// 	public int rotation;
// 
// 	// 左右反転必要かどうか
// 	public boolean mirror;
// 
// 	/**
// 	 * @param rotation setCameraDisplayOrientation()のboilarplateで、最後に算出されたresult角度.
// 	 * @param front フロントカメラかどうか
// 	 */
// 	public CameraRotationInfo(int rotation, boolean front) {
// 		if( front ) {
// 			// フロントカメラは180度がベース
// 			this.rotation = (rotation + 180) % 360;
// 			// 鏡面反転する
// 			this.mirror = true;
// 		} else {
// 			// リアカメラは0度がベース
// 			this.rotation = rotation;
// 			// 鏡面反転しない
// 			this.mirror = false;
// 		}
// 	}
// }


// Path: ARMusicKit/app/src/main/java/com/yurisuzuki/ar/Marker.java
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import org.artoolkit.ar.base.ARToolKit;
import org.artoolkit.ar.base.camera.CameraRotationInfo;

	}

	/**
	 * マーカー認識時に表示するテクスチャ(ストライプ画像)をロード
	 * (MusicBoxの場合は呼ばれない)
	 */
	boolean loadMarkerTexture(GL10 gl, Context context, String textureAssetPath) {
		return markerPlane.loadGLTexture(gl, context, textureAssetPath);
	}

	/**
	 * 発音時に表示するテクスチャ(パッ画像)をロード
	 */
	boolean loadActionTexture(GL10 gl, Context context, String textureAssetPath) {
		return actionPlane.loadGLTexture(gl, context, textureAssetPath);
	}

	protected boolean isTracked() {
		ARToolKit ar = ARToolKit.getInstance();
		return ar.queryMarkerVisible(markerId);
	}

	protected void cacheMarkerMatrix(float markerMatrix[]) {
		if (cachedMarkerMatrix == null || cachedMarkerMatrix.length != markerMatrix.length) {
			cachedMarkerMatrix = new float[markerMatrix.length];
		}
		System.arraycopy(markerMatrix, 0, cachedMarkerMatrix, 0, markerMatrix.length);
		markerMatrixCached = true;
	}

	protected void adjustMarkerMatrix(float[] matrix, float[] targetMatrix, CameraRotationInfo cameraRotationInfo) {