diff --git a/.gitignore b/.gitignore index 0aebcec..1018c53 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,10 @@ _build/ .vscode/ .vs/ + +# latex intermediate files +*.aux +*.fdb_latexmk +*.fls +*.log +reaper_ultraschall.pdf diff --git a/CMakeLists.txt b/CMakeLists.txt index 8325721..5b06d92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,31 @@ elseif(UNIX) endif() endif() +# first we can indicate the documentation build as an option and set it to ON by default +option(BUILD_DOCS "Build documentation" ON) + +# check if Doxygen is installed +find_package(Doxygen) +if (DOXYGEN_FOUND) + # set input and output files + set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/scripts/Doxyfile.in) + set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) + + # request to configure the file + configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY) + message("Doxygen build started") + + # note the option ALL which allows to build the docs together with the application + add_custom_target(doxygen ALL + COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_OUT} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" + VERBATIM) + +else (DOXYGEN_FOUND) + message("Doxygen needs to be installed to generate the doxygen documentation") +endif (DOXYGEN_FOUND) + set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE INTERNAL "") set(CMAKE_WARN_DEPRECATED OFF CACHE INTERNAL "") set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "") diff --git a/README.md b/README.md deleted file mode 100644 index d42e76e..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Ultraschall Podcasting Extensions for REAPER - -![CMake](https://github.com/Ultraschall/ultraschall-plugin/workflows/CMake/badge.svg?branch=develop) diff --git a/README.org b/README.org new file mode 100644 index 0000000..bd3544f --- /dev/null +++ b/README.org @@ -0,0 +1,83 @@ +#+title: README +#+author: Heiko Panjas +#+date: <2024-07-27 Sat> + +This repository contains the Ultraschall REAPER Plug-in. The Ultraschall REAPER Plug-in is a collection of extensions for the REAPER digital audio workstation that are designed to make podcasting with REAPER easier and more efficient. + +* Build Prerequisites + +The Ultraschall REAPER plug-in is written in C and C++, so you need a C/C++ compiler first. We recommend the latest version of the most commonly used compiler on each platform. That is /Microsoft Visual Studio 2022 17.10.5/ for Windows, /GCC 13.2/ for Ubuntu, and /Xcode 15.4/ for macOS. + +The source code of the Ultraschall REAPER Plug-in is managed with CMake. Therefore, you need CMake and a build tool. We use Ninja because it works the same on every platform - Windows, Ubuntu, and macOS. Alternatively, you can use MSBuild or NMake on Windows, and GNU Make on Ubuntu and GNU Make or Xcode on macOS. We recommend installing the latest versions of /CMake/ and /Ninja/, since using alternative build tools may require changes to the CMake files. Currently, the latest versions of CMake and Ninja are /CMake 3.30.1/ and /Ninja 1.12.1/. + +And of course, you also need a reasonably current version of Git. We always use the latest version, which is currently /Git 2.45.2/. + +** Additionally Required Packages + +On Ubuntu, the Ultraschall REAPER plug-in additionally requires the package /libcurl4-openssl-dev/. + +* Build Instructions + +First, open a terminal and navigate to the directory where you want to save the source code. On Windows, please use PowerShell, as the rest of this guide relies on it. Next, you need to download the source code + +#+begin_src +git clone https://github.com/Ultraschall/ultraschall-plugin.git +#+end_src + +Then switch to the Ultraschall-plugin directory. + +#+begin_src +cd ultraschall-plugin +#+end_src + +Run the build script. On Windows use + +#+begin_src +./build.ps1 +#+end_src + +and on Ubuntu and macOS use + +#+begin_src +./build.sh +#+end_src + +The build script creates a platform-specific target. On Windows, it’s called + +#+begin_src +reaper_ultraschall.dll +#+end_src + +on Ubuntu, it’s + +#+begin_src +reaper_ultraschall.so +#+end_src + +and on macOS, it’s + +#+begin_src +reaper_ultraschall.dylib +#+end_src + +By default, the build script creates a development version of the plug-in, which includes debug symbols and runtime checks. The build targets are copied into the REAPER configuration so you can start using the debugger immediately. The REAPER configuration is located in different places on each platform. On Windows, it’s + +#+begin_src +$ENV:APPDATA/REAPER/UserPlugins +#+end_src + +on Ubuntu, it’s + +#+begin_src +${HOME}/.config/REAPER/UserPlugins +#+end_src + +and on macOS, it’s + +#+begin_src +${HOME}/Library/Application\ Support/REAPER/UserPlugins +#+end_src + +* Installation Instructions + + An installation after the build is only necessary if you need a release version of the plug-in or if you want to distribute the plug-in after the build. To build a release version, you need to run the build script with the parameter /–release/. You can find the finished plug-in after the release build in the /./build/artifacts// subdirectory. From this subdirectory, you only need to copy the plug-in - /reaper_ultraschall.dll/, /reaper_ultraschall.so/, or /reaper_ultraschall.dylib/ - into the REAPER configuration (see above). diff --git a/build.sh b/build.sh index ac9baf3..4709b5d 100755 --- a/build.sh +++ b/build.sh @@ -31,6 +31,7 @@ source scripts/BuildTools.sh TOOLS_DIRECTORY=`pwd`/tools BUILD_DIRECTORY=`pwd`/build BUILD_CONFIGURATION=Debug +BUILD_DOCUMENTATION=0 BUILD_GENERATOR=Ninja CMAKE_EXTRA_ARGS="" @@ -49,6 +50,8 @@ elif [ "$1" = "--cleanall" ]; then elif [ "$1" = "--clean" ]; then RemoveDirectory $BUILD_DIRECTORY exit 0 +elif [ "$1" = "--docs" ]; then + BUILD_DOCUMENTATION=1 elif [ "$1" == "--rebuild" ]; then CMAKE_EXTRA_ARGS="--clean-first" elif [ "$1" == "--release" ]; then @@ -86,6 +89,8 @@ if [ $CMAKE_INSTALL_FOUND -eq 0 ]; then fi fi + + if [ $CMAKE_INSTALL_FOUND -ne 0 ]; then echo "Configuring projects using $CMAKE_GENERATOR..." cmake -B "$BUILD_DIRECTORY" -G "$BUILD_GENERATOR" -Wno-dev --warn-uninitialized --warn-unused-vars -DCMAKE_BUILD_TYPE=$BUILD_CONFIGURATION @@ -102,6 +107,19 @@ if [ $CMAKE_INSTALL_FOUND -ne 0 ]; then exit -1 fi echo "Done." + + if [ $BUILD_DOCUMENTATION -ne 0 ]; then + echo "Building documentation using doxygen..." + cmake --build "$BUILD_DIRECTORY" --target doxygen + if [ $? -eq 0 ]; then + cd $BUILD_DIRECTORY/docs/latex && make && cp refman.pdf ../../../reaper_ultraschall.pdf && cd - + else + echo "Failed to build documentation." + exit -1 + fi + echo "Done." + fi + fi exit 0 diff --git a/scripts/Doxyfile b/scripts/Doxyfile.in similarity index 99% rename from scripts/Doxyfile rename to scripts/Doxyfile.in index 832172d..8d45bc4 100644 --- a/scripts/Doxyfile +++ b/scripts/Doxyfile.in @@ -48,7 +48,7 @@ PROJECT_NAME = "Ultraschall REAPER Plug-in" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "5.1" +PROJECT_NUMBER = @CMAKE_PROJECT_VERSION@ # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -74,7 +74,7 @@ PROJECT_ICON = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = build/docs +OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/docs # If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 # sub-directories (in 2 levels) under the output directory of each output format @@ -680,7 +680,7 @@ FORCE_LOCAL_INCLUDES = YES # documentation for inline members. # The default value is: YES. -INLINE_INFO = NO +INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the # (detailed) documentation of file and class members alphabetically by member @@ -797,7 +797,7 @@ SHOW_FILES = NO # Folder Tree View (if specified). # The default value is: YES. -SHOW_NAMESPACES = NO +SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from @@ -883,7 +883,7 @@ WARN_IF_INCOMPLETE_DOC = YES # WARN_IF_INCOMPLETE_DOC # The default value is: NO. -WARN_NO_PARAMDOC = NO +WARN_NO_PARAMDOC = YES # If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about # undocumented enumeration values. If set to NO, doxygen will accept @@ -891,7 +891,7 @@ WARN_NO_PARAMDOC = NO # will automatically be disabled. # The default value is: NO. -WARN_IF_UNDOC_ENUM_VAL = NO +WARN_IF_UNDOC_ENUM_VAL = YES # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS @@ -949,7 +949,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = src +INPUT = @CMAKE_CURRENT_SOURCE_DIR@/src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1207,13 +1207,13 @@ STRIP_CODE_COMMENTS = YES # entity all documented functions referencing it will be listed. # The default value is: NO. -REFERENCED_BY_RELATION = NO +REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES then for each documented function # all documented entities called/used by that function will be listed. # The default value is: NO. -REFERENCES_RELATION = NO +REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set # to YES then the hyperlinks from functions in REFERENCES_RELATION and @@ -1272,7 +1272,7 @@ VERBATIM_HEADERS = NO # classes, structs, unions or interfaces. # The default value is: YES. -ALPHABETICAL_INDEX = YES +ALPHABETICAL_INDEX = NO # The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) # that should be ignored while generating the index headers. The IGNORE_PREFIX @@ -1290,7 +1290,7 @@ IGNORE_PREFIX = # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output # The default value is: YES. -GENERATE_HTML = YES +GENERATE_HTML = NO # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of @@ -2025,7 +2025,7 @@ PAPER_TYPE = a4 # If left blank no extra packages will be included. # This tag requires that the tag GENERATE_LATEX is set to YES. -EXTRA_PACKAGES = +EXTRA_PACKAGES = times # The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for # the generated LaTeX document. The header should contain everything until the @@ -2042,7 +2042,7 @@ EXTRA_PACKAGES = # description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_HEADER = +LATEX_HEADER = @CMAKE_CURRENT_SOURCE_DIR@/scripts/DoxygenHeader.tex # The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for # the generated LaTeX document. The footer should contain everything after the @@ -2054,7 +2054,7 @@ LATEX_HEADER = # doing! # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_FOOTER = +LATEX_FOOTER = @CMAKE_CURRENT_SOURCE_DIR@/scripts/DoxygenFooter.tex # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created @@ -2065,7 +2065,7 @@ LATEX_FOOTER = # list). # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_STYLESHEET = @CMAKE_CURRENT_SOURCE_DIR@/scripts/doxygen.sty # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the LATEX_OUTPUT output @@ -2400,7 +2400,7 @@ SEARCH_INCLUDES = YES # RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. -INCLUDE_PATH = include/reaper +INCLUDE_PATH = @CMAKE_CURRENT_SOURCE_DIR@/include/reaper # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the @@ -2577,7 +2577,7 @@ CLASS_GRAPH = YES # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. -COLLABORATION_GRAPH = YES +COLLABORATION_GRAPH = NO # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for # groups, showing the direct groups dependencies. Explicit enabling a group diff --git a/scripts/DoxygenFooter.tex b/scripts/DoxygenFooter.tex new file mode 100644 index 0000000..a326948 --- /dev/null +++ b/scripts/DoxygenFooter.tex @@ -0,0 +1,51 @@ +% Latex footer for doxygen 1.10.0 +%--- End generated contents --- + +%%BEGIN CITATIONS_PRESENT + % Bibliography + \newpage + \phantomsection + +%%BEGIN !PDF_HYPERLINKS + \clearemptydoublepage +%%BEGIN COMPACT_LATEX + \addcontentsline{toc}{section}{$latexcitereference} +%%END COMPACT_LATEX +%%BEGIN !COMPACT_LATEX + \addcontentsline{toc}{chapter}{$latexcitereference} +%%END !COMPACT_LATEX + \printindex +%%END !PDF_HYPERLINKS + + \bibliographystyle{$latexbibstyle} + \bibliography{$latexbibfiles} +%%BEGIN PDF_HYPERLINKS +%%BEGIN COMPACT_LATEX + \addcontentsline{toc}{section}{$latexcitereference} +%%END COMPACT_LATEX +%%BEGIN !COMPACT_LATEX + \addcontentsline{toc}{chapter}{$latexcitereference} +%%END !COMPACT_LATEX +%%END PDF_HYPERLINKS + +%%END CITATIONS_PRESENT + +% Index +%%BEGIN !COMPACT_LATEX + \backmatter +%%END !COMPACT_LATEX + \newpage + \phantomsection + \clearemptydoublepage +%%BEGIN COMPACT_LATEX + \addcontentsline{toc}{section}{\indexname} +%%END COMPACT_LATEX +%%BEGIN !COMPACT_LATEX + \addcontentsline{toc}{chapter}{\indexname} +%%END !COMPACT_LATEX + \printindex + +% Required for some languages (in combination with latexdocumentpre from the header) +$latexdocumentpost +\end{document} + diff --git a/scripts/DoxygenHeader.tex b/scripts/DoxygenHeader.tex new file mode 100644 index 0000000..3e42721 --- /dev/null +++ b/scripts/DoxygenHeader.tex @@ -0,0 +1,274 @@ +% Latex header for doxygen 1.10.0 + % Handle batch mode + $latex_batchmode + + % to overcome problems with too many open files + \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage} + + \pdfminorversion=7 + + % Set document class depending on configuration +%%BEGIN COMPACT_LATEX + \documentclass[twoside]{article} +%%END COMPACT_LATEX +%%BEGIN !COMPACT_LATEX + \documentclass[twoside]{book} +%%END !COMPACT_LATEX + + %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package + \usepackage{ifthen} + \ifx\requestedLaTeXdate\undefined + \usepackage{array} + \else + \usepackage{array}[=2016-10-06] + \fi + %% + + % Packages required by doxygen + \makeatletter + \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} + % suppress package identification of infwarerr as it contains the word "warning" + \let\@@protected@wlog\protected@wlog + \def\protected@wlog#1{\wlog{package info suppressed}} + \RequirePackage{infwarerr} + \let\protected@wlog\@@protected@wlog + \makeatother + \IfFormatAtLeastTF{2016/01/01}{}{\usepackage{fixltx2e}} % for \textsubscript + \IfFormatAtLeastTF{2015/01/01}{\pdfsuppresswarningpagegroup=1}{} + + \usepackage{doxygen} + + $extralatexstylesheet + + \usepackage{graphicx} + \usepackage[utf8]{inputenc} + \usepackage{makeidx} + \PassOptionsToPackage{warn}{textcomp} + \usepackage{textcomp} + \usepackage[nointegrals]{wasysym} + \usepackage{ifxetex} + \usepackage{lineno} + + % NLS support packages + $languagesupport + + % Define default fonts + % Font selection + %%BEGIN LATEX_FONTENC + \usepackage[$latexfontenc]{fontenc} + %%END LATEX_FONTENC + + % set main and monospaced font + $latexfont + + \doxyallsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% + } + \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + + % Arguments of doxygenemoji: + % 1) '::' form of the emoji, already LaTeX-escaped + % 2) file with the name of the emoji without the .png extension + % in case image exist use this otherwise use the '::' form + \newcommand{\doxygenemoji}[2]{% + \IfFileExists{$latexemojidirectory/#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{$latexemojidirectory/#2.png}}}{#1}% + } + + % Page & text layout + \usepackage{geometry} + \geometry{% + $papertype,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% + } + \usepackage{changepage} + + % Allow a bit of overflow to go unnoticed by other means + \tolerance=750 + \hfuzz=15pt + \hbadness=750 + \setlength{\emergencystretch}{15pt} + \setlength{\parindent}{0cm} + \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}} + \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}} + \doxynormalparskip + % Redefine paragraph/subparagraph environments, using sectsty fonts + \makeatletter + \renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% + } + \renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% + } + \makeatother + + \makeatletter + \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@} + \makeatother + + % Headers & footers + \usepackage{fancyhdr} + \pagestyle{fancyplain} + \renewcommand{\footrulewidth}{0.4pt} + + \fancypagestyle{fancyplain}{ + \fancyhf{} + \fancyhead[LE, RO]{\bfseries\thepage} + \fancyhead[LO]{\bfseries\rightmark} + \fancyhead[RE]{\bfseries\leftmark} + % \fancyfoot[LO, RE]{\bfseries\scriptsize $generatedby Doxygen } + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated on $datetime for $projectname $projectnumber } + } + + \fancypagestyle{plain}{ + \fancyhf{} + % \fancyfoot[LO, RE]{\bfseries\scriptsize $generatedby Doxygen } + \fancyfoot[LO, RE]{\bfseries\scriptsize Generated on $datetime for $projectname $projectnumber } + \renewcommand{\headrulewidth}{0pt} + } + + \pagestyle{fancyplain} + + +%%BEGIN !COMPACT_LATEX + \renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% + } +%%END !COMPACT_LATEX + \renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% + } + + % ToC, LoF, LoT, bibliography, and index + % Indices & bibliography + \usepackage{natbib} + \usepackage[titles]{tocloft} + \setcounter{tocdepth}{3} + \setcounter{secnumdepth}{5} + + % creating indexes + $makeindex + + $extralatexpackages + + $latexspecialformulachars + +%%BEGIN FORMULA_MACROFILE + \input{$formulamacrofile} +%%END FORMULA_MACROFILE + + % Hyperlinks +%%BEGIN PDF_HYPERLINKS + % Hyperlinks (required, but should be loaded last) + \ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} + \else + \ifxetex + \usepackage[pagebackref=true]{hyperref} + \else + \usepackage[ps2pdf,pagebackref=true]{hyperref} + \fi + \fi + + \hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode,% + pdftitle={$projectname},% + pdfsubject={$projectbrief}% + } + +%%END PDF_HYPERLINKS + + % Custom commands used by the header + % Custom commands + \newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% + } + + % caption style definition + \usepackage{caption} + \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + + % in page table of contents + \IfFormatAtLeastTF{2023/05/01}{\usepackage[deeplevels]{etoc}}{\usepackage[deeplevels]{etoc_doxygen}} + \etocsettocstyle{\doxytocparskip}{\doxynormalparskip} + \etocsetlevel{subsubsubsection}{4} + \etocsetlevel{subsubsubsubsection}{5} + \etocsetlevel{subsubsubsubsubsection}{6} + \etocsetlevel{subsubsubsubsubsubsection}{7} + \etocsetlevel{paragraph}{8} + \etocsetlevel{subparagraph}{9} + + % prevent numbers overlap the titles in toc + \renewcommand{\numberline}[1]{#1~} + + +% End of preamble, now comes the document contents +%===== C O N T E N T S ===== + +\begin{document} +\raggedbottom + +$latexdocumentpre + +% Titlepage & ToC +%%BEGIN PDF_HYPERLINKS +%%BEGIN USE_PDFLATEX +% To avoid duplicate page anchors due to reuse of same numbers for +% the index (be it as roman numbers) +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode +} +%%END USE_PDFLATEX +%%END PDF_HYPERLINKS +\pagenumbering{alph} +\begin{titlepage} + \vspace*{7cm} + \begin{center}% + {\Large $title}\\ + %%BEGIN PROJECT_NUMBER + [1ex]\large $projectnumber \\ + %%END PROJECT_NUMBER + \vspace*{0.5cm} + % {\large https://ultraschall.fm}\\ + {\large $projectbrief }\\ + %%BEGIN TIMESTAMP + \vspace*{0.5cm} + {\small $datetime} + %%END TIMESTAMP + \end{center} +\end{titlepage} + +%%BEGIN !COMPACT_LATEX +\clearemptydoublepage +%%END !COMPACT_LATEX +\pagenumbering{roman} + +\tableofcontents +%%BEGIN !COMPACT_LATEX +\clearemptydoublepage +%%END !COMPACT_LATEX +\pagenumbering{arabic} + +%%BEGIN PDF_HYPERLINKS +%%BEGIN USE_PDFLATEX +% re-enable anchors again +\hypersetup{pageanchor=true} +%%END USE_PDFLATEX +%%END PDF_HYPERLINKS + +%--- Begin generated contents --- diff --git a/scripts/DoxygenLayout.xml b/scripts/DoxygenLayout.xml new file mode 100644 index 0000000..c22db56 --- /dev/null +++ b/scripts/DoxygenLayout.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/doxygen.sty b/scripts/doxygen.sty new file mode 100644 index 0000000..3deb957 --- /dev/null +++ b/scripts/doxygen.sty @@ -0,0 +1,695 @@ +% stylesheet for doxygen 1.10.0 +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +%%\RequirePackage{array} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{calc} +\RequirePackage{float} +%%\RequirePackage{ifthen} %% moved to refman.tex due to workaround for LaTex 2019 version and unmaintained tabu package +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable_doxygen} +\RequirePackage{tabu_doxygen} +\RequirePackage{fancyvrb} +\RequirePackage{tabularx} +\RequirePackage{multicol} +\RequirePackage{multirow} +\RequirePackage{hanging} +\RequirePackage{ifpdf} +\RequirePackage{adjustbox} +\RequirePackage{amssymb} +\RequirePackage{stackengine} +\RequirePackage{enumitem} +\RequirePackage{alphalph} +\RequirePackage[normalem]{ulem} % for strikeout, but don't modify emphasis + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyHorRuler}[1]{% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{#1=0}% + {% + \hrule% + }% + {% + \hrulefilll% + }% +} +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + %\setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% + }{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
 ... 
