Package org.lwjgl.util.glu

Source Code of org.lwjgl.util.glu.GLU

/*
* Copyright (c) 2002-2008 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
*   notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
*   notice, this list of conditions and the following disclaimer in the
*   documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
*   its contributors may be used to endorse or promote products derived
*   from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.util.glu;

import java.nio.ByteBuffer;
import java.nio.FloatBuffer;
import java.nio.IntBuffer;

import org.lwjgl.opengl.Util;
import org.lwjgl.util.glu.tessellation.GLUtessellatorImpl;

import static org.lwjgl.opengl.GL11.*;

/**
* GLU.java
*
*
* Created 23-dec-2003
* @author Erik Duijs
*/
public class GLU {
  static final float PI = (float)Math.PI;

  /* Errors: (return value 0 = no error) */
  public static final int GLU_INVALID_ENUM        = 100900;
  public static final int GLU_INVALID_VALUE       = 100901;
  public static final int GLU_OUT_OF_MEMORY       = 100902;
  public static final int GLU_INCOMPATIBLE_GL_VERSION     = 100903;

  /* StringName */
  public static final int GLU_VERSION             = 100800;
  public static final int GLU_EXTENSIONS          = 100801;

  /* Boolean */
  public static final boolean GLU_TRUE                = true;
  public static final boolean GLU_FALSE               = false;


  /****           Quadric constants               ****/

  /* QuadricNormal */
  public static final int GLU_SMOOTH              = 100000;
  public static final int GLU_FLAT                = 100001;
  public static final int GLU_NONE                = 100002;

  /* QuadricDrawStyle */
  public static final int GLU_POINT               = 100010;
  public static final int GLU_LINE                = 100011;
  public static final int GLU_FILL                = 100012;
  public static final int GLU_SILHOUETTE          = 100013;

  /* QuadricOrientation */
  public static final int GLU_OUTSIDE             = 100020;
  public static final int GLU_INSIDE              = 100021;

  /* Callback types: */
  /*      ERROR               = 100103 */


  /****           Tesselation constants           ****/

  public static final double GLU_TESS_MAX_COORD              = 1.0e150;
  public static final double TESS_MAX_COORD              = 1.0e150;

  /* TessProperty */
  public static final int GLU_TESS_WINDING_RULE           = 100140;
  public static final int GLU_TESS_BOUNDARY_ONLY          = 100141;
  public static final int GLU_TESS_TOLERANCE              = 100142;

  /* TessWinding */
  public static final int GLU_TESS_WINDING_ODD            = 100130;
  public static final int GLU_TESS_WINDING_NONZERO        = 100131;
  public static final int GLU_TESS_WINDING_POSITIVE       = 100132;
  public static final int GLU_TESS_WINDING_NEGATIVE       = 100133;
  public static final int GLU_TESS_WINDING_ABS_GEQ_TWO    = 100134;

  /* TessCallback */
  public static final int GLU_TESS_BEGIN          = 100100/* void (CALLBACK*)(GLenum    type)  */
  public static final int GLU_TESS_VERTEX         = 100101/* void (CALLBACK*)(void      *data) */
  public static final int GLU_TESS_END            = 100102/* void (CALLBACK*)(void)            */
  public static final int GLU_TESS_ERROR          = 100103/* void (CALLBACK*)(GLenum    errno) */
  public static final int GLU_TESS_EDGE_FLAG      = 100104/* void (CALLBACK*)(GLboolean boundaryEdge)  */
  public static final int GLU_TESS_COMBINE        = 100105/* void (CALLBACK*)(GLdouble  coords[3],
                                                              void      *data[4],
                                                              GLfloat   weight[4],
                                                              void      **dataOut)     */
  public static final int GLU_TESS_BEGIN_DATA     = 100106/* void (CALLBACK*)(GLenum    type,
                                                              void      *polygon_data) */
  public static final int GLU_TESS_VERTEX_DATA    = 100107/* void (CALLBACK*)(void      *data,
                                                              void      *polygon_data) */
  public static final int GLU_TESS_END_DATA       = 100108/* void (CALLBACK*)(void      *polygon_data) */
  public static final int GLU_TESS_ERROR_DATA     = 100109/* void (CALLBACK*)(GLenum    errno,
                                                              void      *polygon_data) */
  public static final int GLU_TESS_EDGE_FLAG_DATA = 100110/* void (CALLBACK*)(GLboolean boundaryEdge,
                                                              void      *polygon_data) */
  public static final int GLU_TESS_COMBINE_DATA   = 100111/* void (CALLBACK*)(GLdouble  coords[3],
                                                              void      *data[4],
                                                              GLfloat   weight[4],
                                                              void      **dataOut,
                                                              void      *polygon_data) */

