summaryrefslogtreecommitdiffstats
path: root/lib/tqwtplot3d/examples/enrichments/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/tqwtplot3d/examples/enrichments/src')
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.cpp147
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.h57
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase.ui215
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase4.ui167
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichments.cpp150
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/enrichments.h31
-rw-r--r--lib/tqwtplot3d/examples/enrichments/src/main.cpp30
7 files changed, 797 insertions, 0 deletions
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.cpp b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.cpp
new file mode 100644
index 0000000..05bc6f2
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.cpp
@@ -0,0 +1,147 @@
+#include <qlayout.h>
+#include <qslider.h>
+#include <qcheckbox.h>
+#include <qradiobutton.h>
+
+
+#include "enrichmentmainwindow.h"
+#include "enrichments.h"
+#include "../../../include/qwt3d_function.h"
+
+using namespace Qwt3D;
+
+
+class Hat : public Function
+{
+public:
+
+ Hat(SurfacePlot& pw)
+ :Function(pw)
+ {
+ }
+
+ double operator()(double x, double y)
+ {
+ double ret = 1.0 / (x*x+y*y+0.5);
+ return ret;
+ }
+ QString name() const {return "$\\frac{1}{x^2+y^2+\\frac{1}{2}}$";}
+};
+
+Hat* hat;
+
+EnrichmentMainWindow::EnrichmentMainWindow( QWidget* parent )
+ : DummyBase( parent )
+{
+#if QT_VERSION < 0x040000
+ setCaption("enrichment");
+ QGridLayout *grid = new QGridLayout( frame, 0, 0 );
+#else
+ setupUi(this);
+ QGridLayout *grid = new QGridLayout( frame);
+#endif
+
+ plot = new SurfacePlot(frame);
+ grid->addWidget( plot, 0, 0 );
+
+ plot->setTitle("Bar Style (Vertex Enrichment)");
+ plot->setTitleFont("Arial",12);
+
+ plot->setZoom(0.8);
+ plot->setRotation(30,0,15);
+
+ plot->setCoordinateStyle(BOX);
+ bar = (Bar*)plot->setPlotStyle(Bar(0.007,0.5));
+
+ hat = new Hat(*plot);
+
+ hat->setMesh(23,21);
+ hat->setDomain(-1.8,1.7,-1.6,1.7);
+
+ hat->create();
+
+ for (unsigned i=0; i!=plot->coordinates()->axes.size(); ++i)
+ {
+ plot->coordinates()->axes[i].setMajors(5);
+ plot->coordinates()->axes[i].setMinors(4);
+ }
+
+
+ //plot->setMeshLineWidth(1);
+ plot->coordinates()->setGridLinesColor(RGBA(0,0,0.5));
+ plot->coordinates()->setLineWidth(1);
+ plot->coordinates()->setNumberFont("Courier",8);
+ plot->coordinates()->adjustNumbers(5);
+
+ setColor();
+ plot->updateData();
+ plot->updateGL();
+
+
+ levelSlider->setValue(50);
+ level_ = 0.5;
+ width_ = 0.007;
+ connect( levelSlider, SIGNAL(valueChanged(int)), this, SLOT(setLevel(int)) );
+
+ //connect( barBtn, SIGNAL(clicked()), this, SLOT(barSlot()) );
+ //connect( sliceBtn, SIGNAL(clicked()), this, SLOT(sliceSlot()) );
+
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glDisable(GL_LINE_SMOOTH);
+}
+
+EnrichmentMainWindow::~EnrichmentMainWindow()
+{
+ delete hat;
+}
+
+
+void EnrichmentMainWindow::setColor()
+{
+ Qwt3D::ColorVector cv;
+
+ RGBA rgb;
+ int i = 252;
+ int step = 4;
+
+ while (i>=0)
+ {
+ rgb.r = i/255.; rgb.g=(i-60>0) ? (i-60)/255.:0;rgb.b=0;
+ // rgb.a = 0.2;
+ cv.push_back(rgb);
+ if (!--step)
+ {
+ i-=4;
+ step=4;
+ }
+ }
+ StandardColor* col = new StandardColor(plot);
+ col->setColorVector(cv);
+
+ plot->setDataColor(col);
+}
+
+
+void EnrichmentMainWindow::setLevel(int i)
+{
+ level_ = 1 - i / 100.;
+ bar->configure(width_,level_);
+ plot->updateData();
+ plot->updateGL();
+}
+
+void EnrichmentMainWindow::setWidth(int i)
+{
+ width_ = i / 20000.;
+ bar->configure(width_,level_);
+ plot->updateData();
+ plot->updateGL();
+}
+
+void EnrichmentMainWindow::barSlot()
+{
+ Bar b(width_,level_);
+ bar = (Bar*)plot->setPlotStyle(b);
+ plot->updateData();
+ plot->updateGL();
+}
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.h b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.h
new file mode 100644
index 0000000..68b97b0
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindow.h
@@ -0,0 +1,57 @@
+#include "qwt3d_surfaceplot.h"
+#include "qwt3d_function.h"
+#include "qwt3d_plot.h"
+#include "enrichments.h"
+
+
+#if QT_VERSION < 0x040000
+#include "enrichmentmainwindowbase.h"
+#else
+#include "ui_enrichmentmainwindowbase4.h"
+#endif
+
+//MOC_SKIP_BEGIN
+#if QT_VERSION < 0x040000
+ class DummyBase : public EnrichmentMainWindowBase
+ {
+ public:
+ DummyBase(QWidget* parent = 0)
+ : EnrichmentMainWindowBase(parent)
+ {
+ }
+ };
+#else
+ class DummyBase : public QMainWindow, protected Ui::MainWindow
+ {
+ public:
+ DummyBase(QWidget* parent = 0)
+ : QMainWindow(parent)
+ {
+ }
+ };
+#endif
+//MOC_SKIP_END
+
+
+class EnrichmentMainWindow : public DummyBase
+{
+ Q_OBJECT
+
+public:
+ EnrichmentMainWindow( QWidget* parent = 0 );
+ ~EnrichmentMainWindow();
+ void setColor();
+ Bar *bar;
+ Qwt3D::SurfacePlot* plot;
+
+public slots:
+ void setLevel(int);
+ void setWidth(int);
+ void barSlot();
+
+private:
+ double level_, width_;
+
+};
+
+
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase.ui b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase.ui
new file mode 100644
index 0000000..b6ff9fc
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase.ui
@@ -0,0 +1,215 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>EnrichmentMainWindowBase</class>
+<widget class="QMainWindow">
+ <property name="name">
+ <cstring>EnrichmentMainWindowBase</cstring>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>843</width>
+ <height>702</height>
+ </rect>
+ </property>
+ <property name="caption">
+ <string>print</string>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>11</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="1" column="0">
+ <property name="name">
+ <cstring>Layout11</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLayoutWidget" row="0" column="0">
+ <property name="name">
+ <cstring>Layout10</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1_2</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Width</string>
+ </property>
+ </widget>
+ <widget class="QSlider" row="0" column="1">
+ <property name="name">
+ <cstring>widthSlider</cstring>
+ </property>
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="minValue">
+ <number>10</number>
+ </property>
+ <property name="maxValue">
+ <number>200</number>
+ </property>
+ <property name="orientation">
+ <enum>Horizontal</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>10</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Relative psition of slicing plane</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1">
+ <property name="name">
+ <cstring>Layout9</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ </grid>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QLayoutWidget" row="0" column="1" rowspan="2" colspan="1">
+ <property name="name">
+ <cstring>Layout8</cstring>
+ </property>
+ <grid>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <property name="spacing">
+ <number>6</number>
+ </property>
+ <widget class="QSlider" row="1" column="0">
+ <property name="name">
+ <cstring>levelSlider</cstring>
+ </property>
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>40</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maxValue">
+ <number>100</number>
+ </property>
+ <property name="value">
+ <number>10</number>
+ </property>
+ <property name="orientation">
+ <enum>Vertical</enum>
+ </property>
+ <property name="tickmarks">
+ <enum>Below</enum>
+ </property>
+ <property name="tickInterval">
+ <number>10</number>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Changes the level, where marker are shown</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property name="text">
+ <string>Level</string>
+ </property>
+ <property name="alignment">
+ <set>AlignCenter</set>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QFrame" row="0" column="0">
+ <property name="name">
+ <cstring>frame</cstring>
+ </property>
+ <property name="frameShape">
+ <enum>StyledPanel</enum>
+ </property>
+ <property name="frameShadow">
+ <enum>Sunken</enum>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<menubar>
+ <property name="name">
+ <cstring>menubar</cstring>
+ </property>
+</menubar>
+<toolbars>
+</toolbars>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase4.ui b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase4.ui
new file mode 100644
index 0000000..0ed32e3
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichmentmainwindowbase4.ui
@@ -0,0 +1,167 @@
+<ui version="4.0" >
+ <author></author>
+ <comment></comment>
+ <exportmacro></exportmacro>
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>800</width>
+ <height>600</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralWidget" >
+ <layout class="QGridLayout" >
+ <property name="margin" >
+ <number>8</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item row="0" column="0" >
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="frame" >
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Sunken</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>5</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>&lt;html>&lt;head>&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; />&lt;/head>&lt;body style=&quot; white-space: pre-wrap; font-family:MS Shell Dlg; font-weight:400; font-style:normal; text-decoration:none;&quot;>&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>Level&lt;/p>&lt;/body>&lt;/html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="levelSlider" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum" >
+ <number>100</number>
+ </property>
+ <property name="value" >
+ <number>10</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="invertedAppearance" >
+ <bool>true</bool>
+ </property>
+ <property name="tickPosition" >
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval" >
+ <number>10</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" >
+ <property name="margin" >
+ <number>0</number>
+ </property>
+ <property name="spacing" >
+ <number>6</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_2" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>0</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string>&lt;html>&lt;head>&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; />&lt;/head>&lt;body style=&quot; white-space: pre-wrap; font-family:MS Shell Dlg; font-weight:400; font-style:normal; text-decoration:none;&quot;>&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;>Width&lt;/p>&lt;/body>&lt;/html></string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="widthSlider" >
+ <property name="enabled" >
+ <bool>false</bool>
+ </property>
+ <property name="minimum" >
+ <number>2</number>
+ </property>
+ <property name="maximum" >
+ <number>200</number>
+ </property>
+ <property name="value" >
+ <number>20</number>
+ </property>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition" >
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <pixmapfunction></pixmapfunction>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichments.cpp b/lib/tqwtplot3d/examples/enrichments/src/enrichments.cpp
new file mode 100644
index 0000000..7780412
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichments.cpp
@@ -0,0 +1,150 @@
+#include "qbitmap.h"
+
+#include "qwt3d_color.h"
+#include "qwt3d_plot.h"
+#include "enrichments.h"
+
+using namespace Qwt3D;
+
+
+/////////////////////////////////////////////////////////////////
+//
+// Bar
+//
+/////////////////////////////////////////////////////////////////
+
+Bar::Bar()
+{
+ configure(0, 1);
+}
+
+Bar::Bar(double rad, double level)
+{
+ configure(rad, level);
+}
+
+void Bar::configure(double rad, double level)
+{
+ plot = 0;
+ radius_ = rad;
+ level_ = level;
+}
+
+void Bar::drawBegin()
+{
+ diag_ = (plot->hull().maxVertex-plot->hull().minVertex).length() * radius_;
+ glLineWidth( 0 );
+ glEnable(GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset(1,1);
+}
+
+void Bar::drawEnd()
+{
+}
+
+void Bar::draw(Qwt3D::Triple const& pos)
+{
+
+// GLStateBewarer sb(GL_LINE_SMOOTH, true);
+// sb.turnOn();
+
+ double interval = plot->hull().maxVertex.z-plot->hull().minVertex.z;
+ double numlevel = plot->hull().minVertex.z + level_ * interval;
+ interval /=100;
+ if (pos.z > numlevel - interval && pos.z < numlevel + interval )
+ {
+ Label3D lb;
+ lb.draw(pos, diag_, diag_ * 2);
+ }
+
+ GLdouble minz = plot->hull().minVertex.z;
+
+ RGBA rgbat = (*plot->dataColor())(pos);
+ RGBA rgbab = (*plot->dataColor())(pos.x, pos.y, minz);
+
+ glBegin(GL_QUADS);
+ glColor4d(rgbab.r,rgbab.g,rgbab.b,rgbab.a);
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y+diag_,minz);
+ glVertex3d(pos.x-diag_,pos.y+diag_,minz);
+
+ if (pos.z > numlevel - interval && pos.z < numlevel + interval )
+ glColor3d(0.7,0,0);
+ else
+ glColor4d(rgbat.r,rgbat.g,rgbat.b,rgbat.a);
+ glVertex3d(pos.x-diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x+diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y+diag_,pos.z);
+
+ glColor4d(rgbab.r,rgbab.g,rgbat.b,rgbab.a);
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y-diag_,minz);
+ glColor4d(rgbat.r,rgbat.g,rgbat.b,rgbat.a);
+ glVertex3d(pos.x+diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y-diag_,pos.z);
+
+ glColor4d(rgbab.r,rgbab.g,rgbat.b,rgbab.a);
+ glVertex3d(pos.x-diag_,pos.y+diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y+diag_,minz);
+ glColor4d(rgbat.r,rgbat.g,rgbat.b,rgbat.a);
+ glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y+diag_,pos.z);
+
+ glColor4d(rgbab.r,rgbab.g,rgbat.b,rgbab.a);
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x-diag_,pos.y+diag_,minz);
+ glColor4d(rgbat.r,rgbat.g,rgbat.b,rgbat.a);
+ glVertex3d(pos.x-diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y-diag_,pos.z);
+
+ glColor4d(rgbab.r,rgbab.g,rgbat.b,rgbab.a);
+ glVertex3d(pos.x+diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y+diag_,minz);
+ glColor4d(rgbat.r,rgbat.g,rgbat.b,rgbat.a);
+ glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x+diag_,pos.y-diag_,pos.z);
+ glEnd();
+
+ glColor3d(0,0,0);
+ glBegin(GL_LINES);
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz); glVertex3d(pos.x+diag_,pos.y-diag_,minz);
+ glVertex3d(pos.x-diag_,pos.y-diag_,pos.z); glVertex3d(pos.x+diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y+diag_,pos.z); glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y+diag_,minz); glVertex3d(pos.x+diag_,pos.y+diag_,minz);
+
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz); glVertex3d(pos.x-diag_,pos.y+diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y-diag_,minz); glVertex3d(pos.x+diag_,pos.y+diag_,minz);
+ glVertex3d(pos.x+diag_,pos.y-diag_,pos.z); glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y-diag_,pos.z); glVertex3d(pos.x-diag_,pos.y+diag_,pos.z);
+
+ glVertex3d(pos.x-diag_,pos.y-diag_,minz); glVertex3d(pos.x-diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x+diag_,pos.y-diag_,minz); glVertex3d(pos.x+diag_,pos.y-diag_,pos.z);
+ glVertex3d(pos.x+diag_,pos.y+diag_,minz); glVertex3d(pos.x+diag_,pos.y+diag_,pos.z);
+ glVertex3d(pos.x-diag_,pos.y+diag_,minz); glVertex3d(pos.x-diag_,pos.y+diag_,pos.z);
+ glEnd();
+}
+
+void Label3D::draw(Qwt3D::Triple const& pos, double w, double h)
+{
+ double gap = 0.3;
+ glColor3d(1,1,1);
+ glBegin(GL_QUADS);
+ glVertex3d(pos.x-w,pos.y,pos.z + gap);
+ glVertex3d(pos.x+w,pos.y,pos.z + gap);
+ glVertex3d(pos.x+w,pos.y,pos.z + gap + h);
+ glVertex3d(pos.x-w,pos.y,pos.z + gap + h);
+ glEnd();
+ glColor3d(0.4,0,0);
+ glBegin(GL_LINE_LOOP);
+ glVertex3d(pos.x-w,pos.y,pos.z + gap);
+ glVertex3d(pos.x+w,pos.y,pos.z + gap);
+ glVertex3d(pos.x+w,pos.y,pos.z + gap + h);
+ glVertex3d(pos.x-w,pos.y,pos.z + gap + h);
+ glEnd();
+ glBegin(GL_LINES);
+ glVertex3d(pos.x,pos.y,pos.z);
+ glVertex3d(pos.x,pos.y,pos.z + gap);
+ glEnd();
+}
diff --git a/lib/tqwtplot3d/examples/enrichments/src/enrichments.h b/lib/tqwtplot3d/examples/enrichments/src/enrichments.h
new file mode 100644
index 0000000..2a47968
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/enrichments.h
@@ -0,0 +1,31 @@
+#ifndef enrichments_h__2004_02_25_13_58_begin_guarded_code
+#define enrichments_h__2004_02_25_13_58_begin_guarded_code
+
+#include "qwt3d_plot.h"
+
+
+class Bar : public Qwt3D::VertexEnrichment
+{
+public:
+ Bar();
+ Bar(double rad, double level);
+
+ Qwt3D::Enrichment* clone() const {return new Bar(*this);}
+
+ void configure(double rad, double level);
+ void drawBegin();
+ void drawEnd();
+ void draw(Qwt3D::Triple const&);
+
+private:
+ double level_, radius_;
+ double diag_;
+};
+
+class Label3D
+{
+public:
+ void draw(Qwt3D::Triple const&, double w, double h);
+};
+
+#endif
diff --git a/lib/tqwtplot3d/examples/enrichments/src/main.cpp b/lib/tqwtplot3d/examples/enrichments/src/main.cpp
new file mode 100644
index 0000000..a590d9d
--- /dev/null
+++ b/lib/tqwtplot3d/examples/enrichments/src/main.cpp
@@ -0,0 +1,30 @@
+/********************************************************************
+ created: 2003/09/10
+ filename: main.cpp
+
+ author: Micha Bieber
+*********************************************************************/
+
+#include <qapplication.h>
+#include "enrichmentmainwindow.h"
+
+int main( int argc, char** argv )
+{
+ QApplication app( argc, argv );
+
+ if ( !QGLFormat::hasOpenGL() )
+ {
+ qWarning( "This system has no OpenGL support. Exiting." );
+ return -1;
+ }
+
+ EnrichmentMainWindow mainwindow;
+
+#if QT_VERSION < 0x040000
+ app.setMainWidget(&mainwindow);
+#endif
+
+ mainwindow.show();
+
+ return app.exec();
+}