Plot3D Class Reference

Base class for all plotting widgets. More...

#include <qwt3d_plot.h>

Inheritance diagram for Plot3D:

GraphPlot MultiPlot SurfacePlot VolumePlot List of all members.

Public Slots

void setRotation (double xVal, double yVal, double zVal)
void setShift (double xVal, double yVal, double zVal)
void setViewportShift (double xVal, double yVal)
void setScale (double xVal, double yVal, double zVal)
void setZoom (double)
void setOrtho (bool)
void enableMouse (bool val=true)
void disableMouse (bool val=true)
void enableKeyboard (bool val=true)
void disableKeyboard (bool val=true)
void enableLighting (bool val=true)
void disableLighting (bool val=true)
void setLightRotation (double xVal, double yVal, double zVal, unsigned int idx=0)
void setLightShift (double xVal, double yVal, double zVal, unsigned int idx=0)
virtual bool savePixmap (QString const &fileName, QString const &format)
virtual bool saveVector (QString const &fileName, QString const &format, VectorWriter::TEXTMODE text, VectorWriter::SORTMODE sortmode)
virtual bool save (QString const &fileName, QString const &format)

Signals

void rotationChanged (double xAngle, double yAngle, double zAngle)
void shiftChanged (double xShift, double yShift, double zShift)
void vieportShiftChanged (double xShift, double yShift)
void scaleChanged (double xScale, double yScale, double zScale)
void zoomChanged (double)
void projectionChanged (bool)

Public Member Functions

 Plot3D (QWidget *parent=0, const QGLWidget *shareWidget=0)
virtual ~Plot3D ()
QPixmap renderPixmap (int w=0, int h=0, bool useContext=false)
void updateData ()
void createCoordinateSystem (Qwt3D::Triple beg, Qwt3D::Triple end)
Qwt3D::CoordinateSystemcoordinates ()
Qwt3D::ColorLegendlegend ()
double xRotation () const
double yRotation () const
double zRotation () const
double xShift () const
double yShift () const
double zShift () const
double xViewportShift () const
double yViewportShift () const
double xScale () const
double yScale () const
double zScale () const
double zoom () const
bool ortho () const
void setPlotStyle (Qwt3D::PLOTSTYLE val)
Qwt3D::EnrichmentsetPlotStyle (Qwt3D::Enrichment const &val)
Qwt3D::PLOTSTYLE plotStyle () const
Qwt3D::EnrichmentuserStyle () const
void setShading (Qwt3D::SHADINGSTYLE val)
Qwt3D::SHADINGSTYLE shading () const
void setIsolines (int isolines)
int isolines () const
void setSmoothMesh (bool val)
bool smoothDataMesh () const
void setBackgroundColor (Qwt3D::RGBA rgba)
Qwt3D::RGBA backgroundRGBAColor () const
void setMeshColor (Qwt3D::RGBA rgba)
Qwt3D::RGBA meshColor () const
void setMeshLineWidth (double lw)
double meshLineWidth () const
void setDataColor (Color *col)
const ColordataColor () const
virtual Qwt3D::EnrichmentaddEnrichment (Qwt3D::Enrichment const &)
virtual bool degrade (Qwt3D::Enrichment *)
Qwt3D::ParallelEpiped hull () const
void showColorLegend (bool)
void setCoordinateStyle (Qwt3D::COORDSTYLE st)
void setPolygonOffset (double d)
double polygonOffset () const
void setTitlePosition (double rely, double relx=0.5, Qwt3D::ANCHOR=Qwt3D::TopCenter)
void setTitleFont (const QString &family, int pointSize, int weight=QFont::Normal, bool italic=false)
void setTitleColor (Qwt3D::RGBA col)
void setTitle (const QString &title)
void assignMouse (MouseState xrot, MouseState yrot, MouseState zrot, MouseState xscale, MouseState yscale, MouseState zscale, MouseState zoom, MouseState xshift, MouseState yshift)
bool mouseEnabled () const
void assignKeyboard (KeyboardState xrot_n, KeyboardState xrot_p, KeyboardState yrot_n, KeyboardState yrot_p, KeyboardState zrot_n, KeyboardState zrot_p, KeyboardState xscale_n, KeyboardState xscale_p, KeyboardState yscale_n, KeyboardState yscale_p, KeyboardState zscale_n, KeyboardState zscale_p, KeyboardState zoom_n, KeyboardState zoom_p, KeyboardState xshift_n, KeyboardState xshift_p, KeyboardState yshift_n, KeyboardState yshift_p)
bool keyboardEnabled () const
void setKeySpeed (double rot, double scale, double shift)
void keySpeed (double &rot, double &scale, double &shift) const
bool lightingEnabled () const
void illuminate (unsigned light=0)
void blowout (unsigned light=0)
void setMaterialComponent (GLenum property, double r, double g, double b, double a=1.0)
void setMaterialComponent (GLenum property, double intensity)
void setShininess (double exponent)
void setLightComponent (GLenum property, double r, double g, double b, double a=1.0, unsigned light=0)
void setLightComponent (GLenum property, double intensity, unsigned light=0)
double xLightRotation (unsigned idx=0) const
double yLightRotation (unsigned idx=0) const
double zLightRotation (unsigned idx=0) const
double xLightShift (unsigned idx=0) const
double yLightShift (unsigned idx=0) const
double zLightShift (unsigned idx=0) const
bool hasData () const

