WMFiberTranslator.h 3.86 KB
Newer Older
1 2 3 4
//---------------------------------------------------------------------------
//
// Project: OpenWalnut ( http://www.openwalnut.org )
//
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
// For more information see http://www.openwalnut.org/copying
//
// This file is part of OpenWalnut.
//
// OpenWalnut is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// OpenWalnut 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 for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
//
//---------------------------------------------------------------------------

#ifndef WMFIBERTRANSLATOR_H
#define WMFIBERTRANSLATOR_H

#include <string>

#include "core/kernel/WModule.h"
#include "core/kernel/WModuleOutputData.h"

#include "core/dataHandler/WDataSetFibers.h"

/**
 * Creates a fiber dataset from various data sources.
 * 
 * \ingroup modules
 */
class WMFiberTranslator : public WModule
{
public:
    /**
     * Constructor.
     */
    WMFiberTranslator();

    /**
     * Destructor.
     */
    virtual ~WMFiberTranslator();

    /**
     * Gives back the name of this module.
     * \return the module's name.
     */
    virtual const std::string getName() const;

    /**
     * Gives back a description of this module.
     * \return description to module.
     */
    virtual const std::string getDescription() const;

    /**
     * Due to the prototype design pattern used to build modules, this method returns a new instance of this method. NOTE: it
     * should never be initialized or modified in some other way. A simple new instance is required.
     *
     * \return the prototype used to create every module in OpenWalnut.
     */
    virtual boost::shared_ptr< WModule > factory() const;

    /**
     * Get the icon for this module in XPM format.
     * \return The icon.
     */
    virtual const char** getXPMIcon() const;

protected:
    /**
     * Entry point after loading the module. Runs in separate thread.
     */
    virtual void moduleMain();

    /**
     * Initialize the connectors this module is using.
     */
    virtual void connectors();

    /**
     * Initialize the properties for this module.
     */
    virtual void properties();

    /**
     * Initialize requirements for this module.
     */
    virtual void requirements();

private:
    /**
     * Merge the fibers in the given directory.
     *
     * \param dir The chosen directory.
     * \return The fiber dataset.
     */
    boost::shared_ptr< WDataSetFibers > mergeFibers( boost::filesystem::path dir );

    /**
     * Merge the fibers from given directory.
     *
     * \param dir The chosen directory.
     * \return The fiber dataset.
     */
    boost::shared_ptr< WDataSetFibers > mergeFibersNrrd( boost::filesystem::path dir );

    /**
     * Load fibers from an ExploreDTI .txt file.
     *
     * \param file The chosen txt file.
     * \return The fiber dataset.
     */
    boost::shared_ptr< WDataSetFibers > loadExploreDTIFibers( boost::filesystem::path file );

    //! The output connector.
    boost::shared_ptr< WModuleOutputData< WDataSetFibers > > m_output;

    //! A property for choosing the directory that contains the fiber text files.
    WPropFilename m_propInputDirectory;

    //! A property for choosing a file that contains the fiber coordinates.
    WPropFilename m_propInputFile;

    //! A condition for property updates.
    boost::shared_ptr< WCondition > m_propCondition;
};

#endif  // WMFIBERTRANSLATOR_H