X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fdoc%2FbbtkPackageDevelopersGuide%2FbbtkPackageDevelopersGuide.tex;h=8046e8ff0d83eca6bd2452870b7177ca63275edc;hb=4f58c18b5e205a288f540a52bae75901bd074352;hp=2504f8a188b670bc64e59b549379ab1559e24769;hpb=43b0c4c9408e08528c851fdf1ef3b11e6642657b;p=bbtk.git diff --git a/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex b/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex index 2504f8a..8046e8f 100644 --- a/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex +++ b/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex @@ -1,13 +1,39 @@ + % ========================================== \documentclass[11pt,final,a4paper]{article} \input{config.tex} + \begin{document} -\title{The Black Box Toolkit\\Package Developers' Guide} -\date{\today} -\author{Laurent Guigues} -\maketitle + +\begin{center} + +{\Large \BBTK} +\vspace{1cm} + +{\Huge User's Guide} +\vspace{1cm} + +\bbtk version \bbtkVersion +\vspace{0.5cm} + + +Last modified on : October 12, 2008 \\ +Generated on : \today +\vspace{0.5cm} +\end{center} +\begin{center} +Eduardo Davila, Laurent Guigues, Jean-Pierre Roux +\end{center} +\begin{center} +CREATIS-LRMN, Centre de Recherche en Imagerie Medicale \\ CNRS UMR 5220, INSERM U620\\ +INSA Lyon\\ +Universit\'e Claude-Bernard Lyon 1 +\end{center} + + + % ========================================== \tableofcontents % ========================================== @@ -33,14 +59,14 @@ Any black box must be included in a \bbtk package, that is in a particular shared library which can be loaded dynamically by \bbtk (hence applications which use \bbtkns, -such as the interpreter \bbi, launched by the development environment +such as the development environment, \bbStudions). \begin{enumerate} \item \textbf{Create a new package. } Before defining any black box you have to create a package, or more precisely -the files which will allow you to generate the package +the source files which will allow you to generate the package (compile and link the shared library) and may be install it. \texttt{bbStudio} does it for you. @@ -59,6 +85,9 @@ that the existing project remain external to the package project. You will have to create your new package in a new location and may be include/link against existing libraries. \end{itemize} +You'll have to run the standalone application \bbCreatePackagens, that allows +to create the basic file architecture +to start the development of a new black box package. \item \textbf{Describe your new box. } You can do it either : @@ -70,6 +99,11 @@ When configuring your project with \cmake, the utility \bbfy will then generate the corresponding \CPP code. \end{itemize} + + +You'll have to run the standalone application \bbCreateBlackBox allows to create the basic file architecture + to start the development of a new black box, that will be included in an already existing package. + \end{enumerate} % ========================================== @@ -105,7 +139,7 @@ That will creates the directory structure and the \texttt{cmake} files necessary to build the project. You must then decide the name of your new package. -This name will be used to load the package in \texttt{bbi}. +This name will be used to load the package by \texttt{bbStudio}. Fill up the form like in fig. \ref{bbFillUpPackageForm}. @@ -380,7 +414,10 @@ Concretely, a \texttt{bbtk::WxBlackBox} is associated to a \texttt{wxWindow} and must be able to return a pointer to it. If your black box is not a widget black box (that is : doesn't returns a pointer to a \emph{Widget}), - it must inherit from \texttt{bbtk::AtomicBlackBox}. + it must inherit from \texttt{bbtk::AtomicBlackBox}.\\ + It returns a \texttt{wxWidget} which can be embedded into the \texttt{wxWindow}.\\ + In particular, modal dialogs which are created and destroyed at the end of the process method of the box + are NOT \texttt{WxBlackBoxes}/ \subsubsection{Inherit or encapsulate ?} @@ -468,10 +505,11 @@ Finally, to create a new black box, you will have to give : \item Its {\bf type}, either \begin{enumerate} - \item a standard one (\texttt{std-template}) - \item a VTK Polydata Algorithm based box (\texttt{VTK\_PolydataAlgorithm-template}), - \item a VTK Image Algorithm based box (\texttt{VTK\_ImageaAlgorithm-template}), - \item if it uses the wxWidget Library (\texttt{widget-template}) + \item AtomicBlackBox : a basic one, with no special I/O (\texttt{std-template}) + \item WxBackBox : ouputs a \texttt{wxWindow}, + \item a VTK Polydata Algorithm Box descendant, + \item a VTK Image Algorithm Box descendant + \end{enumerate} \item The output format of the file, either a C++ file or an XML file. @@ -640,42 +678,45 @@ you must modify the xml file generated in previous step : % ========================================== % ========================================== -\subsubsection{Specific \texttt{xml} tags for \texttt{vtkImageAlgorithm} classes bbfication} +\subsubsection{Specific \texttt{xml} tags for \texttt{vtkImageAlgorithm} classes bbfication by inheritance} % ========================================== \begin{verbatim} - + the vtk ImageAlgorithm class it inherits from - + \end{verbatim} % ========================================== -\subsubsection{Specific \texttt{xml} tags for \texttt{vtkPolyDataAlgorithm} classes bbfication} +\subsubsection{Specific \texttt{xml} tags for \texttt{vtkPolyDataAlgorithm} classes bbfication by inheritance} % ========================================== \begin{verbatim} - + the vtk Polydata class it inherits from - + \end{verbatim} + +\newpage + % ========================================== \subsubsection{\bbfy \texttt{xml} tags reference} % ========================================== - + See tables \ref{xml_tags}, \ref{xml_tags2} % ========================================== \begin{table}[!ht] \caption{\label{xml_tags} -\bbfy \texttt{xml} tags reference} +\bbfy \texttt{xml} tags reference (part 1)} \small \begin{tabular}{|lcllm{6cm}|} \hline @@ -713,22 +754,36 @@ Use \texttt{bbPACKAGE}, where \texttt{PACKAGE} is the name of the package\\\hlin & \texttt{special} & - & 0-1 & In: \{\texttt{``itk input'', ``vtk input'', ``itk parameter'', ``vtk parameter''}\} (see below).\\\hline & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type of the input (see text). \\\hline -\texttt{} & \texttt{name} & - & 1 & The name of the output \\\hline + + + \end{tabular} + \end{table} +\begin{table}[!ht] +\caption{\label{xml_tags2} +\bbfy \texttt{xml} tags reference (part 2)} +\small +\begin{tabular}{|lcllm{6cm}|} +\hline +Tag & Attributes & Condition & Multiplicity & Description + \\ \hline + \texttt{} & \texttt{name} & - & 1 & The name of the output \\\hline & \texttt{type} & - & 1 & The type of the output \\\hline & \texttt{special} & - & 0-1 & In: \{\texttt{``itk output'', ``vtk output''}\} (see below).\\\hline & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type of the output (see text).\\\hline & \texttt{nature} & c) & 0-1 & The ``nature'' of the output (used for automatic GUI generation).\\\hline - \texttt{} & - & - & 0-1 & The code of the processing method of the box. Must be put between clear tags : \texttt{
} \\\hline 
 \texttt{} & - & - & 0-1 & The code of the user Constructor of the box (may contains default initialisations). Must be put between clear tags : \texttt{
} \\\hline 
 \texttt{} & - & - & 0-1 & The code of the user Copy Constructor of the box . Must be put between clear tags : \texttt{
} \\\hline
 \texttt{} & - & - & 0-1 & The code of the user Destructor of the box. Must be put between clear tags : \texttt{
} \\\hline
  \end{tabular}
  \end{table}
