We let you think about this\dots)
Of course, symbolic data attached to a box may be
-{\bf queried} : what are the inputs/outputs of the box ?
+{\bf queried}: what are the inputs/outputs of the box ?
what are their type ? their description ? etc.
This allows {\bf automatic documentation} of boxes.
The abstract definition of black boxes is the most basic
aspect of \BBTK architecture.
-Another key aspect is the groupement of black boxes into
+Another key aspect is the grouping of black boxes into
so called {\bf packages},
-which are \emph{dynamic libraries} which can also
+which are \emph{dynamic libraries} that can also
be queried, in particular about the boxes they provide.
-The package structure then offers a mechanism which
-is like a \emph{'plug-in'} mechanism.
+The package structure then offers a mechanism similar to \emph{'plug-in'} mechanism.
\BBTK provides the methods to load a package at run-time,
and create instances of the boxes it contains.
These two mechanisms (black boxes and packages)
-then gives the way to:
+then give the way to:
\begin{itemize}
\item The definition of an {\bf interpreted script language},
which allows to manipulate packages and boxes very easily in symbolic way.
-\BBTK provides one : \bbs (the Black Box Script language) and its interpreter
+\BBTK provides one: \bbs (the Black Box Script language) and its interpreter
\bbi (the Black Box Interpreter).
\item {\bf Automatic documentation} of existing packages.
\texttt{html} documentation of packages is proposed by
\bbStudions.
\end{itemize}
-Finally, these different components allow {\bf efficient} :
+Finally, these different components allow {\bf efficient}:
\begin{itemize}
\item {\bf capitalization and reuse} of existing processing units,
including {\bf documentation}
\item {\bf testing, prototyping} in a very simple script language
-\item {\bf inter-operability} between atomic processings which
+\item {\bf inter-operability} between atomic processings that
have been written by different persons, using different libraries, etc.
\end{itemize}
% ==========================================
\subsubsection{\bbtk components}
% ==========================================
-\BBTK includes :
+\BBTK includes:
\begin{itemize}
\item A \CPP {\bf\emph{library}} - called \bbtk - which defines a framework
(abstract classes) to develop black boxes and store them into
dynamic libraries, called black box \emph{packages}.
- \item Different {\bf\emph{"core" black box packages}} :
+ \item Different {\bf\emph{"core" black box packages}}:
\begin{itemize}
- \item {\bf\emph{std}} : the 'standard' package including basic useful boxes.
- \item {\bf\emph{wx}} : basic graphical interface elements (widgets : sliders, buttons, etc. based on the \texttt{wxWidgets} library).
- \item {\bf\emph{itk}} : the basic image processing package, based on the \itk library.
- \item {\bf\emph{vtk}} : the basic images and surfaces processing and visualization package, based on the \vtk library.
- \item {\bf\emph{wxvtk}} : widget boxes based on the \vtk library (2D and 3D vizualization and
+ \item {\bf\emph{std}}: the 'standard' package including basic useful boxes.
+ \item {\bf\emph{wx}}: basic graphical interface elements (widgets: sliders, buttons, etc. based on the \texttt{wxWidgets} library).
+ \item {\bf\emph{itk}}: the basic image processing package, based on the \itk library.
+ \item {\bf\emph{vtk}}: the basic images and surfaces processing and visualization package, based on the \vtk library.
+ \item {\bf\emph{wxvtk}}: widget boxes based on the \vtk library (2D and 3D visualization and
interaction).
%\item {\bf\emph{creaImageIO}} : Provides hight level widgets to read images, including DICOM.
- \item {\bf\emph{toolsbbtk}} : Tools for bbtk administration and package development.
+ \item {\bf\emph{toolsbbtk}}: Tools for bbtk administration and package development.
\end{itemize}
- \item A {\bf\emph{Developement environment}}, called \bbStudio, which provides
+ \item A {\bf\emph{Development environment}}, called \bbStudio, which provides:
\begin{itemize}
- \item An online {\bf\emph{script editor and interpretor}}
- \item A powerful html {\bf\emph{Help environment}}, integrating :
+ \item An online {\bf\emph{script editor and interpreter}}
+ \item A powerful html {\bf\emph{Help environment}}, integrating:
\begin{itemize}
- \item Online documentation scaning
- \item Retreiving boxes on various criterions
+ \item Online documentation scanning
+ \item Retrieving boxes on various criteria
\item Checking Demo and examples
\end{itemize}
\end{itemize}
- \item An standalone {\bf\emph{interpreter}}, called \bbins, which allows to
+ \item A standalone {\bf\emph{interpreter}}, called \bbins, which allows to
execute \bbs scripts or commands.
- \item {\bf\emph{Various Development Utilities}} :
+ \item {\bf\emph{Various Development Utilities}}:
\begin{itemize}
\item \bbfy generates the \CPP code of a black box from a
description file written in \texttt{xml}.
%\item \bbdoc generates the html documentation of a black box package
%(author, description, description of its black boxes :
%author, description, inputs, outputs, and so on).
- \item \bbCreatePackage allows to create the basic file architecture.
+ \item \bbCreatePackage allows to create the basic file architecture
to start the development of a new black box package.
- \item \bbCreateBlackBox allows to create the basic file architecture.
+ \item \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.
\item \bbs2cpp translates a \texttt{.bbs} script into a \CPP file.
\item \bbc (sorry : Linux Only, for the moment) that compiles \texttt{.bbs} scripts into executables.
\item \bbRegenerateBoxesLists which creates the html pages of the various lists of all the currenly installed boxes.
\item \bbPlugPackage which automatically incorporates a new package.
\end{itemize}
- \item A full {\bf\emph{documentation}} printable (pdf), browsable (html),
- queryable throught keywords.
+ \item A full {\bf\emph{documentation}} that can be printed (pdf), browsed (html) and
+ queried through keywords.
\end{itemize}
The general architecture of \BBTK
is shown in figure \ref{bb-architecture}.
\begin{figure}[!ht]
-\caption{\label{bb-architecture}\BBTK architecture}
+\caption{\BBTK architecture}
\begin{center}
\includegraphics[width=0.6\textwidth]{bb-architecture.png}
\end{center}
+\label{bb-architecture}
\end{figure}
%%\newpage
Read this \texttt{Users' Guide} if you want to learn how to use
\bbtk development environnement (\bbStudions) and how to write black box scripts.\\
-If you aim is to write your own Packages and Black Boxes, you have to read the
+If your aim is to write your own Packages and Black Boxes, you have to read the
\texttt{Package Developper's Guide}.
% ==========================================
(the exact appearance of \bbStudio is Operating System and \bbtk version dependent).
At start, \bbStudio opens with a very minimal 'How to use' in the middle.
-Don't forget to read it : it will vanish at the first mouse click.
+Don't forget to read it: it will vanish at the first mouse click.
\begin{figure}[!ht]
%\end{center}
%\end{figure}
-The interface is divided into four parts : \texttt{Files}, \texttt{Messages},
+The interface is divided into four parts: \texttt{Files}, \texttt{Messages},
\texttt{Command}, \texttt{Help}.
It is written using the Advanced User Interface library of wxWidgets
(a.k.a. AUI),
\label{bbi-MessagesPart}
Two kinds of messages will be output here:\\
-System messages : produced by the kernel, in case of a user mistyping, or an execution error\\
-Script messages : produced by the \bbtk equivalent of \texttt{printf}
+System messages: produced by the kernel, in case of a user mistyping, or an execution error.\\
+Script messages: produced by the \bbtk equivalent of \texttt{printf}
or \texttt{std::cout} in user programs.
\subsubsection{'Command' part}
\subsubsection{'Help' part}
\label{bbi-HelpContentsPart}
-The 'Help' part of \bbStudio is used to browse the html help of \BBTKns.
+The 'Help' part of \bbStudio is used to browse the html help of \BBTKns. You can find there various guides (see section~\ref{sec:guides}) and detailed information about each black box available (see section~\ref{sec:boxes_help}). They can be browsed alphabetically, by package and by category. Two special categories of boxes, demos and examples, are available via direct links (see section~\ref{sec:demos_examples}).
% ==========================================
% ==============================================
\subsection{Running Demos and Examples}
+\label{sec:demos_examples}
% ==============================================
In the 'Help' part (See figure \ref{HelpContents}), select \texttt{Examples} link.
Select \texttt{wx::exampleSlider}.
\begin{figure}[!ht]
-\caption{\label{exampleSlider}Html documentation of example 'exampleSlider'}
+\caption{Html documentation of example 'exampleSlider'}
\begin{center}
\includegraphics[width=0.7\textwidth]{exampleSlider.png}
\end{center}
+\label{exampleSlider}
\end{figure}
You can see information on the example and
% ==========================================
\subsubsection{Guides}
+\label{sec:guides}
% ==========================================
An html version of all the guides is browsable in the \texttt{Help} part of \bbStudions.
% ==========================================
\subsubsection{Boxes Help}
+\label{sec:boxes_help}
% ==========================================
Lists of currently available boxes from installed packages
\begin{itemize}