Commit 1194971d authored by jcfr's avatar jcfr
Browse files

ENH: Modernize doxygen Documentation generation mechanism

git-svn-id: http://svn.slicer.org/Slicer4/trunk@16173 3bd1e089-480b-0410-8dfb-8563597acbee
parent e439d30e
......@@ -131,7 +131,6 @@ ENDIF()
#-----------------------------------------------------------------------------
# Additional Slicer Options
#-----------------------------------------------------------------------------
OPTION(BUILD_DOCUMENTATION "Build Slicer Documentation" OFF)
OPTION(BUILD_TESTING "Test the project" ON)
OPTION(WITH_MEMCHECK "Run tests through valgrind." OFF)
OPTION(WITH_COVERAGE "Enable/Disable coverage" OFF)
......@@ -165,6 +164,20 @@ MARK_AS_ADVANCED(Slicer_ITK_GIT_TAG)
# Slicer implicitly uses Qt
SET(Slicer_USE_QT ON CACHE INTERNAL "Build Slicer with Qt")
#-----------------------------------------------------------------------------
# Documentation
#-----------------------------------------------------------------------------
OPTION(DOCUMENTATION_TARGET_IN_ALL "Include the custom target for building documentation in 'all'" OFF)
MARK_AS_ADVANCED(DOCUMENTATION_TARGET_IN_ALL)
SET(DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
CACHE PATH "Where documentation archives should be stored")
MARK_AS_ADVANCED(DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY)
# Attempt to discover Doxygen so that DOXYGEN_EXECUTABLE is set to an appropriate default value
FIND_PACKAGE(Doxygen QUIET)
#-----------------------------------------------------------------------------
# CTestCustom
#-----------------------------------------------------------------------------
......@@ -810,9 +823,7 @@ ADD_SUBDIRECTORY(Utilities/Package)
# Documentation
#-----------------------------------------------------------------------------
IF(BUILD_DOCUMENTATION)
ADD_SUBDIRECTORY(Utilities/Doxygen)
ENDIF()
ADD_SUBDIRECTORY(Utilities/Doxygen)
# Add CMake directory so that install rules associated with *.cmake files are evaluated
ADD_SUBDIRECTORY(CMake)
......
......@@ -201,7 +201,7 @@ endif()
#
SET(slicer_cmake_boolean_args
BUILD_DOCUMENTATION
DOCUMENTATION_TARGET_IN_ALL
BUILD_TESTING
BUILD_SHARED_LIBS
WITH_COVERAGE
......@@ -254,6 +254,8 @@ ExternalProject_Add(${proj}
-DSlicer_C_FLAGS:STRING=${Slicer_C_FLAGS}
-DSlicer_CXX_FLAGS:STRING=${Slicer_CXX_FLAGS}
-DCTEST_CONFIGURATION_TYPE:STRING=${CTEST_CONFIGURATION_TYPE}
-DDOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY:PATH=${DOCUMENTATION_ARCHIVES_OUTPUT_DIRECTORY}
-DDOXYGEN_EXECUTABLE:FILEPATH=${DOXYGEN_EXECUTABLE}
# ITK
-DITK_DIR:PATH=${ITK_DIR}
# Teem
......
#
# Build the documentation
#
INCLUDE (Documentation)
FIND_PACKAGE( Doxygen QUIET)
IF (BUILD_DOCUMENTATION)
SET(BUILD_DOXYGEN ON)
SET(DOCUMENTATION_DOWNLOAD_VTK_TAGFILE ON)
SET(DOCUMENTATION_HTML_TARZ ON)
SET(DOCUMENTATION_DOWNLOAD_EXTRA_TAGFILE ON)
SET(DOXYGEN_EXTRA_TAGFILENAME "ParaViewNightlyDoc.tag")
SET(DOXYGEN_EXTRA_TAGFILE_REMOTE_DIR "http://www.paraview.org/doc/nightly")
SET(DOXYGEN_EXTRA_TAGFILENAME1 "InsightDoxygen.tag")
SET(DOXYGEN_EXTRA_TAGFILE_REMOTE_DIR1 "http://www.itk.org/Doxygen/")
SET(DOXYGEN_PROJECT_NAME "Slicer4")
SET(DOXYGEN_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
SET(DOXYGEN_PROJECT_SOURCE_DIR "${Slicer_SOURCE_DIR}")
SET(VTK_DOXYGEN_HOME "${CMAKE_CURRENT_SOURCE_DIR}")
#SET(DOXYGEN_CVSWEB_CHECKOUT "http://public.kitware.com/cgi-bin/cvsweb.cgi/~checkout~/Slicer/")
#SET(DOXYGEN_CVSWEB_CHECKOUT_SUFFIX "?cvsroot=Slicer")
SET(DOXYGEN_SOURCE_LOCATIONS_DIR "${Slicer_SOURCE_DIR}")
IF( DOXYGEN_FOUND )
IF( DOXYGEN_DOT_FOUND )
FILE(GLOB_RECURSE modules_glob RELATIVE "${Slicer_SOURCE_DIR}"
"${Slicer_SOURCE_DIR}/*/*.h")
SET(modules)
SET(modules_paths)
FOREACH(mod ${modules_glob})
GET_FILENAME_COMPONENT(module_path "${mod}" PATH)
SET(modules ${modules} "${module_path}")
IF("${modules}" MATCHES ";")
LIST(REMOVE_ITEM modules "${module_path}")
ENDIF("${modules}" MATCHES ";")
SET(modules ${modules} "${module_path}")
SET(modules_paths ${modules_paths} "${module_path}")
ENDFOREACH(mod)
#LIST(SORT modules)
#MESSAGE("Found modules: ${modules}")
# Automatically generate documentation at build time
SET(all_arg)
IF (DOCUMENTATION_TARGET_IN_ALL)
SET(all_arg "ALL")
ENDIF()
SET(DOXYGEN_SOURCE_LOCATIONS)
FOREACH(module ${modules})
SET(DOXYGEN_SOURCE_LOCATIONS
"${DOXYGEN_SOURCE_LOCATIONS} \\
\"${Slicer_SOURCE_DIR}/${module}\"")
ENDFOREACH(module)
SET(DOXYGEN_PARSED_INPUT_DIRS)
FOREACH(module ${modules})
SET(DOXYGEN_PARSED_INPUT_DIRS
"${DOXYGEN_PARSED_INPUT_DIRS} \\
\"${CMAKE_CURRENT_BINARY_DIR}/dox/${module}\"")
ENDFOREACH(module)
#
# User documentation
#
SET( Slicer_USER_DOCUMENTATION "NO" )
SET( Slicer_ADDITIONAL_EXCLUDE_PATTERN "*_p.h\ *Private.*" )
SET( Slicer_DOCUMENTATION_HTML_TARZ TRUE)
SET(DOXYGEN_IGNORE_PREFIX "vtkKW vtkPV vtkSM vtk vtkITK vtkMRML vtkKW vtkSlicer itk")
SET(DOXYGEN_TAG_FILES
"\"@CMAKE_CURRENT_BINARY_DIR@/vtkNightlyDoc.tag=http://www.vtk.org/doc/nightly/html\"\\
\"@CMAKE_CURRENT_BINARY_DIR@/InsightDoxygen.tag=http://www.itk.org/Doxygen/html\"\\
\"@CMAKE_CURRENT_BINARY_DIR@/ParaViewNightlyDoc.tag=http://www.paraview.org/doc/nightly/html\"")
CONFIGURE_FILE( Doxyfile.txt.in
${CMAKE_CURRENT_BINARY_DIR}/UserDoxyfile.txt
)
#
# Configure the script and the doxyfile, then add target
#
IF(NOT DOT_PATH)
GET_FILENAME_COMPONENT(DOT_PATH ${DOT} PATH)
ENDIF(NOT DOT_PATH)
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/generate_doc.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/generate_userdoc.cmake
@ONLY
)
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/doxyfile @ONLY)
SET(userdoc_output "${CMAKE_CURRENT_BINARY_DIR}/doc/html/index.html")
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/doc_makeall.sh.in
${CMAKE_CURRENT_BINARY_DIR}/doc_makeall.sh @ONLY)
# Run doxygen as a custom command driven by a custom target.
ADD_CUSTOM_COMMAND(
OUTPUT ${userdoc_output}
COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/generate_userdoc.cmake"
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/generate_userdoc.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/UserDoxyfile.txt"
)
ADD_CUSTOM_TARGET(${DOXYGEN_PROJECT_NAME}DoxygenDoc
${BASH}
${CMAKE_CURRENT_BINARY_DIR}/doc_makeall.sh)
ADD_CUSTOM_TARGET(doc ${all_arg} DEPENDS ${userdoc_output})
SET_TARGET_PROPERTIES(doc PROPERTIES LABELS Documentation)
# also a target for the combined documentation
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/combined_doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/combined_doxyfile)
#
# Dev documentation
#
SET( Slicer_USER_DOCUMENTATION "YES" )
SET( Slicer_ADDITIONAL_EXCLUDE_PATTERN "" )
SET( Slicer_ADDITIONAL_FILE_PATTERN "*.c \ *.cc \ *.cxx \ *.cpp \ *.c++ \ *.hxx \ *.hpp \ *.h++ \ *.txx \ *.C \ *.CC \ *.C++ \ *.moc" )
CONFIGURE_FILE(
${CMAKE_CURRENT_SOURCE_DIR}/doc_combined_makeall.sh.in
${CMAKE_CURRENT_BINARY_DIR}/doc_combined_makeall.sh)
ADD_CUSTOM_TARGET(CombinedDoxygenDoc
${BASH}
${CMAKE_CURRENT_BINARY_DIR}/doc_combined_makeall.sh)
CONFIGURE_FILE( Doxyfile.txt.in
${CMAKE_CURRENT_BINARY_DIR}/DevDoxyfile.txt
)
# TODO Let's disable target 'doc-dev', it crashes using doxygen 1.7.3
#ADD_CUSTOM_TARGET( doc-dev
# ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/DevDoxyfile.txt
# DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/DevDoxyfile.txt
# )
#SET_TARGET_PROPERTIES(doc-dev PROPERTIES LABELS Documentation)
ENDIF (BUILD_DOCUMENTATION)
INCLUDE (${Slicer_SOURCE_DIR}/Utilities/Doxygen/LocalUserOptions.cmake OPTIONAL)
ELSE( DOXYGEN_DOT_FOUND )
MESSAGE( WARNING
"Warning: Dot not found - Documentation will not be created"
)
ENDIF( DOXYGEN_DOT_FOUND )
ENDIF( DOXYGEN_FOUND )
This diff is collapsed.
/**
\mainpage
\section intro_sec Introduction
See the <a href="http://www.slicer.org/slicerWiki">Slicer Wiki</a> for more information.
\defgroup Slicer_CLI Slicer Command Line Modules
\defgroup Slicer_QtModules Slicer Qt Loadable Modules
*/
pjcross: Crossno, Pat (pjcross@sandia.gov)
lafisk: Fisk, Lee Ann (lafisk@sandia.gov)
jsjones: Jones, Jake (jones@sandia.gov)
dbkarel: Karelitz, David (dbkarel@sandia.gov)
kmorel: Moreland, Ken (klmorel@sandia.gov)
pppebay: Pebay, Philippe (pppebay@ca.sandia.gov)
daroger: Rogers, David (daroger@sandia.gov)
tjtautg: Tautges, Tim (tjtautg@sandia.gov)
gjtempl: Templet, Gary (gjtempl@sandia.gov)
dcthomp: Thompson, David (dcthomp@sandia.gov)
atwilso: Wilson, Andy (atwilso@sandia.gov)
bnwylie: Wylie, Brian (bnwylie@sandia.gov)
# -------------------------------------------------------------------------
# doxyfile for VTK
# modified by S. Barre (Time-stamp: <2002-10-28 15:58:53 barre>
# -------------------------------------------------------------------------
PROJECT_NAME = VTK_Slicer_Combined
FULL_PATH_NAMES = YES
WARN_IF_UNDOCUMENTED = NO
GENERATE_TREEVIEW = NO
GENERATE_TODOLIST = YES
GENERATE_BUGLIST = YES
GENERATE_HTML = YES
GENERATE_HTMLHELP = YES
GENERATE_LATEX = NO
GENERATE_MAN = NO
GENERATE_RTF = NO
GENERATE_TAGFILE = "@Slicer_BINARY_DIR@/Utilities/Doxygen/vtk4.tag"
PDF_HYPERLINKS = YES
HAVE_DOT = YES
#HAVE_DOT = NO
DOT_PATH = "@DOT_PATH@"
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CLASS_DIAGRAMS = YES
GENERATE_LEGEND = YES
GRAPHICAL_HIERARCHY = YES
ALLEXTERNALS = NO
IMAGE_PATH = "@Slicer_SOURCE_DIR@/Utilities/Doxygen" "@Slicer_BINARY_DIR@/Utilities/Doxygen/contrib" "@Slicer_SOURCE_DIR@/docs" "@Slicer_BINARY_DIR@/docs"
OUTPUT_DIRECTORY = "@Slicer_BINARY_DIR@/Utilities/Doxygen/doc"
INPUT = \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_contributors.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_version.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_class2examples.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_class2tests.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_events.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_events2.dox" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_VTK_Slicer_Combined_index.dox"
#INPUT = \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Filtering" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Graphics" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Hybrid" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Imaging" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/IO" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Parallel" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Patented" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Rendering" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Common" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Graphics" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Imaging" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/IO" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Parallel" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Rendering"
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Filtering" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Utilities/QVTK" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_contributors.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_version.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_class2examples.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_class2tests.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_events2.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_events.dox" \
#"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/doc_Slicer_index.dox"
EXCLUDE_PATTERNS =
EXCLUDE = \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkSetGet.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkMarchingSquaresCases.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkMarchingCubesCases.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkWinCE.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkJavaUtil.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkPythonUtil.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Common/vtkTclUtil.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Hybrid/vtk3DS.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/IO/vtkPLY.h" \
"@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/VTK/Rendering/vtkFreeTypeFontCache.h"
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Slicer3/Common/vtkSetGet.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/vtCommon/vtkMarchingSquaresCases.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Common/vtkMarchingCubesCases.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Common/vtkWinCE.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Common/vtkJavaUtil.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Common/vtkPythonUtil.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Common/vtkTclUtil.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Hybrid/vtk3DS.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/IO/vtkPLY.h" \
# "@Slicer_BINARY_DIR@/Utilities/Doxygen/dox/Rendering/vtkFreeTypeFontCache.h"
# TAGFILES = "@Slicer_BINARY_DIR@/Utilities/Doxygen/vtk4-nightly.tag"=http://www.vtk.org/doc/nightly/html
EXTRACT_ALL = YES
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = YES
ALWAYS_DETAILED_SEC = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = YES
CASE_SENSE_NAMES = YES
VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES
SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = YES
TAB_SIZE = 3
DETAILS_AT_TOP = YES
# PAPER_TYPE = letter
FILE_PATTERNS = *.h
RECURSIVE = YES
HTML_ALIGN_MEMBERS = YES
HTML_HEADER = "@Slicer_SOURCE_DIR@/Utilities/Doxygen/header.html"
HTML_FOOTER = "@Slicer_SOURCE_DIR@/Utilities/Doxygen/footer.html"
HTML_STYLESHEET = "@Slicer_SOURCE_DIR@/Utilities/Doxygen/doxygen.css"
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 3
IGNORE_PREFIX = vtk
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH =
EXPAND_ONLY_PREDEF = YES
PREDEFINED = "vtkSetMacro(name,type)= \
virtual void Set##name (type);" \
"vtkGetMacro(name,type)= \
virtual type Get##name ();" \
"vtkSetStringMacro(name)= \
virtual void Set##name (const char*);" \
"vtkGetStringMacro(name)= \
virtual char* Get##name ();" \
"vtkSetClampMacro(name,type,min,max)= \
virtual void Set##name (type);" \
"vtkSetObjectMacro(name,type)= \
virtual void Set##name (type*);" \
"vtkGetObjectMacro(name,type)= \
virtual type *Get##name ();" \
"vtkBooleanMacro(name,type)= \
virtual void name##On (); \
virtual void name##Off ();" \
"vtkSetVector2Macro(name,type)= \
virtual void Set##name (type, type); \
void Set##name (type [2]);" \
"vtkGetVector2Macro(name,type)= \
virtual type *Get##name (); \
virtual void Get##name (type &, type &); \
virtual void Get##name (type [2]);" \
"vtkSetVector3Macro(name,type)= \
virtual void Set##name (type, type, type); \
virtual void Set##name (type [3]);" \
"vtkGetVector3Macro(name,type)= \
virtual type *Get##name (); \
virtual void Get##name (type &, type &, type &); \
virtual void Get##name (type [3]);" \
"vtkSetVector4Macro(name,type)= \
virtual void Set##name (type, type, type, type); \
virtual void Set##name (type [4]);" \
"vtkGetVector4Macro(name,type)= \
virtual type *Get##name (); \
virtual void Get##name (type &, type &, type &, type &); \
virtual void Get##name (type [4]);" \
"vtkSetVector6Macro(name,type)= \
virtual void Set##name (type, type, type, type, \
type, type); \
virtual void Set##name (type [6]);" \
"vtkGetVector6Macro(name,type)= \
virtual type *Get##name (); \
virtual void Get##name (type &, type &, type &, \
type &, type &, type &); \
virtual void Get##name (type [6]);" \
"vtkSetVectorMacro(name,type,count)= \
virtual void Set##name(type data[]);" \
"vtkGetVectorMacro(name,type,count)= \
virtual type *Get##name (); \
virtual void Get##name(type data[##count]);" \
"vtkWorldCoordinateMacro(name)= \
virtual vtkCoordinate *Get##name##Coordinate (); \
virtual void Set##name(float x[3]); \
virtual void Set##name(float x, float y, float z); \
virtual float *Get##name();" \
"vtkViewportCoordinateMacro(name)= \
virtual vtkCoordinate *Get##name##Coordinate (); \
virtual void Set##name(float x[2]); \
virtual void Set##name(float x, float y); \
virtual float *Get##name();" \
"vtkTypeMacro(thisClass,superclass)= \
typedef superclass Superclass; \
virtual const char *GetClassName(); \
static int IsTypeOf(const char *type); \
virtual int IsA(const char *type); \
static thisClass* SafeDownCast(vtkObject *o);" \
"vtkTypeRevisionMacro(thisClass,superclass)= \
typedef superclass Superclass; \
virtual const char *GetClassName(); \
static int IsTypeOf(const char *type); \
virtual int IsA(const char *type); \
static thisClass* SafeDownCast(vtkObject *o);"
This diff is collapsed.
#!/usr/bin/env perl
# Time-stamp: <2002-10-25 20:17:59 barre>
#
# Clean the HTML generated by Doxygen to remove some layout quicks
#
# barre : Sebastien Barre <sebastien@barre.nom.fr>
#
# 0.1 (barre)
# - first release
use Carp;
use Getopt::Long;
use Fcntl;
use File::Find;
use strict;
my ($VERSION, $PROGNAME, $AUTHOR) = (0.1, $0, "Sebastien Barre");
$PROGNAME =~ s/^.*[\\\/]//;
print "$PROGNAME $VERSION, by $AUTHOR\n";
# -------------------------------------------------------------------------
# Defaults (add options as you want : "verbose" => 1 for default verbose mode)
my %default =
(
html => "../../../doc/html",
);
# -------------------------------------------------------------------------
# Parse options
my %args;
Getopt::Long::Configure("bundling");
GetOptions (\%args, "help", "verbose|v", "html=s");
if (exists $args{"help"}) {
print <<"EOT";
Usage : $PROGNAME [--help] [--verbose|-v] [--html path]
--help : this message
--verbose|-v : verbose (display filenames while processing)
--html path : 'path' the Doxygen generated HTML doc (default : $default{html})
Example:
$PROGNAME
EOT
exit;
}
$args{"html"} = $default{"html"} if ! exists $args{"html"};
$args{"html"} =~ s/[\\\/]*$// if exists $args{"html"};
my $os_is_win = ($^O =~ m/(MSWin32|Cygwin)/i);
my $open_file_as_text = $os_is_win ? O_TEXT : 0;
my $start_time = time();
# -------------------------------------------------------------------------
# Collect all HTML files
print "Collecting HTML files in ", $args{"html"}, "\n";
my @files;
find sub {
push @files, $File::Find::name
if -f $_ && $_ =~ /\.html$/;
}, $args{"html"};
print " => ", scalar @files, " file(s) collected in ", time() - $start_time, " s.\n";
# -------------------------------------------------------------------------
# Remove path
my $nb_files = 0;
undef $/; # slurp mode
print "Cleaning and writing...\n";
my $intermediate_time = time();
foreach my $filename (@files) {
print " $filename\n" if exists $args{"verbose"};
# Open the file, read it entirely
sysopen(HTMLFILE,
$filename,
O_RDONLY|$open_file_as_text)
or croak "$PROGNAME: unable to open $filename\n";
my $html = <HTMLFILE>;
close(HTMLFILE);
# Clean
my $has_been_cleaned = 0;
if ($html =~ s/<table width="100%" cellpadding="2" cellspacing="0" border="0">/<table class="table-md-params" cellpadding="2" cellspacing="0" border="0">/gms) {
$has_been_cleaned = 1;
}
# Write
if ($has_been_cleaned) {
++$nb_files;
sysopen(HTMLFILE,
$filename,
O_WRONLY|O_TRUNC|O_CREAT|$open_file_as_text)
or croak "$PROGNAME: unable to open destination file $filename\n";
print HTMLFILE $html;
close(HTMLFILE);
}
}
print " => $nb_files file(s) processed and written in ", time() - $intermediate_time, " s.\n";
print "Finished in ", time() - $start_time, " s.\n";
#!/usr/bin/env perl
# Time-stamp: <2002-01-18 16:17:26 barre>
#
# Summary ?
#
# barre : Sebastien Barre <sebastien.barre@kitware.com>
#
# 0.2 (barre)
# - add --headerext s : expected header file extension
# - add --headernewext s : new header file extension
# - add --headernewsuffix s : new header file suffix
#
# 0.1 (barre)
# - first release
use Carp;
use Cwd 'abs_path';
use Getopt::Long;
use Fcntl;
use File::Basename;
use File::Find;
use File::Path;
use strict;
my ($VERSION, $PROGNAME, $AUTHOR) = (0.2, $0, "Sebastien Barre");
$PROGNAME =~ s/^.*[\\\/]//;
print "$PROGNAME $VERSION, by $AUTHOR\n";
# -------------------------------------------------------------------------
# Defaults (add options as you want : "verbose" => 1 for default verbose mode)
my %default =
(
codematch => "\w(?:->|\.)InvokeEvent\s*\(\s*(vtkCommand::\w+)[\s,]",
dirs => ["../../Common",
"../../Filtering",
"../../Graphics",
"../../Hybrid",
"../../Imaging",
"../../IO",
"../../Parallel",
"../../Patented",
"../../Rendering"],
headerext => "h",
headernewext => "h",
headernewsuffix => "",
label => "Events",
project => "VTK",
relativeto => "",
sectionmatch => "^vtkCommand::(\w)",
sectionmatch2 => "^vtk(\w)",
store => "doc_VTK_events.dox",
store2 => "doc_VTK_events2.dox",
title => "Event To Classes",
title2 => "Class to Events",