]> granicus.if.org Git - esp-idf/commitdiff
Implement ‘blockdiag - simple block-diagram image generator’ to illustrate documentat...
authorkrzychb <krzychb@gazeta.pl>
Mon, 6 Nov 2017 20:41:31 +0000 (21:41 +0100)
committerkrzychb <krzychb@gazeta.pl>
Tue, 7 Nov 2017 17:17:53 +0000 (18:17 +0100)
docs/_static/DejaVuSans.license [new file with mode: 0644]
docs/_static/DejaVuSans.ttf [new file with mode: 0644]
docs/conf.py
docs/contribute/documenting-code.rst
docs/requirements.txt

diff --git a/docs/_static/DejaVuSans.license b/docs/_static/DejaVuSans.license
new file mode 100644 (file)
index 0000000..710b32c
--- /dev/null
@@ -0,0 +1,58 @@
+This package was debianized by Peter Cernak <pce@users.sourceforge.net> on
+Sun,  5 Sep 2004 17:10:26 +0200.
+
+It was downloaded from http://dejavu.sourceforge.net/
+
+Upstream Authors: Stepan Roh <src@users.sourceforge.net> (original author),
+                  see /usr/share/doc/ttf-dejavu/AUTHORS for full list
+
+Copyright:
+
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
+
+Bitstream Vera Fonts Copyright
+------------------------------
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute the
+Font Software, including without limitation the rights to use, copy, merge,
+publish, distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright and trademark notices and this permission notice shall
+be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional glyphs or characters may be added to the Fonts, only if the fonts
+are renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream
+Vera" names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
+ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
+FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font Software
+without prior written authorization from the Gnome Foundation or Bitstream
+Inc., respectively. For further information, contact: fonts at gnome dot
+org. 
diff --git a/docs/_static/DejaVuSans.ttf b/docs/_static/DejaVuSans.ttf
new file mode 100644 (file)
index 0000000..19ed0b4
Binary files /dev/null and b/docs/_static/DejaVuSans.ttf differ
index f15ddaf6e78a62db07355f40fec0d127cf74200d..caa233c93c6fcbb1ff3a8649384700effa7e49be 100644 (file)
@@ -44,7 +44,23 @@ suppress_warnings = ['image.nonlocal_uri']
 # Add any Sphinx extension module names here, as strings. They can be
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
-extensions = ['breathe', 'link-roles']
+extensions = ['breathe',
+              'link-roles',
+              'sphinxcontrib.blockdiag',
+              'sphinxcontrib.seqdiag',
+              'sphinxcontrib.actdiag',
+              'sphinxcontrib.nwdiag',
+              'sphinxcontrib.rackdiag',
+              'sphinxcontrib.packetdiag'
+             ]
+
+# Set up font for blockdiag, nwdiag, rackdiag and packetdiag
+blockdiag_fontpath = '_static/DejaVuSans.ttf'
+seqdiag_fontpath = '_static/DejaVuSans.ttf'
+actdiag_fontpath = '_static/DejaVuSans.ttf'
+nwdiag_fontpath = '_static/DejaVuSans.ttf'
+rackdiag_fontpath = '_static/DejaVuSans.ttf'
+packetdiag_fontpath = '_static/DejaVuSans.ttf'
 
 # Breathe extension variables
 breathe_projects = { "esp32-idf": "xml/" }
index 73739d816e688e2eddb97b36bdb268b2093f3b33..458efb495317bea2e11b62c8566ed1edbce95ec1 100644 (file)
@@ -156,6 +156,38 @@ The following roles are provided:
 A check is added to the CI build script, which searches RST files for presence of hard-coded links (identified by tree/master, blob/master, or raw/master part of the URL). This check can be run manually: ``cd docs`` and then ``make gh-linkcheck``.
 
 
