package org.geogebra.common.geogebra3D.euclidian3D.openGL; import java.util.ArrayList; import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D; import org.geogebra.common.geogebra3D.euclidian3D.openGL.ManagerShaders.TypeElement; /** * Manager to create GLLists using GL elements methods * * @author mathieu * */ public class ManagerElementForGLList extends Manager { private Manager managerOriginal; public ManagerElementForGLList(Renderer renderer, EuclidianView3D view3d, Manager managerOriginal) { super(view3d); setRenderer(renderer); this.managerOriginal = managerOriginal; } @Override protected void setRenderer(Renderer renderer) { // TODO Auto-generated method stub } @Override protected Renderer getRenderer() { // TODO Auto-generated method stub return null; } @Override public int startNewList(int old) { // not used here return -1; } @Override public void endList() { // not used here } private ArrayList<Double> vx, vy, vz, nx, ny, nz, tx, ty; private boolean hasTexture = false; @Override public void startGeometry(Type type) { if (vx == null) { vx = new ArrayList<Double>(); vy = new ArrayList<Double>(); vz = new ArrayList<Double>(); nx = new ArrayList<Double>(); ny = new ArrayList<Double>(); nz = new ArrayList<Double>(); tx = new ArrayList<Double>(); ty = new ArrayList<Double>(); } else { vx.clear(); vy.clear(); vz.clear(); nx.clear(); ny.clear(); nz.clear(); tx.clear(); ty.clear(); } hasTexture = false; managerOriginal.startGeometry(type); } @Override public void endGeometry() { managerOriginal.endGeometry(); } @Override public void endGeometry(int size, TypeElement type) { endGeometry(); } @Override public int startPolygons(int old) { // TODO Auto-generated method stub return 0; } @Override protected void setDummyTexture() { managerOriginal.texture(0, 0); } @Override public void endPolygons() { // TODO Auto-generated method stub } @Override public void draw(int index) { // TODO Auto-generated method stub } @Override public void drawLabel(int index) { // TODO Auto-generated method stub } @Override public void remove(int index) { // TODO Auto-generated method stub } @Override protected void vertex(double x, double y, double z) { vx.add(x); vy.add(y); vz.add(z); } @Override protected void vertexInt(double x, double y, double z) { // TODO Auto-generated method stub } @Override protected void vertices(double[] vertices) { // TODO Auto-generated method stub } @Override protected void normal(double x, double y, double z) { nx.add(x); ny.add(y); nz.add(z); } @Override protected void texture(double x, double y) { tx.add(x); ty.add(y); hasTexture = true; } @Override protected void color(double r, double g, double b) { // TODO Auto-generated method stub } @Override protected void color(double r, double g, double b, double a) { // TODO Auto-generated method stub } @Override protected void pointSize(double size) { // TODO Auto-generated method stub } @Override protected void rectangleGeometry(double x, double y, double z, double width, double height) { // TODO Auto-generated method stub } private GLBufferIndicesForGLList arrayI = null; @Override public GLBufferIndices getCurrentGeometryIndices(int size) { if (arrayI == null) { arrayI = new GLBufferIndicesForGLList(this); } return arrayI; } private static class GLBufferIndicesForGLList implements GLBufferIndices { private ManagerElementForGLList manager; public GLBufferIndicesForGLList(ManagerElementForGLList manager) { this.manager = manager; } @Override public void allocate(int length) { // TODO Auto-generated method stub } @Override public void setLimit(int length) { // TODO Auto-generated method stub } @Override public void put(short value) { manager.put(value); } @Override public short get() { // TODO Auto-generated method stub return 0; } @Override public void rewind() { // TODO Auto-generated method stub } @Override public int capacity() { // TODO Auto-generated method stub return 0; } @Override public void array(short[] ret) { // TODO Auto-generated method stub } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public void setEmpty() { // TODO Auto-generated method stub } } public void put(short value) { // Log.debug("" + value); managerOriginal.normal(nx.get(value), ny.get(value), nz.get(value)); if (hasTexture) { managerOriginal.texture(tx.get(value), ty.get(value)); } managerOriginal.vertex(vx.get(value), vy.get(value), vz.get(value)); } }