Protected Types

enum  OBJECTS { DataObject, LegendObject, NormalObject, DisplayListSize }
typedef std::list< Qwt3D::Enrichment * > EnrichmentList
typedef EnrichmentList::iterator ELIT

Protected Member Functions

void initializeGL ()
void paintGL ()
void resizeGL (int w, int h)
void mousePressEvent (QMouseEvent *e)
void mouseReleaseEvent (QMouseEvent *e)
void mouseMoveEvent (QMouseEvent *e)
void wheelEvent (QWheelEvent *e)
void keyPressEvent (QKeyEvent *e)
virtual void calculateHull ()=0
virtual void createData ()=0
virtual void createEnrichment (Qwt3D::Enrichment &)
virtual void createEnrichments ()
void createCoordinateSystem ()
void setHull (Qwt3D::ParallelEpiped p)
bool initializedGL () const

Protected Attributes

Qwt3D::CoordinateSystem coordinates_p
Qwt3D::Colordatacolor_p
Qwt3D::Enrichmentuserplotstyle_p
EnrichmentList elist_p
std::vector< GLuint > displaylists_p
Qwt3D::Data * actualData_p

Classes

struct  Light

Detailed Description

Plot3D handles all the common features for plotting widgets - coordinate system, transformations, mouse/keyboard handling, labeling etc.. It contains some pure virtual functions and is, in so far, an abstract base class. The class provides interfaces for data handling and implements basic data controlled color allocation.


Constructor & Destructor Documentation

Plot3D ( QWidget *  parent = 0,
const QGLWidget *  shareWidget = 0 
)

This should be the first call in your derived classes constructors.

~Plot3D (  )  [virtual]

Release allocated resources


Member Function Documentation

QPixmap renderPixmap ( int  w = 0,
int  h = 0,
bool  useContext = false 
)

Reimplemented from QGLWidget

void updateData (  ) 

Recalculate data.

Update OpenGL data representation

void createCoordinateSystem ( Qwt3D::Triple  beg,
Qwt3D::Triple  end 
)

Create a coordinate system with generating corners beg and end

Qwt3D::CoordinateSystem* coordinates (  )  [inline]

Returns pointer to CoordinateSystem object.

Qwt3D::ColorLegend* legend (  )  [inline]

Returns pointer to ColorLegend object.

double xRotation (  )  const [inline]

Returns rotation around X axis [-360..360] (some angles are equivalent).

double yRotation (  )  const [inline]

Returns rotation around Y axis [-360..360] (some angles are equivalent).

double zRotation (  )  const [inline]

Returns rotation around Z axis [-360..360] (some angles are equivalent).

double xShift (  )  const [inline]

Returns shift along X axis (object coordinates).

double yShift (  )  const [inline]

Returns shift along Y axis (object coordinates).

double zShift (  )  const [inline]

Returns shift along Z axis (object coordinates).

double xViewportShift (  )  const [inline]

Returns relative shift [-1..1] along X axis (view coordinates).

double yViewportShift (  )  const [inline]

Returns relative shift [-1..1] along Y axis (view coordinates).

double xScale (  )  const [inline]

Returns scaling for X values [0..inf].

double yScale (  )  const [inline]

Returns scaling for Y values [0..inf].

double zScale (  )  const [inline]

Returns scaling for Z values [0..inf].

double zoom (  )  const [inline]

Returns zoom (0..inf).

bool ortho (  )  const [inline]

Returns orthogonal (true) or perspective (false) projection.

