Add overall design

This commit is contained in:
Nguyễn Gia Phong 2020-03-25 09:37:35 +07:00
parent cb2601c7f5
commit 02e8bee19e
8 changed files with 74 additions and 5 deletions

Binary file not shown.

Binary file not shown.

View File

@ -10,6 +10,28 @@ Cython, Python and C++11.
.. _alure: https://github.com/kcat/alure
Project Overview
----------------
Before diving into the design, here is a brief overview of the functionalities
provided by palace:
#. Audio device creation and auxiliary functionalities:
:py:const:`palace.device_names`, :py:func:`palace.query_extension`
and :py:class:`palace.Device`
#. Context creation and management: :py:func:`palace.current_context`,
:py:func:`palace.use_context`, :py:class:`palace.Context`,
:py:class:`palace.Listener` and :py:class:`palace.MessageHandler`
#. Creation and caching of internal audio decoders and user-defined ones:
:py:class:`palace.Decoder`, :py:class:`palace.BaseDecoder`,
:py:data:`palace.decoder_factories`, :py:class:`palace.FileIO`,
:py:func:`palace.current_fileio`, :py:func:`palace.use_fileio`
and :py:class:`palace.Buffer`
#. Source of audio playback: :py:class:`palace.Source`
and :py:class:`palace.SourceGroup`
#. Audio effect: :py:class:`palace.AuxiliaryEffectSlot`
and :py:class:`palace.Effect`
.. _impl-idiom:
The Impl Idiom

View File

@ -39,6 +39,28 @@ a safe, efficient, easy-to-use and extendable 3D audio library for Python,
by wrapping existing functionalities from the C++ API <a class="reference external" href="https://github.com/kcat/alure">alure</a>.</p>
<p>This part of the documentation assumes its reader are at least familiar with
Cython, Python and C++11.</p>
<div class="section" id="project-overview">
<h2>Project Overview<a class="headerlink" href="#project-overview" title="Permalink to this headline"></a></h2>
<p>Before diving into the design, here is a brief overview of the functionalities
provided by palace:</p>
<ol class="arabic simple">
<li><p>Audio device creation and auxiliary functionalities:
<a class="reference internal" href="reference.html#palace.device_names" title="palace.device_names"><code class="xref py py-const docutils literal notranslate"><span class="pre">palace.device_names</span></code></a>, <a class="reference internal" href="reference.html#palace.query_extension" title="palace.query_extension"><code class="xref py py-func docutils literal notranslate"><span class="pre">palace.query_extension()</span></code></a>
and <a class="reference internal" href="reference.html#palace.Device" title="palace.Device"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Device</span></code></a></p></li>
<li><p>Context creation and management: <a class="reference internal" href="reference.html#palace.current_context" title="palace.current_context"><code class="xref py py-func docutils literal notranslate"><span class="pre">palace.current_context()</span></code></a>,
<a class="reference internal" href="reference.html#palace.use_context" title="palace.use_context"><code class="xref py py-func docutils literal notranslate"><span class="pre">palace.use_context()</span></code></a>, <a class="reference internal" href="reference.html#palace.Context" title="palace.Context"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Context</span></code></a>,
<code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Listener</span></code> and <a class="reference internal" href="reference.html#palace.MessageHandler" title="palace.MessageHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.MessageHandler</span></code></a></p></li>
<li><p>Creation and caching of internal audio decoders and user-defined ones:
<a class="reference internal" href="reference.html#palace.Decoder" title="palace.Decoder"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Decoder</span></code></a>, <a class="reference internal" href="reference.html#palace.BaseDecoder" title="palace.BaseDecoder"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.BaseDecoder</span></code></a>,
<a class="reference internal" href="reference.html#palace.decoder_factories" title="palace.decoder_factories"><code class="xref py py-data docutils literal notranslate"><span class="pre">palace.decoder_factories</span></code></a>, <a class="reference internal" href="reference.html#palace.FileIO" title="palace.FileIO"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.FileIO</span></code></a>,
<a class="reference internal" href="reference.html#palace.current_fileio" title="palace.current_fileio"><code class="xref py py-func docutils literal notranslate"><span class="pre">palace.current_fileio()</span></code></a>, <a class="reference internal" href="reference.html#palace.use_fileio" title="palace.use_fileio"><code class="xref py py-func docutils literal notranslate"><span class="pre">palace.use_fileio()</span></code></a>
and <a class="reference internal" href="reference.html#palace.Buffer" title="palace.Buffer"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Buffer</span></code></a></p></li>
<li><p>Source of audio playback: <a class="reference internal" href="reference.html#palace.Source" title="palace.Source"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Source</span></code></a>
and <a class="reference internal" href="reference.html#palace.SourceGroup" title="palace.SourceGroup"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.SourceGroup</span></code></a></p></li>
<li><p>Audio effect: <a class="reference internal" href="reference.html#palace.AuxiliaryEffectSlot" title="palace.AuxiliaryEffectSlot"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.AuxiliaryEffectSlot</span></code></a>
and <a class="reference internal" href="reference.html#palace.Effect" title="palace.Effect"><code class="xref py py-class docutils literal notranslate"><span class="pre">palace.Effect</span></code></a></p></li>
</ol>
</div>
<div class="section" id="the-impl-idiom">
<span id="impl-idiom"></span><h2>The Impl Idiom<a class="headerlink" href="#the-impl-idiom" title="Permalink to this headline"></a></h2>
<p><em>Not to be confused with</em> <a class="reference external" href="https://wiki.c2.com/?PimplIdiom">the pimpl idiom</a>.</p>
@ -205,6 +227,7 @@ implementation as a pure Python class and <a class="reference internal" href="#g
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Design Principles</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#project-overview">Project Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="#the-impl-idiom">The Impl Idiom</a></li>
<li class="toctree-l2"><a class="reference internal" href="#the-modern-python">The Modern Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="#the-double-reference">The Double Reference</a></li>

