From 14fb981a3dd44332fdfd75c639df6ec995565ca6 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Thu, 5 Jun 2014 09:35:26 +0000 Subject: [PATCH] configured Doxygen for beatiful docs ;-) git-svn-id: https://zerberus.eonerc.rwth-aachen.de:8443/svn/s2ss/trunk@50 8ec27952-4edc-4aab-86aa-e87bb2611832 --- doc/Doxyfile => Doxyfile | 58 +++++------ doc/Makefile | 15 --- doc/header.html | 63 ++++++++++++ doc/layout.xml | 192 +++++++++++++++++++++++++++++++++++ doc/pictures/eonerc_logo.png | Bin 0 -> 9685 bytes doc/style.css | 7 ++ 6 files changed, 291 insertions(+), 44 deletions(-) rename doc/Doxyfile => Doxyfile (99%) delete mode 100644 doc/Makefile create mode 100644 doc/header.html create mode 100644 doc/layout.xml create mode 100644 doc/pictures/eonerc_logo.png create mode 100644 doc/style.css diff --git a/doc/Doxyfile b/Doxyfile similarity index 99% rename from doc/Doxyfile rename to Doxyfile index 0a0380541..a4f0ac41c 100644 --- a/doc/Doxyfile +++ b/Doxyfile @@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8 # title of most generated pages and in a few other places. # The default value is: My Project. -PROJECT_NAME = "Simulator2Simulator Server" +PROJECT_NAME = "Simulator2Simulator Server (S2SS)" # The PROJECT_NUMBER tag can be used to enter a project or revision number. This # could be handy for archiving the generated documentation or if some version @@ -44,21 +44,21 @@ PROJECT_NUMBER = # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "connecting realtime powergrid simulators via IP/UDP" +PROJECT_BRIEF = "Connecting realtime powergrid simulators via IP/UDP" # With the PROJECT_LOGO tag one can specify an logo or icon that is included in # the documentation. The maximum height of the logo should not exceed 55 pixels # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. -PROJECT_LOGO = +PROJECT_LOGO = doc/pictures/eonerc_logo.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = +OUTPUT_DIRECTORY = doc/ # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -169,7 +169,7 @@ SHORT_NAMES = NO # description.) # The default value is: NO. -JAVADOC_AUTOBRIEF = NO +JAVADOC_AUTOBRIEF = YES # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first # line (until the first dot) of a Qt-style comment as the brief description. If @@ -661,7 +661,7 @@ FILE_VERSION_FILTER = # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. -LAYOUT_FILE = +LAYOUT_FILE = doc/layout.xml # The CITE_BIB_FILES tag can be used to specify one or more bib files containing # the reference definitions. This must be a list of .bib files. The .bib @@ -743,7 +743,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = ../src ../include +INPUT = # 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 @@ -769,7 +769,7 @@ FILE_PATTERNS = # be searched for input files as well. # The default value is: NO. -RECURSIVE = NO +RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a @@ -811,7 +811,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = +EXAMPLE_PATH = etc/ # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -831,7 +831,7 @@ EXAMPLE_RECURSIVE = NO # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = +IMAGE_PATH = doc/figures/ # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -879,7 +879,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = +USE_MDFILE_AS_MAINPAGE = Readme.md #--------------------------------------------------------------------------- # Configuration options related to source browsing @@ -892,7 +892,7 @@ USE_MDFILE_AS_MAINPAGE = # also VERBATIM_HEADERS is set to NO. # The default value is: NO. -SOURCE_BROWSER = NO +SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, # classes and enums directly into the documentation. @@ -911,7 +911,7 @@ STRIP_CODE_COMMENTS = YES # function 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. @@ -1035,7 +1035,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = +HTML_HEADER = doc/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard @@ -1068,7 +1068,7 @@ HTML_STYLESHEET = # see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = doc/style.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1089,7 +1089,7 @@ HTML_EXTRA_FILES = # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_HUE = 209 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use grayscales only. A @@ -1097,7 +1097,7 @@ HTML_COLORSTYLE_HUE = 220 # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_SAT = 88 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 @@ -1116,7 +1116,7 @@ HTML_COLORSTYLE_GAMMA = 80 # The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_TIMESTAMP = NO +HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the @@ -1124,7 +1124,7 @@ HTML_TIMESTAMP = NO # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_DYNAMIC_SECTIONS = NO +HTML_DYNAMIC_SECTIONS = YES # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand @@ -1352,7 +1352,7 @@ DISABLE_INDEX = NO # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_TREEVIEW = NO +GENERATE_TREEVIEW = YES # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that # doxygen will group on one line in the generated HTML documentation. @@ -1369,7 +1369,7 @@ ENUM_VALUES_PER_LINE = 4 # Minimum value: 0, maximum value: 1500, default value: 250. # This tag requires that the tag GENERATE_HTML is set to YES. -TREEVIEW_WIDTH = 250 +TREEVIEW_WIDTH = 280 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to # external symbols imported via tag files in a separate window. @@ -1895,7 +1895,7 @@ ENABLE_PREPROCESSING = YES # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -MACRO_EXPANSION = NO +MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then # the macro expansion is limited to the macros specified with the PREDEFINED and @@ -1903,7 +1903,7 @@ MACRO_EXPANSION = NO # The default value is: NO. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -EXPAND_ONLY_PREDEF = NO +EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES the includes files in the # INCLUDE_PATH will be searched if a #include is found. @@ -1935,7 +1935,7 @@ INCLUDE_FILE_PATTERNS = # recursively expanded use the := operator instead of the = operator. # This tag requires that the tag ENABLE_PREPROCESSING is set to YES. -PREDEFINED = +PREDEFINED = __attribute__(x)= # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this # tag can be used to specify a list of macro names that should be expanded. The @@ -2049,7 +2049,7 @@ HIDE_UNDOC_RELATIONS = YES # set to NO # The default value is: NO. -HAVE_DOT = NO +HAVE_DOT = YES # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed # to run in parallel. When set to 0 doxygen will base this on the number of @@ -2165,7 +2165,7 @@ INCLUDED_BY_GRAPH = YES # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALL_GRAPH = NO +CALL_GRAPH = YES # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller # dependency graph for every global function or class method. @@ -2176,7 +2176,7 @@ CALL_GRAPH = NO # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALLER_GRAPH = NO +CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical # hierarchy of all classes instead of a textual one. @@ -2215,7 +2215,7 @@ DOT_IMAGE_FORMAT = png # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -INTERACTIVE_SVG = NO +INTERACTIVE_SVG = YES # The DOT_PATH tag can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. @@ -2240,7 +2240,7 @@ MSCFILE_DIRS = # contain dia files that are included in the documentation (see the \diafile # command). -DIAFILE_DIRS = +DIAFILE_DIRS = doc/figures/ # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 70fa1266a..000000000 --- a/doc/Makefile +++ /dev/null @@ -1,15 +0,0 @@ - -.PHONY: all html latex clean - -all: latex html pdf - -latex: -html: - doxygen - -pdf: latex - $(MAKE) -C latex pdf - -clean: - $(RM) -r latex - $(RM) -r html diff --git a/doc/header.html b/doc/header.html new file mode 100644 index 000000000..988b8385f --- /dev/null +++ b/doc/header.html @@ -0,0 +1,63 @@ + + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + +
+
$projectname +  $projectnumber +
+
$projectbrief
+
+
$projectbrief
+
$searchbox
+
+ + diff --git a/doc/layout.xml b/doc/layout.xml new file mode 100644 index 000000000..aead553c7 --- /dev/null +++ b/doc/layout.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/pictures/eonerc_logo.png b/doc/pictures/eonerc_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..243c5a45fa094ef8bbf5ccce31882d73e6af2ae4 GIT binary patch literal 9685 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