Developer Documentation
VolumeMeshObjectInfoPlugin.hh
1 /*===========================================================================*\
2 * *
3 * OpenFlipper *
4  * Copyright (c) 2001-2015, RWTH-Aachen University *
5  * Department of Computer Graphics and Multimedia *
6  * All rights reserved. *
7  * www.openflipper.org *
8  * *
9  *---------------------------------------------------------------------------*
10  * This file is part of OpenFlipper. *
11  *---------------------------------------------------------------------------*
12  * *
13  * Redistribution and use in source and binary forms, with or without *
14  * modification, are permitted provided that the following conditions *
15  * are met: *
16  * *
17  * 1. Redistributions of source code must retain the above copyright notice, *
18  * this list of conditions and the following disclaimer. *
19  * *
20  * 2. Redistributions in binary form must reproduce the above copyright *
21  * notice, this list of conditions and the following disclaimer in the *
22  * documentation and/or other materials provided with the distribution. *
23  * *
24  * 3. Neither the name of the copyright holder nor the names of its *
25  * contributors may be used to endorse or promote products derived from *
26  * this software without specific prior written permission. *
27  * *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 \*===========================================================================*/
41 
42 #pragma once
43 
44 //== INCLUDES =================================================================
45 
46 #include <QObject>
47 
52 
53 #include "VolumeMeshInfoBar.hh"
54 
55 //== CLASS DEFINITION =========================================================
56 
57 
62 class InfoVolumeMeshObjectPlugin : public QObject,
66 {
67  Q_OBJECT
68  Q_INTERFACES(BaseInterface)
69  Q_INTERFACES(LoggingInterface)
70  Q_INTERFACES(StatusbarInterface)
71 
72  Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-VolumeMeshObjectInfo")
73 
74  signals:
75  // BaseInterface
76  void setSlotDescription(QString _slotName, QString _slotDescription,
77  QStringList _parameters, QStringList _descriptions);
78 
79  // LoggingInterface
80  void log(Logtype _type, QString _message);
81  void log(QString _message);
82 
83  // StatusbarInterface
84  void addWidgetToStatusbar(QWidget* _widget);
85 
86  private slots :
87 
88  // BaseInterface
89  void initializePlugin();
90  void pluginsInitialized();
91  void slotObjectUpdated( int _identifier, const UpdateType& _type );
92  void slotObjectSelectionChanged( int _identifier );
93  void slotAllCleared();
94 
95  void noguiSupported( ) {}
96 
97  public :
98 
99  // default constructor
101 
102  // default destructor
104 
106  QString name(){ return (QString("InfoVolumeMeshObject")); }
107 
109  QString description() { return (QString(tr("Provides Information on Volume Mesh Objects"))); }
110 
111  private :
112 
113  template< class MeshT >
114  void printMeshInfo( MeshT* _mesh, int _id, unsigned int _face, ACG::Vec3d& _hitPoint );
115 
116  void updateInfoBar();
117  VolumeMeshInfoBar *infoBar_ = nullptr;
118 
119 //===========================================================================
122 //===========================================================================
123 
124  public slots:
125 
127  int vertexCount(int _id);
129  int edgeCount(int _id);
131  int faceCount(int _id);
133  int cellCount(int _id);
134 
135  public slots:
136  QString version() { return QString("0.1"); }
137 
138  private:
140  void setDescriptions();
141 
144 };
145 
int faceCount(int _id)
get total number of faces for a given object
int edgeCount(int _id)
get total number of edges for a given object
void pluginsInitialized()
initialize the plugin
QString version()
set scripting slot descriptions
Plugin to visualize information about open volume meshs in the scene.
Logtype
Log types for Message Window.
Interface for all Plugins which do logging to the logging window of the framework.
int cellCount(int _id)
get total number of cells for a given object
int vertexCount(int _id)
get total number of vertices for a given object
QString description()
Description of the Plugin.
Update type class.
Definition: UpdateType.hh:59
Control OpenFlippers status bar.
void setDescriptions()
set scripting slot descriptions
QString name()
Name of the Plugin.
Interface class from which all plugins have to be created.