meshlab/web/meshio.html
2006-10-09 09:14:06 +00:00

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 &amp;Info(QAction *);</span><br>
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual const PluginInfo &amp;Info();</span><br>
<span style="FONT-WEIGHT: bold; FONT-STYLE: italic">virtual int GetExportMaskCapability(QString &amp;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 &amp;formatName,QString &amp;fileName, MeshModel &amp;m, int&amp; 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 &amp;formatName,QString &amp;fileName, MeshModel &amp;m, const int &amp;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 &lt;QObject&gt;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">#include &lt;QStringList&gt;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">#include &lt;QString&gt;</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">&nbsp;&nbsp;&nbsp; Q_OBJECT</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; Q_INTERFACES(MeshIOInterface)</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">public:</span><br style="FONT-STYLE: italic">
<br>
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; smfIOPlugin();</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual QList<Format> importFormats() const;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual QList<Format> exportFormats() const;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual const ActionInfo &amp;Info(QAction *);</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual const PluginInfo &amp;Info();</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual int GetExportMaskCapability(QString &amp;format) const;</span><br style="FONT-STYLE: italic">
<br>
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual bool open(const QString &amp;formatName, QString &amp;fileName, MeshModel &amp;m, int&amp; mask, vcg::CallBackPos *cb=0, QWidget *parent=0);</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; virtual bool save(const QString &amp;formatName,QString &amp;fileName, MeshModel &amp;m, const int &amp;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 &lt;Qt&gt;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">#include &lt;QtGui&gt;</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 &lt;vcg/wrap/io_trimesh/import_smf.h&gt;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">#include &lt;vcg/wrap/io_trimesh/export_smf.h&gt;</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 &amp;formatName, QString &amp;fileName, MeshModel &amp;m, int&amp; mask, CallBackPos *cb, QWidget *parent)<br>
{</span><br style="FONT-STYLE: italic">
<br>
<span style="FONT-STYLE: italic">&nbsp; if (fileName.isEmpty())<br>
&nbsp;&nbsp; return false;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;...</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;int result =
vcg::tri::io::ImporterSMF<CMeshO>::Open(m.cm, filenm);<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;...<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;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 &amp;formatName, QString &amp;fileName, MeshModel &amp;m, int&amp; mask, CallBackPos *cb, QWidget *parent)<br>
{</span><br style="FONT-STYLE: italic">
<br>
<span style="FONT-STYLE: italic">&nbsp;...</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;int result =
vcg::tri::io::ExporterSMF<CMeshO>::Save(m.cm, filenm);<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;...<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic"></span>&nbsp;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">&nbsp;QList<Format> formatList;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;formatList &lt;&lt; Format("Simple Model Format" ,tr("SMF"));</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;return formatList;</span><br style="FONT-STYLE: italic"><br>
<span style="FONT-STYLE: italic">&nbsp;}</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">&nbsp;QList<Format> formatList;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;formatList &lt;&lt; Format("Simple Model Format" ,tr("SMF"));</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;return formatList;</span><br style="FONT-STYLE: italic"><br>
<span style="FONT-STYLE: italic">&nbsp;}</span><br style="FONT-STYLE: italic">
<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">const ActionInfo &amp;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">&nbsp;static ActionInfo ai;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;return ai;</span><br style="FONT-STYLE: italic"><br>
<span style="FONT-STYLE: italic">&nbsp;}</span><br style="FONT-STYLE: italic">
<br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">const PluginInfo &amp;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">&nbsp;&nbsp; static PluginInfo ai; </span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp; ai.Date=tr("__DATE__");</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; &nbsp;ai.Version = tr("Current version");</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp;&nbsp; &nbsp;ai.Author = ("Yuor name");</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;&nbsp; return ai;</span><br style="FONT-STYLE: italic"><br>
<span style="FONT-STYLE: italic">&nbsp;}</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">&nbsp;</span><br style="FONT-STYLE: italic">
<span style="FONT-STYLE: italic">int smfIOPlugin::GetExportMaskCapability(QString &amp;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">&nbsp;&nbsp;&nbsp;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&amp;type=2" alt="SourceForge.net Logo"
border="0" height="37" width="125"></a>
<p class="menu"><a href="http://meshlab.sourceforge.net">Main Page&nbsp;</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>