[gst-cvs] gstreamer: docs: add concept map

Stefan Kost ensonic at kemper.freedesktop.org
Thu Apr 8 00:48:42 PDT 2010


Module: gstreamer
Branch: master
Commit: 2f134d0574f7edae4773f5e9f882feba52ac5a0e
URL:    http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=2f134d0574f7edae4773f5e9f882feba52ac5a0e

Author: Stefan Kost <ensonic at users.sf.net>
Date:   Thu Mar 25 10:35:13 2010 +0200

docs: add concept map

Add a graphviz dot file. Add rules to render it to svg and include in docs.
Nodes are clickable. It is an attempt to show how things fit together.

---

 docs/gst/Makefile.am         |   13 ++++++--
 docs/gst/gst-universe.dot    |   74 ++++++++++++++++++++++++++++++++++++++++++
 docs/gst/gstreamer-docs.sgml |    9 +++++
 3 files changed, 93 insertions(+), 3 deletions(-)

diff --git a/docs/gst/Makefile.am b/docs/gst/Makefile.am
index 4fa8f31..d92ea2a 100644
--- a/docs/gst/Makefile.am
+++ b/docs/gst/Makefile.am
@@ -33,7 +33,7 @@ include $(top_srcdir)/common/upload-doc.mak
 #$(basefiles): gstreamer- at GST_MAJORMINOR@%: gstreamer%
 #	cp $< $@
 
-#CLEANFILES = $(basefiles)
+#CLEANFILES += $(basefiles)
 
 # The top-level SGML file. Change it if you want.
 DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
@@ -75,14 +75,17 @@ IGNORE_HFILES= \
 	grammar.tab.pre.h \
 	types.h
 
+gst-universe.svg: gst-universe.dot
+	-dot -Tsvg $< | sed 's/\(font-size:[0-9]*\.[0-9]*\);/\1px;/g' >$@
+
 # Images to copy into HTML directory.
 HTML_IMAGES =
 
 # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
-content_files = building.xml running.xml
+content_files = building.xml running.xml gst-universe.svg
 
 # Other files to distribute.
-extra_files =
+extra_files = gst-universe.dot
 
 # CFLAGS and LDFLAGS for compiling scan program. Only needed if your app/lib
 # contains GtkObjects/GObjects and you want to document signals and properties.
@@ -100,3 +103,7 @@ GTKDOC_EXTRA_ENVIRONMENT= \
 DOC_OVERRIDES = $(DOC_MODULE)-overrides.txt
 
 include $(top_srcdir)/common/gtk-doc.mak
+
+# gtk-doc.mak defines CLEANFILES
+CLEANFILES += gst-universe.svg
+
diff --git a/docs/gst/gst-universe.dot b/docs/gst/gst-universe.dot
new file mode 100644
index 0000000..46f6b5c
--- /dev/null
+++ b/docs/gst/gst-universe.dot
@@ -0,0 +1,74 @@
+/* dot -Tpng gst-universe.dot -ogst-universe.png
+ *
+ * other layouts:
+ * circo -Tpng gst-universe.dot -ogst-universe.circo.png
+ * neato -Tpng gst-universe.dot -ogst-universe.neato.png
+ *
+ * todo:
+ * - add urls to api docs
+ * - use color
+ */
+digraph pipeline {
+  node [style="filled", shape="box", fillcolor="#eeeeee", fontsize="9px", fontname="Bitstream Vera Sans", target="_top"];
+  edge [labelfontsize="7px", fontsize="7px", labelfontname="Bitstream Vera Sans", fontname="Bitstream Vera Sans"];
+  labelloc=t;
+  nodesep=0.25;
+
+  /*
+  fontname="Bitstream Vera Sans";
+  fontsize="10px";
+  label="GStreamer Universe";
+  */
+  
+  /* objects */
+  application [color=black, fillcolor="#ffdddd"];
+  bin [href="GstBin.html", color=black, fillcolor="#ccccff"];
+  bus [href="GstBus.html"];
+  buffer [href="gstreamer-GstBuffer.html", color=black, fillcolor="#ddffdd"];
+  caps [href="gstreamer-GstCaps.html"];
+  clock [href="GstClock.html"];
+  element [href="GstElement.html", color=black, fillcolor="#ccccff"];
+  element_factory [href="GstElementFactory.html", label="element factory"];
+  event [href="gstreamer-GstEvent.html", color=black, fillcolor="#ddffdd"];
+  message [href="gstreamer-GstMessage.html", color=black, fillcolor="#ddffdd"];
+  pad [href="GstPad.html", color=black, fillcolor="#ccccff"];
+  pad_template [href="GstPadTemplate.html", label="pad template"];
+  pipeline [href="GstPipeline.html", color=black, fillcolor="#ccccff"];
+  plugin [href="GstPlugin.html"];
+  plugin_feature [href="GstPluginFeature.html", label="plugin feature"];
+  query [href="gstreamer-GstQuery.html", color=black, fillcolor="#ddffdd"];
+  registry [href="GstRegistry.html"];
+  structure [href="gstreamer-GstStructure.html"];
+  
+  /* relations */
+  bin -> element [label="is-a"];
+  pipeline -> bin [label="is-a"];
+  pipeline -> bus [label="has 1"];
+  pipeline -> clock [label="has 1"];
+  element -> pad_template [label="has n"];
+  element -> pad [label="has n"];
+  element -> clock [label="may provide"];
+  pad -> caps [label="has n"];
+  pad_template -> caps [label="has n"];
+  buffer -> caps [label="has n"];
+  caps -> structure [label="has n"];
+  bin -> element [label="has n"];
+    
+  pad -> pad_template [label="is created from"];
+  element -> element_factory [label="is created from"];
+    
+  element -> query [label="answers"];
+  element -> event [label="send & receive"];
+  element -> buffer [label="send & receive"];
+  element -> message [label="send"];
+  bus -> message [label="receive"];
+    
+  registry -> plugin [label="has n"];
+  plugin -> plugin_feature [label="has n"];
+  element_factory -> plugin_feature [label="is-a"];
+    
+  application -> pipeline [label="has"];
+  application -> bus [label="listen on"];
+  application -> query [label="send"];
+  application -> event [label="send"];
+}
diff --git a/docs/gst/gstreamer-docs.sgml b/docs/gst/gstreamer-docs.sgml
index e39d47f..a1c915e 100644
--- a/docs/gst/gstreamer-docs.sgml
+++ b/docs/gst/gstreamer-docs.sgml
@@ -32,6 +32,15 @@ GStreamer is cross-platform and works on most UNIX-like platforms as well as
 Windows.  It is released under the GNU Library General Public License
 (GNU LGPL).
     </para>
+    
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="gst-universe.svg" format="SVG"/>
+      </imageobject>
+      <caption>
+        <para>Relation between gstreamer core objects.</para>
+      </caption>
+    </mediaobject>
 
     <xi:include href="building.xml" />
     <xi:include href="running.xml" />





More information about the Gstreamer-commits mailing list