org.jzy3d.plot3d.primitives
Class AbstractDrawable

java.lang.Object
  extended by org.jzy3d.plot3d.primitives.AbstractDrawable
All Implemented Interfaces:
IGLRenderer, ISortableDraw
Direct Known Subclasses:
AbstractDrawableGraph2d, AbstractWireframeable, DrawableTexture, MultiColorScatter, MultiColorScatterList, Point, Scatter, TextBitmapDrawable

public abstract class AbstractDrawable
extends java.lang.Object
implements IGLRenderer, ISortableDraw

An AbstractDrawable defines objects that may be rendered into an OpenGL context provided by a ICanvas.
An AbstractDrawable must basically provide a rendering function called draw() that receives a reference to a GL and a GLU context. It may also use a reference to a Camera in order to implement specific behaviors according to the Camera position.
An AbstractDrawable provides services for setting the transformation factor that is used inside the draw function, as well as a getter of the object's BoundingBox3d. Note that the BoundingBox3d must be set by a concrete descendant of a AbstractDrawable.
An good practice is to define a setData function for initializing a AbstractDrawable and building its polygons. Since each class may have its own inputs, setData is not part of the interface but should be used as a convention. When not defining a setData function, a AbstractDrawable may have its data loaded by an add(Drawable) function.

Note: An AbstractDrawable may last provide the information whether it is displayed or not, according to a rendering into the FeedBack buffer. This is currently supported specifically for the AxeBox object but could be extended with some few more algorithm for referencing all GL polygons.

Author:
Martin Pernollet

Constructor Summary
AbstractDrawable()
           
 
Method Summary
 void addDrawableListener(IDrawableListener listener)
           
 void dispose()
          Performs all required operation to cleanup the Drawable.
abstract  void draw(javax.media.opengl.GL gl, javax.media.opengl.glu.GLU glu, Camera cam)
          Call OpenGL routines for rendering the object.
 Coord3d getBarycentre()
          Return the barycentre of this object, which is computed as the center of its bounding box.
 BoundingBox3d getBounds()
          Return the BoundingBox of this object.
 double getDistance(Camera camera)
          Return the distance of the object center to the Camera's eye.
 Legend getFace()
           
 double getLongestDistance(Camera camera)
           
 double getShortestDistance(Camera camera)
           
 Transform getTransform()
          Get object's transformation that is applied at the beginning of a call to draw(GL,GLU,Camera).
 boolean hasFace()
           
 boolean isDisplayed()
          Return the display status of this object.
 boolean isFace2dDisplayed()
           
 void removeDrawableListener(IDrawableListener listener)
           
 void setDisplayed(boolean status)
          Set to true or false the displayed status of this object.
 void setLegend(Legend face)
           
 void setLegendDisplayed(boolean status)
           
 void setTransform(Transform transform)
          Set object's transformation that is applied at the beginning of a call to draw(GL,GLU,Camera).
 java.lang.String toString()
           
 java.lang.String toString(int depth)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractDrawable

public AbstractDrawable()
Method Detail

dispose

public void dispose()
Performs all required operation to cleanup the Drawable.


draw

public abstract void draw(javax.media.opengl.GL gl,
                          javax.media.opengl.glu.GLU glu,
                          Camera cam)
Call OpenGL routines for rendering the object.

Specified by:
draw in interface IGLRenderer
Parameters:
gl - GL context
glu - GLU context
cam - a reference to a shooting Camera.

setTransform

public void setTransform(Transform transform)
Set object's transformation that is applied at the beginning of a call to draw(GL,GLU,Camera).

Parameters:
transform -

getTransform

public Transform getTransform()
Get object's transformation that is applied at the beginning of a call to draw(GL,GLU,Camera).

Returns:
transform

getBounds

public BoundingBox3d getBounds()
Return the BoundingBox of this object.

Returns:
a bounding box

getBarycentre

public Coord3d getBarycentre()
Return the barycentre of this object, which is computed as the center of its bounding box. If the bounding box is not available, the returned value is Coord3d.INVALID

Returns:
the center of the bounding box, or Coord3d.INVALID.

setDisplayed

public void setDisplayed(boolean status)
Set to true or false the displayed status of this object.

Parameters:
status -

isDisplayed

public boolean isDisplayed()
Return the display status of this object.


getDistance

public double getDistance(Camera camera)
Return the distance of the object center to the Camera's eye.

Specified by:
getDistance in interface ISortableDraw

getShortestDistance

public double getShortestDistance(Camera camera)
Specified by:
getShortestDistance in interface ISortableDraw

getLongestDistance

public double getLongestDistance(Camera camera)
Specified by:
getLongestDistance in interface ISortableDraw

setLegend

public void setLegend(Legend face)

getFace

public Legend getFace()

hasFace

public boolean hasFace()

setLegendDisplayed

public void setLegendDisplayed(boolean status)

isFace2dDisplayed

public boolean isFace2dDisplayed()

addDrawableListener

public void addDrawableListener(IDrawableListener listener)

removeDrawableListener

public void removeDrawableListener(IDrawableListener listener)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toString

public java.lang.String toString(int depth)