ATLAS Offline Software
Loading...
Searching...
No Matches
VP1MaterialButton Class Reference

#include <VP1MaterialButton.h>

Inheritance diagram for VP1MaterialButton:
Collaboration diagram for VP1MaterialButton:

Classes

class  Imp

Public Slots

void showEditMaterialDialog ()
void setMaterialText (const QString &)

Signals

void lastAppliedChanged ()

Public Member Functions

 VP1MaterialButton (QWidget *parent=0, int dim=25)
virtual ~VP1MaterialButton ()
bool handleMaterial (SoMaterial *)
bool stopHandlingMaterial (SoMaterial *)
void clearHandledMaterials ()
void copyValuesFromMaterial (SoMaterial *)
bool setMaterial (SoMaterial *)
const QList< SoMaterial * > & handledMaterials () const
void setText (const QString &)
void setDimension (int dim)
QColor lastAppliedDiffuseColour () const
QColor lastAppliedAmbientColour () const
QColor lastAppliedSpecularColour () const
QColor lastAppliedEmissiveColour () const
double lastAppliedTransparency () const
double lastAppliedShininess () const
double lastAppliedBrightness () const
QWidget & editWindow ()
QByteArray saveState () const
 fill out with the state of the object (used for drag and drop etc)
void restoreFromState (const QByteArray &)
void setSystemBasePointer (IVP1System *sys)
void message (const QString &) const
void message (const QStringList &, const QString &addtoend="") const
void message (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &) const
void messageDebug (const QStringList &, const QString &addtoend="") const
void messageDebug (const QString &addtostart, const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &) const
void messageVerbose (const QStringList &, const QString &addtoend="") const
void messageVerbose (const QString &addtostart, const QStringList &, const QString &addtoend="") const
IVP1SystemsystemBase () const
const QString & helperClassName () const

Static Public Member Functions

