/** @mainpage Oyranos User API Documentation

    @section text_contents Descriptive Contents
    @ref intro |
    @ref install |
    @ref links\n
    @ref tools |
    @ref environment |
    @ref user |
    @ref api_tutorial |
    @ref threads |
    @ref extending_oyranos

 *  @par License
 *          new BSD http://www.opensource.org/licenses/BSD-3-Clause
    @author Kai-Uwe Behrmann and others
    @since  March 2004

    @par Internet
          http://www.oyranos.org/about

    @par Development
          https://github.com/oyranos-cms/oyranos

    @n@n
    @section intro Introduction
    Oyranos is intended as a entry point for color savy applications.
    In its current stage it configures profile paths, sets default profiles, 
    maps devices to profiles, sets a monitor profile in X and uploads a vcgt
    tag. This means for instance all applications using Oyranos will use for
    a incoming digital camera picture the same profile and watch it through the
    same monitor profile with the same options for rendering intent, simulation
    and so on.

    @section tools User Tools Documentation
    - oyranos-icc - access embedded profiles from images, color convert images
    - oyranos-monitor - a commandline tool for calling from a setup script like
      .xinitrc. It selects a profile for the current monitor and sets up the
      X server at startup time. Usage:
    @verbatim
    # select a monitor profile, load the binary blob into X and fill the
    # VideoCardGammaTable, if appropriate
    oyranos-monitor
    @endverbatim
    - oyranos-policy - a tool to set a policy from a xml file. Use it like:
    @verbatim
    oyranos-policy `oyranos-config --syscolordir`/`oyranos-config --settingsdirname`/office.policy.xml
    @endverbatim
    Affected are default profiles and some behaviour settings.
    - oyranos-profile - access profile information
    - oyranos-profile-graph - draw a 2D graph from profiles
    - oyranos-profiles - lookup profiles in the systems color paths, download and install
    - <a href="http://www.oyranos.org/wiki/index.php?title=Oyranos_Configuration_Dialog">oyranos-config-fltk</a> - a configuration UI application, using some functions      of the Oyranos APIs. If you have <a href="http://www.oyranos.org/wiki/index.php?title=ICC_Examin">ICC Examin</a> installed it can be called to
      show details of profiles. 
    - oyranos-config - a command line tool to get compiler flags to using Oyranos in your own project. Try  \a oyranos-config \a --help to see the appropriate options.

    @section user User API Documentation
    The basic Oyranos API gets included with oyranos.h. An application, which
    wants to use these functions, needs to link against Oyranos.
    - @ref defaults_apis - obtain and manipulate user preferences and UI translations
    - @ref objects_profile - select, read, manipulate and write ICC profiles 
    - @ref devices_handling - select, read, manipulate and write color device configurations
    - @ref objects_conversion - build and process image graphs

    The monitor related interfaces are accessed through @ref devices_handling
    interfaces. Loading of the according module for the device depedent
    libraries is done on runtime.

    The key names, which Oyranos uses to store its configuration in an Elektra
    file tree, are defined in oyranos_definitions.h.
    \n

    More in depth topics about programming with Oyranos can be found on the
    @ref coding page. 

    @subsection api_tutorial Programming Tutorial
    Frist you have to put a
    @code
    #include <oyranos.h> @endcode
    in your source text, in order to use Oyranos. 
    @code
    int main( int argc, char ** argv ) {
      int oyranos_version = oyVersion( 0 );
      return 0;
    }@endcode
    \b oyranos-config \b --cflags delivers the compiler flags and \b oyranos-config \b --ldflags the linker flags.

    Then you can put Oyranos functions in your code and compile with:
    @verbatim
    cc `oyranos-config --cflags --ldflags` mycode.c -o myApp @endverbatim
    to link Oyranos into your application.

    The second code sample will be more useful and handle obtaining a monitor profile:
    @include tutorial1.c
    The code is from @ref tutorial1.c

    Writing of filters and modules for Oyranos is covered in the @ref
    extending_oyranos page.
 */
/*    - @ref device_profiles - profiles which characterise devices */

/** @example tutorial1.c
 *  @brief   Show how to obtain and use a monitor profile.
 */
/** @example tutorial_taxi.c
 *  @brief   Obtain a profile for the first monitor from Online Taxi DB.
 */
/** @example image2pdf.c
 *  @brief   Combine images into a PDF using Cairo.
 */
/** @example oymd5icc.c
 *  @brief   Read and set the ICC profile ID.
 */
/** @example oyranos_cmm_oJPG.c
 *  @brief   Module example.
 */
/** @example image_display.cpp
 *  @brief   Image viewer example.
 */