+\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% + }{% + \end{alltt}% + \normalsize% +} +% Necessary for redefining not defined characters, i.e. "Replacement Character" in tex output. +\newlength{\CodeWidthChar} +\newlength{\CodeHeightChar} +\settowidth{\CodeWidthChar}{?} +\settoheight{\CodeHeightChar}{?} +% Necessary for hanging indent +\newlength{\DoxyCodeWidth} + +\newcommand\DoxyCodeLine[1]{ + \ifthenelse{\equal{\detokenize{#1}}{}} + { + \vspace*{\baselineskip} + } + { + \hangpara{\DoxyCodeWidth}{1}{#1}\par + } +} + +\newcommand\NiceSpace{% + \discretionary{}{\kern\fontdimen2\font}{\kern\fontdimen2\font}% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}[1]{% + \par% + \scriptsize% + \normalfont\ttfamily% + \rightskip0pt plus 1fil% + \settowidth{\DoxyCodeWidth}{000000}% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% + \setlength{\parskip}{0ex plus 0ex minus 0ex}% + \ifthenelse{\equal{#1}{0}} + { + {\lccode`~32 \lowercase{\global\let~}\NiceSpace}\obeyspaces% + } + { + {\lccode`~32 \lowercase{\global\let~}}\obeyspaces% + } + +}{% + \normalfont% + \normalsize% + \settowidth{\CodeWidthChar}{?}% + \settoheight{\CodeHeightChar}{?}% +} + +% Redefining not defined characters, i.e. "Replacement Character" in tex output. +\def\ucr{\adjustbox{width=\CodeWidthChar,height=\CodeHeightChar}{\stackinset{c}{}{c}{-.2pt}{% + \textcolor{white}{\sffamily\bfseries\small ?}}{% + \rotatebox{45}{$\blacksquare$}}}} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}[1]{% + \DoxyCode{#1}% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \par% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
    ...
) +\setlistdepth{12} +\newlist{DoxyEnumerate}{enumerate}{12} +\setlist[DoxyEnumerate,1]{label=\arabic*.} +\setlist[DoxyEnumerate,2]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,3]{label=\roman*.} +\setlist[DoxyEnumerate,4]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,5]{label=\arabic*.} +\setlist[DoxyEnumerate,6]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,7]{label=\roman*.} +\setlist[DoxyEnumerate,8]{label=\enumAlphAlphcnt*.} +\setlist[DoxyEnumerate,9]{label=\arabic*.} +\setlist[DoxyEnumerate,10]{label=(\enumalphalphcnt*)} +\setlist[DoxyEnumerate,11]{label=\roman*.} +\setlist[DoxyEnumerate,12]{label=\enumAlphAlphcnt*.} + +% Used by bullet lists (using '-', @li, @arg, or
    ...
) +\setlistdepth{12} +\newlist{DoxyItemize}{itemize}{12} +\setlist[DoxyItemize]{label=\textperiodcentered} + +\setlist[DoxyItemize,1]{label=\textbullet} +\setlist[DoxyItemize,2]{label=\normalfont\bfseries \textendash} +\setlist[DoxyItemize,3]{label=\textasteriskcentered} +\setlist[DoxyItemize,4]{label=\textperiodcentered} + +% Used by description lists (using
...
) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \centering% + }{% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% + }{% + \end{center}% +} + +% Used by @image +% (only if inline is specified) +\newenvironment{DoxyInlineImage}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{DoxyDesc}{#1}% + }{% + \end{DoxyDesc}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% +\tabulinesep=1mm% +\par% +\ifthenelse{\equal{#1}{}}% +{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description +{\ifthenelse{\equal{#1}{1}}% +{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc +{\begin{longtabu*}spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% + }{% +\end{longtabu*}% +\vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% + }{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% + }{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% + }{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% + }{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu*}spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% + }{% + \end{longtabu*}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% + }{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% + }{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% + }{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% + }{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } + }{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm + \begin{longtabu*}spread 0pt [c]{*#1{|X[-1]}|}}% + {\end{longtabu*}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu}spread 0pt [l]{*#1{|X[-1]}|}}% + {\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% + }{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned on +\newcommand{\doxylink}[2]{% + \mbox{\hyperlink{#1}{#2}}% +} + +% Used when hyperlinks are turned on +% Third argument is the SectionType, see the doxygen internal +% documentation for the values (relevant: Page ... Subsubsection). +\newcommand{\doxysectlink}[3]{% + \mbox{\hyperlink{#1}{#2}}% +} +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used when hyperlinks are turned off +% Fourth argument is the SectionType, see the doxygen internal +% documentation for the values (relevant: Page ... Subsubsection). +\newcommand{\doxysectref}[4]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{xmlcdata}{rgb}{0.0,0.0,0.0} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% possibility to have sections etc. be within the margins +% unfortunately had to copy part of book.cls and add \raggedright +\makeatletter +\newcounter{subsubsubsection}[subsubsection] +\newcounter{subsubsubsubsection}[subsubsubsection] +\newcounter{subsubsubsubsubsection}[subsubsubsubsection] +\newcounter{subsubsubsubsubsubsection}[subsubsubsubsubsection] +\renewcommand{\thesubsubsubsection}{\thesubsubsection.\arabic{subsubsubsection}} +\renewcommand{\thesubsubsubsubsection}{\thesubsubsubsection.\arabic{subsubsubsubsection}} +\renewcommand{\thesubsubsubsubsubsection}{\thesubsubsubsubsection.\arabic{subsubsubsubsubsection}} +\renewcommand{\thesubsubsubsubsubsubsection}{\thesubsubsubsubsubsection.\arabic{subsubsubsubsubsubsection}} +\newcommand{\subsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsubsectionmark}[1]{} +\newcommand{\subsubsubsubsubsubsectionmark}[1]{} +\def\toclevel@subsubsubsection{4} +\def\toclevel@subsubsubsubsection{5} +\def\toclevel@subsubsubsubsubsection{6} +\def\toclevel@subsubsubsubsubsubsection{7} +\def\toclevel@paragraph{8} +\def\toclevel@subparagraph{9} + +\newcommand\doxysection{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\raggedright\normalfont\Large\bfseries}} +\newcommand\doxysubsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\large\bfseries}} +\newcommand\doxysubsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsection{\@startsection{subsubsubsection}{4}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsection{\@startsection{subsubsubsubsection}{5}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsubsection{\@startsection{subsubsubsubsubsection}{6}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubsubsubsubsubsubsection{\@startsection{subsubsubsubsubsubsection}{7}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxyparagraph{\@startsection{paragraph}{8}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} +\newcommand\doxysubparagraph{\@startsection{subparagraph}{9}{\parindent}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\raggedright\normalfont\normalsize\bfseries}} + +\newcommand\l@subsubsubsection{\@dottedtocline{4}{6.1em}{7.8em}} +\newcommand\l@subsubsubsubsection{\@dottedtocline{5}{6.1em}{9.4em}} +\newcommand\l@subsubsubsubsubsection{\@dottedtocline{6}{6.1em}{11em}} +\newcommand\l@subsubsubsubsubsubsection{\@dottedtocline{7}{6.1em}{12.6em}} +\renewcommand\l@paragraph{\@dottedtocline{8}{6.1em}{14.2em}} +\renewcommand\l@subparagraph{\@dottedtocline{9}{6.1em}{15.8em}} +\makeatother +% the sectsty doesn't look to be maintained but gives, in our case, some warning like: +% LaTeX Warning: Command \underline has changed. +% Check if current package is valid. +% unfortunately had to copy the relevant part +\newcommand*{\doxypartfont} [1] +{\gdef\SS@partnumberfont{\SS@sectid{0}\SS@nopart\SS@makeulinepartchap#1} + \gdef\SS@parttitlefont{\SS@sectid{0}\SS@titlepart\SS@makeulinepartchap#1}} +\newcommand*{\doxychapterfont} [1] +{\gdef\SS@chapnumfont{\SS@sectid{1}\SS@nopart\SS@makeulinepartchap#1} + \gdef\SS@chaptitlefont{\SS@sectid{1}\SS@titlepart\SS@makeulinepartchap#1}} +\newcommand*{\doxysectionfont} [1] +{\gdef\SS@sectfont{\SS@sectid{2}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubsectionfont} [1] +{\gdef\SS@subsectfont{\SS@sectid{3}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubsubsectionfont} [1] +{\gdef\SS@subsubsectfont{\SS@sectid{4}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxyparagraphfont} [1] +{\gdef\SS@parafont{\SS@sectid{5}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxysubparagraphfont} [1] +{\gdef\SS@subparafont{\SS@sectid{6}\SS@rr\SS@makeulinesect#1}} +\newcommand*{\doxyminisecfont} [1] +{\gdef\SS@minisecfont{\SS@sectid{7}\SS@rr\SS@makeulinepartchap#1}} +\newcommand*{\doxyallsectionsfont} [1] {\doxypartfont{#1}% + \doxychapterfont{#1}% + \doxysectionfont{#1}% + \doxysubsectionfont{#1}% + \doxysubsubsectionfont{#1}% + \doxyparagraphfont{#1}% + \doxysubparagraphfont{#1}% + \doxyminisecfont{#1}}% +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% + \H@refstepcounter{figure}% + \@dblarg{\@caption{figure}}} +\makeatother + +% Define alpha enumarative names for counters > 26 +\makeatletter +\def\enumalphalphcnt#1{\expandafter\@enumalphalphcnt\csname c@#1\endcsname} +\def\@enumalphalphcnt#1{\alphalph{#1}} +\def\enumAlphAlphcnt#1{\expandafter\@enumAlphAlphcnt\csname c@#1\endcsname} +\def\@enumAlphAlphcnt#1{\AlphAlph{#1}} +\makeatother +\AddEnumerateCounter{\enumalphalphcnt}{\@enumalphalphcnt}{aa} +\AddEnumerateCounter{\enumAlphAlphcnt}{\@enumAlphAlphcnt}{AA} diff --git a/src/Application.h b/src/Application.h index e1bdd0d..620ef22 100644 --- a/src/Application.h +++ b/src/Application.h @@ -52,6 +52,7 @@ class Application void Stop(); /// @brief Registers a custom action for use in REAPER + /// @return SERVICE_SUCCESS if the operation completed successfully, SERVICE_FAILURE otherwise template ServiceStatus RegisterCustomAction() const; /// @brief Remove a custom action from REAPER diff --git a/src/ChapterTag.h b/src/ChapterTag.h index b61689e..2d0ff94 100644 --- a/src/ChapterTag.h +++ b/src/ChapterTag.h @@ -39,44 +39,56 @@ class ChapterTag ChapterTag() : position_(Globals::INVALID_MARKER_POSITION) {} /// @brief The constructor initializes a new ChapterTag instance. + /// @param position The starting position of the chapter. + /// @param title The title of the chapter. ChapterTag(const double position, const UnicodeString& title) : position_(position), title_(title) {} /// @brief The constructor initializes a new ChapterTag instance. + /// @param position The starting position of the chapter. + /// @param title The title of the chapter. + /// @param image The file path of the chapter image. + /// @param url The URL of the chapter reference. ChapterTag(const double position, const UnicodeString& title, const UnicodeString& image, const UnicodeString& url) : position_(position), title_(title), image_(image), url_(url) {} /// @brief Returns the starting position of the chapter + /// @return The starting position of the chapter double Position() const { return position_; } /// @brief Returns the title of the chapter + /// @return The title of the chapter const UnicodeString& Title() const { return title_; } /// @brief Returns the file path of the chapter image + /// @return The file path of the chapter image const UnicodeString& Image() const { return image_; } /// @brief Sets the file path of the chapter image + /// @param image The file path of the chapter image void SetImage(const UnicodeString& image) { image_ = image; } /// @brief Returns the URL of the chapter reference + /// @return The URL of the chapter reference const UnicodeString& Url() const { return url_; } /// @brief Sets the URL of the chapter reference + /// @param url The URL of the chapter reference void SetUrl(const UnicodeString& url) { url_ = url; diff --git a/src/FileManager.h b/src/FileManager.h index 2293cac..678a694 100644 --- a/src/FileManager.h +++ b/src/FileManager.h @@ -96,6 +96,7 @@ class FileManager PNG, /// @brief The file type is unknown. UNKNOWN_FILE_TYPE, + /// @brief The file type is not specified. MAX_FILE_TYPE = UNKNOWN_FILE_TYPE }; diff --git a/src/Picture.h b/src/Picture.h index 60c534d..46a98fc 100644 --- a/src/Picture.h +++ b/src/Picture.h @@ -40,12 +40,11 @@ class Picture { /// @brief The picture format is JPEG. JPEG, - /// @brief The picture format is PNG. PNG, - /// @brief The picture format is unknown. UNKNOWN_PICTURE, + /// @brief The picture format is unsupported. MAX_FORMAT = UNKNOWN_PICTURE };