00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef LINE_H
00026 #define LINE_H
00027
00028 #include <avogadro/primitive.h>
00029 #include <avogadro/color.h>
00030
00031 #include <QList>
00032 #include <QMouseEvent>
00033
00034 namespace Avogadro {
00035
00044 class LinePrivate;
00045 class A_EXPORT Line : public Primitive
00046 {
00047 Q_OBJECT
00048
00049 public:
00055 Line(QObject *parent=0);
00056
00057 ~Line();
00058
00063 inline const Eigen::Vector3d &begin () const
00064 {
00065 return m_begin;
00066 }
00067
00072 inline const Eigen::Vector3d &end () const
00073 {
00074 return m_end;
00075 }
00076
00081 inline void setBegin(const Eigen::Vector3d &vec)
00082 {
00083 m_begin = vec;
00084 }
00085
00090 inline void setEnd(const Eigen::Vector3d &vec)
00091 {
00092 m_end = vec;
00093 }
00094
00098 double width() const
00099 {
00100 return m_width;
00101 }
00105 void setWidth(double value)
00106 {
00107 m_width = value;
00108 }
00109
00113 const Color* color()
00114 {
00115 return &m_color;
00116 }
00120 void setColor(const Color &color)
00121 {
00122 float red = color.red();
00123 float green = color.green();
00124 float blue = color.blue();
00125 float alpha = color.alpha();
00126 m_color.set(red, green, blue, alpha);
00127 }
00128
00129 void mousePressed(QMouseEvent *event) { emit mousePressEvent(this, event); }
00130 void mouseMoved(QMouseEvent *event) { emit mouseMoveEvent(this, event); }
00131 void mouseReleased(QMouseEvent *event) { emit mouseReleaseEvent(this, event); }
00132 signals:
00133 void mousePressEvent(Line *line, QMouseEvent * event);
00134 void mouseMoveEvent(Line *line, QMouseEvent * event);
00135 void mouseReleaseEvent(Line *line, QMouseEvent * event);
00136
00137 private:
00138 Eigen::Vector3d m_begin;
00139 Eigen::Vector3d m_end;
00140 double m_width;
00141 Color m_color;
00142 Q_DECLARE_PRIVATE(Line)
00143 };
00144
00145 }
00146
00147 #endif