void setPlotStyle ( Qwt3D::PLOTSTYLE  val  ) 

Set plotstyle for the standard plotting types. An argument of value Qwt3D::USER is ignored.

Qwt3D::Enrichment * setPlotStyle ( Qwt3D::Enrichment const &  obj  ) 

Set plotstyle to Qwt3D::USER and an associated enrichment object.

Qwt3D::PLOTSTYLE plotStyle (  )  const [inline]

Returns plotting style

Qwt3D::Enrichment* userStyle (  )  const [inline]

Returns current Enrichment object used for plotting styles (if set, zero else).

void setShading ( Qwt3D::SHADINGSTYLE  val  ) 

Set shading style

Qwt3D::SHADINGSTYLE shading (  )  const [inline]

Returns shading style.

void setIsolines ( int  steps  ) 

Set number of isolines. The lines are equidistant between minimal and maximal Z value

int isolines (  )  const [inline]

Returns number of isolines.

void setSmoothMesh ( bool  val  )  [inline]

Enables/disables smooth data mesh lines. Default is false.

bool smoothDataMesh (  )  const [inline]

True if mesh antialiasing is on.

void setBackgroundColor ( Qwt3D::RGBA  rgba  ) 

Sets widgets background color.

Qwt3D::RGBA backgroundRGBAColor (  )  const [inline]

Returns the widgets background color.

void setMeshColor ( Qwt3D::RGBA  rgba  ) 

Sets color for data mesh.

Qwt3D::RGBA meshColor (  )  const [inline]

Returns color for data mesh.

void setMeshLineWidth ( double  lw  ) 

Sets line width for data mesh.

double meshLineWidth (  )  const [inline]

Returns line width for data mesh.

void setDataColor ( Color col  ) 

Sets new data color object.

assign a new coloring object for the data.

const Color* dataColor (  )  const [inline]

Returns data color object.

Enrichment * addEnrichment ( Qwt3D::Enrichment const &   )  [virtual]

Add an Enrichment.

bool degrade ( Qwt3D::Enrichment  )  [virtual]

Remove an Enrichment.

Qwt3D::ParallelEpiped hull (  )  const [inline]

Returns rectangular hull.

void showColorLegend ( bool  show  ) 

Show a color legend

void setCoordinateStyle ( Qwt3D::COORDSTYLE  st  ) 

Sets style of coordinate system.

Set style of coordinate system

void setPolygonOffset ( double  val  ) 

Set Polygon offset. The function affects the OpenGL rendering process. Try different values for surfaces with polygons only and with mesh and polygons

double polygonOffset (  )  const [inline]

Returns relative value for polygon offset [0..1].

void setTitlePosition ( double  rely,
double  relx = 0.5,
Qwt3D::ANCHOR  anchor = Qwt3D::TopCenter 
)

Set relative caption position (0.5,0.5) means, the anchor point lies in the center of the screen

void setTitleFont ( const QString &  family,
int  pointSize,
int  weight = QFont::Normal,
bool  italic = false 
)

Set caption font

void setTitleColor ( Qwt3D::RGBA  col  )  [inline]

Set caption color.

void setTitle ( const QString &  title  )  [inline]

Set caption text (one row only).

void assignMouse ( MouseState  xrot,
MouseState  yrot,
MouseState  zrot,
MouseState  xscale,
MouseState  yscale,
MouseState  zscale,
MouseState  zoom,
MouseState  xshift,
MouseState  yshift 
)

Sets the key/mousebutton combination for data/coordinatesystem moves inside the widget

default behaviour:

	rotate around x axis: Qt::LeftButton 
	rotate around y axis: Qt::LeftButton | Qt::ShiftButton
	rotate around z axis: Qt::LeftButton 
	scale x:              Qt::LeftButton | Qt::AltButton 
	scale y:              Qt::LeftButton | Qt::AltButton 
	scale z:              Qt::LeftButton | Qt::AltButton | Qt::ShiftButton
	zoom:                 Qt::LeftButton | Qt::AltButton | Qt::ControlButton
	shifting along x:     Qt::LeftButton | Qt::ControlButton 
	shifting along y:     Qt::LeftButton | Qt::ControlButton
	

mouseMoveEvent() evaluates this function - if overridden, their usefulness becomes somehow limited

bool mouseEnabled (  )  const

Returns true, if the widget accept mouse input from the user.