+Add Illustrations
+-----------------
+
+Consider adding diagrams and pictures to illustrate described concepts.
+
+Sometimes it is better to add an illustration than writing a lengthy paragraph to describe a complex idea, a data structure or an algorithm. This repository is using `blockdiag <http://blockdiag.com/en/index.html>`_ suite of tools to generate diagram images from simple text files.
+
+The following types of diagrams are supported:
+
+* `Block diagram <http://blockdiag.com/en/blockdiag/index.html>`_
+* `Sequence diagram <http://blockdiag.com/en/seqdiag/index.html>`_
+* `Activity diagram <http://blockdiag.com/en/actdiag/index.html>`_
+* `Logical network diagram <http://blockdiag.com/en/nwdiag/index.html>`_
+
+With this suite of tools it is possible to generate beautiful diagram images from simple text format (similar to graphviz’s DOT format). The diagram elements are laid out automatically. The diagram code is then converted into ".png" graphics and integrated "behind the scenes" into **Sphinx** documents. 
+
+For the diagram preparation you can use an on-line `interactive shell <http://interactive.blockdiag.com/?compression=deflate&src=eJxlUMFOwzAMvecrrO3aITYQQirlAIIzEseJQ5q4TUSIq8TVGIh_J2m7jbKc7Ge_5_dSO1Lv2soWvoVYgieNoMh7VGzJR9FJtugZ7lYQ0UcKEbYNOY36rRQHZHUPT68vV5tceGLbWCUzPfeaFFMoBZzecVc56vWwJFnWMmJ59CCZg617xpOFbTSyw0pmvT_HJ7hxtFNGBr6wvuu5SCkchcrZ1vAeXZomznh5YgTqfcpR02cBO6vZVDeXBRjMjKEcFRbLh8f18-Z2UUBDnqP9wmp9ncRmSSfND2ldGo2h_zse407g0Mxc1q7HzJ3-4jzYYTJjtQH3iSV-fgFzx50J>`_ that instantly shows the rendered image. 
+
+Below are couple of diagram examples:
+
+* Simple **block diagram** / ``blockdiag`` - `Wi-Fi Buffer Configuration <http://interactive.blockdiag.com/?compression=deflate&src=eJylUk1rwkAQvfsrBntpIUKiRQqSgK0VSj0EtCi0EjbJxCyuuyG7QW3pf-9m06hJeyg0t33zmHkfCZmItjElGwiLJME8IEwjRFHBA3WAj04H9HcFGyZCwoAoldOwUCgNzkWMwZ7GKgUXnKE9gjOcIt2kSuN39sigMiP8jDqX6GmF_Y3GmJCCqUCmJEM9yEXBY4xDcWjOE8GVpO9oztdaGQmRSRAJlMZysjOCKsVj358Fi_H8GV4Nze2Os4zRyvEbB0XktrseQWVktn_ym-wS-UFb0ilt0pa0N6Vn3i_KUEY5zcqrbXWTx_nDaZHjwYvEHGKiSNeC2q_r3FpQZekObAtMTi4XCi2IBBO5e0Rd5L7ppLG574GvO__PUuO7sXTgweTIyY5GcD1XOtToBhYruDf_VvuUad3tD-0_Xq1TLPPSI84xKvNrF9vzLnrTj1M7rYhrXv24cCPVkZUaOK47n1-lOvbk>`_
+* Slightly more complicated **block diagram** - `Wi-Fi programming model <http://interactive.blockdiag.com/?compression=deflate&src=eJyFk09P40AMxe98CqscIVILq72UIFX8kSoQWy0RHABFTuImFtOZaGYKuyC-O840bagaRI7Pfs7Pz0mmTP5cMJbwynNOa2tKi4sF6zJdmIIUvO_tgTz7UCqToQL03nK29OSCrqUpfeXCVxDD6Gg47tSKuKy8yL9b1dWov1E3E4atWtAcl8qnrsKapGDNUhdUZObfdr2UQp3mRhkrXdpoGq-BGwhQmJFaoSZns_Q2mZxdwUNQ44Eojxqcx_x5cAhzo73jN4pHv55WL7m4u0nSZHLbOeiFtBePR9dvmcxm19sWrGvFOXo2utd4CGH5eHQ8bGfcTy-n6fnfO9jMuOfoksV9bvmFbO-Lr27-JPAQ4oqbGJ62c8iN1pQ3EA4O-lOJTncXDvvupCGdu3vmqFQmSQqm3CIYBx0EWou6pADjQJbw3Bj-h3I4onxpsHrCQLnmoD0yVKgLJXuP1x3GsowPmUpfbay3yH5T7khPoi7NnpU-1nisPdkFyY_gV4x9XB3Y0pHdpfoJ60toURQOtqbYuvpJ1B6zDXYym0qmTVpNnh-fpWcbRA>`_
+* **Sequence diagram** / ``seqdiag`` - `Scan for a Specific AP in All Channels <http://interactive.blockdiag.com/seqdiag/?compression=deflate&src=eJyVkU1PwzAMhu_7FdburUgQXMomTaPcKIdOIIRQlDVuG1EloUknPsR_J2s2rRsT2nKJ9drvY8ex-C4kr8AWXLFSt8waLBg38D0Cf3jh5Io7qRVMQGmFSS-jqJA1qCpXe51cXwTZGg-pUVa1W8tXQRVY8q5xzNbcoNdb3SmBYqk_9vOlVs7Kr3UJoQmMwgDGMMftWwK4QuU28ZOM7uQm3q_zYTQd5OGl4UtsJmMSE5jCXKtSVl2LUPgpXPvpb4Hj1-RUCPWQ3O_K-wKpX84WMLAcB9B-igCouVLYADnDTA_N9GRzHMdnNMoOG2Vb8-4b4CY6Zr4MT3zOF-k9Sx_TbMHy-Sxjtw9Z-mfRHjEA7hD0X8TPLxU91AQ>`_
+* **Packet diagram** / ``packetdiag`` - `NVS Page Structure <http://interactive.blockdiag.com/packetdiag/?compression=deflate&src=eJxFkMFOwzAQRO_9ij2mh63idRKaSj1V_ACIE6DIxG4StTgh3oCg6r_j2JTs8c3szNqDqk-GdacasJ-uGlRjKsfjVPM0GriswE_dn786zS3sQRJAYLbXprpRkS-sNV3TcrAGqM1RTWeujr1l1_2Y2U6rIKUod_DIis2LTbJ1YBneeWY-Nj5ts-AtkudPdnJGQ0JppLRFKXZweDhIWrySsPDB95bHb3BzPLx1_K4GSCSt_-4vMizzmykNSuBlgWKuioJYBOHLROnbEBGe_ZfEh-7pNcolIdF_raA8rl5_AaqqWyE>`_
+
+Try them out by modifying the source code and see the diagram instantly rendering below.
+
+.. note::
+
+    There may be slight differences in rendering of font used by the interactive shell compared to the font used in the esp-idf documentation.
+
+
 Put it all together
 -------------------
 
