From 7fc2d5da33a8e79fa6c2e45b55a9849b32c3e9de Mon Sep 17 00:00:00 2001 From: Laura Hermanns Date: Thu, 14 Sep 2023 21:17:20 -0400 Subject: [PATCH] Added Doxygen file and CI script. --- .github/workflows/ci_doxygen.yml | 30 +++ docu/Doxyfile | 303 +++++++++++++++++++++++++++++++ docu/LLGL_Logo-64px.png | Bin 0 -> 12023 bytes 3 files changed, 333 insertions(+) create mode 100644 .github/workflows/ci_doxygen.yml create mode 100644 docu/Doxyfile create mode 100644 docu/LLGL_Logo-64px.png diff --git a/.github/workflows/ci_doxygen.yml b/.github/workflows/ci_doxygen.yml new file mode 100644 index 0000000000..3ea7924e7e --- /dev/null +++ b/.github/workflows/ci_doxygen.yml @@ -0,0 +1,30 @@ +name: Doxygen + +on: + push: + branches: [ "release-0.03b" ] + +jobs: + build_docs: + runs-on: ubuntu-latest + + env: + VERSION: 0.03-Beta + + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Generate Docs + uses: mattnotmitt/doxygen-action@v1.9.5 + with: + working-directory: ${{ github.workspace }} + doxyfile-path: docu/Doxyfile + + - name: Upload Docs + uses: actions/upload-artifact@v3 + with: + name: LLGL-Docs-v${{ env.VERSION }} + path: | + ${{ github.workspace }}/doxygen + diff --git a/docu/Doxyfile b/docu/Doxyfile new file mode 100644 index 0000000000..969a27a7f4 --- /dev/null +++ b/docu/Doxyfile @@ -0,0 +1,303 @@ +# Doxyfile 1.9.7 + +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = LLGL +PROJECT_NUMBER = "0.03 Beta" +PROJECT_BRIEF = +PROJECT_LOGO = docu/LLGL_Logo.png +OUTPUT_DIRECTORY = doxygen +CREATE_SUBDIRS = NO +CREATE_SUBDIRS_LEVEL = 8 +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +JAVADOC_BANNER = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +PYTHON_DOCSTRING = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +OPTIMIZE_OUTPUT_SLICE = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +TOC_INCLUDE_HEADINGS = 5 +MARKDOWN_ID_STYLE = DOXYGEN +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 +NUM_PROC_THREADS = 1 +TIMESTAMP = NO +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_PRIV_VIRTUAL = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +RESOLVE_UNNAMED_PARAMS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +HIDE_COMPOUND_REFERENCE= NO +SHOW_HEADERFILE = YES +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_IF_INCOMPLETE_DOC = YES +WARN_NO_PARAMDOC = NO +WARN_IF_UNDOC_ENUM_VAL = NO +WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LINE_FORMAT = "at line $line of file $file" +WARN_LOGFILE = +INPUT = include\LLGL +INPUT_ENCODING = UTF-8 +INPUT_FILE_ENCODING = +FILE_PATTERNS = *.h \ + *.inl +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = LLGL::Utils::* +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = img +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +FORTRAN_COMMENT_AFTER = 72 +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_ADD_INC_PATHS = YES +CLANG_OPTIONS = +CLANG_DATABASE_PATH = +ALPHABETICAL_INDEX = YES +IGNORE_PREFIX = +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = +HTML_COLORSTYLE = AUTO_LIGHT +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_DYNAMIC_MENUS = YES +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_FEEDURL = +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +SITEMAP_URL = +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = NO +FULL_SIDEBAR = NO +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +OBFUSCATE_EMAILS = YES +HTML_FORMULA_FORMAT = png +FORMULA_FONTSIZE = 10 +FORMULA_MACROFILE = +USE_MATHJAX = YES +MATHJAX_VERSION = MathJax_2 +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +LATEX_MAKEINDEX_CMD = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_BIB_STYLE = plain +LATEX_EMOJI_DIRECTORY = +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +XML_NS_MEMB_FILE_SCOPE = NO +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +DOT_UML_DETAILS = NO +DOT_WRAP_THRESHOLD = 17 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DIR_GRAPH_MAX_DEPTH = 1 +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +DIA_PATH = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_CFG_FILE = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +MSCGEN_TOOL = +MSCFILE_DIRS = diff --git a/docu/LLGL_Logo-64px.png b/docu/LLGL_Logo-64px.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd316b9a1d5e5ec8accf147f27e60b5ed24be97 GIT binary patch literal 12023 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