package com.android.droidgraph.scene;
import java.util.ArrayList;
import javax.microedition.khronos.opengles.GL10;
import com.android.droidgraph.geom.BoundingBox;
import com.android.droidgraph.geom.Transform3D;
import com.android.droidgraph.material.Material;
import com.android.droidgraph.shape.GLShape;
import com.android.droidgraph.util.SGColorI;
public abstract class SGAbstractShape extends SGLeaf {
public enum Mode {
STROKE, FILL, STROKE_FILL
};
public static SGColorI gColorID = new SGColorI(0, 0, 0, 0);
protected SGColorI m_colorID = new SGColorI();
protected ArrayList<Material> materials = new ArrayList<Material>();
private boolean hasTexture = false;
protected boolean selected;;
protected String TAG = "SGAbstractShape";
public SGAbstractShape() {
this(false);
gColorID.color[0]++;
if (gColorID.color[0] > 255) {
gColorID.color[0] = 255;
gColorID.color[1]++;
if (gColorID.color[1] > 255) {
gColorID.color[1] = 255;
gColorID.color[2]++;
if(gColorID.color[2] > 255) {
gColorID.color[2] = 255;
gColorID.color[3]++;
}
}
}
// Set up this nodes unique color id
m_colorID.color[0] = gColorID.color[0];
m_colorID.color[1] = gColorID.color[1];
m_colorID.color[2] = gColorID.color[2];
m_colorID.color[3] = gColorID.color[3];
}
public void pickColorPaint(GL10 gl) {
gl.glColor4f(m_colorID.getRedF(), m_colorID.getGreenF(), m_colorID.getBlueF(), m_colorID.getAlphaF());
}
public SGAbstractShape(boolean hasTex) {
hasTexture = hasTex;
}
public abstract GLShape getShape();
public void load(GL10 gl) {
loadMaterials(gl);
}
public final Material[] getMaterial() {
return (Material[]) materials.toArray();
}
public void addMaterial(Material material) {
addMaterial(0, material);
material.setParent(this);
}
public void addMaterial(int position, Material material) {
materials.add(position, material);
}
public void removeMaterial(Material material) {
materials.remove(material);
}
@Override
public void paint(GL10 gl) {
}
@Override
public void paintColorID(GL10 gl) {
}
public BoundingBox getBounds(Transform3D transform) {
return null;
}
private void loadMaterials(GL10 gl) {
if (materials != null) {
for (Material material : materials) {
material.loadMaterial(gl);
}
}
}
public void setHasTexture(boolean b) {
hasTexture = b;
}
public boolean hasTexture() {
return hasTexture;
}
public SGColorI getColorID() {
return m_colorID;
}
public void setSelected(boolean b) {
selected = b;
}
public boolean isSelected() {
return selected;
}
}