void assignKeyboard ( KeyboardState  xrot_n,
KeyboardState  xrot_p,
KeyboardState  yrot_n,
KeyboardState  yrot_p,
KeyboardState  zrot_n,
KeyboardState  zrot_p,
KeyboardState  xscale_n,
KeyboardState  xscale_p,
KeyboardState  yscale_n,
KeyboardState  yscale_p,
KeyboardState  zscale_n,
KeyboardState  zscale_p,
KeyboardState  zoom_n,
KeyboardState  zoom_p,
KeyboardState  xshift_n,
KeyboardState  xshift_p,
KeyboardState  yshift_n,
KeyboardState  yshift_p 
)

Sets the keybutton combination for data/coordinatesystem moves inside the widget

default behaviour:

	rotate around x axis: [Key_Down, Key_Up] 
	rotate around y axis: SHIFT+[Key_Right, Key_Left]
	rotate around z axis: [Key_Right, Key_Left] 
	scale x:              ALT+[Key_Right, Key_Left] 
	scale y:              ALT+[Key_Up, Key_Down] 
	scale z:              ALT+SHIFT[Key_Down, Key_Up] 
	zoom:                 ALT+CTRL+[Key_Down, Key_Up]
	shifting along x:     CTRL+[Key_Right, Key_Left] 
	shifting along z:     CTRL+[Key_Down, Key_Up]
	

bool keyboardEnabled (  )  const

Returns true, if the widget accept keyboard input from the user

void setKeySpeed ( double  rot,
double  scale,
double  shift 
)

Sets speed for keyboard driven transformations.

Values < 0 are ignored. Default is (3,5,5)

void keySpeed ( double &  rot,
double &  scale,
double &  shift 
) const

Gets speed for keyboard driven transformations.

bool lightingEnabled (  )  const

Returns true, if Lighting is enabled, false else

void illuminate ( unsigned  light = 0  ) 

Turn light on.

Parameters:
light light number [0..7]
See also:
setLight

void blowout ( unsigned  light = 0  ) 

Turn light off.

Parameters:
light light number [0..7]
See also:
setLight

void setMaterialComponent ( GLenum  property,
double  r,
double  g,
double  b,
double  a = 1.0 
)

Sets GL material properties

void setMaterialComponent ( GLenum  property,
double  intensity 
)

This function is for convenience. It sets GL material properties with the equal r,g,b values and a blending alpha with value 1.0

void setShininess ( double  exponent  ) 

Sets GL shininess

void setLightComponent ( GLenum  property,
double  r,
double  g,
double  b,
double  a = 1.0,
unsigned  light = 0 
)

Sets GL light properties for light 'light'

void setLightComponent ( GLenum  property,
double  intensity,
unsigned  light = 0 
)

This function is for convenience. It sets GL light properties with the equal r,g,b values and a blending alpha with value 1.0

double xLightRotation ( unsigned  idx = 0  )  const [inline]

Returns Light 'idx' rotation around X axis [-360..360] (some angles are equivalent).

double yLightRotation ( unsigned  idx = 0  )  const [inline]

Returns Light 'idx' rotation around Y axis [-360..360] (some angles are equivalent).

double zLightRotation ( unsigned  idx = 0  )  const [inline]

Returns Light 'idx' rotation around Z axis [-360..360] (some angles are equivalent).

double xLightShift ( unsigned  idx = 0  )  const [inline]

Returns shift of Light 'idx 'along X axis (object coordinates).

double yLightShift ( unsigned  idx = 0  )  const [inline]

Returns shift of Light 'idx 'along Y axis (object coordinates).

double zLightShift ( unsigned  idx = 0  )  const [inline]

Returns shift of Light 'idx 'along Z axis (object coordinates).

bool hasData (  )  const [inline]

Returns true if valid data available, false else.

void rotationChanged ( double  xAngle,
double  yAngle,
double  zAngle 
) [signal]

Emitted, if the rotation is changed.

void shiftChanged ( double  xShift,
double  yShift,
double  zShift 
) [signal]

Emitted, if the shift is changed.

void vieportShiftChanged ( double  xShift,
double  yShift 
) [signal]

Emitted, if the viewport shift is changed.

void scaleChanged ( double  xScale,
double  yScale,
double  zScale 
) [signal]

Emitted, if the scaling is changed.

void zoomChanged ( double   )  [signal]

Emitted, if the zoom is changed.

void projectionChanged ( bool   )  [signal]

Emitted, if the projection mode is changed.

void setRotation ( double  xVal,
double  yVal,
double  zVal 
) [slot]

