Developer Documentation
Loading...
Searching...
No Matches
SkeletonObjectInfoPlugin.hh
1/*===========================================================================*\
2* *
3* OpenFlipper *
4 * Copyright (c) 2001-2025, 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
43
44//=============================================================================
45//
46// CLASS InfoMeshObjectPlugin
47//
48// Author: David Bommes <bommes@cs.rwth-aachen.de>
49//=============================================================================
50
51#ifndef INFOPLUGIN_HH
52#define INFOPLUGIN_HH
53
54//== INCLUDES =================================================================
55
56#include <QObject>
57
60
66
67#include "infoDialog.hh"
68
69//== CLASS DEFINITION =========================================================
70
71
77{
78 Q_OBJECT
79 Q_INTERFACES(BaseInterface)
80 Q_INTERFACES(InformationInterface)
81 Q_INTERFACES(LoggingInterface)
82 Q_INTERFACES(StatusbarInterface)
83 Q_INTERFACES(PythonInterface)
84
85 Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-SkeletonObjectInfo")
86
87
88 signals:
89
90 // BaseInterface
91 void setSlotDescription(QString _slotName, QString _slotDescription,
92 QStringList _parameters, QStringList _descriptions);
93
94 // LoggingInterface
95 void log(Logtype _type, QString _message);
96 void log(QString _message);
97
98 // StatusbarInterface
99 void addWidgetToStatusbar(QWidget* _widget);
100
101 private slots :
102
103 // BaseInterface
104 void initializePlugin();
105 void pluginsInitialized();
106
107 void noguiSupported( ) {} ;
108
109 // InformationInterface
110 void slotInformationRequested(const QPoint _clickedPoint, DataType _type);
112
113 public :
114
115 // default constructor
116 InfoSkeletonObjectPlugin(): info_(0) {};
117
118 // default destructor
120
122 QString name(){ return (QString("InfoSkeletonObject")); };
123
125 QString description() { return (QString(tr("Provides Information on Skeleton Objects"))); };
126
127 private :
128 void printSkeletonInfo( Skeleton* _id, unsigned int _objectId, unsigned int _index, ACG::Vec3d& _hitPoint );
129
130 InfoDialog* info_;
131
132 public slots:
134 int jointCount(int _skeletonID);
136 int branchCount(int _skeletonID);
138 int leafCount(int _skeletonID);
139
141 Vector boundingBoxMin(int _skeletonID);
143 Vector boundingBoxMax(int _skeletonID);
145 Vector boundingBoxSize(int _skeletonID);
146
148 double boneLength(int _skeletonID, int _jointID);
149
151 double minBoneLength(int _skeletonID);
153 double maxBoneLength(int _skeletonID);
155 double meanBoneLength(int _skeletonID);
156
157 private:
159 void setDescriptions();
160
161 public slots:
162 QString version() { return QString("1.0"); };
163
166};
167
168#endif //MOVEPLUGIN_HH
169
Logtype
Log types for Message Window.
Interface class from which all plugins have to be created.
Predefined datatypes.
Definition DataTypes.hh:83
Plugin to visualize information about objects in the scene.
double boneLength(int _skeletonID, int _jointID)
get the length of a bone
Vector boundingBoxSize(int _skeletonID)
get the size of the bounding box
double meanBoneLength(int _skeletonID)
get the mean bone length
QString name()
Name of the Plugin.
void slotInformationRequested(const QPoint _clickedPoint, DataType _type)
Show information dialog on clicked object.
QString description()
Description of the Plugin.
double minBoneLength(int _skeletonID)
get the minimal bone length
Vector boundingBoxMin(int _skeletonID)
get minumum bounding box point
void setDescriptions()
set scripting slot descriptions
int jointCount(int _skeletonID)
get total number of joints for a given skeleton
Vector boundingBoxMax(int _skeletonID)
get maximum bounding box point
void pluginsInitialized()
initialize the plugin
int leafCount(int _skeletonID)
get total number of leaves for a given skeleton
double maxBoneLength(int _skeletonID)
get the maximal bone length
int branchCount(int _skeletonID)
get total number of branches for a given skeleton
DataType supportedDataTypes()
Get data type for information requests.
Interface class for providing information on objects.
Interface for all Plugins which do logging to the logging window of the framework.
Interface class for exporting functions to python.
Control OpenFlippers status bar.