package framework.RWT; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import java.io.InputStream; import java3d.ImageComponent2D; import java3d.Texture; import java3d.Texture2D; /** * 画像ローダー * java3d.TextureLoaderから取ってきた * 物体に貼り付けるテクスチャとかには使えないと思われる * RWTSprite用 * * @author s.iwatani */ public class RWTImageLoader { public static final int BY_REFERENCE = 2; public static final int Y_UP = 4; private InputStream in = null; private Resources res = null; private int id = 0; private Bitmap bitmap; private int format, texFormat; public RWTImageLoader(InputStream in, int flags) { this.in = in; } public RWTImageLoader(Resources res, int id, int flags) { this(res, id, flags, ImageComponent2D.FORMAT_RGB); } /** * TextureLoaderコンストラクタ * * @author s.iwatani * @param res Resources * @param id リソースID * @param flags 知らん * @param format 画像がRGBかRGBAか ImageComponent2D.FORMAT_RGBまたはImageComponent2D.FORMAT_RGBA */ public RWTImageLoader(Resources res, int id, int flags, int format) { this.res = res; this.id = id; setFormat(format); } /** * 画像がRGBかRGBAかをセット * * @param format ImageComponent2D.FORMAT_RGBまたはImageComponent2D.FORMAT_RGBA */ public void setFormat(int format) { this.format = format; if (this.format == ImageComponent2D.FORMAT_RGB) { texFormat = Texture.RGB; } else { texFormat = Texture.RGBA; } } public ImageComponent2D getImage() { if (in != null) { bitmap = BitmapFactory.decodeStream(in); } else if (res != null) { bitmap = BitmapFactory.decodeResource(res, id); } if (format == ImageComponent2D.FORMAT_RGBA) { bitmap.setHasAlpha(true); } return new ImageComponent2D(format, bitmap); } public ImageComponent2D setImage(Bitmap bitmap) { this.bitmap = bitmap; return new ImageComponent2D(format, this.bitmap); } public Texture getTexture() { ImageComponent2D ic2 = getImage(); Texture tex = new Texture2D(Texture.BASE_LEVEL, texFormat, bitmap.getWidth(), bitmap.getHeight()); tex.setImage(0, ic2); return tex; } }