Set the rotation angle of the object. If you look along the respective axis towards ascending values, the rotation is performed in mathematical negative sense

Parameters:
xVal angle in degree to rotate around the X axis
yVal angle in degree to rotate around the Y axis
zVal angle in degree to rotate around the Z axis

void setShift ( double  xVal,
double  yVal,
double  zVal 
) [slot]

Set the shift in object (world) coordinates.

Parameters:
xVal shift along (world) X axis
yVal shift along (world) Y axis
zVal shift along (world) Z axis
See also:
setViewportShift()

void setViewportShift ( double  xVal,
double  yVal 
) [slot]

Performs shifting along screen axes. The shift moves points inside a sphere, which encloses the unscaled and unzoomed data by multiples of the spheres diameter

Parameters:
xVal shift along (view) X axis
yVal shift along (view) Y axis
See also:
setShift()

void setScale ( double  xVal,
double  yVal,
double  zVal 
) [slot]

Set the scale in object (world) coordinates.

Parameters:
xVal scaling for X values
yVal scaling for Y values
zVal scaling for Z values
A respective value of 1 represents no scaling;

void setZoom ( double  val  )  [slot]

Set the (zoom in addition to scale).

Parameters:
val zoom value (value == 1 indicates no zooming)

void setOrtho ( bool  val  )  [slot]

Set up ortogonal or perspective mode and updates widget

void enableMouse ( bool  val = true  )  [slot]

Enable mouse input.

The function has no effect if you derive from Plot3D and overrides the mouse Function too careless. In this case check first against mouseEnabled() in your version of mouseMoveEvent() and wheelEvent(). A more fine grained input control can be achieved by combining assignMouse() with enableMouse().

void disableMouse ( bool  val = true  )  [slot]

Disable mouse input.

See also:
enableMouse()

void enableKeyboard ( bool  val = true  )  [slot]

Enable keyboard input.

The function has no effect if you derive from Plot3D and overrides the keyboard Functions too careless. In this case check first against keyboardEnabled() in your version of keyPressEvent() A more fine grained input control can be achieved by combining assignKeyboard() with enableKeyboard().

void disableKeyboard ( bool  val = true  )  [slot]

Disable keyboard input.

See also:
enableKeyboard()

void enableLighting ( bool  val = true  )  [slot]

Turn Lighting on or off.

void disableLighting ( bool  val = true  )  [slot]

Turn Lighting on or off.

bool savePixmap ( QString const &  fileName,
QString const &  format 
) [virtual, slot]

Saves content to pixmap format

bool saveVector ( QString const &  fileName,
QString const &  format,
VectorWriter::TEXTMODE  text,
VectorWriter::SORTMODE  sortmode 
) [virtual, slot]

Saves content to vector format.

Deprecated:
Use Plot3D::save or IO::save instead.
Writes vector data supported by gl2ps. The corresponding format types are "EPS","PS"or "PDF". If zlib has been configured this will be extended by "EPS_GZ" and "PS_GZ". Beware: BSPSORT turns out to behave very slowly and memory consuming, especially in cases where many polygons appear. It is still more exact than SIMPLESORT.

bool save ( QString const &  fileName,
QString const &  format 
) [virtual, slot]

Saves content.

Saves content in one of the registered output formats. To modify the behaviour for more complex output handling use IO::outputHandler.

void initializeGL (  )  [protected]

Set up the OpenGL rendering state

void paintGL (  )  [protected]

Paint the widgets content.

void resizeGL ( int  w,
int  h 
) [protected]

Set up the OpenGL view port

void mousePressEvent ( QMouseEvent *  e  )  [protected]

Standard mouse button Function. Prepares the call to mouseMoveEvent

See also:
mouseMoveEvent()

void mouseReleaseEvent ( QMouseEvent *  e  )  [protected]

Standard mouse button Function. Completes the call to mouseMoveEvent

See also:
mouseMoveEvent()

void mouseMoveEvent ( QMouseEvent *  e  )  [protected]

Standard mouse button Function

See also:
assignMouse()

void wheelEvent ( QWheelEvent *  e  )  [protected]

Standard wheel Function - zoom (wheel only) or z-scale (shift+wheel)

void createCoordinateSystem (  )  [protected]

Create a coordinate system from data


The documentation for this class was generated from the following files:
Generated on Mon Jun 25 18:47:29 2007 for QwtPlot3D API by  doxygen 1.5.1