mirror of
https://github.com/lucaspalomodevelop/meshlab.git
synced 2026-03-14 16:44:37 +00:00
178 lines
12 KiB
HTML
178 lines
12 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>Meshlab Development</title>
|
|
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
|
|
<meta name="author" content="Paolo Cignoni">
|
|
<meta name="keywords" content="mesh 3d processing meshlab scanning">
|
|
<meta name="description" content="Course Web page">
|
|
<meta name="robots" content="all">
|
|
<link media="all" rel="stylesheet" href="style.css" type="text/css">
|
|
</head>
|
|
<body>
|
|
<div id="leftcontent">
|
|
<h1>MeshLab: Development page : Create a MeshIO-plugin</h1>
|
|
<br>
|
|
<h2><span style="FONT-WEIGHT: bold">How to</span></h2>
|
|
<p>
|
|
To create a new MeshIO plug-in the first step is to considerate that you must
|
|
implement the "MeshIOInterface", you can find it in<span style="FONT-STYLE: italic"> "meshlab/interfaces.h".</span></p>
|
|
<p><span style="FONT-STYLE: italic"></span>Then you create a new class filter which
|
|
must inherit from the interface and from QObject. This involves you specifying
|
|
the two keywords
|
|
<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">Q_OBJECT</span><br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">Q_INTERFACES(MeshIOInterface)</span><br>
|
|
before the method declaration to permit the moc'ing phases.</p>
|
|
<p>It is essential to import of the mesh definition found in "meshlab/meshmodel.h".<br>
|
|
<br>
|
|
Then you implement the following pure virtual methods:<br>
|
|
<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual QList<Format> importFormats() const;</span>
|
|
//The list of the file's type which can be imported<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual QList<Format> exportFormats() const;</span>
|
|
//The list of the file's type which can be exported<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual const ActionInfo &Info(QAction *);</span><br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual const PluginInfo &Info();</span><br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual int GetExportMaskCapability(QString &format) const;</span>//Returns
|
|
the mask on the basis of the file's type
|
|
<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual bool open(const QString &formatName,QString &fileName, MeshModel &m, int& mask, vcg::CallBackPos *cb=0, QWidget *parent=0);</span><br>
|
|
//For open a mesh<br>
|
|
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual bool save(const QString &formatName,QString &fileName, MeshModel &m, const int &mask, vcg::CallBackPos *cb, QWidget *parent);</span><br>
|
|
//For save a mesh
|
|
<BR>
|
|
<br>
|
|
<br style="FONT-WEIGHT: bold">
|
|
<p><span style="FONT-WEIGHT: bold">Download:</span><br>
|
|
You can download here a sample code <a href="http://meshlab.sourceforge.net/smfio.zip">
|
|
MeshIOPlugins.zip</a></p>
|
|
<h2><span style="FONT-STYLE: italic"></span>Example of Import/Export smf format
|
|
</h2>
|
|
<p><span style="FONT-STYLE: italic"></span><span style="FONT-WEIGHT: bold; TEXT-DECORATION: underline"> smfio.h</span></p>
|
|
<p><span style="FONT-STYLE: italic">#ifndef EXAMPLEPLUGIN_H</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#define EXAMPLEPLUGIN_H</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <QObject></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <QStringList></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <QString></span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">class smfIOPlugin : public QObject, public MeshIOInterface</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> Q_OBJECT</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> Q_INTERFACES(MeshIOInterface)</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> </span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">public:</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> smfIOPlugin();</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual QList<Format> importFormats() const;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual QList<Format> exportFormats() const;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual const ActionInfo &Info(QAction *);</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual const PluginInfo &Info();</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual int GetExportMaskCapability(QString &format) const;</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> virtual bool open(const QString &formatName, QString &fileName, MeshModel &m, int& mask, vcg::CallBackPos *cb=0, QWidget *parent=0);</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> virtual bool save(const QString &formatName,QString &fileName, MeshModel &m, const int &mask, vcg::CallBackPos *cb, QWidget *parent);</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">};</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#endif</span><br>
|
|
</p>
|
|
<p><br>
|
|
<br>
|
|
<span style="FONT-WEIGHT: bold; TEXT-DECORATION: underline">smfio.cpp</span><br>
|
|
<br>
|
|
<span style="FONT-STYLE: italic">#include <Qt></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <QtGui></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include "smfio.h"</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <vcg/wrap/io_trimesh/import_smf.h></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">#include <vcg/wrap/io_trimesh/export_smf.h></span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">using namespace vcg;<br></span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">bool
|
|
smfIOPlugin::open(const QString &formatName, QString &fileName, MeshModel &m, int& mask, CallBackPos *cb, QWidget *parent)<br>
|
|
{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> if (fileName.isEmpty())<br>
|
|
return false;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> ...</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> int result =
|
|
vcg::tri::io::ImporterSMF<CMeshO>::Open(m.cm, filenm);<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> ...<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> return true;<br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic">}</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">bool
|
|
smfIOPlugin::save(const QString &formatName, QString &fileName, MeshModel &m, int& mask, CallBackPos *cb, QWidget *parent)<br>
|
|
{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> ...</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> int result =
|
|
vcg::tri::io::ExporterSMF<CMeshO>::Save(m.cm, filenm);<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> ...<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"></span> return true;<br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic">}</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">QList<MeshIOInterface::Format> smfIOPlugin::importFormats() const
|
|
{</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> QList<Format> formatList;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> formatList << Format("Simple Model Format" ,tr("SMF"));</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> return formatList;</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> }</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">QList<MeshIOInterface::Format> smfIOPlugin::exportFormats() const
|
|
</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> QList<Format> formatList;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> formatList << Format("Simple Model Format" ,tr("SMF"));</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> return formatList;</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> }</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">const ActionInfo &smfIOPlugin::Info(QAction *action) </span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic"> static ActionInfo ai;</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> return ai;</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> }</span><br style="FONT-STYLE: italic">
|
|
<br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">const PluginInfo &smfIOPlugin::Info() </span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> static PluginInfo ai; </span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> ai.Date=tr("__DATE__");</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> ai.Version = tr("Current version");</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> ai.Author = ("Yuor name");</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> return ai;</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> }</span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic"> </span><br style="FONT-STYLE: italic">
|
|
<span style="FONT-STYLE: italic">int smfIOPlugin::GetExportMaskCapability(QString &format) const
|
|
</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic">{</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic"> return 0;</span><br style="FONT-STYLE: italic"><br>
|
|
<span style="FONT-STYLE: italic">}</span><br style="FONT-STYLE: italic">
|
|
<br>
|
|
<span style="FONT-STYLE: italic">Q_EXPORT_PLUGIN(smfIOPlugin)</span><br>
|
|
<br>
|
|
</p>
|
|
<br>
|
|
<span style="FONT-STYLE: italic">
|
|
<dl>
|
|
</dl>
|
|
</span></div>
|
|
<div id="rightcontent">
|
|
<br>
|
|
<a href="https://sourceforge.net/projects/meshlab/">
|
|
<span style="FONT-STYLE: italic"></span><img src="http://sourceforge.net/sflogo.php?group_id=149444&type=2" alt="SourceForge.net Logo"
|
|
border="0" height="37" width="125"></a>
|
|
<p class="menu"><a href="http://meshlab.sourceforge.net">Main Page </a></p>
|
|
<p class="menu"><a href="https://sourceforge.net/project/showfiles.php?group_id=149444">Download</a></p>
|
|
<p class="menu"><a href="http://cvs.sourceforge.net/viewcvs.py/meshlab/">CVS</a></p>
|
|
<p class="menu"><a href="https://sourceforge.net/pm/?group_id=149444">TASK</a></p>
|
|
<p class="menu"><a href="https://sourceforge.net/projects/meshlab/">SF project page</a></p>
|
|
</div>
|
|
</body>
|
|
</html>
|