@@ -171,7 +203,7 @@ OK, but I am new to Sphinx!
 
 3. You will likely want to see how documentation builds and looks like before posting it on the GitHub. There are two options to do so:
 
-    * Install `Sphinx <http://www.sphinx-doc.org/>`_, `Breathe <https://breathe.readthedocs.io/>`_ and `Doxygen <https://www.stack.nl/~dimitri/doxygen/>`_ to build it locally, see chapter below.
+    * Install `Sphinx <http://www.sphinx-doc.org/>`_, `Breathe <https://breathe.readthedocs.io/>`_, `Blockdiag <http://blockdiag.com/en/index.html>`_ and `Doxygen <https://www.stack.nl/~dimitri/doxygen/>`_ to build it locally, see chapter below.
    
     * Set up an account on `Read the Docs <https://readthedocs.org/>`_ and build documentation in the cloud. Read the Docs provides document building and hosting for free and their service works really quick and great.
 
@@ -187,9 +219,12 @@ You can setup environment to build documentation locally on your PC by installin
 2. Sphinx - https://github.com/sphinx-doc/sphinx/#readme-for-sphinx
 3. Docment theme "sphinx_rtd_theme" - https://github.com/rtfd/sphinx_rtd_theme
 4. Breathe - https://github.com/michaeljones/breathe#breathe
+5. Blockdiag - http://blockdiag.com/en/index.html
 
 The package "sphinx_rtd_theme" is added to have the same "look and feel" of `ESP32 Programming Guide <https://esp-idf.readthedocs.io/en/latest/index.html>`_ documentation like on the "Read the Docs" hosting site.
 
+Do not worry about being confronted with several packages to install. Besides Doxygen, all remaining packages are written in Python. Therefore installation of all of them is combined into one simple step.
+
 Installation of Doxygen is OS dependent:
 
 **Linux**
@@ -244,4 +279,3 @@ Related Documents
 
 
 .. _espressif/esp-idf: https://github.com/espressif/esp-idf/
-
index 642f0147fe34453c0ad22190750b31dd693f9fb1..8aaf322a9fa0807b4d9f620747a1bf94edad323a 100644 (file)
@@ -4,3 +4,7 @@
 sphinx==1.6.5
 sphinx-rtd-theme
 breathe==4.7.3
+sphinxcontrib.blockdiag==1.5.3
+sphinxcontrib.seqdiag==0.8.5
+sphinxcontrib.actdiag==0.8.5
+sphinxcontrib.nwdiag==0.9.5
\ No newline at end of file