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
62class 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
Logtype
Log types for Message Window.
Interface class from which all plugins have to be created.
Plugin to visualize information about open volume meshs in the scene.
void setDescriptions()
set scripting slot descriptions
QString name()
Name of the Plugin.
QString version()
set scripting slot descriptions
int vertexCount(int _id)
get total number of vertices for a given object
int faceCount(int _id)
get total number of faces for a given object
QString description()
Description of the Plugin.
int edgeCount(int _id)
get total number of edges for a given object
void pluginsInitialized()
initialize the plugin
int cellCount(int _id)
get total number of cells for a given object
Interface for all Plugins which do logging to the logging window of the framework.
Control OpenFlippers status bar.
Update type class.
Definition: UpdateType.hh:59