  /* TessError */
  public static final int GLU_TESS_ERROR1     = 100151;
  public static final int GLU_TESS_ERROR2     = 100152;
  public static final int GLU_TESS_ERROR3     = 100153;
  public static final int GLU_TESS_ERROR4     = 100154;
  public static final int GLU_TESS_ERROR5     = 100155;
  public static final int GLU_TESS_ERROR6     = 100156;
  public static final int GLU_TESS_ERROR7     = 100157;
  public static final int GLU_TESS_ERROR8     = 100158;

  public static final int GLU_TESS_MISSING_BEGIN_POLYGON  = GLU_TESS_ERROR1;
  public static final int GLU_TESS_MISSING_BEGIN_CONTOUR  = GLU_TESS_ERROR2;
  public static final int GLU_TESS_MISSING_END_POLYGON    = GLU_TESS_ERROR3;
  public static final int GLU_TESS_MISSING_END_CONTOUR    = GLU_TESS_ERROR4;
  public static final int GLU_TESS_COORD_TOO_LARGE        = GLU_TESS_ERROR5;
  public static final int GLU_TESS_NEED_COMBINE_CALLBACK  = GLU_TESS_ERROR6;

  /****           NURBS constants                 ****/

  /* NurbsProperty */
  public static final int GLU_AUTO_LOAD_MATRIX    = 100200;
  public static final int GLU_CULLING             = 100201;
  public static final int GLU_SAMPLING_TOLERANCE  = 100203;
  public static final int GLU_DISPLAY_MODE        = 100204;
  public static final int GLU_PARAMETRIC_TOLERANCE        = 100202;
  public static final int GLU_SAMPLING_METHOD             = 100205;
  public static final int GLU_U_STEP                      = 100206;
  public static final int GLU_V_STEP                      = 100207;

  /* NurbsSampling */
  public static final int GLU_PATH_LENGTH                 = 100215;
  public static final int GLU_PARAMETRIC_ERROR            = 100216;
  public static final int GLU_DOMAIN_DISTANCE             = 100217;


  /* NurbsTrim */
  public static final int GLU_MAP1_TRIM_2         = 100210;
  public static final int GLU_MAP1_TRIM_3         = 100211;

  /* NurbsDisplay */
  /*      FILL                = 100012 */
  public static final int GLU_OUTLINE_POLYGON     = 100240;
  public static final int GLU_OUTLINE_PATCH       = 100241;

  /* NurbsCallback */
  /*      ERROR               = 100103 */

  /* NurbsErrors */
  public static final int GLU_NURBS_ERROR1        = 100251;
  public static final int GLU_NURBS_ERROR2        = 100252;
  public static final int GLU_NURBS_ERROR3        = 100253;
  public static final int GLU_NURBS_ERROR4        = 100254;
  public static final int GLU_NURBS_ERROR5        = 100255;
  public static final int GLU_NURBS_ERROR6        = 100256;
  public static final int GLU_NURBS_ERROR7        = 100257;
  public static final int GLU_NURBS_ERROR8        = 100258;
  public static final int GLU_NURBS_ERROR9        = 100259;
  public static final int GLU_NURBS_ERROR10       = 100260;
  public static final int GLU_NURBS_ERROR11       = 100261;
  public static final int GLU_NURBS_ERROR12       = 100262;
  public static final int GLU_NURBS_ERROR13       = 100263;
  public static final int GLU_NURBS_ERROR14       = 100264;
  public static final int GLU_NURBS_ERROR15       = 100265;
  public static final int GLU_NURBS_ERROR16       = 100266;
  public static final int GLU_NURBS_ERROR17       = 100267;
  public static final int GLU_NURBS_ERROR18       = 100268;
  public static final int GLU_NURBS_ERROR19       = 100269;
  public static final int GLU_NURBS_ERROR20       = 100270;
  public static final int GLU_NURBS_ERROR21       = 100271;
  public static final int GLU_NURBS_ERROR22       = 100272;
  public static final int GLU_NURBS_ERROR23       = 100273;
  public static final int GLU_NURBS_ERROR24       = 100274;
  public static final int GLU_NURBS_ERROR25       = 100275;
  public static final int GLU_NURBS_ERROR26       = 100276;
  public static final int GLU_NURBS_ERROR27       = 100277;
  public static final int GLU_NURBS_ERROR28       = 100278;
  public static final int GLU_NURBS_ERROR29       = 100279;
  public static final int GLU_NURBS_ERROR30       = 100280;
  public static final int GLU_NURBS_ERROR31       = 100281;
  public static final int GLU_NURBS_ERROR32       = 100282;
  public static final int GLU_NURBS_ERROR33       = 100283;
  public static final int GLU_NURBS_ERROR34       = 100284;
  public static final int GLU_NURBS_ERROR35       = 100285;
  public static final int GLU_NURBS_ERROR36       = 100286;
  public static final int GLU_NURBS_ERROR37       = 100287;

