QwtPlot3D API
0.2.7
|
#include <qwt3d_plot.h>
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::CoordinateSystem * | coordinates () |
Qwt3D::ColorLegend * | legend () |
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::Enrichment * | setPlotStyle (Qwt3D::Enrichment const &val) |
Qwt3D::PLOTSTYLE | plotStyle () const |
Qwt3D::Enrichment * | userStyle () 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 Color * | dataColor () const |
virtual Qwt3D::Enrichment * | addEnrichment (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::Color * | datacolor_p |
Qwt3D::Enrichment * | userplotstyle_p |
EnrichmentList | elist_p |
std::vector< GLuint > | displaylists_p |
Qwt3D::Data * | actualData_p |
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.
Plot3D | ( | QWidget * | parent = 0 , |
const QGLWidget * | shareWidget = 0 |
||
) |
This should be the first call in your derived classes constructors.
References ColorLegend::BottomTop, Qwt3D::FILLEDMESH, Qwt3D::GOURAUD, ColorLegend::Left, and Qwt3D::NOFLOOR.
|
virtual |
Release allocated resources
QPixmap renderPixmap | ( | int | w = 0 , |
int | h = 0 , |
||
bool | useContext = false |
||
) |
Reimplemented from QGLWidget
void updateData | ( | ) |
void createCoordinateSystem | ( | Qwt3D::Triple | beg, |
Qwt3D::Triple | end | ||
) |
Create a coordinate system with generating corners beg and end
void setPlotStyle | ( | Qwt3D::PLOTSTYLE | val | ) |
Set plotstyle for the standard plotting types. An argument of value Qwt3D::USER is ignored.
References Qwt3D::USER.
Qwt3D::Enrichment * setPlotStyle | ( | Qwt3D::Enrichment const & | obj | ) |
Set plotstyle to Qwt3D::USER and an associated enrichment object.
References Enrichment::clone(), and Qwt3D::USER.
|
inline |
Returns plotting style
void setShading | ( | Qwt3D::SHADINGSTYLE | val | ) |
Set shading style
References Qwt3D::FLAT, and Qwt3D::GOURAUD.
void setIsolines | ( | int | steps | ) |
Set number of isolines. The lines are equidistant between minimal and maximal Z value
void setDataColor | ( | Color * | col | ) |
Sets new data color object.
assign a new coloring object for the data.
void showColorLegend | ( | bool | show | ) |
Show a color legend
References ColorLegend::colors, and Color::createVector().
void setCoordinateStyle | ( | Qwt3D::COORDSTYLE | st | ) |
Sets style of coordinate system.
Set style of coordinate system
References CoordinateSystem::setStyle().
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
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
References Tuple::x.
void setTitleFont | ( | const QString & | family, |
int | pointSize, | ||
int | weight = QFont::Normal , |
||
bool | italic = false |
||
) |
Set caption font
References Label::setFont().
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
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)
bool lightingEnabled | ( | ) | const |
Returns true, if Lighting is enabled, false else
void illuminate | ( | unsigned | light = 0 | ) |
Turn light on.
light | light number [0..7] |
void blowout | ( | unsigned | light = 0 | ) |
Turn light off.
light | light number [0..7] |
void setMaterialComponent | ( | GLenum | property, |
double | r, | ||
double | g, | ||
double | b, | ||
double | a = 1.0 |
||
) |
Sets GL material properties
Referenced by Plot3D::initializeGL(), and Plot3D::setMaterialComponent().
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
References Plot3D::setMaterialComponent().
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'
Referenced by Plot3D::initializeGL(), and Plot3D::setLightComponent().
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
References Plot3D::setLightComponent().
|
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
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 |
References Plot3D::rotationChanged().
|
slot |
Set the shift in object (world) coordinates.
xVal | shift along (world) X axis |
yVal | shift along (world) Y axis |
zVal | shift along (world) Z axis |
References Plot3D::shiftChanged().
|
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
xVal | shift along (view) X axis |
yVal | shift along (view) Y axis |
References Plot3D::vieportShiftChanged().
|
slot |
Set the scale in object (world) coordinates.
xVal | scaling for X values |
yVal | scaling for Y values |
zVal | scaling for Z values |
A respective value of 1 represents no scaling;
References Plot3D::scaleChanged().
|
slot |
Set the (zoom in addition to scale).
val | zoom value (value == 1 indicates no zooming) |
References Plot3D::zoomChanged().
|
slot |
Set up ortogonal or perspective mode and updates widget
References Plot3D::projectionChanged().
|
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().
|
slot |
Disable mouse input.
|
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().
|
slot |
Disable keyboard input.
|
slot |
Set the rotation angle of the light source. If you look along the respective axis towards ascending values, the rotation is performed in mathematical negative sense
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 |
light | light number |
|
slot |
Set the shift in light source (world) coordinates.
xVal | shift along (world) X axis |
yVal | shift along (world) Y axis |
zVal | shift along (world) Z axis |
light | light number |
Referenced by Plot3D::initializeGL().
|
virtualslot |
Saves content to pixmap format
Saves the framebuffer to the file fileName using one of the image file formats supported by Qt.
References IO::save().
|
virtualslot |
Saves content to vector format.
Writes vector data supported by gl2ps. The corresponding format types are "EPS","PS", "PDF", "SVG", or "PGF". If zlib has been configured this will be extended by "EPS_GZ", "PS_GZ" and "SVG_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.
References IO::outputHandler(), IO::save(), VectorWriter::setSortMode(), and VectorWriter::setTextMode().
|
virtualslot |
Saves content.
Saves content in one of the registered output formats. To modify the behaviour for more complex output handling use IO::outputHandler.
References IO::save().
|
protected |
Set up the OpenGL rendering state
References Plot3D::disableLighting(), Plot3D::setLightComponent(), Plot3D::setLightShift(), Plot3D::setMaterialComponent(), and Plot3D::updateData().
|
protected |
Paint the widgets content.
References ColorLegend::draw(), Label::draw(), Label::setRelPosition(), and Triple::x.
Referenced by Plot3D::resizeGL().
|
protected |
Set up the OpenGL view port
References Plot3D::paintGL().
|
protected |
Standard mouse button Function. Prepares the call to mouseMoveEvent
|
protected |
Standard mouse button Function. Completes the call to mouseMoveEvent
|
protected |
Standard mouse button Function
|
protected |
Standard wheel Function - zoom (wheel only) or z-scale (shift+wheel)
|
protected |
Create a coordinate system from data
References Plot3D::hull().