View File

@ -43,6 +43,7 @@
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="design.html">Design Principles</a><ul>
<li class="toctree-l2"><a class="reference internal" href="design.html#project-overview">Project Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="design.html#the-impl-idiom">The Impl Idiom</a></li>
<li class="toctree-l2"><a class="reference internal" href="design.html#the-modern-python">The Modern Python</a></li>
<li class="toctree-l2"><a class="reference internal" href="design.html#the-double-reference">The Double Reference</a></li>

View File

@ -14,8 +14,8 @@
<script src="_static/language_data.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Reference" href="reference.html" />
<link rel="prev" title="Welcome to palaces documentation!" href="index.html" />
<link rel="next" title="Design Principles" href="design.html" />
<link rel="prev" title="Welcome to our palace!" href="index.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@ -89,6 +89,7 @@ pip install palace/
<li class="toctree-l2"><a class="reference internal" href="#from-source">From source</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="design.html">Design Principles</a></li>
<li class="toctree-l1"><a class="reference internal" href="reference.html">Reference</a></li>
</ul>
@ -96,8 +97,8 @@ pip install palace/
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="index.html" title="previous chapter">Welcome to palaces documentation!</a></li>
<li>Next: <a href="reference.html" title="next chapter">Reference</a></li>
<li>Previous: <a href="index.html" title="previous chapter">Welcome to our palace!</a></li>
<li>Next: <a href="design.html" title="next chapter">Design Principles</a></li>
</ul></li>
</ul>
</div>

File diff suppressed because one or more lines are too long

View File

@ -10,6 +10,28 @@ Cython, Python and C++11.
.. _alure: https://github.com/kcat/alure
Project Overview
----------------
Before diving into the design, here is a brief overview of the functionalities
provided by palace:
#. Audio device creation and auxiliary functionalities:
:py:const:`palace.device_names`, :py:func:`palace.query_extension`
and :py:class:`palace.Device`
#. Context creation and management: :py:func:`palace.current_context`,
:py:func:`palace.use_context`, :py:class:`palace.Context`,
:py:class:`palace.Listener` and :py:class:`palace.MessageHandler`
#. Creation and caching of internal audio decoders and user-defined ones:
:py:class:`palace.Decoder`, :py:class:`palace.BaseDecoder`,
:py:data:`palace.decoder_factories`, :py:class:`palace.FileIO`,
:py:func:`palace.current_fileio`, :py:func:`palace.use_fileio`
and :py:class:`palace.Buffer`
#. Source of audio playback: :py:class:`palace.Source`
and :py:class:`palace.SourceGroup`
#. Audio effect: :py:class:`palace.AuxiliaryEffectSlot`
and :py:class:`palace.Effect`
.. _impl-idiom:
The Impl Idiom