1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
/*****************************************************************************
* $CAMITK_LICENCE_BEGIN$
*
* CamiTK - Computer Assisted Medical Intervention ToolKit
* (c) 2001-2014 UJF-Grenoble 1, CNRS, TIMC-IMAG UMR 5525 (GMCAO)
*
* Visit http://camitk.imag.fr for more information
*
* This file is part of CamiTK.
*
* CamiTK is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* CamiTK is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with CamiTK. If not, see <http://www.gnu.org/licenses/>.
*
* $CAMITK_LICENCE_END$
****************************************************************************/
#include "VRMLComponentExtension.h"
// --------------- declare the plugin -------------------
Q_EXPORT_PLUGIN2(vrml, VRMLComponentExtension);
#include "VRMLComponent.h"
//-- CamiTK stuff
#include <InteractiveViewer.h>
#include <RendererWidget.h>
using namespace camitk;
//-- vtk stuff
#include <vtkVRMLExporter.h>
// --------------- getName -------------------
QString VRMLComponentExtension::getName() const {
return "VRML 2 Component";
}
// --------------- getDescription -------------------
QString VRMLComponentExtension::getDescription() const {
return "Manage VRML 2 <em>.wrl .vrml</em> files in <b>CamiTK</b>.(very few support!)";
}
// --------------- getFileExtensions -------------------
QStringList VRMLComponentExtension::getFileExtensions() const {
QStringList ext;
ext << "vrml" << "wrl";
return ext;
}
// --------------- open -------------------
Component * VRMLComponentExtension::open(const QString & fileName) throw (AbortException) {
return new VRMLComponent(fileName);
}
// --------------- save -------------------
bool VRMLComponentExtension::save(Component* component) const {
// NOTE: in Vtk an exporter can only export all the scene, while a Vtk writer is able to save a single mesh
// As there are no vtkVRMLWriter, the whole scene is exported (so close everything you don't
// want to have in the resulting vrml file!)
MeshComponent *mesh = dynamic_cast<MeshComponent*>(component);
if (mesh->getPointSet()) {
vtkSmartPointer<vtkVRMLExporter> exporter = vtkSmartPointer<vtkVRMLExporter>::New();
exporter->SetInput(InteractiveViewer::get3DViewer()->getRendererWidget()->GetRenderWindow());
exporter->SetFileName(mesh->getFileName().toStdString().c_str());
exporter->Write();
return true;
}
else
return false;
}
|