X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkBlackBoxDescriptor.cxx;h=4fba9436ad38f520bd92adda727cbed642a514f2;hb=6575a389b71b1b85c79e4444885becb76ecf16e4;hp=050231eccab747e7a3b638cf2666e732d50bd51c;hpb=2d76cd309d74d5f83d701d6bb0a4140d5d122b36;p=bbtk.git diff --git a/kernel/src/bbtkBlackBoxDescriptor.cxx b/kernel/src/bbtkBlackBoxDescriptor.cxx index 050231e..4fba943 100644 --- a/kernel/src/bbtkBlackBoxDescriptor.cxx +++ b/kernel/src/bbtkBlackBoxDescriptor.cxx @@ -1,21 +1,34 @@ -/*========================================================================= - +/*========================================================================= Program: bbtk Module: $RCSfile: bbtkBlackBoxDescriptor.cxx,v $ Language: C++ - Date: $Date: 2008/01/30 09:28:15 $ - Version: $Revision: 1.2 $ - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - + Date: $Date: 2008/10/17 08:18:12 $ + Version: $Revision: 1.19 $ =========================================================================*/ +/* --------------------------------------------------------------------- + +* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) +* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +* +* This software is governed by the CeCILL-B license under French law and +* abiding by the rules of distribution of free software. You can use, +* modify and/ or redistribute the software under the terms of the CeCILL-B +* license as circulated by CEA, CNRS and INRIA at the following URL +* http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +* or in the file LICENSE.txt. +* +* As a counterpart to the access to the source code and rights to copy, +* modify and redistribute granted by the license, users are provided only +* with a limited warranty and the software's author, the holder of the +* economic rights, and the successive licensors have only limited +* liability. +* +* The fact that you are presently reading this means that you have had +* knowledge of the CeCILL-B license and that you accept its terms. +* ------------------------------------------------------------------------ */ + + /** * \file * \brief Class bbtk::BlackBoxDescriptor : (abstract) describes a BlackBox (name, description, author) and is able to create an instance of it. @@ -24,32 +37,45 @@ #include "bbtkMessageManager.h" #include "bbtkPackage.h" #include "bbtkUtilities.h" +#include "bbtkAtomicBlackBoxDescriptor.h" +#include "bbtkWxBlackBox.h" namespace bbtk { - + + typedef Package::Pointer PackagePointer; + + + //========================================================================= /// Default ctor BlackBoxDescriptor::BlackBoxDescriptor() : mTypeName("Unknown"), mDescription(""), mAuthor(""), - mKeyword(""), - mCategory(STANDARD), - mPackage(NULL) + mCategory(""), + mKind(STANDARD), + mPackage() { - bbtkDebugMessage("Core",9, - "BlackBoxDescriptor::BlackBoxDescriptor()"< BlackBoxDescriptor::BlackBoxDescriptor()"< BlackBoxDescriptor::~BlackBoxDescriptor() [" + <second; - bbtkDebugDecTab("Core",9); + bbtkDebugMessage("object",4, + "<== BlackBoxDescriptor::~BlackBoxDescriptor() [" + < BlackBoxDescriptor::Release('" + <GetTypeName()<<"')"< No more instance alive = releasing from package"<mPackage; + Package::ReleaseBlackBoxDescriptor(pack,desc); + } + else + { + bbtkMessage("object",2," --> Still some instances alive = Keeping it alive"<GetTypeName()<<"')"< Destructing BlackBoxDescriptor ["<second; } //========================================================================= @@ -116,8 +198,8 @@ namespace bbtk const BlackBoxDescriptor::OutputDescriptor* BlackBoxDescriptor::GetOutputDescriptor(const std::string & name) const { - bbtkDebugMessageInc("Core",9,"BlackBoxDescriptor::GetOutputDescriptor('" - <second; } //========================================================================= @@ -133,18 +215,12 @@ namespace bbtk //========================================================================= void BlackBoxDescriptor::GetHelp(bool full) const { - bbtkDebugMessageInc("Core",9,"BlackBoxDescriptor::GetHelp() ["<GetName()<<"::"<"<"<"<second->GetName().size()>namelmax) - namelmax = i->second->GetName().size(); - if (i->second->GetHumanTypeName().size()>typelmax) - typelmax = i->second->GetHumanTypeName().size(); - } + { + if (i->second->GetName().size()>namelmax) + namelmax = i->second->GetName().size(); + if (i->second->GetHumanTypeName().size()>typelmax) + typelmax = i->second->GetHumanTypeName().size(); + if (i->second->GetNature().size()>natlmax) + natlmax = i->second->GetNature().size(); + } OutputDescriptorMapType::const_iterator o; for ( o = mOutput.begin(); o != mOutput.end(); ++o ) - { - if (o->second->GetName().size()>namelmax) - namelmax = o->second->GetName().size(); - if (o->second->GetHumanTypeName().size()>typelmax) - typelmax = o->second->GetHumanTypeName().size(); - } + { + if (o->second->GetName().size()>namelmax) + namelmax = o->second->GetName().size(); + if (o->second->GetHumanTypeName().size()>typelmax) + typelmax = o->second->GetHumanTypeName().size(); + if (o->second->GetNature().size()>natlmax) + natlmax = o->second->GetNature().size(); + } // for ( i = mInput.begin(); i != mInput.end(); ++i ) - { - std::string name(i->second->GetName()); - name += "'"; - name.append(1+namelmax-name.size(),' '); - std::string type(i->second->GetHumanTypeName()); - type += ">"; - type.append(1+typelmax-type.size(),' '); - bbtkMessage("Help",1, - " '"<second->GetDescription()<second->GetName()); + name += "'"; + name.append(1+namelmax-name.size(),' '); + std::string type(i->second->GetHumanTypeName()); + type += ">"; + type.append(1+typelmax-type.size(),' '); + std::string nature(i->second->GetNature()); + nature += "]"; + nature.append(1+natlmax-nature.size(),' '); + bbtkMessage("Help",1, + " '"<second->GetDescription()<second->GetName()); - name += "'"; - name.append(1+namelmax-name.size(),' '); - std::string type(o->second->GetHumanTypeName()); - type += ">"; - type.append(1+typelmax-type.size(),' '); - bbtkMessage("Help",1, + { + std::string name(o->second->GetName()); + name += "'"; + name.append(1+namelmax-name.size(),' '); + std::string type(o->second->GetHumanTypeName()); + type += ">"; + type.append(1+typelmax-type.size(),' '); + std::string nature(o->second->GetNature()); + nature += "]"; + nature.append(1+natlmax-nature.size(),' '); + bbtkMessage("Help",1, " '"<second->GetDescription()<second->GetDescription()<GetName() + "::" + mTypeName; + return "::" + mTypeName; + } + //========================================================================= + //========================================================================= void BlackBoxDescriptor::InsertHtmlHelp ( std::ofstream& s, int detail, int level, const std::string& output_dir, bool relative_link ) { - bbtkDebugMessageInc("Core",9,"BlackBoxDescriptor::InsertHtmlHelp() ["< categories; + // Split the category string + std::string delimiters = ";,"; + Utilities::SplitString(GetCategory(), + delimiters,categories); + (s) << "

\n"; (s) << "\n"; (s) << "\n"; + (s) << "\n"; + + (s) << "\n"; (s) << "
Description : " << descr << "
Author(s) : " << author << "
Category(s) : "; + std::vector::iterator ci; + for (ci=categories.begin(); ci!=categories.end(); ++ci) + { + s << "" << *ci + << " \n"; + } + s << "
To use it : include " + << GetPackage()->GetName() << "
\n"; - + //------------- // Graph //i->second->InsertHTMLGraph( &s , detail,level,dir); //------------- // Inputs - std::string col("#CCCCFF"); - + std::string titlecol("#BBBBFF"); + std::string usercol("#FFFFFF"); + std::string ubbcol("#DDFFFF"); + std::string wxbbcol("#EEFFFF"); + + // (s) << "

Inputs

\n"; (s) << "

\n"; - (s) << "\n"; + + std::vector user_defined; + std::vector ubb_defined; + std::vector wxbb_defined; + const BlackBoxDescriptor::InputDescriptorMapType& imap = GetInputDescriptorMap(); - InputDescriptorMapType::const_iterator in; - for ( in = imap.begin(); in != imap.end(); ++in ) - { - std::string name(in->second->GetName()); - Utilities::html_format(name); - - std::string type("<"); - type += in->second->GetTypeName(); - type += ">"; - Utilities::html_format(type); - - std::string descr(in->second->GetDescription()); - //Utilities::html_format(descr); + { + // Skips system-defined inputs + std::string col(usercol); + int iotype = 0; + if (in->second->GetCreatorTypeInfo() == + typeid(AtomicBlackBoxDescriptor)) + { + col = ubbcol; + iotype = 1; + } + else if (in->second->GetCreatorTypeInfo() == + typeid(WxBlackBoxDescriptor)) + { + col = wxbbcol; + iotype = 2; + } + + std::string name(in->second->GetName()); + Utilities::html_format(name); + + std::string type("<"); + type += in->second->GetTypeName(); + type += ">"; + Utilities::html_format(type); + + std::string descr(in->second->GetDescription()); + //Utilities::html_format(descr); + + std::string out = + "" + + "" + + "\n"; + + if (iotype==0) user_defined.push_back(out); + else if (iotype==1) ubb_defined.push_back(out); + else if (iotype==2) wxbb_defined.push_back(out); + + } + + std::vector::iterator hi; + for (hi=user_defined.begin();hi!=user_defined.end();++hi) s << *hi; + for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi) s << *hi; + for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi) s << *hi; + + user_defined.clear(); + ubb_defined.clear(); + wxbb_defined.clear(); - (s) << "" - << "" - << "\n"; - - } - // (s) << "
Inputs
 "+name+" 
 "+type+" 
"+descr+"
 "<
 "<
"<
\n"; - - //------------- // Outputs // (s) << "

Outputs

\n"; // (s) << "\n"; - (s) << "\n"; const BlackBoxDescriptor::OutputDescriptorMapType& omap = @@ -291,6 +445,21 @@ namespace bbtk for ( o = omap.begin(); o != omap.end(); ++o ) { + std::string col(usercol); + int iotype = 0; + if (o->second->GetCreatorTypeInfo() == + typeid(AtomicBlackBoxDescriptor)) + { + col = ubbcol; + iotype = 1; + } + else if (o->second->GetCreatorTypeInfo() == + typeid(WxBlackBoxDescriptor)) + { + col = wxbbcol; + iotype = 2; + } + std::string name(o->second->GetName()); Utilities::html_format(name); @@ -302,18 +471,30 @@ namespace bbtk std::string descr(o->second->GetDescription()); //Utilities::html_format(descr); + std::string out = + "" + + "" + + "\n"; - (s) << "" - << "" - << "\n"; + if (iotype==0) user_defined.push_back(out); + else if (iotype==1) ubb_defined.push_back(out); + else if (iotype==2) wxbb_defined.push_back(out); } - (s) << "
Outputs
 "+name+" 
 "+type+" 
"+descr+"
 "<
 "<
"<
\n"; + + for (hi=user_defined.begin();hi!=user_defined.end();++hi) s << *hi; + for (hi=wxbb_defined.begin();hi!=wxbb_defined.end();++hi) s << *hi; + for (hi=ubb_defined.begin();hi!=ubb_defined.end();++hi) s << *hi; + (s) << "\n"; + //------------ // End - bbtkDebugDecTab("Core",9); + bbtkDebugDecTab("Kernel",9); } //=========================================================================