  /* Contours types -- obsolete! */
  public static final int GLU_CW          = 100120;
  public static final int GLU_CCW         = 100121;
  public static final int GLU_INTERIOR    = 100122;
  public static final int GLU_EXTERIOR    = 100123;
  public static final int GLU_UNKNOWN     = 100124;

  /* Names without "TESS_" prefix */
  public static final int GLU_BEGIN       = GLU_TESS_BEGIN;
  public static final int GLU_VERTEX      = GLU_TESS_VERTEX;
  public static final int GLU_END         = GLU_TESS_END;
  public static final int GLU_ERROR       = GLU_TESS_ERROR;
  public static final int GLU_EDGE_FLAG   = GLU_TESS_EDGE_FLAG;

  /**
   * Method gluLookAt
   * @param eyex
   * @param eyey
   * @param eyez
   * @param centerx
   * @param centery
   * @param centerz
   * @param upx
   * @param upy
   * @param upz
   */
  public static void gluLookAt(
      float eyex,
      float eyey,
      float eyez,
      float centerx,
      float centery,
      float centerz,
      float upx,
      float upy,
      float upz) {

    Project.gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz);
  }

  /**
   * Method gluOrtho2D
   * @param left
   * @param right
   * @param bottom
   * @param top
   */
  public static void gluOrtho2D(
      float left,
      float right,
      float bottom,
      float top) {

    glOrtho(left, right, bottom, top, -1.0, 1.0);
  }

  /**
   * Method gluPerspective
   * @param fovy
   * @param aspect
   * @param zNear
   * @param zFar
   */
  public static void gluPerspective(
      float fovy,
      float aspect,
      float zNear,
      float zFar) {

    Project.gluPerspective(fovy, aspect, zNear, zFar);
  }

  /**
   * Method gluProject
   * @param objx
   * @param objy
   * @param objz
   * @param modelMatrix
   * @param projMatrix
   * @param viewport
   * @param win_pos
   */
  public static boolean gluProject(float objx, float objy, float objz,
      FloatBuffer modelMatrix,
      FloatBuffer projMatrix,
      IntBuffer viewport,
      FloatBuffer win_pos)
  {
    return Project.gluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, win_pos);
  }

  /**
   * Method gluUnproject
   * @param winx
   * @param winy
   * @param winz
   * @param modelMatrix
   * @param projMatrix
   * @param viewport
   * @param obj_pos
   */
  public static boolean gluUnProject(float winx, float winy, float winz,
      FloatBuffer modelMatrix,
      FloatBuffer projMatrix,
      IntBuffer viewport,
      FloatBuffer obj_pos)
  {
    return Project.gluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, obj_pos);
  }

  /**
   * Method gluPickMatrix
   * @param x
   * @param y
   * @param width
   * @param height
   * @param viewport
   */
  public static void gluPickMatrix(
      float x,
      float y,
      float width,
      float height,
      IntBuffer viewport) {

    Project.gluPickMatrix(x, y, width, height, viewport);
  }

  /**
   * Method gluGetString.
   * @param name
   * @return String
   */
  public static String gluGetString(int name) {
    return Registry.gluGetString(name);
  }

  /**
   * Method gluCheckExtension.
   * @param extName
   * @param extString
   * @return boolean
   */
  public static boolean gluCheckExtension(String extName, String extString) {
    return Registry.gluCheckExtension(extName, extString);
  }

  /**
   * Method gluBuild2DMipmaps
   * @param target
   * @param components
   * @param width
   * @param height
   * @param format
   * @param type
   * @param data
   * @return int
   */
  public static int gluBuild2DMipmaps(
      int target,
      int components,
      int width,
      int height,
      int format,
      int type,
      ByteBuffer data) {

    return MipMap.gluBuild2DMipmaps(target, components, width, height, format, type, data);
  }

  /**
   * Method gluScaleImage.
   * @param format
   * @param widthIn
   * @param heightIn
   * @param typeIn
   * @param dataIn
   * @param widthOut
   * @param heightOut
   * @param typeOut
   * @param dataOut
   * @return int
   */
  public static int gluScaleImage(
      int format,
      int widthIn,
      int heightIn,
      int typeIn,
      ByteBuffer dataIn,
      int widthOut,
      int heightOut,
      int typeOut,
      ByteBuffer dataOut) {

    return MipMap.gluScaleImage(format, widthIn, heightIn, typeIn, dataIn, widthOut, heightOut, typeOut, dataOut);
  }

  public static String gluErrorString(int error_code) {
    switch (error_code) {
      case GLU_INVALID_ENUM:
        return "Invalid enum (glu)";
      case GLU_INVALID_VALUE:
        return "Invalid value (glu)";
      case GLU_OUT_OF_MEMORY:
        return "Out of memory (glu)";
      default:
        return Util.translateGLErrorString(error_code);
    }
  }

  public static GLUtessellator gluNewTess() {
    return new GLUtessellatorImpl();
  }
}
TOP

Related Classes of org.lwjgl.util.glu.GLU

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.