You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
2.5 KiB

#ifndef qwt3d_enrichment_std_h__2004_02_23_19_25_begin_guarded_code
#define qwt3d_enrichment_std_h__2004_02_23_19_25_begin_guarded_code
#include "qwt3d_enrichment.h"
namespace Qwt3D
{
class Plot3D;
//! The Cross Hair Style
class QWT3D_EXPORT CrossHair : public VertexEnrichment
{
public:
CrossHair();
CrossHair(double rad, double linewidth, bool smooth, bool boxed);
Qwt3D::Enrichment* clone() const {return new CrossHair(*this);}
void configure(double rad, double linewidth, bool smooth, bool boxed);
void drawBegin();
void drawEnd();
void draw(Qwt3D::Triple const&);
private:
bool boxed_, smooth_;
double linewidth_, radius_;
GLboolean oldstate_;
};
//! The Point Style
class QWT3D_EXPORT Dot : public VertexEnrichment
{
public:
Dot();
Dot(double pointsize, bool smooth);
Qwt3D::Enrichment* clone() const {return new Dot(*this);}
void configure(double pointsize, bool smooth);
void drawBegin();
void drawEnd();
void draw(Qwt3D::Triple const&);
private:
bool smooth_;
double pointsize_;
GLboolean oldstate_;
};
//! The Cone Style
class QWT3D_EXPORT Cone : public VertexEnrichment
{
public:
Cone();
Cone(double rad, unsigned quality);
~Cone();
Qwt3D::Enrichment* clone() const {return new Cone(*this);}
void configure(double rad, unsigned quality);
void draw(Qwt3D::Triple const&);
private:
GLUquadricObj *hat;
GLUquadricObj *disk;
unsigned quality_;
double radius_;
GLboolean oldstate_;
};
//! 3D vector field.
/**
The class encapsulates a vector field including his OpenGL representation as arrow field.
The arrows can be configured in different aspects (color, shape, painting quality).
*/
class QWT3D_EXPORT Arrow : public VertexEnrichment
{
public:
Arrow();
~Arrow();
Qwt3D::Enrichment* clone() const {return new Arrow(*this);}
void configure(int segs, double relconelength, double relconerad, double relstemrad);
void setQuality(int val) {segments_ = val;} //!< Set the number of faces for the arrow
void draw(Qwt3D::Triple const&);
void setTop(Qwt3D::Triple t){top_ = t;}
void setColor(Qwt3D::RGBA rgba) {rgba_ = rgba;}
private:
GLUquadricObj *hat;
GLUquadricObj *disk;
GLUquadricObj *base;
GLUquadricObj *bottom;
GLboolean oldstate_;
double calcRotation(Qwt3D::Triple& axis, Qwt3D::FreeVector const& vec);
int segments_;
double rel_cone_length;
double rel_cone_radius;
double rel_stem_radius;
Qwt3D::Triple top_;
Qwt3D::RGBA rgba_;
};
} // ns
#endif