static SoMaterial * createMaterial (const QColor &, const double &brightness=0.0, const double &transp=0.0)
static SoMaterial * createMaterial (const double &r, const double &g, double b, const double &brightness=0.0, const double &transp=0.0)
static void setMaterialParameters (SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
static void setMaterialParameters (SoMaterial *m, const double &r, const double &g, const double &b, const double &brightness=0.0, const double &transp=0.0)
static bool verbose ()
static void warnUndeletedInstances ()
static QString str (const QString &s)
static QString str (const char *c)
static QString str (const bool b)
static QString str (const QColor &)
static QString str (const SbColor &)
static QString str (const VP1Interval &)
static QString str (const SbVec2d &)
static QString str (const SbVec2f &)
static QString str (const SbVec2s &)
static QString str (const SbVec3d &)
static QString str (const SbVec3f &)
static QString str (const SbVec3s &)
static QString str (const SbVec4d &)
static QString str (const SbVec4f &)
static QString str (short int n)
static QString str (unsigned short int n)
static QString str (long n)
static QString str (ulong n)
static QString str (int n)
static QString str (uint n)
static QString str (qlonglong n)
static QString str (qulonglong n)
static QString str (const double &d)
static QString str (const float &f)
static QString str (const void *)
template<class T>
static QString str (const T *t)
template<class T>
static QString str (const QFlags< T > &f)
template<class T>
static QString str (const HepGeom::BasicVector3D< T > &t)
static QString str (const Amg::Vector3D &t)
template<class T>
static QString str (const QList< T > &t)

Protected Slots

void updatePreview ()
void updatePreviewSceneAndBgd ()
void apply ()
void reset ()
void updateButton ()
void switchMode ()
void transparencyChanged ()

Protected Member Functions

void mousePressEvent (QMouseEvent *event)
void mouseMoveEvent (QMouseEvent *event)
void dropEvent (QDropEvent *event)
void dragEnterEvent (QDragEnterEvent *event)
void setHelperClassName (const QString &n)

Private Attributes

Impm_d
QString m_helpername
IVP1Systemm_system

Static Private Attributes

static const bool s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")

Detailed Description

Definition at line 46 of file VP1MaterialButton.h.

Constructor & Destructor Documentation

◆ VP1MaterialButton()

VP1MaterialButton::VP1MaterialButton ( QWidget * parent = 0,
int dim = 25 )

Definition at line 124 of file VP1MaterialButton.cxx.

125 : VP1MaterialButtonBase(parent,0,"VP1MaterialButton"), m_d(new Imp)
126{
127 m_d->simplemode = false;
128 m_d->dim = dim;
129 m_d->theclass = this;
130 m_d->editwindow = 0;
131 m_d->preview_material = 0;
132 m_d->renderarea = 0;
133 m_d->previewswitch = 0;
134 m_d->blockcount = 0;
135 connect(this,SIGNAL(clicked()),this,SLOT(showEditMaterialDialog()));
136
137 m_d->lastapplied_ambient = QColor::fromRgbF(0.2,0.2,0.2);
138 m_d->lastapplied_diffuse = QColor::fromRgbF(0.8,0.8,0.8);
139 m_d->lastapplied_specular = Qt::black;
140 m_d->lastapplied_emissive = Qt::black;
141 m_d->lastapplied_shininess = 20;
142 m_d->lastapplied_transparency = 0;
143 m_d->lastapplied_brightness = 0;
144 setMaterialText("");
145 setAcceptDrops(true);
146 QTimer::singleShot(0, this, SLOT(updateButton()));
147}
VP1MaterialButtonBase(QWidget *parent, IVP1System *sys=0, const QString &helpername="")
void setMaterialText(const QString &)

◆ ~VP1MaterialButton()

VP1MaterialButton::~VP1MaterialButton ( )
virtual

Definition at line 150 of file VP1MaterialButton.cxx.

151{
153 setUpdatesEnabled(false);
154 if (m_d->renderarea) {
155 m_d->renderarea->setAutoRedraw(false);
156 SoNode * root = m_d->renderarea->getSceneGraph();
157 root->ref();
158 m_d->renderarea->setSceneGraph(0);
159 delete m_d->renderarea;
160 root->unref();
161 }
162 delete m_d->editwindow;
163 delete m_d;
164}

Member Function Documentation

◆ apply

void VP1MaterialButton::apply ( )
protectedslot

Definition at line 632 of file VP1MaterialButton.cxx.

633{
634 m_d->setLastAppliedFromCurrent();
635 for (SoMaterial * m : m_d->handledmaterials)
636 m_d->applyValuesToMaterial(m);
637 updateButton();
638}

◆ clearHandledMaterials()

void VP1MaterialButton::clearHandledMaterials ( )

Definition at line 469 of file VP1MaterialButton.cxx.

470{
471 for (SoMaterial * m : m_d->handledmaterials)
472 m->unref();
473 m_d->handledmaterials.clear();
474}

◆ copyValuesFromMaterial()

void VP1MaterialButton::copyValuesFromMaterial ( SoMaterial * m)
virtual

Implements VP1MaterialButtonBase.

Definition at line 243 of file VP1MaterialButton.cxx.

244{
245 if (!m) {
246 message("VP1MaterialButton::copyValuesFromMaterial Error: Passed material is null!!");
247 return;
248 }
249 m->ref();
250 if (m->ambientColor.getNum()!=1
251 ||m->diffuseColor.getNum()!=1
252 ||m->specularColor.getNum()!=1
253 ||m->emissiveColor.getNum()!=1
254 ||m->transparency.getNum()!=1
255 ||m->shininess.getNum()!=1) {
256 message("VP1MaterialButton::copyValuesFromMaterial Error: Passed material must have exactly one value in each of the 6 fields!!");
257 m->unrefNoDelete();
258 return;
259 }
260
261 int new_shininess = std::min(std::max(0,static_cast<int>(m->shininess[0]*100.0f+0.5f)),100);
262 int new_transparency = std::min(std::max(0,static_cast<int>(m->transparency[0]*100.0f+0.5f)),100);
263
264 m_d->lastapplied_ambient = m_d->sbcol2qcol(m->ambientColor[0]);
265 m_d->lastapplied_diffuse = m_d->sbcol2qcol(m->diffuseColor[0]);
266 m_d->lastapplied_specular = m_d->sbcol2qcol(m->specularColor[0]);
267 m_d->lastapplied_emissive = m_d->sbcol2qcol(m->emissiveColor[0]);
268 m_d->lastapplied_shininess = new_shininess;
269 m_d->lastapplied_transparency = new_transparency;
270 m_d->lastapplied_brightness = std::max<int>(0,std::min<int>(100,static_cast<int>(100*m_d->brightnessEstimateFromDetailedParameters(m_d->lastapplied_diffuse,m_d->lastapplied_emissive)+0.5)));
271
272 m->unrefNoDelete();
273
274 m_d->adaptGuiAndMaterialsToLastApplied();
275
276 emit lastAppliedChanged();
277}
void message(const QString &) const
void lastAppliedChanged()

◆ createMaterial() [1/2]

SoMaterial * VP1MaterialButton::createMaterial ( const double & r,
const double & g,
double b,
const double & brightness = 0.0,
const double & transp = 0.0 )
static

Definition at line 794 of file VP1MaterialButton.cxx.

795{
796 SoMaterial * m = new SoMaterial;
797 setMaterialParameters(m,r,g,b,brightness,transp);
798 return m;
799}
static void setMaterialParameters(SoMaterial *m, const QColor &, const double &brightness=0.0, const double &transp=0.0)
int r
Definition globals.cxx:22

◆ createMaterial() [2/2]

SoMaterial * VP1MaterialButton::createMaterial ( const QColor & col,
const double & brightness = 0.0,
const double & transp = 0.0 )
static

Definition at line 786 of file VP1MaterialButton.cxx.

787{
788 SoMaterial * m = new SoMaterial;
789 setMaterialParameters(m,col,brightness,transp);
790 return m;
791}

◆ dragEnterEvent()

void VP1MaterialButton::dragEnterEvent ( QDragEnterEvent * event)
protected

Definition at line 909 of file VP1MaterialButton.cxx.

910{
911 if (event->source()!=this && event->mimeData()->hasFormat("vp1/material"))
912 event->acceptProposedAction();
913}

◆ dropEvent()

void VP1MaterialButton::dropEvent ( QDropEvent * event)
protected

Definition at line 916 of file VP1MaterialButton.cxx.

917{
918 QByteArray data = event->mimeData()->data("vp1/material");
919 event->acceptProposedAction();
920
921 QBuffer buffer(&data);
922 buffer.open(QIODevice::ReadOnly);
923 QDataStream state(&buffer);
924 state >> m_d->lastapplied_ambient;
925 state >> m_d->lastapplied_diffuse;
926 state >> m_d->lastapplied_specular;
927 state >> m_d->lastapplied_emissive;
928 state >> m_d->lastapplied_shininess;
929 state >> m_d->lastapplied_transparency;
930 state >> m_d->lastapplied_brightness;
931 buffer.close();
932 m_d->adaptGuiAndMaterialsToLastApplied();
933}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11

◆ editWindow()

QWidget & VP1MaterialButton::editWindow ( )

Definition at line 175 of file VP1MaterialButton.cxx.

175 {
176 if (!m_d->editwindow)
177 m_d->initEditWindow();
178 return *(m_d->editwindow);
179}

◆ handledMaterials()

const QList< SoMaterial * > & VP1MaterialButton::handledMaterials ( ) const

Definition at line 647 of file VP1MaterialButton.cxx.

648{
649 return m_d->handledmaterials;
650}

◆ handleMaterial()

bool VP1MaterialButton::handleMaterial ( SoMaterial * m)

Definition at line 436 of file VP1MaterialButton.cxx.

437{
438 if (!m||m_d->handledmaterials.contains(m))
439 return false;
440 m->ref();
441 m_d->handledmaterials << m;
442 m_d->applyValuesToMaterial(m);
443 return true;
444}

◆ helperClassName()

const QString & VP1HelperClassBase::helperClassName ( ) const
inlineinherited

Definition at line 51 of file VP1HelperClassBase.h.

51{ return m_helpername; }

◆ lastAppliedAmbientColour()

QColor VP1MaterialButton::lastAppliedAmbientColour ( ) const

Definition at line 168 of file VP1MaterialButton.cxx.

168{ return m_d->lastapplied_ambient; }

◆ lastAppliedBrightness()

double VP1MaterialButton::lastAppliedBrightness ( ) const
virtual

Implements VP1MaterialButtonBase.

Definition at line 173 of file VP1MaterialButton.cxx.

173{ return std::max<double>(0.0,std::min<double>(1.0,m_d->lastapplied_brightness/100.0)); }

◆ lastAppliedChanged

void VP1MaterialButton::lastAppliedChanged ( )
signal

◆ lastAppliedDiffuseColour()

QColor VP1MaterialButton::lastAppliedDiffuseColour ( ) const

Definition at line 167 of file VP1MaterialButton.cxx.

167{ return m_d->lastapplied_diffuse; }

◆ lastAppliedEmissiveColour()

QColor VP1MaterialButton::lastAppliedEmissiveColour ( ) const

Definition at line 170 of file VP1MaterialButton.cxx.

170{ return m_d->lastapplied_emissive; }

◆ lastAppliedShininess()

double VP1MaterialButton::lastAppliedShininess ( ) const
virtual

Implements VP1MaterialButtonBase.

Definition at line 172 of file VP1MaterialButton.cxx.

172{ return std::max<double>(0.0,std::min<double>(1.0,m_d->lastapplied_shininess/100.0)); }

◆ lastAppliedSpecularColour()

QColor VP1MaterialButton::lastAppliedSpecularColour ( ) const

Definition at line 169 of file VP1MaterialButton.cxx.

169{ return m_d->lastapplied_specular; }

◆ lastAppliedTransparency()

double VP1MaterialButton::lastAppliedTransparency ( ) const
virtual

Implements VP1MaterialButtonBase.

Definition at line 171 of file VP1MaterialButton.cxx.

171{ return std::max<double>(0.0,std::min<double>(1.0,m_d->lastapplied_transparency/100.0)); }

◆ message() [1/3]

void VP1HelperClassBase::message ( const QString & str) const
inherited

Definition at line 49 of file VP1HelperClassBase.cxx.

50{
51 if (m_helpername.isEmpty()) {
52 if (m_system)
53 m_system->message(str);
54 else
55 std::cout<<VP1Msg::prefix_msg()<<" [nameless helper class]: "<<str.toStdString()<<std::endl;
56 } else {
57 if (m_system)
58 m_system->message("["+m_helpername+"] " + str);
59 else
60 std::cout<<VP1Msg::prefix_msg()<<" ["<<m_helpername.toStdString()<<"]: "<<str.toStdString()<<std::endl;
61 }
62}
static const char * prefix_msg()
Definition VP1Msg.h:56
static QString str(const QString &s)
Definition VP1String.h:49

◆ message() [2/3]

void VP1HelperClassBase::message ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 131 of file VP1HelperClassBase.cxx.

132{
133 if (addtostart.isEmpty()) {
134 message(l,addtoend);
135 return;
136 }
137 if (addtoend.isEmpty()) {
138 for (const QString& s : l)
139 message(addtostart+s);
140 } else {
141 for (const QString& s : l)
142 message(addtostart+s+addtoend);
143 }
144}

◆ message() [3/3]

void VP1HelperClassBase::message ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 91 of file VP1HelperClassBase.cxx.

92{
93 if (addtoend.isEmpty()) {
94 for (const QString& s : l)
95 message(s);
96 } else {
97 for (const QString& s : l)
98 message(s+addtoend);
99 }
100}

◆ messageDebug() [1/3]

void VP1HelperClassBase::messageDebug ( const QString & str) const
inherited

Definition at line 65 of file VP1HelperClassBase.cxx.

66{
67 if (!VP1Msg::debug())
68 return;
69 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
70 if (m_helpername.isEmpty()) {
71 std::cout<<VP1Msg::prefix_debug()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
72 } else {
73 std::cout<<VP1Msg::prefix_debug()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
74 }
75}
static bool debug()
Definition VP1Msg.h:32
static const char * prefix_debug()
Definition VP1Msg.h:57

◆ messageDebug() [2/3]

void VP1HelperClassBase::messageDebug ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 147 of file VP1HelperClassBase.cxx.

148{
149 if (!VP1Msg::debug())
150 return;
151 if (addtostart.isEmpty()) {
152 messageDebug(l,addtoend);
153 return;
154 }
155 if (addtoend.isEmpty()) {
156 for (const QString& s : l)
157 messageDebug(addtostart+s);
158 } else {
159 for (const QString& s : l)
160 messageDebug(addtostart+s+addtoend);
161 }
162}
void messageDebug(const QString &) const

◆ messageDebug() [3/3]

void VP1HelperClassBase::messageDebug ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 103 of file VP1HelperClassBase.cxx.

104{
105 if (!VP1Msg::debug())
106 return;
107 if (addtoend.isEmpty()) {
108 for (const QString& s : l)
109 messageDebug(s);
110 } else {
111 for (const QString& s : l)
112 messageDebug(s+addtoend);
113 }
114}

◆ messageVerbose() [1/3]

void VP1HelperClassBase::messageVerbose ( const QString & str) const
inherited

Definition at line 78 of file VP1HelperClassBase.cxx.

79{
80 if (!VP1Msg::verbose())
81 return;
82 std::string sysstring(m_system ? " in "+m_system->name().toStdString() : std::string(""));
83 if (m_helpername.isEmpty()) {
84 std::cout<<VP1Msg::prefix_verbose()<<" [helper"<<sysstring<<"]: "<<str.toStdString()<<std::endl;
85 } else {
86 std::cout<<VP1Msg::prefix_verbose()<<" ["<<m_helpername.toStdString()<<sysstring<<"]: "<<str.toStdString()<<std::endl;
87 }
88}
static bool verbose()
Definition VP1Msg.h:31
static const char * prefix_verbose()
Definition VP1Msg.h:59

◆ messageVerbose() [2/3]

void VP1HelperClassBase::messageVerbose ( const QString & addtostart,
const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 165 of file VP1HelperClassBase.cxx.

166{
167 if (!VP1Msg::verbose())
168 return;
169 if (addtostart.isEmpty()) {
170 messageVerbose(l,addtoend);
171 return;
172 }
173 if (addtoend.isEmpty()) {
174 for (const QString& s : l)
175 messageVerbose(addtostart+s);
176 } else {
177 for (const QString& s : l)
178 messageVerbose(addtostart+s+addtoend);
179 }
180}
void messageVerbose(const QString &) const

◆ messageVerbose() [3/3]

void VP1HelperClassBase::messageVerbose ( const QStringList & l,
const QString & addtoend = "" ) const
inherited

Definition at line 117 of file VP1HelperClassBase.cxx.

118{
119 if (!VP1Msg::verbose())
120 return;
121 if (addtoend.isEmpty()) {
122 for (const QString& s : l)
124 } else {
125 for (const QString& s : l)
126 messageVerbose(s+addtoend);
127 }
128}

◆ mouseMoveEvent()

void VP1MaterialButton::mouseMoveEvent ( QMouseEvent * event)
protected

Definition at line 848 of file VP1MaterialButton.cxx.

849{
850 if (!(event->buttons() & Qt::LeftButton))
851 return;
852 if ((event->pos() - m_d->dragStartPosition).manhattanLength()
853 < QApplication::startDragDistance())
854 return;
855
856 QDrag *drag = new QDrag(this);
857 QMimeData *mimeData = new QMimeData;
858
860 // For dragging state onto other material buttons: //
862
863 QByteArray byteArray;
864 QBuffer buffer(&byteArray);
865 buffer.open(QIODevice::WriteOnly);
866 QDataStream out(&buffer);
867 out << m_d->lastapplied_ambient;
868 out << m_d->lastapplied_diffuse;
869 out << m_d->lastapplied_specular;
870 out << m_d->lastapplied_emissive;
871 out << m_d->lastapplied_shininess;
872 out << m_d->lastapplied_transparency;
873 out << m_d->lastapplied_brightness;
874 buffer.close();
875 mimeData->setData("vp1/material", byteArray);
876
878 // For dragging c++ code for defining this material //
879 // into e.g. an editor: //
881
882 QString s = "SoMaterial * mat = new SoMaterial;\n";
883 QString str_ambient = m_d->toSbColTxt(m_d->lastapplied_ambient);
884 if (str_ambient!="SbColor(0.2,0.2,0.2)")
885 s += "mat->ambientColor.setValue("+str_ambient+");\n";
886 QString str_diffuse = m_d->toSbColTxt(m_d->lastapplied_diffuse);
887 if (str_diffuse!="SbColor(0.8,0.8,0.8)")
888 s += "mat->diffuseColor.setValue("+str_diffuse+");\n";
889 QString str_specular = m_d->toSbColTxt(m_d->lastapplied_specular);
890 if (str_specular!="SbColor(0,0,0)")
891 s += "mat->specularColor.setValue("+str_specular+");\n";
892 QString str_emissive = m_d->toSbColTxt(m_d->lastapplied_emissive);
893 if (str_emissive!="SbColor(0,0,0)")
894 s += "mat->emissiveColor.setValue("+str_emissive+");\n";
895 QString str_shininess = m_d->printFloat(m_d->lastapplied_shininess/100.0);
896 if (str_shininess!="0.2")
897 s += "mat->shininess.setValue("+str_shininess+");\n";
898 QString str_transparency = m_d->printFloat(m_d->lastapplied_transparency/100.0);
899 if (str_transparency!="0")
900 s += "mat->transparency.setValue("+str_transparency+");\n";
901 mimeData->setText(s);
902
903 //Execute drag:
904 drag->setMimeData(mimeData);//drag assumes ownership of mimeData
905 drag->exec(Qt::CopyAction | Qt::MoveAction);
906}

◆ mousePressEvent()

void VP1MaterialButton::mousePressEvent ( QMouseEvent * event)
protected

Definition at line 840 of file VP1MaterialButton.cxx.

841{
842 if (event->button() == Qt::LeftButton)
843 m_d->dragStartPosition = event->pos();
844 QPushButton::mousePressEvent(event);
845}

◆ reset

void VP1MaterialButton::reset ( )
protectedslot

Definition at line 641 of file VP1MaterialButton.cxx.

642{
643 m_d->adaptGuiAndMaterialsToLastApplied();
644}

◆ restoreFromState()

void VP1MaterialButton::restoreFromState ( const QByteArray & ba)
virtual

Implements VP1MaterialButtonBase.

Definition at line 941 of file VP1MaterialButton.cxx.

941 {
942 VP1Deserialise state(ba,systemBase());
943 if (state.version()<0||state.version()>1)
944 return;//Ignore silently
945 state.restore(this);
946}
IVP1System * systemBase() const

◆ saveState()

QByteArray VP1MaterialButton::saveState ( ) const
virtual

fill out with the state of the object (used for drag and drop etc)

Implements VP1MaterialButtonBase.

Definition at line 935 of file VP1MaterialButton.cxx.

935 {
936 VP1Serialise serialise(1/*version*/);
937 serialise.save(this);
938 return serialise.result();
939}
void serialise(const std::vector< const IRoiDescriptor * > &rois, roiserial_type &s)
serialise an entire vector of IRoiDescriptors

◆ setDimension()

void VP1MaterialButton::setDimension ( int dim)

Definition at line 673 of file VP1MaterialButton.cxx.

674{
675 if (m_d->dim == dim)
676 return;
677 m_d->dim = dim;
678 updateButton();
679}

◆ setHelperClassName()

void VP1HelperClassBase::setHelperClassName ( const QString & n)
inlineprotectedinherited

Definition at line 59 of file VP1HelperClassBase.h.

◆ setMaterial()

bool VP1MaterialButton::setMaterial ( SoMaterial * m)
virtual

Implements VP1MaterialButtonBase.

Definition at line 447 of file VP1MaterialButton.cxx.

448{
449 if (!m)
450 return false;
451 m->ref();
453 bool ok = handleMaterial(m);
454 m->unrefNoDelete();
455 return ok;
456}
void copyValuesFromMaterial(SoMaterial *)
bool handleMaterial(SoMaterial *)

◆ setMaterialParameters() [1/2]

void VP1MaterialButton::setMaterialParameters ( SoMaterial * m,
const double & r,
const double & g,
const double & b,
const double & brightness = 0.0,
const double & transp = 0.0 )
static

Definition at line 808 of file VP1MaterialButton.cxx.

810{
811 if (!m)
812 return;
813
814 m->ref();
815 bool save = m->enableNotify(false);
816
817 const double r(std::max(0.0,std::min(1.0,in_r)));
818 const double g(std::max(0.0,std::min(1.0,in_g)));
819 const double b(std::max(0.0,std::min(1.0,in_b)));
820 const double brightness(std::max(0.0,std::min(1.0,in_brightness)));
821
822
823 m->diffuseColor.setValue(SbColor(r,g,b));
824 m->emissiveColor.setValue(SbColor(std::max(0.0f,std::min(1.0f,float(brightness*r))),
825 std::max(0.0f,std::min(1.0f,float(brightness*g))),
826 std::max(0.0f,std::min(1.0f,float(brightness*b)))));
827 m->transparency.setValue(std::max<float>(0.0f,std::min<float>(1.0f,in_transp)));
828 m->shininess.setValue(std::max<float>(0.0f,std::min<float>(1.0f,Imp::simpleShininess()/100.0f)));
829 m->ambientColor.setValue(Imp::qcol2sbcol(Imp::simpleAmbient()));
830 m->specularColor.setValue(Imp::qcol2sbcol(Imp::simpleSpecular()));
831
832 if (save) {
833 m->enableNotify(true);
834 m->touch();
835 }
836 m->unrefNoDelete();
837}
static SbColor qcol2sbcol(const QColor &)

◆ setMaterialParameters() [2/2]

void VP1MaterialButton::setMaterialParameters ( SoMaterial * m,
const QColor & col,
const double & brightness = 0.0,
const double & transp = 0.0 )
static

Definition at line 802 of file VP1MaterialButton.cxx.

803{
804 setMaterialParameters( m, col.redF(), col.greenF(), col.blueF(), brightness, transp);
805}

◆ setMaterialText

void VP1MaterialButton::setMaterialText ( const QString & t)
slot

Definition at line 191 of file VP1MaterialButton.cxx.

192{
193 m_d->materialtext = ( t.isEmpty() ? "Edit Material" : "Edit Material "+t );
194 if (m_d->editwindow)
195 m_d->editwindow->setWindowTitle(m_d->materialtext);
196 setToolTip(m_d->materialtext);
197}

◆ setSystemBasePointer()

void VP1HelperClassBase::setSystemBasePointer ( IVP1System * sys)
inherited

Definition at line 197 of file VP1HelperClassBase.cxx.

198{
199 m_system = sys;
200 if (VP1Msg::verbose()){
201 vp1helperclassbase_instanceMap[this] = (m_system?m_system->name():QString(""));
202 }
203}
static std::map< VP1HelperClassBase *, QString > vp1helperclassbase_instanceMap

◆ setText()

void VP1MaterialButton::setText ( const QString & s)

Definition at line 653 of file VP1MaterialButton.cxx.

654{
655 if (!s.isEmpty())
656 messageDebug("VP1MaterialButton::setText() called (with '"+s+"'), but not allowed");
657 //Forbidden!! Only here since Designer generated code needs it in public.
658}

◆ showEditMaterialDialog

void VP1MaterialButton::showEditMaterialDialog ( )
slot

Definition at line 182 of file VP1MaterialButton.cxx.

183{
184 if (editWindow().isHidden())
185 editWindow().show();
186 else
187 editWindow().hide();
188}

◆ stopHandlingMaterial()

bool VP1MaterialButton::stopHandlingMaterial ( SoMaterial * m)

Definition at line 459 of file VP1MaterialButton.cxx.

460{
461 if (!m||!m_d->handledmaterials.contains(m))
462 return false;
463 m_d->handledmaterials.removeAll(m);
464 m->unref();
465 return true;
466}

◆ str() [1/30]

QString VP1String::str ( const Amg::Vector3D & t)
inlinestaticinherited

Definition at line 98 of file VP1String.h.

98{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [2/30]

QString VP1String::str ( const bool b)
inlinestaticinherited

Definition at line 53 of file VP1String.h.

53{ return b?"True":"False"; }

◆ str() [3/30]

QString VP1String::str ( const char * c)
inlinestaticinherited

Definition at line 50 of file VP1String.h.

50{ return c; }

◆ str() [4/30]

QString VP1String::str ( const double & d)
inlinestaticinherited

Definition at line 81 of file VP1String.h.

81{ return QString::number(d); }

◆ str() [5/30]

QString VP1String::str ( const float & f)
inlinestaticinherited

Definition at line 82 of file VP1String.h.

82{ return QString::number(f); }

◆ str() [6/30]

template<class T>
QString VP1String::str ( const HepGeom::BasicVector3D< T > & t)
inlinestaticinherited

Definition at line 95 of file VP1String.h.

95{ return "("+str(t.x())+", "+str(t.y())+", "+str(t.z())+")"; }

◆ str() [7/30]

QString VP1String::str ( const QColor & c)
staticinherited

Definition at line 30 of file VP1String.cxx.

31{
32 return c.isValid() ? c.name() : "Invalid";
33}

◆ str() [8/30]

template<class T>
QString VP1String::str ( const QFlags< T > & f)
inlinestaticinherited

Definition at line 91 of file VP1String.h.

91{ return "0x"+QString::number(f, 16).toUpper().rightJustified(8,'0'); }

◆ str() [9/30]

template<class T>
QString VP1String::str ( const QList< T > & t)
inlinestaticinherited

Definition at line 102 of file VP1String.h.

102{ return "QList of size"+QString::number(t.size()); }

◆ str() [10/30]

QString VP1String::str ( const QString & s)
inlinestaticinherited

Definition at line 49 of file VP1String.h.

49{ return s; }

◆ str() [11/30]

QString VP1String::str ( const SbColor & c)
staticinherited

Definition at line 36 of file VP1String.cxx.

37{
39}
static QColor sbcol2qcol(const SbColor &)

◆ str() [12/30]

QString VP1String::str ( const SbVec2d & v)
staticinherited

Definition at line 61 of file VP1String.cxx.

61{ double x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }
#define y
#define x

◆ str() [13/30]

QString VP1String::str ( const SbVec2f & v)
staticinherited

Definition at line 62 of file VP1String.cxx.

62{ float x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [14/30]

QString VP1String::str ( const SbVec2s & v)
staticinherited

Definition at line 63 of file VP1String.cxx.

63{ short x,y; v.getValue(x,y); return "("+str(x)+", "+str(y)+")"; }

◆ str() [15/30]

QString VP1String::str ( const SbVec3d & v)
staticinherited

Definition at line 64 of file VP1String.cxx.

64{ double x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }
#define z

◆ str() [16/30]

QString VP1String::str ( const SbVec3f & v)
staticinherited

Definition at line 65 of file VP1String.cxx.

65{ float x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [17/30]

QString VP1String::str ( const SbVec3s & v)
staticinherited

Definition at line 66 of file VP1String.cxx.

66{ short x,y,z; v.getValue(x,y,z); return "("+str(x)+", "+str(y)+", "+str(z)+")"; }

◆ str() [18/30]

QString VP1String::str ( const SbVec4d & v)
staticinherited

Definition at line 67 of file VP1String.cxx.

67{ double x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [19/30]

QString VP1String::str ( const SbVec4f & v)
staticinherited

Definition at line 68 of file VP1String.cxx.

68{ float x,y,z,t; v.getValue(x,y,z,t); return "("+str(x)+", "+str(y)+", "+str(z)+", "+str(t)+")"; }

◆ str() [20/30]

template<class T>
QString VP1String::str ( const T * t)
inlinestaticinherited

Definition at line 87 of file VP1String.h.

87{ return str(static_cast<const void* >(t)); }

◆ str() [21/30]

QString VP1String::str ( const void * p)
staticinherited

Definition at line 48 of file VP1String.cxx.

49{
50 if (p) {
51 std::ostringstream s;
52 s << p;
53 // Explicitly naming QString here avoids a cppcheck warning.
54 return QString (s.str().c_str());
55 } else {
56 return "NULL";
57 }
58}

◆ str() [22/30]

QString VP1String::str ( const VP1Interval & i)
staticinherited

Definition at line 42 of file VP1String.cxx.

43{
44 return i.toString();
45}

◆ str() [23/30]

QString VP1String::str ( int n)
inlinestaticinherited

Definition at line 77 of file VP1String.h.

77{ return QString::number(n); }

◆ str() [24/30]

QString VP1String::str ( long n)
inlinestaticinherited

Definition at line 75 of file VP1String.h.

75{ return QString::number(n); }

◆ str() [25/30]

QString VP1String::str ( qlonglong n)
inlinestaticinherited

Definition at line 79 of file VP1String.h.

79{ return QString::number(n); }

◆ str() [26/30]

QString VP1String::str ( qulonglong n)
inlinestaticinherited

Definition at line 80 of file VP1String.h.

80{ return QString::number(n); }

◆ str() [27/30]

QString VP1String::str ( short int n)
inlinestaticinherited

Definition at line 73 of file VP1String.h.

73{ return QString::number(n); }

◆ str() [28/30]

QString VP1String::str ( uint n)
inlinestaticinherited

Definition at line 78 of file VP1String.h.

78{ return QString::number(n); }

◆ str() [29/30]

QString VP1String::str ( ulong n)
inlinestaticinherited

Definition at line 76 of file VP1String.h.

76{ return QString::number(n); }

◆ str() [30/30]

QString VP1String::str ( unsigned short int n)
inlinestaticinherited

Definition at line 74 of file VP1String.h.

74{ return QString::number(n); }

◆ switchMode

void VP1MaterialButton::switchMode ( )
protectedslot

Definition at line 745 of file VP1MaterialButton.cxx.

746{
747 if (!m_d->editwindow)
748 return;
749
750 const bool new_simplemode = !m_d->simplemode;
751
752 //Transparency sliders should already be updated.
753
754 m_d->blockGuiSignals(true);
755
756 if (new_simplemode) {
757 //Update detailed gui elements from simple gui elements. NB: All
758 //the m_d->guiXX() methods returns detailed parameters until we
759 //update m_d->simplemode below.
760 double brightness = m_d->brightnessEstimateFromDetailedParameters(m_d->guiDiffuseColour(),m_d->guiEmissiveColour());
761 int brightness_i = std::max<int>(0,std::min<int>(100,static_cast<int>(brightness*100+0.5)));
762 QColor col = m_d->guiDiffuseColour();
763 m_d->editwindow_ui.colbutton_simple_colour->setColor(col);
764 m_d->editwindow_ui.slider_simple_brightness->setValue(brightness_i);
765 m_d->editwindow_ui.label_num_simple_brightness->setNum(brightness_i);
766 } else {
767 //Update detailed gui elements from simple gui elements. NB: All
768 //the m_d->guiXX() methods returns simple parameters until we
769 //update m_d->simplemode below.
770 m_d->editwindow_ui.colbutton_ambient->setColor(m_d->guiAmbientColour());
771 m_d->editwindow_ui.colbutton_diffuse->setColor(m_d->guiDiffuseColour());
772 m_d->editwindow_ui.colbutton_specular->setColor(m_d->guiSpecularColour());
773 m_d->editwindow_ui.colbutton_emissive->setColor(m_d->guiEmissiveColour());
774 m_d->editwindow_ui.slider_shininess->setValue(m_d->guiShininess());
775 m_d->editwindow_ui.label_num_shininess->setNum(m_d->guiShininess());
776 }
777
778 m_d->simplemode = new_simplemode;
779 m_d->adaptGuiForMode();
780
781 m_d->blockGuiSignals(false);
783}

◆ systemBase()

IVP1System * VP1HelperClassBase::systemBase ( ) const
inlineinherited

Definition at line 50 of file VP1HelperClassBase.h.

50{ return m_system; }

◆ transparencyChanged

void VP1MaterialButton::transparencyChanged ( )
protectedslot

Definition at line 682 of file VP1MaterialButton.cxx.

683{
684 QSlider * slider1(0);
685 QSlider * slider2(0);
686 if (sender()==m_d->editwindow_ui.slider_simple_transparency) {
687 slider1 = m_d->editwindow_ui.slider_simple_transparency;
688 slider2 = m_d->editwindow_ui.slider_transparency;
689 } else {
690 slider1 = m_d->editwindow_ui.slider_transparency;
691 slider2 = m_d->editwindow_ui.slider_simple_transparency;
692 }
693 bool save = slider2->blockSignals(true);
694 slider2->setValue(slider1->value());
695 slider2->blockSignals(save);
696 m_d->editwindow_ui.label_num_transparency->setNum(slider1->value());
697 m_d->editwindow_ui.label_num_simple_transparency->setNum(slider1->value());
698
700}

◆ updateButton

void VP1MaterialButton::updateButton ( )
protectedslot

Definition at line 661 of file VP1MaterialButton.cxx.

662{
663 if (objectName().isEmpty()){
664 setObjectName("VP1MaterialButton");
665 }
666 if(VP1Msg::verbose()){
667 messageVerbose("setColButtonProperties: color=" + str(m_d->lastapplied_diffuse));
668 }
669 VP1ColorSelectButton::setColButtonProperties(this,m_d->lastapplied_diffuse,m_d->dim);
670}
static void setColButtonProperties(QPushButton *, const QColor &col, int dim)

◆ updatePreview

void VP1MaterialButton::updatePreview ( )
protectedslot

Definition at line 477 of file VP1MaterialButton.cxx.

478{
479 if (!m_d->editwindow)
480 return;
481 if (m_d->preview_material)
482 m_d->applyValuesToMaterial(m_d->preview_material,true);
483 m_d->updateApplyResetButtons();
484}

◆ updatePreviewSceneAndBgd

void VP1MaterialButton::updatePreviewSceneAndBgd ( )
protectedslot

Definition at line 487 of file VP1MaterialButton.cxx.

488{
489 if (!m_d->editwindow||!m_d->renderarea||!m_d->previewswitch)
490 return;
491
492 if (m_d->editwindow_ui.radioButton_box->isChecked())
493 m_d->previewswitch->whichChild = 0;
494 else
495 m_d->previewswitch->whichChild = (m_d->editwindow_ui.radioButton_cone->isChecked() ? 1 : 2);
496}

◆ verbose()

bool VP1HelperClassBase::verbose ( )
inlinestaticinherited

Definition at line 32 of file VP1HelperClassBase.h.

32{ return s_vp1verbose; } // Returns true if env var VP1_VERBOSE_OUTPUT=1
static const bool s_vp1verbose

◆ warnUndeletedInstances()

void VP1HelperClassBase::warnUndeletedInstances ( )
staticinherited

Definition at line 183 of file VP1HelperClassBase.cxx.

184{
186 return;
187 std::cout << "WARNING: Detected "<<vp1helperclassbase_instanceMap.size()<<" undeleted helper class instances:"<<std::endl;
188
189 std::map<VP1HelperClassBase*,QString>::iterator it,itE(vp1helperclassbase_instanceMap.end());
190 for (it = vp1helperclassbase_instanceMap.begin();it!=itE;++it) {
191 std::cout << " ==> "<<it->first<<": "<<it->first->m_helpername.toStdString()
192 << (it->second.isEmpty()?QString(""):" (in system "+it->second+")").toStdString()<<std::endl;
193 }
194}

Member Data Documentation

◆ m_d

Imp* VP1MaterialButton::m_d
private

Definition at line 120 of file VP1MaterialButton.h.

◆ m_helpername

QString VP1HelperClassBase::m_helpername
privateinherited

Definition at line 67 of file VP1HelperClassBase.h.

◆ m_system

IVP1System* VP1HelperClassBase::m_system
privateinherited

Definition at line 68 of file VP1HelperClassBase.h.

◆ s_vp1verbose

const bool VP1HelperClassBase::s_vp1verbose = VP1QtUtils::environmentVariableIsOn("VP1_VERBOSE_OUTPUT")
staticprivateinherited

Definition at line 69 of file VP1HelperClassBase.h.


The documentation for this class was generated from the following files: