# HG changeset patch # User Sebastien Jodogne # Date 1468856162 -7200 # Node ID 25fa874803ab93d8ce98772029e36298105557b2 # Parent f99aa6a6f0c98caa7f7ab055cdd756397f5d840f plugins inside book diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/contributing.rst --- a/Sphinx/source/contributing.rst Thu Jul 14 09:47:19 2016 +0200 +++ b/Sphinx/source/contributing.rst Mon Jul 18 17:36:02 2016 +0200 @@ -1,3 +1,5 @@ +.. _contributing: + Contributing to Orthanc ======================= diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/developers.rst --- a/Sphinx/source/developers.rst Thu Jul 14 09:47:19 2016 +0200 +++ b/Sphinx/source/developers.rst Mon Jul 18 17:36:02 2016 +0200 @@ -4,5 +4,6 @@ .. toctree:: :maxdepth: 1 + developers/creating-plugins.rst + developers/coding-style.rst developers/db-versioning.rst - developers/coding-style.rst diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/developers/coding-style.rst --- a/Sphinx/source/developers/coding-style.rst Thu Jul 14 09:47:19 2016 +0200 +++ b/Sphinx/source/developers/coding-style.rst Mon Jul 18 17:36:02 2016 +0200 @@ -1,3 +1,4 @@ +.. _coding-style: .. highlight:: c++ Coding style diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/developers/creating-plugins.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/developers/creating-plugins.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,43 @@ +Creating new plugins +==================== + +The recommended way of :ref:`contributing to the Orthanc code ` +is by extending it by :ref:`creating new plugins `. + +Overview +-------- + +Orthanc plugins must use the `plugin SDK +`__ and must be written +in C or C++. They must also fullfil the terms of the `GPLv3 license +`__ that is +used by the core of Orthanc. Sample code for plugins can be found `in +the official Orthanc repository +`__ +(in the ``Plugins/Samples`` folder of the ``plugins`` branch). A +tutorial showing how to implement a basic WADO server is `available on +CodeProject +`__. + +A plugin takes the form of a shared library (``.DLL`` under Windows, +``.so`` under Linux, ``.dylib`` under Apple OS X...) that must declare 4 +public functions/symbols: + +* ``int32_t OrthancPluginInitialize(OrthancPluginContext* context)``. This + callback function is responsible for initializing the plugin. The + ``context`` argument gives access to the API of Orthanc. +* ``void OrthancPluginFinalize()``. This function is responsible + for finalizing the plugin, releasing all the allocated resources. +* ``const char* OrthancPluginGetName()``. This function must give a + name to the plugin. +* ``const char* OrthancPluginGetVersion()``. This function must + provide the version of the plugin. + +We suggest developers to adopt the :ref:`coding style of the Orthanc +core `, although this is of course not required. + +Do not hesitate to `contact us +`__ if you wish +your plugin to be **indexed** in :ref:`this part of the Orthanc Book +`! + diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/index.rst --- a/Sphinx/source/index.rst Thu Jul 14 09:47:19 2016 +0200 +++ b/Sphinx/source/index.rst Mon Jul 18 17:36:02 2016 +0200 @@ -17,6 +17,7 @@ users.rst dicom-guide.rst + plugins.rst developers.rst faq.rst contributing.rst diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,52 @@ +.. _plugins: + +Plugins +======= + +The core of Orthanc can be extended through **plugins**. A plugin +takes the form of a shared library (``.DLL`` under Windows, ``.so`` +under Linux, ``.dylib`` under Apple OS X...). A plugin can do various +things, among others: + +* Serving new **Web applications** that have full access to the REST + API of Orthanc, which makes easy to handle DICOM images from + JavaScript code. +* Replacing **the way DICOM images are decoded** (e.g. the official + :ref:`Web viewer plugin ` introduces the decoding of + JPEG2000 images, which is not available in the core of Orthanc). +* Replacing the default **database back-end** of Orthanc (that is built + upon SQLite) by another (:ref:`PostgreSQL `, MySQL, SQL Server...). +* Creating **new REST APIs** on the top of the Orthanc built-in API (as in + in the official :ref:`DICOMweb ` plugin). +* **Reacting** to the arrival of new DICOM images or other + DICOM-related events so as to carry on automated processing. + + +.. _plugins-official: + +Index of the official plugins +----------------------------- + +.. toctree:: + :maxdepth: 1 + + plugins/serve-folders.rst + plugins/dicomweb.rst + plugins/postgresql.rst + plugins/webviewer.rst + plugins/worklists-plugin.rst + + +.. _plugins-contributed: + +Index of the contributed plugins +-------------------------------- + +* `DWV Orthanc Plugin + `__: This plugin by + Yves Martelli is based on `dwv + `__ and extends Orthanc with a + Web viewer of DICOM images. +* Another Web viewer is provided courtesy of `Emsy Chan + `__. + diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins/dicomweb.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins/dicomweb.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,11 @@ +.. _dicomweb: + + +DICOMweb plugin +=============== + +This **official** plugin extends Orthanc with support of the `DICOMweb +protocols `__. More precisely, +the plugin introduces a basic, reference implementation of WADO-URI, +WADO-RS, QIDO-RS and STOW-RS, following `DICOM PS3.18 +`__. diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins/postgresql.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins/postgresql.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,7 @@ +.. _postgresql: + + +PostgreSQL plugins +================== + +Two **official** plugins to replace the default storage area (on the filesystem) and the default SQLite index by PostgreSQL. diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins/serve-folders.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins/serve-folders.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,15 @@ +.. _serve-folders: + + +Serve Folders plugin +==================== + +This **official** plugin enables Orthanc to serve additional folders +from the filesystem using its embedded Web server. + +This plugin is extremely useful to create new Web applications on the +top of the REST API of Orthanc, as it allows to fulfill the +`same-origin policy +`__ without setting +up a reverse proxy. + diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins/webviewer.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins/webviewer.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,7 @@ +.. _webviewer: + + +Web Viewer plugin +================= + +This **official** plugin extends Orthanc with a Web viewer of medical images. diff -r f99aa6a6f0c9 -r 25fa874803ab Sphinx/source/plugins/worklists-plugin.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/plugins/worklists-plugin.rst Mon Jul 18 17:36:02 2016 +0200 @@ -0,0 +1,10 @@ +.. _worklists-plugin: + + +Modality Worklists plugin +========================= + +This **official** plugin turns Orthanc into a server of DICOM +worklists. The worklists must be provided in some folder of the +filesystem by an external script. The support of DICOM worklists in +Orthanc is explained in the :ref:`FAQ `.