X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fdoc%2FbbtkPackageDevelopersGuide%2FbbtkPackageDevelopersGuide.tex;h=9a5ae50c720f18e910164614f1ccad7d63e3b02a;hb=1de101d39baf27cea84ebce726bbb498f48159b3;hp=209d5fcabcef0dc9c11fbc5b361dbcde52d31458;hpb=2fcebb64014dd4d699d34716a6658d3f954ec749;p=bbtk.git diff --git a/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex b/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex index 209d5fc..9a5ae50 100644 --- a/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex +++ b/kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex @@ -3,69 +3,26 @@ \input{config.tex} -\def\todo{\scriptsize\fbox{\bf TODO !!}\normalsize} -\def\x{\bm{x}} -\def\BBTK{{\xspace}The {\bf Black Box Toolkit} } -\def\bbtk{{\xspace}$\texttt{bbtk}$ } -\def\bbi{{\xspace}$\texttt{bbi}$ } -\def\bbStudio{{\xspace}$\texttt{bbStudio}$ } -\def\bbfy{{\xspace}$\texttt{bbfy}$ } -\def\bbdoc{{\xspace}$\texttt{bbdoc}$ } -\def\bbCreatePackage{{\xspace}$\texttt{bbCreatePackage}$ } - -\def\bb{{\xspace}$\texttt{bb}$ } -%\def\bbp{{\xspace}$\texttt{bbp}$\xspace} - -\def\cmake{{\xspace}$\texttt{cmake}$ } - -\def\C{{\xspace}$\texttt{C}$ } -\def\CPP{{\xspace}$\texttt{C++}$ } - -\def\xml{{\xspace}$\texttt{xml}$ } - -\def\itk{{\xspace}$\texttt{itk}$ } -\def\vtk{{\xspace}$\texttt{vtk}$ } -\def\gdcm{{\xspace}$\texttt{gdcm}$ } -\def\gsmis{{\xspace}$\texttt{gsmis}$ } -\def\wx{{\xspace}$\texttt{wxWidgets}$ } - -\def\lin{{\xspace}\textit{Linux} } -\def\win{{\xspace}\textit{Windows} } - -% the same macros with no space at the end - -\def\BBTKns{{\xspace}The {\bf Black Box Toolkit}} -\def\bbtkns{{\xspace}$\texttt{bbtk}$} -\def\bbins{{\xspace}$\texttt{bbi}$} -\def\bbfyns{{\xspace}$\texttt{bbfy}$} -\def\bbdocns{{\xspace}$\texttt{bbdoc}$} -\def\bbCreatePackagens{{\xspace}$\texttt{bbCreatePackage}$} - -\def\bbns{{\xspace}$\texttt{bb}$} -%\def\bbp{{\xspace}$\texttt{bbp}$\xspace} +\begin{document} +\begin{center} -\def\cmakens{{\xspace}$\texttt{cmake}$} +{\Large \BBTK} +\vspace{1cm} -\def\Cns{{\xspace}$\texttt{C}$} -\def\CPPns{{\xspace}$\texttt{C++}$} +{\Huge Package Developers' Guide} +\vspace{1cm} -\def\xmlns{{\xspace}$\texttt{xml}$} +\bbtk version \bbtkVersion +\vspace{0.5cm} -\def\itkns{{\xspace}$\texttt{itk}$} -\def\vtkns{{\xspace}$\texttt{vtk}$} -\def\gdcmns{{\xspace}$\texttt{gdcm}$} -\def\gsmisns{{\xspace}$\texttt{gsmis}$} -\def\wxns{{\xspace}$\texttt{wxWidgets}$} -\def\linns{{\xspace}\textit{Linux}} -\def\winns{{\xspace}\textit{Windows}} +Last modified on : October 12, 2008 \\ +Generated on : \today +\vspace{0.5cm} +Laurent Guigues, Jean-Pierre Roux +\end{center} -\begin{document} -\title{The Black Box Toolkit\\Package Developers' Guide} -\date{\today} -\author{Laurent Guigues} -\maketitle % ========================================== \tableofcontents % ========================================== @@ -90,14 +47,15 @@ % ========================================== 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 \bbtk, -such as the interpreter \bbi). +dynamically by \bbtk (hence applications which use \bbtkns, +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. @@ -116,6 +74,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 : @@ -127,6 +88,10 @@ 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} % ========================================== @@ -135,7 +100,7 @@ the utility \bbfy will then generate the corresponding \CPP code. Run \texttt{bbStudio}. -You''l get something like in fig. \ref{bb-Studio} +You'll get something like in fig. \ref{bb-Studio} \begin{figure}[!ht] \caption{\label{bb-Studio} bbStudio} @@ -437,7 +402,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 ?} @@ -525,10 +493,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. @@ -697,42 +666,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 @@ -770,22 +742,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|}
@@ -888,6 +874,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}
 % ==========================================