aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/c/doxy-style.css (renamed from doc/doxy-style.css)239
-rw-r--r--doc/c/footer.html (renamed from doc/footer.html)0
-rw-r--r--doc/c/header.html (renamed from doc/header.html)0
-rw-r--r--doc/c/layout.xml (renamed from doc/layout.xml)58
-rw-r--r--doc/c/mainpage.md (renamed from doc/mainpage.md)0
-rw-r--r--doc/c/meson.build39
-rw-r--r--doc/c/reference.doxygen.in (renamed from doc/reference.doxygen.in)305
-rw-r--r--doc/index.html.in7
-rw-r--r--doc/ns/ext/meson.build68
-rw-r--r--doc/ns/extensions/meson.build49
-rw-r--r--doc/ns/meson.build81
-rw-r--r--doc/pygments.css61
-rw-r--r--doc/style/asciidoc.css (renamed from doc/asciidoc.css)0
-rw-r--r--doc/style/meson.build13
-rw-r--r--doc/style/pygments.css558
-rw-r--r--doc/style/style.css (renamed from doc/style.css)176
16 files changed, 1221 insertions, 433 deletions
diff --git a/doc/doxy-style.css b/doc/c/doxy-style.css
index 219da02..6f15ee4 100644
--- a/doc/doxy-style.css
+++ b/doc/c/doxy-style.css
@@ -1,6 +1,9 @@
-body {
+html {
background: #FFF;
color: #222;
+}
+
+body {
font-style: normal;
line-height: 1.6em;
margin-left: auto;
@@ -186,10 +189,6 @@ div.navtab {
margin-right: 15px;
}
-.contents a:visited {
- color: #344E00;
-}
-
a.qindexHL {
background-color: #9CAFD4;
color: #FFF;
@@ -209,6 +208,10 @@ dl.el {
font-family: "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace, fixed;
}
+.ttc {
+ display: none;
+}
+
pre.fragment {
border: 1px solid #C4C4C4;
background-color: #F9F9F9;
@@ -526,7 +529,6 @@ td.mlabels-right {
margin-top: 0;
padding-top: 0.25em;
font-weight: normal;
- color: #444;
font-size: 0.9em;
}
@@ -862,3 +864,228 @@ th {
span.icon {
display: none;
}
+
+/* Dark mode */
+@media (prefers-color-scheme: dark) {
+ html {
+ background: #222;
+ color: #DDD;
+ }
+
+ a {
+ color: #B4C342;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+ color: #DDD;
+ }
+
+ h1 a:link, h2 a:link, h3 a:link, h4 a:link, h5 a:link, h6 a:link {
+ color: #DDD;
+ }
+
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
+ color: #DDD;
+ }
+
+ #header {
+ border-bottom-color: #333;
+ }
+
+ #title {
+ color: #CCC;
+ }
+
+ #shortdesc {
+ color: #BBB;
+ }
+
+ code {
+ color: #DDD;
+ }
+
+ pre.fragment {
+ border: 1px solid #444;
+ background-color: #333;
+ }
+
+ div.ah {
+ background-color: #000;
+ color: #FFF;
+ border-color: #333;
+ }
+
+ .groupheader + p {
+ color: #BBB;
+ }
+
+ td.indexkey {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ }
+
+ td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ }
+
+ tr.memlist {
+ background-color: #EEF1F7;
+ }
+
+ span.keyword {
+ color: #586E75;
+ }
+
+ span.keywordtype {
+ color: #546E00;
+ }
+
+ span.keywordflow {
+ color: #586E75;
+ }
+
+ span.comment {
+ color: #6C71C4;
+ }
+
+ span.preprocessor {
+ color: #D33682;
+ }
+
+ span.stringliteral {
+ color: #CB4B16;
+ }
+
+ span.charliteral {
+ color: #CB4B16;
+ }
+
+ .dirtab {
+ border: 1px solid #A3B4D7;
+ }
+
+ th.dirtab {
+ background: #EBEFF6;
+ }
+
+ hr {
+ border-top: 1px solid #DDD;
+ }
+
+ #footer {
+ color: #888;
+ }
+
+ .mdescLeft,.mdescRight {
+ color: #555;
+ }
+
+ .memTemplParams {
+ color: #464646;
+ }
+
+ td.mlabels-right {
+ color: #B4C342;
+ }
+
+ .memtitle {
+ border-bottom: 1px solid #666;
+ }
+
+ .memtemplate {
+ color: #888;
+ }
+
+ .memnav {
+ background-color: #666;
+ border: 1px solid #B4C342;
+ }
+
+ .memproto {
+ border-bottom: 1px solid #666;
+ border-left: 1px solid #666;
+ color: #BBB;
+ }
+
+ .memdoc > p:first-child, .memdoc .textblock > p:first-child {
+ color: #BBB;
+ }
+
+ .memdoc > p:first-child, .memdoc .textblock > h3:first-child {
+ color: #BBB;
+ }
+
+ .paramtype {
+ color: #BBB;
+ }
+
+ .params .paramname {
+ color: #E8E8E8;
+ }
+
+ .fieldname {
+ color: #FFF;
+ }
+
+ .fieldtable tbody tr td {
+ border-top-color: #555;
+ border-bottom-color: #555;
+ }
+
+ td.fieldtype {
+ color: #BBB;
+ }
+
+ .arrow {
+ color: #666;
+ }
+
+ address {
+ color: #444;
+ }
+
+ table.doxtable td,table.doxtable th {
+ border-color: #DDD;
+ }
+
+ table.doxtable th {
+ background-color: #F3F3F3;
+ color: #000;
+ }
+
+ div.navpath {
+ color: #444;
+ }
+
+ #metabox {
+ color: #666;
+ }
+
+ .glow {
+ background-color: #00736F;
+ box-shadow: 0 0 10px #00736F;
+ }
+
+ span.lineno {
+ border-right: 2px solid #B4C342;
+ background-color: #383838;
+ }
+
+ span.lineno a {
+ background-color: #404040;
+ }
+
+ span.lineno a:hover {
+ background-color: #484848;
+ }
+
+}
+
+/* Hard black for dark mode on mobile (since it's likely to be an OLED screen) */
+@media only screen and (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) {
+ html {
+ background: #000;
+ color: #CCC;
+ }
+}
diff --git a/doc/footer.html b/doc/c/footer.html
index 0dc6919..0dc6919 100644
--- a/doc/footer.html
+++ b/doc/c/footer.html
diff --git a/doc/header.html b/doc/c/header.html
index 2e419e3..2e419e3 100644
--- a/doc/header.html
+++ b/doc/c/header.html
diff --git a/doc/layout.xml b/doc/c/layout.xml
index 1f63a76..938dbce 100644
--- a/doc/layout.xml
+++ b/doc/c/layout.xml
@@ -9,26 +9,12 @@
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
- <tab type="interfaces" visible="yes" title="">
- <tab type="interfacelist" visible="yes" title="" intro=""/>
- <tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
- <tab type="interfacehierarchy" visible="yes" title="" intro=""/>
- </tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
- <tab type="structs" visible="yes" title="">
- <tab type="structlist" visible="yes" title="" intro=""/>
- <tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
- </tab>
- <tab type="exceptions" visible="yes" title="">
- <tab type="exceptionlist" visible="yes" title="" intro=""/>
- <tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
- <tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
- </tab>
<tab type="files" visible="yes" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
@@ -47,7 +33,6 @@
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
- <interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
@@ -82,7 +67,6 @@
<typedefs title=""/>
<enums title=""/>
<services title=""/>
- <interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
@@ -95,37 +79,6 @@
<authorsection visible="yes"/>
</class>
- <!-- Layout definition for a namespace page -->
- <namespace>
- <briefdescription visible="yes"/>
- <detaileddescription title=""/>
- <memberdecl>
- <nestednamespaces visible="yes" title=""/>
- <constantgroups visible="yes" title=""/>
- <interfaces visible="yes" title=""/>
- <classes visible="yes" title=""/>
- <structs visible="yes" title=""/>
- <exceptions visible="yes" title=""/>
- <typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- <membergroups visible="yes"/>
- </memberdecl>
- <memberdef>
- <inlineclasses title=""/>
- <typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
- <enums title=""/>
- <functions title=""/>
- <variables title=""/>
- </memberdef>
- <authorsection visible="yes"/>
- </namespace>
-
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
@@ -135,16 +88,11 @@
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
- <interfaces visible="yes" title=""/>
<classes visible="yes" title=""/>
- <structs visible="yes" title=""/>
- <exceptions visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
@@ -154,8 +102,6 @@
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
@@ -176,8 +122,6 @@
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
@@ -196,8 +140,6 @@
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
- <sequences title=""/>
- <dictionaries title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
diff --git a/doc/mainpage.md b/doc/c/mainpage.md
index 561bc93..561bc93 100644
--- a/doc/mainpage.md
+++ b/doc/c/mainpage.md
diff --git a/doc/c/meson.build b/doc/c/meson.build
new file mode 100644
index 0000000..2642c3a
--- /dev/null
+++ b/doc/c/meson.build
@@ -0,0 +1,39 @@
+# Copyright 2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+if doxygen.found()
+ reference_doxygen_in = files('reference.doxygen.in')
+
+ config = configuration_data(
+ {
+ 'LV2_SRCDIR': lv2_source_root,
+ 'LV2_BUILDDIR': lv2_build_root,
+ 'LV2_VERSION': meson.project_version(),
+ },
+ )
+
+ reference_doxygen = configure_file(
+ configuration: config,
+ input: reference_doxygen_in,
+ output: 'reference.doxygen',
+ )
+
+ docs = custom_target(
+ 'html',
+ command: [doxygen, '@INPUT@'],
+ input: reference_doxygen,
+ install: true,
+ install_dir: lv2_docdir / 'c',
+ output: ['html', 'tags'],
+ )
+
+ # TODO: doc_deps is needed because Meson did not support using custom target
+ # outputs as dependencies until 0.60.0. When 0.60.0 is required, this can be
+ # cleaned up by removing doc_deps and using lv2_tags (not its path) as a
+ # command argument, which Meson will correctly make a dependency for.
+
+ lv2_tags = docs[1]
+ doc_deps = [docs]
+else
+ doc_deps = []
+endif
diff --git a/doc/reference.doxygen.in b/doc/c/reference.doxygen.in
index 5efb066..333fe1c 100644
--- a/doc/reference.doxygen.in
+++ b/doc/c/reference.doxygen.in
@@ -58,7 +58,7 @@ PROJECT_LOGO =
# 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 = @LV2_BUILDDIR@
# 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
@@ -179,16 +179,6 @@ SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
-# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
-# such as
-# /***************
-# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
-# Javadoc-style will behave just like regular comments and it will not be
-# interpreted by doxygen.
-# The default value is: NO.
-
-JAVADOC_BANNER = NO
-
# 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
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
@@ -209,14 +199,6 @@ QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
-# By default Python docstrings are displayed as preformatted text and doxygen's
-# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
-# doxygen's special commands can be used and the contents of the docstring
-# documentation blocks is shown as doxygen documentation.
-# The default value is: YES.
-
-PYTHON_DOCSTRING = YES
-
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
@@ -281,14 +263,6 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
-# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
-# sources only. Doxygen will then generate output that is more tailored for that
-# language. For instance, namespaces will be presented as modules, types will be
-# separated into more groups, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_SLICE = NO
-
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
@@ -442,19 +416,6 @@ TYPEDEF_HIDES_STRUCT = YES
LOOKUP_CACHE_SIZE = 0
-# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use
-# during processing. When set to 0 doxygen will based this on the number of
-# cores available in the system. You can set it explicitly to a value larger
-# than 0 to get more control over the balance between CPU load and processing
-# speed. At this moment only the input processing can be done using multiple
-# threads. Since this is still an experimental feature the default is set to 1,
-# which effectively disables parallel processing. Please report any issues you
-# encounter. Generating dot graphs in parallel is controlled by the
-# DOT_NUM_THREADS setting.
-# Minimum value: 0, maximum value: 32, default value: 1.
-
-NUM_PROC_THREADS = 1
-
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -475,12 +436,6 @@ EXTRACT_ALL = NO
EXTRACT_PRIVATE = YES
-# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
-# methods of a class will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIV_VIRTUAL = NO
-
# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
@@ -518,13 +473,6 @@ EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
-# If this flag is set to YES, the name of an unnamed parameter in a declaration
-# will be determined by the corresponding definition. By default unnamed
-# parameters remain unnamed in the output.
-# The default value is: YES.
-
-RESOLVE_UNNAMED_PARAMS = YES
-
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
@@ -592,12 +540,6 @@ HIDE_SCOPE_NAMES = NO
HIDE_COMPOUND_REFERENCE= NO
-# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
-# will show which file needs to be included to use the class.
-# The default value is: YES.
-
-SHOW_HEADERFILE = YES
-
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
@@ -762,7 +704,7 @@ FILE_VERSION_FILTER =
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
-LAYOUT_FILE = @LV2_SRCDIR@/doc/layout.xml
+LAYOUT_FILE = @LV2_SRCDIR@/doc/c/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
@@ -809,13 +751,6 @@ WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
-# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
-# function parameter documentation. If set to NO, doxygen will accept that some
-# parameters have no documentation without warning.
-# The default value is: YES.
-
-WARN_IF_INCOMPLETE_DOC = YES
-
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, doxygen will only warn about wrong parameter
@@ -864,35 +799,36 @@ WARN_LOGFILE =
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
-INPUT = @LV2_SRCDIR@/doc/mainpage.md \
- @LV2_SRCDIR@/lv2/atom/atom.h \
- @LV2_SRCDIR@/lv2/atom/forge.h \
- @LV2_SRCDIR@/lv2/atom/util.h \
- @LV2_SRCDIR@/lv2/buf-size/buf-size.h \
- @LV2_SRCDIR@/lv2/core/lv2.h \
- @LV2_SRCDIR@/lv2/data-access/data-access.h \
- @LV2_SRCDIR@/lv2/dynmanifest/dynmanifest.h \
- @LV2_SRCDIR@/lv2/event/event-helpers.h \
- @LV2_SRCDIR@/lv2/event/event.h \
- @LV2_SRCDIR@/lv2/instance-access/instance-access.h \
- @LV2_SRCDIR@/lv2/log/log.h \
- @LV2_SRCDIR@/lv2/log/logger.h \
- @LV2_SRCDIR@/lv2/midi/midi.h \
- @LV2_SRCDIR@/lv2/morph/morph.h \
- @LV2_SRCDIR@/lv2/options/options.h \
- @LV2_SRCDIR@/lv2/parameters/parameters.h \
- @LV2_SRCDIR@/lv2/patch/patch.h \
- @LV2_SRCDIR@/lv2/port-groups/port-groups.h \
- @LV2_SRCDIR@/lv2/port-props/port-props.h \
- @LV2_SRCDIR@/lv2/presets/presets.h \
- @LV2_SRCDIR@/lv2/resize-port/resize-port.h \
- @LV2_SRCDIR@/lv2/state/state.h \
- @LV2_SRCDIR@/lv2/time/time.h \
- @LV2_SRCDIR@/lv2/ui/ui.h \
- @LV2_SRCDIR@/lv2/units/units.h \
- @LV2_SRCDIR@/lv2/uri-map/uri-map.h \
- @LV2_SRCDIR@/lv2/urid/urid.h \
- @LV2_SRCDIR@/lv2/worker/worker.h
+INPUT = @LV2_SRCDIR@/doc/c/mainpage.md \
+ @LV2_SRCDIR@/include/lv2/atom/atom.h \
+ @LV2_SRCDIR@/include/lv2/atom/forge.h \
+ @LV2_SRCDIR@/include/lv2/atom/util.h \
+ @LV2_SRCDIR@/include/lv2/buf-size/buf-size.h \
+ @LV2_SRCDIR@/include/lv2/core/lv2.h \
+ @LV2_SRCDIR@/include/lv2/core/lv2_util.h \
+ @LV2_SRCDIR@/include/lv2/data-access/data-access.h \
+ @LV2_SRCDIR@/include/lv2/dynmanifest/dynmanifest.h \
+ @LV2_SRCDIR@/include/lv2/event/event-helpers.h \
+ @LV2_SRCDIR@/include/lv2/event/event.h \
+ @LV2_SRCDIR@/include/lv2/instance-access/instance-access.h \
+ @LV2_SRCDIR@/include/lv2/log/log.h \
+ @LV2_SRCDIR@/include/lv2/log/logger.h \
+ @LV2_SRCDIR@/include/lv2/midi/midi.h \
+ @LV2_SRCDIR@/include/lv2/morph/morph.h \
+ @LV2_SRCDIR@/include/lv2/options/options.h \
+ @LV2_SRCDIR@/include/lv2/parameters/parameters.h \
+ @LV2_SRCDIR@/include/lv2/patch/patch.h \
+ @LV2_SRCDIR@/include/lv2/port-groups/port-groups.h \
+ @LV2_SRCDIR@/include/lv2/port-props/port-props.h \
+ @LV2_SRCDIR@/include/lv2/presets/presets.h \
+ @LV2_SRCDIR@/include/lv2/resize-port/resize-port.h \
+ @LV2_SRCDIR@/include/lv2/state/state.h \
+ @LV2_SRCDIR@/include/lv2/time/time.h \
+ @LV2_SRCDIR@/include/lv2/ui/ui.h \
+ @LV2_SRCDIR@/include/lv2/units/units.h \
+ @LV2_SRCDIR@/include/lv2/uri-map/uri-map.h \
+ @LV2_SRCDIR@/include/lv2/urid/urid.h \
+ @LV2_SRCDIR@/include/lv2/worker/worker.h
# 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
@@ -1045,7 +981,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 = @LV2_SRCDIR@/doc/mainpage.md
+USE_MDFILE_AS_MAINPAGE = @LV2_SRCDIR@/doc/c/mainpage.md
#---------------------------------------------------------------------------
# Configuration options related to source browsing
@@ -1167,7 +1103,7 @@ GENERATE_HTML = YES
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_OUTPUT = html
+HTML_OUTPUT = @LV2_BUILDDIR@/doc/c/html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
@@ -1194,7 +1130,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 = @LV2_SRCDIR@/doc/header.html
+HTML_HEADER = @LV2_SRCDIR@/doc/c/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
@@ -1204,7 +1140,7 @@ HTML_HEADER = @LV2_SRCDIR@/doc/header.html
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_FOOTER = @LV2_SRCDIR@/doc/footer.html
+HTML_FOOTER = @LV2_SRCDIR@/doc/c/footer.html
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
@@ -1216,7 +1152,7 @@ HTML_FOOTER = @LV2_SRCDIR@/doc/footer.html
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
-HTML_STYLESHEET = @LV2_SRCDIR@/doc/doxy-style.css
+HTML_STYLESHEET = @LV2_SRCDIR@/doc/c/doxy-style.css
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
@@ -1271,15 +1207,6 @@ HTML_COLORSTYLE_SAT = 30
HTML_COLORSTYLE_GAMMA = 100
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
@@ -1335,13 +1262,6 @@ GENERATE_DOCSET = NO
DOCSET_FEEDNAME = "Doxygen generated docs"
-# This tag determines the URL of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDURL =
-
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
@@ -1541,18 +1461,6 @@ DISABLE_INDEX = NO
GENERATE_TREEVIEW = NO
-# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
-# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
-# area (value NO) or if it should extend to the full height of the window (value
-# YES). Setting this to YES gives a layout similar to
-# https://docs.readthedocs.io with more room for contents, but less room for the
-# project logo, title, and description. If either GENERATE_TREEVIEW or
-# DISABLE_INDEX is set to NO, this option has no effect.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FULL_SIDEBAR = NO
-
# 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.
#
@@ -1577,24 +1485,6 @@ TREEVIEW_WIDTH = 250
EXT_LINKS_IN_WINDOW = NO
-# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
-# addresses.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-OBFUSCATE_EMAILS = YES
-
-# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
-# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
-# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
-# the HTML output. These images will generally look nicer at scaled resolutions.
-# Possible values are: png (the default) and svg (looks nicer but requires the
-# pdf2svg or inkscape tool).
-# The default value is: png.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FORMULA_FORMAT = png
-
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# doxygen run you need to manually remove any form_*.png images from the HTML
@@ -1604,23 +1494,6 @@ HTML_FORMULA_FORMAT = png
FORMULA_FONTSIZE = 10
-# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
-# to create new LaTeX commands to be used in formulas as building blocks. See
-# the section "Including formulas" for details.
-
-FORMULA_MACROFILE =
-
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
@@ -1632,17 +1505,6 @@ FORMULA_MACROFILE =
USE_MATHJAX = NO
-# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
-# Note that the different versions of MathJax have different requirements with
-# regards to the different settings, so it is possible that also other MathJax
-# settings have to be changed when switching between the different MathJax
-# versions.
-# Possible values are: MathJax_2 and MathJax_3.
-# The default value is: MathJax_2.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_VERSION = MathJax_2
-
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
@@ -1822,16 +1684,6 @@ LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
-# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
-# generate index for LaTeX. In case there is no backslash (\) as first character
-# it will be automatically added in the LaTeX code.
-# Note: This tag is used in the generated output file (.tex).
-# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
-# The default value is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_MAKEINDEX_CMD = makeindex
-
# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
@@ -1951,22 +1803,6 @@ LATEX_HIDE_INDICES = NO
LATEX_BIB_STYLE = plain
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP = NO
-
-# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
-# path from which the emoji images will be read. If a relative path is entered,
-# it will be relative to the LATEX_OUTPUT directory. If left blank the
-# LATEX_OUTPUT directory will be used.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EMOJI_DIRECTORY =
-
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
@@ -2094,13 +1930,6 @@ XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
-# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
-# namespace members in file scope as well, matching the HTML output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_NS_MEMB_FILE_SCOPE = NO
-
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
@@ -2270,7 +2099,7 @@ TAGFILES =
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
-GENERATE_TAGFILE = tags
+GENERATE_TAGFILE = @LV2_BUILDDIR@/doc/c/tags
# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
# the class index. If set to NO, only the inherited external classes will be
@@ -2329,23 +2158,6 @@ HAVE_DOT = NO
DOT_NUM_THREADS = 0
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME =
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
# By default doxygen will tell dot to use the default font as specified with
# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
# the path where dot can find it using this tag.
@@ -2401,28 +2213,6 @@ UML_LOOK = NO
UML_LIMIT_NUM_FIELDS = 10
-# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
-# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
-# tag is set to YES, doxygen will add type and arguments for attributes and
-# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
-# will not generate fields with class member information in the UML graphs. The
-# class diagrams will look similar to the default class diagrams but using UML
-# notation for the relationships.
-# Possible values are: NO, YES and NONE.
-# The default value is: NO.
-# This tag requires that the tag UML_LOOK is set to YES.
-
-DOT_UML_DETAILS = NO
-
-# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
-# to display on a single line. If the actual line length exceeds this threshold
-# significantly it will wrapped across multiple lines. Some heuristics are apply
-# to avoid ugly line breaks.
-# Minimum value: 0, maximum value: 1000, default value: 17.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_WRAP_THRESHOLD = 17
-
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
@@ -2489,13 +2279,6 @@ GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = NO
-# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
-# of child directories generated in directory dependency graphs by dot.
-# Minimum value: 1, maximum value: 25, default value: 1.
-# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
-
-DIR_GRAPH_MAX_DEPTH = 1
-
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
@@ -2590,18 +2373,6 @@ DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
diff --git a/doc/index.html.in b/doc/index.html.in
index 875ad39..3be99f4 100644
--- a/doc/index.html.in
+++ b/doc/index.html.in
@@ -6,7 +6,7 @@
<meta http-equiv="Content-Type"
content="application/xhtml+xml;charset=utf-8" />
<link rel="stylesheet" type="text/css"
- href="../aux/style.css" />
+ href="../style/style.css" />
</head>
<body>
@@ -19,7 +19,6 @@
<div id="metabox">
<table id="meta">
<tr><th>Version</th><td>@LV2_VERSION@</td></tr>
- <tr><th>Date</th><td>@DATE@</td></tr>
<tr><th>Discuss</th>
<td>
<a href="mailto:devel@lists.lv2plug.in">devel@lists.lv2plug.in</a>
@@ -62,12 +61,12 @@
</div>
<div>
Valid
- <a about="" rel="dct:conformsTo" resource="http://www.w3.org/TR/rdfa-syntax"
+ <a about="" rel="dcterms:conformsTo" resource="http://www.w3.org/TR/rdfa-syntax"
href="http://validator.w3.org/check?uri=referer">
XHTML+RDFa
</a>
and
- <a about="" rel="dct:conformsTo" resource="http://www.w3.org/TR/CSS2"
+ <a about="" rel="dcterms:conformsTo" resource="http://www.w3.org/TR/CSS2"
href="http://jigsaw.w3.org/css-validator/check/referer">
CSS
</a>
diff --git a/doc/ns/ext/meson.build b/doc/ns/ext/meson.build
new file mode 100644
index 0000000..58aa40d
--- /dev/null
+++ b/doc/ns/ext/meson.build
@@ -0,0 +1,68 @@
+# Copyright 2022-2025 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+config = configuration_data({'BASE': '/ns/ext'})
+
+spec_names = [
+ 'atom',
+ 'buf-size',
+ 'data-access',
+ 'dynmanifest',
+ 'event',
+ 'instance-access',
+ 'log',
+ 'midi',
+ 'morph',
+ 'options',
+ 'parameters',
+ 'patch',
+ 'port-groups',
+ 'port-props',
+ 'presets',
+ 'resize-port',
+ 'state',
+ 'time',
+ 'uri-map',
+ 'urid',
+ 'worker',
+]
+
+if build_docs
+ if get_option('online_docs')
+ htaccess = configure_file(
+ configuration: config,
+ input: files('..' / '..' / 'htaccess.in'),
+ install_dir: lv2_docdir / 'ns' / 'ext',
+ output: '.htaccess',
+ )
+ endif
+
+ foreach name : spec_names
+ spec_file = files(lv2_source_root / 'lv2' / name + '.lv2' / name + '.ttl')
+
+ custom_target(
+ name + '.html',
+ command: lv2specgen_command_prefix + [
+ '--docdir=../../c/html',
+ '--style-uri=../../style/style.css',
+ ] + [
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+ depends: doc_deps,
+ input: spec_file,
+ install: true,
+ install_dir: lv2_docdir / 'ns' / 'ext',
+ output: name + '.html',
+ )
+
+ if get_option('online_docs')
+ configure_file(
+ copy: true,
+ input: spec_file,
+ install_dir: lv2_docdir / 'ns' / 'ext',
+ output: '@PLAINNAME@',
+ )
+ endif
+ endforeach
+endif
diff --git a/doc/ns/extensions/meson.build b/doc/ns/extensions/meson.build
new file mode 100644
index 0000000..3bf66b4
--- /dev/null
+++ b/doc/ns/extensions/meson.build
@@ -0,0 +1,49 @@
+# Copyright 2022-2025 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+config = configuration_data({'BASE': '/ns/extensions'})
+
+spec_names = [
+ 'ui',
+ 'units',
+]
+
+if build_docs
+ if get_option('online_docs')
+ htaccess = configure_file(
+ configuration: config,
+ input: files('..' / '..' / 'htaccess.in'),
+ install_dir: lv2_docdir / 'ns' / 'extensions',
+ output: '.htaccess',
+ )
+ endif
+
+ foreach name : spec_names
+ spec_file = files(lv2_source_root / 'lv2' / name + '.lv2' / name + '.ttl')
+
+ custom_target(
+ name + '.html',
+ command: lv2specgen_command_prefix + [
+ '--docdir=../../c/html',
+ '--style-uri=../../style/style.css',
+ ] + [
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+ depends: doc_deps,
+ input: spec_file,
+ install: true,
+ install_dir: lv2_docdir / 'ns' / 'extensions',
+ output: name + '.html',
+ )
+
+ if get_option('online_docs')
+ configure_file(
+ copy: true,
+ input: spec_file,
+ install_dir: lv2_docdir / 'ns' / 'ext',
+ output: '@PLAINNAME@',
+ )
+ endif
+ endforeach
+endif
diff --git a/doc/ns/meson.build b/doc/ns/meson.build
new file mode 100644
index 0000000..3189cc2
--- /dev/null
+++ b/doc/ns/meson.build
@@ -0,0 +1,81 @@
+# Copyright 2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+config = configuration_data({'BASE': '/ns'})
+
+######################
+# Core Documentation #
+######################
+
+if build_docs
+ spec_file = files(lv2_source_root / 'lv2' / 'core.lv2' / 'lv2core.ttl')
+
+ lv2_core_docs = custom_target(
+ 'lv2core.html',
+ command: lv2specgen_command_prefix + [
+ '--docdir=../c/html',
+ '--style-uri=../style/style.css',
+ ] + [
+ '@INPUT@',
+ '@OUTPUT@',
+ ],
+ input: spec_file,
+ output: 'lv2core.html',
+ depends: doc_deps,
+ install: true,
+ install_dir: lv2_docdir / 'ns',
+ )
+
+ if get_option('online_docs')
+ htaccess = configure_file(
+ configuration: config,
+ input: files('..' / 'htaccess.in'),
+ install_dir: lv2_docdir / 'ns',
+ output: '.htaccess',
+ )
+
+ configure_file(
+ copy: true,
+ input: spec_file,
+ install_dir: lv2_docdir / 'ns' / 'ext',
+ output: '@PLAINNAME@',
+ )
+ endif
+endif
+
+###########################
+# Extension Documentation #
+###########################
+
+subdir('ext')
+subdir('extensions')
+
+#########
+# Index #
+#########
+
+lv2_build_index = find_program(
+ lv2_source_root / 'scripts' / 'lv2_build_index.py',
+)
+
+lv2_build_index_command = [
+ lv2_build_index,
+ ['--lv2-version', meson.project_version()],
+ ['--lv2-source-root', lv2_source_root],
+]
+
+if get_option('online_docs')
+ lv2_build_index_command += [
+ '--online',
+ ]
+endif
+
+index = custom_target(
+ 'index.html',
+ capture: true,
+ command: lv2_build_index_command + ['@INPUT@'],
+ input: spec_files,
+ install: true,
+ install_dir: lv2_docdir / 'ns',
+ output: 'index.html',
+)
diff --git a/doc/pygments.css b/doc/pygments.css
deleted file mode 100644
index 4fb3387..0000000
--- a/doc/pygments.css
+++ /dev/null
@@ -1,61 +0,0 @@
-.c { color: #6C71C4; font-style: italic } /* Comment */
-.err { border: 1px solid #DC322F } /* Error */
-.k { color: #888888 } /* Keyword */
-.o { color: #839496 } /* Operator */
-.cm { color: #6C71C4; font-style: italic } /* Comment.Multiline */
-.cp { color: #D33682 } /* Comment.Preproc */
-.c1 { color: #6C71C4; font-style: italic } /* Comment.Single */
-.cs { color: #6C71C4; font-style: italic } /* Comment.Special */
-.gd { color: #A00000 } /* Generic.Deleted */
-.ge { font-style: italic } /* Generic.Emph */
-.gr { color: #DC322F } /* Generic.Error */
-.gh { color: #6C71C4; font-weight: bold } /* Generic.Heading */
-.gi { color: #859900 } /* Generic.Inserted */
-.go { color: #808080 } /* Generic.Output */
-.gp { color: #268BD2; font-weight: bold } /* Generic.Prompt */
-.gs { font-weight: bold } /* Generic.Strong */
-.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.gt { color: #0040D0 } /* Generic.Traceback */
-.kc { color: #586E75; font-weight: bold } /* Keyword.Constant */
-.kd { color: #586E75; font-weight: bold } /* Keyword.Declaration */
-.kn { color: #586E75; font-weight: bold } /* Keyword.Namespace */
-.kp { color: #586E75 } /* Keyword.Pseudo */
-.kr { color: #586E75; font-weight: bold } /* Keyword.Reserved */
-.kt { color: #546E00 } /* Keyword.Type */
-.m { color: #666666 } /* Literal.Number */
-.s { color: #CB4B16 } /* Literal.String */
-.na { color: #7D9029 } /* Name.Attribute */
-.nb { color: #008000 } /* Name.Builtin */
-.nc { color: #000000; } /* Name.Class */
-.no { color: #880000 } /* Name.Constant */
-.nd { color: #AA22FF } /* Name.Decorator */
-.ni { color: #999999; font-weight: bold } /* Name.Entity */
-.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
-.nf { color: #000000; } /* Name.Function */
-.nl { color: #A0A000 } /* Name.Label */
-.nn { color: #555555 } /* Name.Namespace */
-.nt { color: #223322; } /* Name.Tag */
-.nv { color: #222222 } /* Name.Variable */
-.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
-.w { color: #bbbbbb } /* Text.Whitespace */
-.mf { color: #000000 } /* Literal.Number.Float */
-.mh { color: #000000 } /* Literal.Number.Hex */
-.mi { color: #000000 } /* Literal.Number.Integer */
-.mo { color: #000000 } /* Literal.Number.Oct */
-.sb { color: #CB4B16 } /* Literal.String.Backtick */
-.sc { color: #CB4B16 } /* Literal.String.Char */
-.sd { color: #CB4B16; font-style: italic } /* Literal.String.Doc */
-.s2 { color: #CB4B16 } /* Literal.String.Double */
-.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
-.sh { color: #CB4B16 } /* Literal.String.Heredoc */
-.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
-.sx { color: #008000 } /* Literal.String.Other */
-.sr { color: #BB6688 } /* Literal.String.Regex */
-.s1 { color: #CB4B16 } /* Literal.String.Single */
-.ss { color: #00629D } /* Literal.String.Symbol */
-.bp { color: #008000 } /* Name.Builtin.Pseudo */
-.vc { color: #00629D } /* Name.Variable.Class */
-.vg { color: #00629D } /* Name.Variable.Global */
-.vi { color: #00629D } /* Name.Variable.Instance */
-.il { color: #666666 } /* Literal.Number.Integer.Long */
-.p { color: #888888 } /* Punctuation */
diff --git a/doc/asciidoc.css b/doc/style/asciidoc.css
index 2e64544..2e64544 100644
--- a/doc/asciidoc.css
+++ b/doc/style/asciidoc.css
diff --git a/doc/style/meson.build b/doc/style/meson.build
new file mode 100644
index 0000000..39e9242
--- /dev/null
+++ b/doc/style/meson.build
@@ -0,0 +1,13 @@
+# Copyright 2022 David Robillard <d@drobilla.net>
+# SPDX-License-Identifier: 0BSD OR ISC
+
+style_files = files('pygments.css', 'style.css')
+
+foreach file : style_files
+ configure_file(
+ copy: true,
+ input: file,
+ install_dir: lv2_docdir / 'style',
+ output: '@PLAINNAME@',
+ )
+endforeach
diff --git a/doc/style/pygments.css b/doc/style/pygments.css
new file mode 100644
index 0000000..2472b1a
--- /dev/null
+++ b/doc/style/pygments.css
@@ -0,0 +1,558 @@
+/* Light (default) theme */
+
+.n {
+ color: #222;
+}
+
+.c {
+ color: #3F4D91;
+ font-style: italic;
+}
+
+.err {
+ border: 1px solid #DC322F;
+}
+
+.k {
+ color: #586E75;
+}
+
+.o {
+ color: #586E75;
+}
+
+.cm {
+ color: #3F4D91;
+ font-style: italic;
+}
+
+.cp {
+ color: #586E75;
+}
+
+.cpf {
+ color: #93115C;
+}
+
+.c1 {
+ color: #3F4D91;
+ font-style: italic;
+}
+
+.cs {
+ color: #3F4D91;
+ font-style: italic;
+}
+
+.gd {
+ color: #990A1B;
+}
+
+.ge {
+ font-style: italic;
+}
+
+.gr {
+ color: #DC322F;
+}
+
+.gh {
+ color: #3F4D91;
+ font-weight: bold;
+}
+
+.gi {
+ color: #859900;
+}
+
+.go {
+ color: #666;
+}
+
+.gp {
+ color: #666;
+ font-weight: bold;
+}
+
+.gs {
+ font-weight: bold;
+}
+
+.gu {
+ color: #444;
+ font-weight: bold;
+}
+
+.gt {
+ color: #268BD2;
+}
+
+.kc {
+ color: #586E75;
+ font-weight: bold;
+}
+
+.kd {
+ color: #586E75;
+ font-weight: bold;
+}
+
+.kn {
+ color: #586E75;
+ font-weight: bold;
+}
+
+.kp {
+ color: #586E75;
+}
+
+.kr {
+ color: #586E75;
+ font-weight: bold;
+}
+
+.kt {
+ color: #586E75;
+}
+
+.m {
+ color: #666;
+}
+
+.s {
+ color: #93115C;
+}
+
+.na {
+ color: #444;
+}
+
+.nb {
+ color: #3F4D91;
+}
+
+.nc {
+ color: #000;
+}
+
+.no {
+ color: #880;
+}
+
+.nd {
+ color: #A2F;
+}
+
+.ni {
+ color: #666;
+ font-weight: bold;
+}
+
+.ne {
+ color: #D2413A;
+ font-weight: bold;
+}
+
+.nf {
+ color: #000;
+}
+
+.nl {
+ color: #546E00;
+}
+
+.nn {
+ color: #444;
+}
+
+.nt {
+ color: #444;
+}
+
+.nv {
+ color: #222;
+}
+
+.ow {
+ color: #3F4D91;
+}
+
+.w {
+ color: #BBB;
+}
+
+.mb {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.mf {
+ color: #93115C;
+}
+
+.mh {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.mi {
+ color: #93115C;
+}
+
+.mo {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.sb {
+ color: #93115C;
+}
+
+.sc {
+ color: #93115C;
+}
+
+.sd {
+ color: #3F4D91;
+ font-style: italic;
+}
+
+.s2 {
+ color: #93115C;
+}
+
+.se {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.sh {
+ color: #93115C;
+}
+
+.si {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.sx {
+ color: #93115C;
+}
+
+.sr {
+ color: #93115C;
+ font-weight: bold;
+}
+
+.s1 {
+ color: #93115C;
+}
+
+.ss {
+ color: #444;
+ font-weight: bold;
+}
+
+.bp {
+ color: #859900;
+}
+
+.vc {
+ color: #00629D;
+}
+
+.vg {
+ color: #00629D;
+}
+
+.vi {
+ color: #00629D;
+}
+
+.il {
+ color: #000;
+}
+
+.p {
+ color: #444;
+}
+
+/* Dark theme */
+@media (prefers-color-scheme: dark) {
+ .n {
+ color: #BBB;
+ }
+
+ .c {
+ color: #6C71C4;
+ font-style: italic;
+ }
+
+ .err {
+ border: 1px solid #FF6E64;
+ }
+
+ .k {
+ color: #93A1A1;
+ }
+
+ .o {
+ color: #93A1A1;
+ }
+
+ .cm {
+ color: #6C71C4;
+ font-style: italic;
+ }
+
+ .cp {
+ color: #93A1A1;
+ }
+
+ .cpf {
+ color: #D33682;
+ }
+
+ .c1 {
+ color: #6C71C4;
+ font-style: italic;
+ }
+
+ .cs {
+ color: #6C71C4;
+ font-style: italic;
+ }
+
+ .gd {
+ color: #DC322F;
+ }
+
+ .ge {
+ font-style: italic;
+ }
+
+ .gr {
+ color: #FF6E64;
+ }
+
+ .gh {
+ color: #6C71C4;
+ font-weight: bold;
+ }
+
+ .gi {
+ color: #859900;
+ }
+
+ .go {
+ color: #666;
+ }
+
+ .gp {
+ color: #666;
+ font-weight: bold;
+ }
+
+ .gs {
+ font-weight: bold;
+ }
+
+ .gu {
+ color: #BBB;
+ font-weight: bold;
+ }
+
+ .gt {
+ color: #69B7F0;
+ }
+
+ .kc {
+ color: #93A1A1;
+ font-weight: bold;
+ }
+
+ .kd {
+ color: #93A1A1;
+ font-weight: bold;
+ }
+
+ .kn {
+ color: #93A1A1;
+ font-weight: bold;
+ }
+
+ .kp {
+ color: #93A1A1;
+ }
+
+ .kr {
+ color: #93A1A1;
+ font-weight: bold;
+ }
+
+ .kt {
+ color: #93A1A1;
+ }
+
+ .m {
+ color: #999;
+ }
+
+ .s {
+ color: #D33682;
+ }
+
+ .na {
+ color: #BBB;
+ }
+
+ .nb {
+ color: #6C71C4;
+ }
+
+ .nc {
+ color: #FFF;
+ }
+
+ .no {
+ color: #880;
+ }
+
+ .nd {
+ color: #A2F;
+ }
+
+ .ni {
+ color: #999;
+ font-weight: bold;
+ }
+
+ .ne {
+ color: #D2413A;
+ font-weight: bold;
+ }
+
+ .nf {
+ color: #FFF;
+ }
+
+ .nl {
+ color: #546E00;
+ }
+
+ .nn {
+ color: #BBB;
+ }
+
+ .nt {
+ color: #BBB;
+ }
+
+ .nv {
+ color: #DDD;
+ }
+
+ .ow {
+ color: #6C71C4;
+ }
+
+ .w {
+ color: #BBB;
+ }
+
+ .mb {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .mf {
+ color: #D33682;
+ }
+
+ .mh {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .mi {
+ color: #D33682;
+ }
+
+ .mo {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .sb {
+ color: #D33682;
+ }
+
+ .sc {
+ color: #D33682;
+ }
+
+ .sd {
+ color: #6C71C4;
+ font-style: italic;
+ }
+
+ .s2 {
+ color: #D33682;
+ }
+
+ .se {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .sh {
+ color: #D33682;
+ }
+
+ .si {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .sx {
+ color: #D33682;
+ }
+
+ .sr {
+ color: #D33682;
+ font-weight: bold;
+ }
+
+ .s1 {
+ color: #D33682;
+ }
+
+ .ss {
+ color: #BBB;
+ font-weight: bold;
+ }
+
+ .bp {
+ color: #859900;
+ }
+
+ .vc {
+ color: #268BD2;
+ }
+
+ .vg {
+ color: #268BD2;
+ }
+
+ .vi {
+ color: #268BD2;
+ }
+
+ .il {
+ color: #FFF;
+ }
+
+ .p {
+ color: #BBB;
+ }
+}
diff --git a/doc/style.css b/doc/style/style.css
index cf32b28..fca399e 100644
--- a/doc/style.css
+++ b/doc/style/style.css
@@ -2,9 +2,12 @@
/* Generic page style */
-body {
+html {
background: #FFF;
color: #222;
+}
+
+body {
font-family: "DejaVu Sans", "SF Pro Text", Verdana, sans-serif;
font-style: normal;
line-height: 1.6em;
@@ -19,7 +22,7 @@ h1 {
font-size: 2.38em;
font-weight: 600;
line-height: 1.41em;
- margin: 0 0 0.25em 0;
+ margin: 0 0 0.25em;
}
h2 {
@@ -27,7 +30,7 @@ h2 {
font-size: 1.68em;
font-weight: 600;
line-height: 1.3em;
- margin: 1.25em 0 0.5em 0;
+ margin: 1.25em 0 0.5em;
}
h3 {
@@ -35,7 +38,7 @@ h3 {
font-size: 1.41em;
font-weight: 600;
line-height: 1.19em;
- margin: 1.25em 0 0.5em 0;
+ margin: 1.25em 0 0.5em;
}
h4 {
@@ -43,7 +46,7 @@ h4 {
font-size: 1.19em;
font-weight: 600;
line-height: 1.09em;
- margin: 1.25em 0 0.5em 0;
+ margin: 1.25em 0 0.5em;
}
h5, h6 {
@@ -51,7 +54,7 @@ h5, h6 {
font-size: 1em;
font-weight: 600;
line-height: 1em;
- margin: 1.25em 0 0.5em 0;
+ margin: 1.25em 0 0.5em;
}
a {
@@ -89,7 +92,7 @@ img {
}
p {
- margin: 0.5em 0 0.5em 0;
+ margin: 0.5em 0;
}
blockquote {
@@ -106,13 +109,13 @@ pre, code, kbd, samp {
}
ul, ol {
- margin: 0 0 0.5em 0;
+ margin: 0 0 0.5em;
padding-top: 0;
}
dt {
font-weight: 600;
- margin: 0.75em 0 0.125em 0;
+ margin: 0.75em 0 0.125em;
}
dt::after {
@@ -123,7 +126,7 @@ dt::after {
hr {
background-color: #EEE;
border: 0;
- color: gray;
+ color: #666;
height: 1px;
margin-bottom: 1.5ex;
margin-top: 1.5ex;
@@ -192,7 +195,7 @@ footer {
#meta tr, #meta th, #meta td {
border: 0;
font-weight: normal;
- padding: 0 0 0.125em 0;
+ padding: 0 0 0.125em;
background-color: transparent;
}
@@ -211,7 +214,7 @@ footer {
#shortdesc {
padding: 0;
- margin: 0 0 0.5em 0;
+ margin: 0 0 0.5em;
font-style: italic;
color: #666;
display: inline-block;
@@ -238,7 +241,7 @@ footer {
padding: 3px 10px 0 0;
position: absolute;
top: 63px;
- width: 93.900002%;
+ width: 93.9%;
z-index: 0;
}
@@ -416,17 +419,11 @@ input.formbutton {
padding: 0 0 0 12px;
}
-blockquote {
- border-left: 1px solid #CCC;
- margin-left: 1em;
- padding-left: 1em;
-}
-
#footer {
bottom: 0;
clear: both;
font-size: x-small;
- margin: 2em 0 0 0;
+ margin: 2em 0 0;
padding: 0;
color: #888;
}
@@ -449,8 +446,8 @@ blockquote {
@media print {
#topbar {
color: #000;
- margin: 0.25em auto 0.25em auto;
- padding: 0.25em 0.5em 0.5em 0.5em;
+ margin: 0.25em auto;
+ padding: 0.25em 0.5em 0.5em;
max-width: 60em;
position: relative;
}
@@ -470,7 +467,7 @@ blockquote {
@media screen {
#topbar {
- margin: 0.25em auto 0.25em auto;
+ margin: 0.25em auto;
padding: 0;
max-width: 60em;
position: relative;
@@ -479,7 +476,7 @@ blockquote {
#contentsbox {
color: #546E00;
font-size: small;
- margin: 0 0 1.5em 0;
+ margin: 0 0 1.5em;
}
#contents {
@@ -506,7 +503,7 @@ blockquote {
.section {
clear: right;
- padding: 0 0 1.5em 0;
+ padding: 0 0 1.5em;
}
.category {
@@ -581,12 +578,11 @@ table.index {
border-bottom-left-radius: 6px;
}
-
table.terminfo {
border-top: 0;
border-collapse: collapse;
margin: -1px 0 2em 2em;
- padding: 0.25em 0 0.25em 0;
+ padding: 0.25em 0;
float: right;
border-bottom: 1px solid #EEE;
border-left: 1px solid #EEE;
@@ -602,7 +598,7 @@ table.terminfo td {
.restriction {
border-style: hidden;
- margin: 0 0 0.5ex 0;
+ margin: 0 0 0.5ex;
padding: 0;
vertical-align: text-top;
}
@@ -659,15 +655,6 @@ dl {
padding: 0;
}
-hr {
- background-color: #EEE;
- border: 0;
- color: gray;
- height: 1px;
- margin-bottom: 1.5ex;
- margin-top: 1.5ex;
-}
-
div.head {
margin-bottom: 1em;
}
@@ -701,3 +688,118 @@ div.head table {
.highlight, .codehilite {
margin-left: 2em;
}
+
+/* Dark mode */
+@media (prefers-color-scheme: dark) {
+ /* Dark generic page style */
+
+ html {
+ background: #222;
+ color: #DDD;
+ }
+
+ a {
+ color: #B4C342;
+ }
+
+ a:link {
+ color: #B4C342;
+ }
+
+ a:visited {
+ color: #B4C342;
+ }
+
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+ color: #DDD;
+ }
+
+ h1 a:link, h2 a:link, h3 a:link, h4 a:link, h5 a:link, h6 a:link {
+ color: #DDD;
+ }
+
+ h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited {
+ color: #DDD;
+ }
+
+ blockquote {
+ border-left: 1px solid #444;
+ }
+
+ pre, code, kbd, samp {
+ color: #DDD;
+ }
+
+ hr {
+ background-color: #333;
+ border: 0;
+ color: #666;
+ }
+
+ th {
+ border: 1px solid #444;
+ }
+
+ td {
+ border: 1px solid #444;
+ }
+
+ footer {
+ color: #BBB;
+ }
+
+ /* Dark specgen style */
+
+ #metabox {
+ color: #999;
+ }
+
+ #shortdesc {
+ color: #999;
+ }
+
+ #titlesep {
+ color: #444;
+ }
+
+ .terminfo, .restriction {
+ color: #999;
+ }
+
+ table.terminfo {
+ border-bottom: 1px solid #444;
+ border-left: 1px solid #444;
+ }
+
+ .spectermbody {
+ border-top: 1px solid #444;
+ }
+
+ .spectermbody .description .comment > p:first-child {
+ color: #BBB;
+ }
+
+ .error {
+ color: #DC322F;
+ }
+
+ .warning {
+ color: #B58900;
+ }
+
+ .success {
+ color: #859900;
+ }
+
+ #topbar {
+ border-bottom: 1px solid #444;
+ }
+}
+
+/* Hard black for dark mode on mobile (since it's likely to be an OLED screen) */
+@media only screen and (hover: none) and (pointer: coarse) and (prefers-color-scheme: dark) {
+ html {
+ background: #000;
+ color: #CCC;
+ }
+}