diff options
author | Sven Gothel <[email protected]> | 2008-06-21 03:51:04 +0000 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2008-06-21 03:51:04 +0000 |
commit | c0ca33d644b92f105382adaa4b068d58769008f5 (patch) | |
tree | 72a2b0c89e069de4b0486a31c06a980601d6351c /src/classes/com/sun/opengl/impl/nurbs/Quilt.java | |
parent | 26b7878c3b47f76e55195a8682fd7dce04d83ea8 (diff) |
finishing 2nd refactoring
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1671 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/classes/com/sun/opengl/impl/nurbs/Quilt.java')
-rwxr-xr-x | src/classes/com/sun/opengl/impl/nurbs/Quilt.java | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/src/classes/com/sun/opengl/impl/nurbs/Quilt.java b/src/classes/com/sun/opengl/impl/nurbs/Quilt.java deleted file mode 100755 index f5b566e76..000000000 --- a/src/classes/com/sun/opengl/impl/nurbs/Quilt.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.sun.opengl.impl.nurbs; - -/* - ** License Applicability. Except to the extent portions of this file are - ** made subject to an alternative license as permitted in the SGI Free - ** Software License B, Version 1.1 (the "License"), the contents of this - ** file are subject only to the provisions of the License. You may not use - ** this file except in compliance with the License. You may obtain a copy - ** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 - ** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: - ** - ** http://oss.sgi.com/projects/FreeB - ** - ** Note that, as provided in the License, the Software is distributed on an - ** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS - ** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND - ** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A - ** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. - ** - ** Original Code. The Original Code is: OpenGL Sample Implementation, - ** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, - ** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. - ** Copyright in any portions created by third parties is as indicated - ** elsewhere herein. All Rights Reserved. - ** - ** Additional Notice Provisions: The application programming interfaces - ** established by SGI in conjunction with the Original Code are The - ** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released - ** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version - ** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X - ** Window System(R) (Version 1.3), released October 19, 1998. This software - ** was created using the OpenGL(R) version 1.2.1 Sample Implementation - ** published by SGI, but has not been independently verified as being - ** compliant with the OpenGL(R) version 1.2.1 Specification. - */ - -/** - * Class for converting NURBS curves and surfaces to list of bezier arcs or patches repectively - * @author Tomáš Hráský - * - */ -class Quilt { - /** - * Maximum quilt dimension - */ - private static final int MAXDIM = 2; - - /** - * List of map descriptions - */ - Mapdesc mapdesc; - - /** - * Array of quiltspecs pointer - */ - public CArrayOfQuiltspecs qspec; - - /** - * End array of quilt specs pointer - */ - public CArrayOfQuiltspecs eqspec; - - /** - * Control points - */ - public CArrayOfFloats cpts; - - /** - * Next quilt in list - */ - public Quilt next; - - /** - * Makes new quilt with mapdesc - * @param mapdesc map description - */ - public Quilt(Mapdesc mapdesc) { - // DONE - this.mapdesc = mapdesc; - Quiltspec[] tmpquilts = new Quiltspec[MAXDIM]; - for (int i = 0; i < tmpquilts.length; i++) - tmpquilts[i] = new Quiltspec(); - this.qspec = new CArrayOfQuiltspecs(tmpquilts); - - } - - /** - * Converts NURBS surface to bezier patches - * @param sknotvector knots in u direction - * @param tknotvector knots in v direction - * @param ctrlarr control points - * @param coords control points coords - */ - public void toBezier(Knotvector sknotvector, Knotvector tknotvector, - CArrayOfFloats ctrlarr, int coords) { - Splinespec spline = new Splinespec(2); - spline.kspecinit(sknotvector, tknotvector); - spline.select(); - spline.layout(coords); - spline.setupquilt(this); - spline.copy(ctrlarr); - spline.transform(); - } - - /** - * Converts NURBS curve to list of bezier curves - * @param knots knot vector - * @param ctlarray control points - * @param ncoords number of coordinates - */ - public void toBezier(Knotvector knots, CArrayOfFloats ctlarray, int ncoords) { - // DONE - Splinespec spline = new Splinespec(1); - spline.kspecinit(knots); - spline.select(); - spline.layout(ncoords); - spline.setupquilt(this); - spline.copy(ctlarray); - spline.transform(); - } - - /** - * Walks thru all arcs/patches - * @param pta low border - * @param ptb high border - * @param backend Backend - */ - public void downloadAll(float[] pta, float[] ptb, Backend backend) { - // DONE - for (Quilt m = this; m != null; m = m.next) { - m.select(pta, ptb); - m.download(backend); - } - - } - - /** - * Renders arcs/patches - * @param backend Backend for rendering - */ - private void download(Backend backend) { - // DONE - if (getDimension() == 2) { - - CArrayOfFloats ps = new CArrayOfFloats(cpts); - ps.raisePointerBy(qspec.get(0).offset); - ps.raisePointerBy(qspec.get(1).offset); - ps.raisePointerBy(qspec.get(0).index * qspec.get(0).order - * qspec.get(0).stride); - ps.raisePointerBy(qspec.get(1).index * qspec.get(1).order - * qspec.get(1).stride); - - backend.surfpts(mapdesc.getType(), ps, qspec.get(0).stride, qspec - .get(1).stride, qspec.get(0).order, qspec.get(1).order, - qspec.get(0).breakpoints[qspec.get(0).index], - qspec.get(0).breakpoints[qspec.get(0).index + 1], qspec - .get(1).breakpoints[qspec.get(1).index], qspec - .get(1).breakpoints[qspec.get(1).index + 1]); - - } else {// code for curves - // CArrayOfFloats ps=new CArrayOfFloats(cpts); - CArrayOfFloats ps = new CArrayOfFloats(cpts.getArray(), 0); - ps.raisePointerBy(qspec.get(0).offset); - ps.raisePointerBy(qspec.get(0).index * qspec.get(0).order - * qspec.get(0).stride); - backend.curvpts(mapdesc.getType(), ps, qspec.get(0).stride, qspec - .get(0).order, - qspec.get(0).breakpoints[qspec.get(0).index], - qspec.get(0).breakpoints[qspec.get(0).index + 1]); - } - - } - - /** - * Returns quilt dimension - * @return quilt dimesion - */ - private int getDimension() { - // DONE - return eqspec.getPointer() - qspec.getPointer(); - } - - /** - * Finds Quiltspec.index - * @param pta range - * @param ptb range - */ - private void select(float[] pta, float[] ptb) { - // DONE - int dim = eqspec.getPointer() - qspec.getPointer(); - int i, j; - for (i = 0; i < dim; i++) { - for (j = qspec.get(i).width - 1; j >= 0; j--) - if (qspec.get(i).breakpoints[j] <= pta[i] - && ptb[i] <= qspec.get(i).breakpoints[j + 1]) - break; - assert (j != -1); - qspec.get(i).index = j; - } - } - - /** - * Find range according to breakpoints - * @param from low param - * @param to high param - * @param bpts breakpoints - */ - public void getRange(float[] from, float[] to, Flist bpts) { - // DONE - getRange(from, to, 0, bpts); - - } - - /** - * Find range according to breakpoints - * @param from low param - * @param to high param - * @param i from/to array index - * @param list breakpoints - */ - private void getRange(float[] from, float[] to, int i, Flist list) { - // DONE - Quilt maps = this; - from[i] = maps.qspec.get(i).breakpoints[0]; - to[i] = maps.qspec.get(i).breakpoints[maps.qspec.get(i).width]; - int maxpts = 0; - Quilt m; - for (m = maps; m != null; m = m.next) { - if (m.qspec.get(i).breakpoints[0] > from[i]) - from[i] = m.qspec.get(i).breakpoints[0]; - if (m.qspec.get(i).breakpoints[m.qspec.get(i).width] < to[i]) - to[i] = m.qspec.get(i).breakpoints[m.qspec.get(i).width]; - maxpts += m.qspec.get(i).width + 1; - } - list.grow(maxpts); - for (m = maps; m != null; m = m.next) { - for (int j = 0; j <= m.qspec.get(i).width; j++) { - list.add(m.qspec.get(i).breakpoints[j]); - } - } - list.filter(); - list.taper(from[i], to[i]); - } - - /** - * Is this quilt culled - * @return 0 or Subdivider.CULL_ACCEPT - */ - public int isCulled() { - if (mapdesc.isCulling()) { - // System.out.println("TODO quilt.isculled mapdesc.isculling"); - return 0; - } else { - return Subdivider.CULL_ACCEPT; - } - } - - /** - * Finds range for surface - * @param from low param - * @param to high param - * @param slist u direction breakpoints - * @param tlist v direction breakpoints - */ - public void getRange(float[] from, float[] to, Flist slist, Flist tlist) { - // DONE - getRange(from, to, 0, slist); - getRange(from, to, 1, tlist); - - } - - /** - * Empty method - * @param sbrkpts - * @param tbrkpts - * @param rate - */ - public void findRates(Flist sbrkpts, Flist tbrkpts, float[] rate) { - // TODO Auto-generated method stub - // System.out.println("TODO quilt.findrates"); - } -} |