+ 
+ \newpage
+ 
 % ==========================================
 \begin{table}[!ht]
-\caption{\label{xml_tags}
+\caption{\label{xml_tags-conditions}
 \bbfy \texttt{xml} tags conditions}
 \small
 \begin{tabular}{|ll|}
@@ -758,8 +813,7 @@ a \texttt{wxWindow} and is be able to return a pointer to it.... \\ \hline
 
 % ==========================================
 \begin{table}[!ht]
-\caption{\label{categories}
-\bbfy \texttt{Black Box} categories}
+\caption{\label{categories} \texttt{bbfy} \texttt{Black Box} categories}
 \small
 \begin{tabular}{|ll|}
 \hline
@@ -831,6 +885,16 @@ a \texttt{wxWindow} and is be able to return a pointer to it.... \\ \hline
 \end{tabular}
 \end{table}
 
+.\\
+.\\
+.\\
+.\\
+.\\
+
+
+\newpage 
+
+
 % ==========================================
 \subsection{\CPP description of a box}
 % ==========================================
@@ -880,7 +944,7 @@ For a quick start, the best you have to do is to run \texttt{bbStudio}, then in
     \item \texttt{BBTK\_NAME} : the name of your box 
     \item \texttt{BBTK\_AUTHOR} : author name (better you put e-mail adress)
     \item \texttt{BBTK\_DESCRIPTION} : brief description of what does the box
-    \item \texttt{BBTK\_CATEGORY} :box category  (see table \ref{categories})
+    \item \texttt{BBTK\_CATEGORY} : box category  (see table \ref{categories})
     \item \texttt{BBTK\_INPUT} for each one of the input parameters, you have to supply : 
        \begin{itemize}
          \item The current Blackbox name.