# HG changeset patch # User Dmitriy Morozov <morozov@cs.duke.edu> # Date 1154961555 14400 # Node ID 240ec9bb3d929949822d5dcea0189baa71cdf792 # Parent b16a476ef46d093b0b3f9bf8c28bcd2925c7aa29# Parent 8752e612ec07b8d730bc4573da7a9c5d01c4b706 Merged in color picker into master branch diff -r b16a476ef46d -r 240ec9bb3d92 README --- a/README Mon Aug 07 09:36:23 2006 -0400 +++ b/README Mon Aug 07 10:39:15 2006 -0400 @@ -1,6 +1,6 @@ VEFViewer is written by Dmitriy Morozov <morozov@cs.duke.edu>. -It uses libQGLViewer, and therefore is licensed under GPL. +It uses Qt4, libQGLViewer, and is licensed under GPL. To build (on Linux): qmake diff -r b16a476ef46d -r 240ec9bb3d92 VEFViewer.cpp --- a/VEFViewer.cpp Mon Aug 07 09:36:23 2006 -0400 +++ b/VEFViewer.cpp Mon Aug 07 10:39:15 2006 -0400 @@ -205,17 +205,26 @@ } +// QDisplayListLWI +void QDisplayListLWI::draw() const +{ + if (!isVisible()) return; + + glColor3f(color_.redF(), color_.greenF(), color_.blueF()); + glCallList(display_list_); +} + // QVertices void QVerticesLWI::draw() const { if (!isVisible()) return; - - glColor3f(.5, .65, .65); + glColor3f(color_.redF(), color_.greenF(), color_.blueF()); if (!isSphere()) glCallList(display_list_); else glCallList(sphere_display_list_); + } void QVerticesLWI::drawWithNames(int offset) const {} @@ -224,8 +233,8 @@ void QVerticesLWI::highlight(int selected) {} -QVerticesLWI::QVerticesLWI(const QString& fname, VEFViewer* v): - isSphere_(false), viewer_(v) +QVerticesLWI::QVerticesLWI(QString fname, VEFViewer* v): + QDisplayListLWI(fname, QColor::fromRgbF(.5, .65, .65)), isSphere_(false), viewer_(v) { filename_ = fname; QFileInfo fi(filename_); @@ -292,7 +301,7 @@ // Draw selected if (highlighted_ >= 0) { - glColor3f(.9, .4, 0); + glColor3f(color_.light(200).redF(), color_.light(200).greenF(), color_.light(200).blueF()); glBegin(GL_TRIANGLES); const Triangle& t = triangles_[highlighted_]; glNormal3f(t.nx, t.ny, t.nz); @@ -305,12 +314,12 @@ // Draw the object if (!isWireframe()) { - glColor3f(0., .4, .6); + glColor3f(color_.light(150).redF(), color_.light(150).greenF(), color_.light(150).blueF()); glCallList(display_list_); } else { - glColor3f(1., 0, 0); + glColor3f(color_.redF(), color_.greenF(), color_.blueF()); glCallList(wireframe_display_list_); } } @@ -347,8 +356,8 @@ std::cout << " " << t.x2 << " " << t.y2 << " " << t.z2 << ")" << std::endl; } -QFacesLWI::QFacesLWI(const QString& fname, VEFViewer* v): - highlighted_(-1), isWireframe_(false), viewer_(v) +QFacesLWI::QFacesLWI(QString fname, VEFViewer* v): + QDisplayListLWI(fname, QColor::fromRgbF(0,.4,.6)), highlighted_(-1), isWireframe_(false), viewer_(v) { filename_ = fname; QFileInfo fi(filename_); @@ -449,13 +458,6 @@ /* QEdges */ -void QEdgesLWI::draw() const -{ - if (!isVisible()) return; - - glColor3f(.6, .2, .6); - glCallList(display_list_); -} void QEdgesLWI::drawWithNames(int offset) const {} int QEdgesLWI::numElements() const @@ -463,8 +465,8 @@ void QEdgesLWI::highlight(int selected) {} -QEdgesLWI::QEdgesLWI(const QString& fname, VEFViewer* v): - viewer_(v) +QEdgesLWI::QEdgesLWI(QString fname, VEFViewer* v): + QDisplayListLWI(fname, QColor::fromRgbF(.6,.2,.6)), viewer_(v) { filename_ = fname; QFileInfo fi(filename_); diff -r b16a476ef46d -r 240ec9bb3d92 VEFViewer.h --- a/VEFViewer.h Mon Aug 07 09:36:23 2006 -0400 +++ b/VEFViewer.h Mon Aug 07 10:39:15 2006 -0400 @@ -5,6 +5,7 @@ #include <QFileDialog> #include <QListWidgetItem> #include <QMenu> +#include <QColorDialog> class VEFViewer: public QGLViewer { @@ -47,13 +48,13 @@ Q_OBJECT public: - QDisplayListLWI(): - visible_(false) + QDisplayListLWI(QString name, QColor color): + QListWidgetItem(name), color_(color), visible_(false) { toggleVisible(); } GLuint getDisplayList() const { return display_list_; } ~QDisplayListLWI() { destroy(); } - virtual void draw() const =0; + virtual void draw() const; virtual void drawWithNames(int offset) const =0; virtual int numElements() const =0; virtual void highlight(int selected) =0; @@ -65,6 +66,9 @@ connect(visible, SIGNAL(triggered()), this, SLOT(toggleVisible())); visible->setCheckable(true); visible->setChecked(isVisible()); + + QAction* color = m.addAction("Pick color"); + connect(color, SIGNAL(triggered()), this, SLOT(changeColor())); } bool isVisible() const { return visible_; } @@ -75,10 +79,13 @@ virtual void reload() { destroy(); init(); } virtual void init() =0; virtual void destroy() { glDeleteLists(display_list_, 1); } + void changeColor() + { QColor nw = QColorDialog::getColor(color_); if (nw.isValid()) color_ = nw; } protected: GLuint display_list_; bool visible_; + QColor color_; private: void adjustFont() { QFont f; if (visible_) f.setBold(true); setFont(f); } @@ -91,7 +98,7 @@ Q_OBJECT public: - QVerticesLWI(const QString& fname, VEFViewer* v); + QVerticesLWI(QString fname, VEFViewer* v); virtual void draw() const; virtual void drawWithNames(int offset) const; virtual int numElements() const; @@ -131,7 +138,7 @@ Q_OBJECT public: - QFacesLWI(const QString& fname, VEFViewer* v); + QFacesLWI(QString fname, VEFViewer* v); virtual void draw() const; virtual void drawWithNames(int offset) const; virtual int numElements() const; @@ -176,8 +183,7 @@ class QEdgesLWI: public QDisplayListLWI { public: - QEdgesLWI(const QString& fname, VEFViewer* v); - virtual void draw() const; + QEdgesLWI(QString fname, VEFViewer* v); virtual void drawWithNames(int offset) const; virtual int numElements() const; virtual void highlight(int selected);