Developer Documentation
TypeSplatCloud.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 
43 
44 //================================================================
45 //
46 // CLASS TypeSplatCloudPlugin
47 //
48 // This class represents an OpenFlipper plugin for a new node named SplatCloud.
49 //
50 //================================================================
51 
52 
53 #ifndef TYPESPLATCLOUDPLUGIN_HH
54 #define TYPESPLATCLOUDPLUGIN_HH
55 
56 
57 //== INCLUDES ====================================================
58 
59 
60 #include <QObject>
61 
67 
69 
73 
74 
75 //== CLASS DEFINITION ============================================
76 
77 
79 {
80  Q_OBJECT
81  Q_INTERFACES( BaseInterface )
82  Q_INTERFACES( LoadSaveInterface )
83  Q_INTERFACES( LoggingInterface )
84  Q_INTERFACES( TypeInterface )
85  Q_INTERFACES( RPCInterface )
86 
87 
88  Q_PLUGIN_METADATA(IID "org.OpenFlipper.Plugins.Plugin-TypeSplatCloud")
89 
90 
91 signals:
92 
93  //-- Type Interface --
94  void emptyObjectAdded( int _objectId );
95 
96  //-- LoadSave Interface --
97  void addEmptyObject( DataType _type, int &_objectId );
98  void deleteObject( int _objectId );
99 
100  //-- Logging Interface --
101  void log( QString _message );
102  void log( Logtype _type, QString _message );
103 
104 public slots:
105 
106  //-- Base Interface --
107  QString version() { return QString( "1.0" ); };
108 
109  //-- Type Interface --
110  int addEmpty();
112  void generateBackup( int _objectId, QString _name, UpdateType _type );
113 
114 private slots:
115 
116  // -- Base Inferface --
117  void noguiSupported() { }
118  void slotViewChanged();
119  void slotObjectPropertiesChanged( int _objectId );
120  void slotObjectUpdated ( int _objectId, const UpdateType &_updateType );
121 
122  //-- LoadSave Interface --
123  void objectDeleted( int _objectId );
124 
125 public:
126 
127  // standard constructor/destructor
129  ~TypeSplatCloudPlugin() { }
130 
131  //-- Base Interface --
132  QString name() { return QString( "TypeSplatCloud" ); };
133  QString description() { return QString( tr( "Register SplatCloud type" ) ); };
134 
135  // -- Type Interface --
136  bool registerType();
137 
138 private:
139 
140  // ungroup group-object
141  void ungroupGroupObject( GroupObject *_groupObject );
142 
143  // get group-objects
144  GroupObject *getCamerasGroupObject ( const SplatCloud_CameraManager &_cameraManager );
145  GroupObject *getClustersGroupObject( const SplatCloud_ClusterManager &_clusterManager );
146 
147  // ungroup objects
148  void ungroupCameraObjects ( const SplatCloud_CameraManager &_cameraManager );
149  void ungroupClusterObjects( const SplatCloud_ClusterManager &_clusterManager );
150 
151  // group objects
152  void groupCameraObjects ( const SplatCloud_CameraManager &_cameraManager );
153  void groupClusterObjects( const SplatCloud_ClusterManager &_clusterManager );
154 
155  // add objects
156  void addCameraObjects ( SplatCloudObject *_splatCloudObject );
157  void addClusterObjects ( SplatCloudObject *_splatCloudObject );
158 
159  // free objects
160  void freeCameraObjects ( SplatCloudObject *_splatCloudObject );
161  void freeClusterObjects( SplatCloudObject *_splatCloudObject );
162 
163  // erase camera
164  void eraseCamera( CameraObject *_cameraObject );
165 
166  ACG::SceneGraph::DrawModes::DrawMode splatsDrawMode_;
168 };
169 
170 
171 //================================================================
172 
173 
174 #endif // TYPESPLATCLOUDPLUGIN_HH
Interface class for type definitions.
DataType supportedType()
Return your supported object type( e.g. DATA_TRIANGLE_MESH )
Logtype
Log types for Message Window.
#define DATA_SPLATCLOUD
Definition: SplatCloud.hh:59
QString name()
Return a name for the plugin.
Predefined datatypes.
Definition: DataTypes.hh:83
Interface for all Plugins which do logging to the logging window of the framework.
QString description()
Return a description of what the plugin is doing.
Interface to call functions across plugins.
Definition: RPCInterface.hh:61
Update type class.
Definition: UpdateType.hh:60
void generateBackup(int _objectId, QString _name, UpdateType _type)
This slot should be implemented in a TypePlugin to generate type specific backups.
Interface class from which all plugins have to be created.
int addEmpty()
Create an empty object.
Interface for all plugins which want to Load or Save files and create Objects.