Updated Documentation according to review results (text and graphics).
Added file headers to all documentation files.
Improved doxygen settings for enums.
Added custom footline with document name in latex header.
Fixed some typos in existing documentation.
-
*.o
-
.gitconfig
debian/
build/
toolchain_forcecopy.cmake
-
-
doc_generated
configure
+*.pdf
# be useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
-TYPEDEF_HIDES_STRUCT = YES
+TYPEDEF_HIDES_STRUCT = NO
# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
# determine which symbols to keep in memory and which to flush to disk.
# This tag can be used to set the number of enum values (range [1..20])
# that doxygen will group on one line in the generated HTML documentation.
-ENUM_VALUES_PER_LINE = 4
+ENUM_VALUES_PER_LINE = 1
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information.
#include "ilm_client_platform.h"
/**
- * \defgroup Defines
- * \defgroup Enumerations
- * \defgroup TypeDefinitions
- **/
-/**
* \brief Represent the logical true value
- * \ingroup Defines
+ * \ingroup ilmClient
**/
#define ILM_TRUE 1u
/**
* \brief Represent the logical false value
- * \ingroup Defines
+ * \ingroup ilmClient
**/
#define ILM_FALSE 0u
/**
* \brief Enumeration on possible error codes
- * \ingroup Enumerations
+ * \ingroup ilmClient
**/
typedef enum e_ilmErrorTypes
{
- ILM_SUCCESS = 0, /*!< ErrorCode if the method call was successfull */
+ ILM_SUCCESS = 0, /*!< ErrorCode if the method call was successful */
ILM_FAILED= 1, /*!< ErrorCode if the method call has failed */
ILM_ERROR_INVALID_ARGUMENTS = 2, /*!< ErrorCode if the method was called with invalid arguments */
ILM_ERROR_ON_CONNECTION = 3 /*!< ErrorCode if connection error has occured */
/**
* \brief Enumeration for supported pixelformats
- * \ingroup Enumerations
+ * \ingroup ilmClient
**/
typedef enum e_ilmPixelFormat
{
ILM_PIXELFORMAT_RGB_888 = 1, /*!< Pixelformat value, to describe a 24 bit rgb surface */
ILM_PIXELFORMAT_RGBA_8888 =2, /*!< Pixelformat value, to describe a 24 bit rgb surface with 8 bit alpha */
ILM_PIXELFORMAT_RGB_565 = 3, /*!< Pixelformat value, to describe a 16 bit rgb surface */
- ILM_PIXELFORMAT_RGBA_5551 = 4, /*!< Pixelformat value, to desicribe a 16 bit rgb surface, with binary mask */
- ILM_PIXELFORMAT_RGBA_6661 = 5, /*!< Pixelformat value, to desicribe a 18 bit rgb surface, with binars mask */
- ILM_PIXELFORMAT_RGBA_4444 = 6, /*!< Pixelformat value, to desicribe a 12 bit rgb surface, with 4 bit alpha */
+ ILM_PIXELFORMAT_RGBA_5551 = 4, /*!< Pixelformat value, to describe a 16 bit rgb surface, with binary mask */
+ ILM_PIXELFORMAT_RGBA_6661 = 5, /*!< Pixelformat value, to describe a 18 bit rgb surface, with binars mask */
+ ILM_PIXELFORMAT_RGBA_4444 = 6, /*!< Pixelformat value, to describe a 12 bit rgb surface, with 4 bit alpha */
ILM_PIXEL_FORMAT_UNKNOWN = 7 /*!< Pixelformat not known */
} ilmPixelFormat;
/**
* \brief Enumeration for supported layertypes
- * \ingroup Enumerations
+ * \ingroup ilmClient
**/
typedef enum e_ilmLayerType
{
/**
* \brief Enumeration for supported graphical objects
- * \ingroup Enumerations
+ * \ingroup ilmClient
**/
typedef enum e_ilmObjectType
{
/**
* \brief Enumeration for supported orientations of booth, surface and layer
- * \ingroup Enumerations
+ * \ingroup ilmClient
**/
typedef enum e_ilmOrientation
{
/**
* \brief Typedef for representing a layer
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_layer;
/**
* \brief Typedef for representing a surface
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_surface;
/**
* \brief Typedef for representing a layergroup
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_layergroup;
/**
* \brief Typedef for representing a surfacegroup
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_surfacegroup;
/**
* \brief Typedef for representing a display number
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_display;
/**
* \brief Typedef for representing layer capabilities
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_uint t_ilm_layercapabilities;
/**
* \brief Typedef for representing a native window handle
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_ulong t_ilm_nativehandle;
/**
* \brief Typedef for representing a ascii string
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_char* t_ilm_string;
/**
* \brief Typedef for representing a const ascii string
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
typedef t_ilm_const_char* t_ilm_const_string;
/**
* \brief Typedef for representing a the surface properties structure
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
struct ilmSurfaceProperties
{
/**
* \brief Typedef for representing a the layer properties structure
- * \ingroup TypeDefinitions
+ * \ingroup ilmClient
**/
struct ilmLayerProperties
{
-// This file defines the order of groups in the generated documentation
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/// This file defines the order of groups in the generated documentation
/**
* \defgroup ServiceAPI Layer Management Service API
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page Introduction Introduction
required functionality. The document will be maintained and further developed within the GENIVI
Strategy Council planning work group.
-The GENIVI Technical Council will use the profile descriptions to scope the technical capabilities
+The GENIVI System Architecture Team (SAT) will use the profile descriptions to scope the technical capabilities
of the GENIVI platform. The decomposition / further detailing of this document will carried out
-iteratively between the SC planning group and the TC.
+iteratively between the SC planning group and the SAT.
The commodity functionality within the profiles will describe the functionality to be supported
by the GENIVI Reference implementation.
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page references References
\section geniviAllianceDocuments GENIVI Alliance Documents
-Stakeholder Needs Document SHN-01
-
-Requirements Document REQ-01
+\li Stakeholder Needs Document (GENIVI Document SND0001)
+\li Requirements Document (GENIVI Document REQ0001)
\section otherDocuments Other Documents
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page definitions Definitions
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page acronymsAndAbbreviations Acronyms and Abbreviations
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page context Context
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page specification Specification
\li Load and instantiate Communication and Rendering packages to be used.
These will typically create own threads internally. It must be possible
to load these at runtime in order to have maximum flexibility.
-\li Call initialization method on loaded packages
-\li Call run method on loaded packages
+\li Call start method on loaded packages
\li Communication Packages will now typically wait for IPC Calls for creating
surfaces, layers etc and arranging themselves. Rendering packages will now
typically start rendering all known layers and their surfaces.
+\image html ./doc/images/layermanager_lifecycle.png LayerManagerService Lifecycle
+\image latex ./doc/images/layermanager_lifecycle.png LayerManagerService Lifecycle
\section componentInterfaces Component Interfaces
\subsection componentInterfacesCommands Commands
-See \ref Commands.
+The IPC Message interfaces are described in \ref Commands.
\section componentInterfacesRequirements Requirements
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page functionalOverview Functional Overview
and sends a SetVisibilityCommand to hide the layer with user applications or to show
a notification layer.
-\image html ./doc/images/uml_sequence_example.png UML Sequence example
-\image latex ./doc/images/uml_sequence_example.png UML Sequence example
+\image html ./doc/images/uml_sequence_example_ids_managed_by_layermanagement.png UML Sequence example, IDs managed by LayerManagement
+\image latex ./doc/images/uml_sequence_example_ids_managed_by_layermanagement.png UML Sequence example, IDs managed by LayerManagement
+
+\image html ./doc/images/uml_sequence_example_ids_managed_by_application.png UML Sequence example, IDs managed by Application
+\image latex ./doc/images/uml_sequence_example_ids_managed_by_application.png UML Sequence example, IDs managed by Application
Similarly the management application would set multiple properties of multiple surfaces and layers in order to react to user input (change to an application or switch to a “TV mode” etc).
Course of events:
\li (1) Application creates window using native window system
-\li (2) Gets native window handle
-\li (3) Platform dependant renderer gets new window event from window system
-\li (4) Application registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
+\li (2) Platform dependant renderer gets new window event from window system
+\li (3) Gets native window handle
+\li (4) Application registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface.The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
\li (5) Layermanager returns the newly created surface identifier
\li (6) Application uses this identifier to set properties of its surface
Course of events:
-\li (1) Application creates window using native window system
-\li (2) Gets native window handle
-\li (3) Platform dependant renderer gets new window event from window system
-\li (4) Application registers with central control instance, maybe presenting a certificate or AppID ( this can be proprietary)
-\li (5) The control instance registers/requests logical surface from Layer Management including native window id, width, height and pixelformat of the surface. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid.
-\li (6) Layermanager returns the newly created surface identifier
-\li (7) Control instance uses this identifier to set properties of the application's surface
-\li (8) Later an external event occurs (e.g. telephone call) at the control instance
-\li (9) Control instance decides to change the graphical arrangement to blend out all applications except telephone application
+\li (1) The control instance creates all Layers and Surfaces of the scene according to their properties including native window id, width, height and pixelformat of the surface.
+\li (2) The control instance configures the scene to show the client application
+\li (3) Application creates window using native window system
+\li (4) Platform dependant renderer gets new window event from window system
+\li (5) Gets native window handle
+\li (6) The client application registers its native window at the LayerManager. The renderer uses the given native window id to access the graphical content, this content is associated with the logical surfaceid that was created by the control instance.
+
+Now the client application is rendered on screen.
+
+\li (7) An external event occurs (e.g. phone call) at the control instance
+\li (8) Control instance decides to change the graphical arrangement to blend out all applications except telephone application
+
+Now only the phone application is rendered on screen.
*/
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page designOverview Design Overview
\li Layer Management
\li One Renderer package
-\li One or more Communication packages
+\li One or more Communicator packages
The Layer Management Service component makes use of the following external packages provided by the application framework:
-\li Renderer and Communication packages which in turn depend on other packages/frameworks for the communication (e.g. middle ware) or the device dependent rendering (e.g. graphic frameworks)
+\li Renderer and Communicator packages which in turn depend on other packages/frameworks for the communication (e.g. middle ware) or the device dependent rendering (e.g. graphic frameworks)
The diagram below shows the relationships between the packages:
\image html ./doc/images/layer_management_package_interaction.png Layer Management Package Interaction
\image latex ./doc/images/layer_management_package_interaction.png Layer Management Package Interaction
+The diagram below shows the command flow from the client application calling the \ref ilmClient to the
+final screen update:
+
+\image html ./doc/images/command_flow.png Layer Management Command Flow
+\image latex ./doc/images/command_flow.png Layer Management Command Flow
+
The diagram below shows dependencies to all software components used by the LayerManager:
\image html ./doc/images/layer_management_package_dependencies.png Layer Management Package Dependencies (DL = Dynamic Linking)
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page controlPackage Service Package
\section controlPackageOverview Overview
This is the main package for the Layer Management Service.
+Its main purpose is creating all required objects for managing
+the scene and loading the renderer and communicator plugins.
+
+All configuration options are handled in this component and delegated
+to the corrensponding instances. This includes the handling of all
+command line arguments provided during the start of LayerManagementService.
+
+Additioanlly, this package provides the definitions for many important
+APIs, e.g.
+\li \ref RendererAPI
+\li \ref CommunicatorAPI
+\li \ref SceneAPI
+
+data types, e.g.
+\li Layer
+\li Surface
+\li Shader
+
+and provides implementations for common classes, e.g.
+\li Log
+\li Rectangle
+\li Vector2
\section servicePackageObjectModel Object Model
\subsection layerManagementServicePublicInterface Public Interface
-See \ref ServiceAPI.
+The interface of the Service package is described in more detail in \ref ServiceAPI.
*/
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page scenePackage Scene Package
\section scenePackagePublicInterface Public Interface
-See \ref SceneAPI.
+The interface of the Scene package is described in more detail in \ref SceneAPI.
*/
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page communicationsPackage Communications Package
which are both mandatory for a communicator library. Their name is specified by the
following naming scheme:
-\li \code <Library_Name>* create<Library_Name>(CommandExecutor*, LayerList*) \endcode
+\li \code ICommunicator* create<Library_Name>(ICommandExecutor*) \endcode
\li \code void destroy<Library_Name>(<Library_Name>*) \endcode
In order to be loadable by the layermanager, the created shared library must provide
\li \code virtual void stop(void) \endcode
(3) Create the static functions (see example source code below)
+
\li \code
extern "C"
-MyCommunicator* createMyCommunicator(CommandExecutor* ex, LayerList* ll)
+ICommunicator* createMyCommunicator(ICommandExecutor* pExecutor)
{
- return new MyCommunicator(ex, ll);
+ return new MyCommunicator(pExecutor);
}
\endcode
\li \code
extern "C"
-void destroyMyCommunicator(MyCommunicator* comm)
+void destroyMyCommunicator(MyCommunicator* pCommunicator)
{
- delete comm;
+ delete pCommunicator;
}
\endcode
(5) Link the implementation to a shared library called “libMyCommunicator.so”
+\section communicationsPackageReferenceImplementation Reference Implementation
+
+The LayerManagement package contains a reference
+implementation for a communicator, which is based on DBUS.
+
+The source code is available in the
+\code <package_root>/LayerManagerPlugins/Communicators/DBUSCommunicator \endcode
+directory.
+
\section communicationsPackagePublicInterface Public Interface
-See \ref CommunicatorAPI.
+The interface of the Communicator package is described in more detail in \ref CommunicatorAPI.
\section communicationsPackageClientInterface Client Interface
-See \ref ilmClient.
+The interface of the Layer Manager Client package is described in more detail in \ref ilmClient.
\section communicationsPackageCommandObjectReference Command Object Reference
-See \ref Commands.
+The description of all available Layer Manager Commands is available in \ref Commands.
*/
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page rendererPackage Renderer Package
points, which are both mandatory for a renderer library. Their name is specified
by the following naming scheme:
-\li \code IRenderer* create<Library_Name>(LayerList*) \endcode
+
+\li \code BaseRenderer* create<Library_Name>(Scene*) \endcode
\li \code void destroy<Library_Name>(<Library_Name>*) \endcode
In order to be loadable by the layermanager, the created shared library must provide
(3) Create the static functions (see example source code below)
\li \code extern "C"
-IRenderer* createMyRenderer(LayerList* ll)
-{
- return new MyRenderer(ll);
+BaseRenderer* createMyRenderer(Scene* pScene){
+ return new MyRenderer(pScene);
}
\endcode
\li \code extern "C"
-void destroyMyRenderer(MyRenderer* renderer)
+void destroyMyRenderer(MyRenderer* pRenderer)
{
- delete renderer;
+ delete pRenderer;
}
\endcode
(5) Link the implementation to a shared library called “libMyRenderer.so”
+\section rendererPackageReferenceImplementation Reference Implementation
+
+The LayerManagement package contains two reference
+implementations for renderers. One is based on OpenGL, the other is based
+on OpenGL ES 2.0. Both implementations rely on the X11 backend server.
+
+The source code for the OpenGL/X11-based reference renderer is available in the
+\code <package_root>/LayerManagerPlugins/Renderers/Platform/GLXRenderer \endcode
+directory.
+
+The source code for the OpenGL ES 2.0/X11-based reference renderer is available in the
+\code <package_root>/LayerManagerPlugins/Renderers/Platform/X11GLESRenderer \endcode
+directory.
+
\section rendererPackagePublicInterface Public Interface
-See \ref RendererAPI.
+The interface of the Renderer package is described in more detail in \ref RendererAPI.
*/
--- /dev/null
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/*!
+
+\page implementationNotes Implementation Notes
+
+The Layer Management service consists of platform independent
+and platform dependent components. On each platform a separate
+renderer and if required a separate communicator have to be
+implemented.
+
+\section implementationNotesReferenceCommunicator Reference Communicator
+
+The GENIVI reference communicator implementation depends on
+\li DBUS interface.
+
+\section implementationNotesOpenGLRenderer OpenGL Reference Renderer
+
+The OpenGL based renderer uses
+\li X-Composite
+\li X-Damage
+
+to access the content of different applications and depends on
+\li the glx extension GLX_EXT_Texture_from_pixmap
+\li the blending mode of OpenGL
+
+for compositing.
+
+\section implementationNotesOpenGLESRenderer OpenGL ES 2.0 Reference Renderer
+
+The OpenGL ES 2.0 based renderer uses
+\li X-Composite
+\li X-Damage
+
+to access the content of different applications and depends on
+\li glEGLImageTargetTexture2DOES
+\li eglCreateImageKHR
+\li eglDestroyImageKHR
+\li support for creating an egl image from an X11 pixmap
+
+for compositing.
+
+*/
+++ /dev/null
-/*!
-
-\page implementationNotes Implementation Notes
-
-The Layer Management service consists of platform independent
-and platform dependent components. On each platform a separate
-renderer and if required a separate communicator have to be
-implemented. The GENIVI reference implementation uses for
-the communicator a DBUS interface and for the reference renderer an X11
-renderer which is using X-Composite and X-Damage to access the
-content of different applications. For the compositing itself the
-glx extension GLX_EXT_Texture_from_pixmap and the blending mode
-of OpenGL/OpenGL ES are used.
-
-*/
+++ /dev/null
-/*!
-
-\page testing Testing
-
-All packages (Communication, Renderers, Scene and Layermanager) must be tested on
-their own. The division of the Layer Management Service into these packages
-provides an easy usage of black box testing. For example all communication packages
-should be black box tested by configuring the communication package under test
-with a mock Layer Management, then using the provided communication channel it
-should be verified, that received messages result in “execute” calls to the Layer
-Management. This way the wanted functionality of communication packages can be
-tested fully.
-
-In a similar way, renderers can be tested by providing certain constellations of
-layers, surfaces and their properties in a mock Layerlist. This mock layerlist is
-then given to the renderer under test and then checking for the desired output of
-the renderer (positioning, overlapping, transparency etc).
-
-The implementation of the Scene can also be tested by automatic tests,
-inserting new layers, groups and surfaces, then changing properties and comparing
-the results of subsequent calls to getter methods with the desired values.
-
-For a smoke test based approach constellations of communication packages and
-renderers can be tested by starting up the Layer Management, inserting automated
-messages into the communication channel and comparing the rendered result to the
-desired output or resulting changes.
-
-*/
--- /dev/null
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
+/*!
+
+\page testing Testing
+
+\section testingOverview Overview
+
+All packages (Communicator, Renderers, Scene and Layermanager) must be tested on
+their own. The division of the Layer Management Service into these packages
+provides an easy usage of black box testing.
+
+For a smoke test based approach constellations of communicator packages and
+renderers can be tested by starting up the Layer Management, inserting automated
+messages into the communicator channel and comparing the rendered result to the
+desired output or resulting changes.
+
+\section testingCommunicator Communicator
+
+All communicator packages
+should be black box tested by configuring the communicator package under test
+with a mock Layer Management, then using the provided communicator channel it
+should be verified, that received messages result in “execute” calls to the Layer
+Management. This way the wanted functionality of communicator packages can be
+tested fully.
+
+\section testingRenderers Renderers
+
+In a similar way, renderers can be tested by providing certain constellations of
+layers, surfaces and their properties in a mock Layerlist. This mock layerlist is
+then given to the renderer under test and then checking for the desired output of
+the renderer (positioning, overlapping, transparency etc).
+
+\section testingScene Scene
+
+The implementation of the Scene can also be tested by automatic tests,
+inserting new layers, groups and surfaces, then changing properties and comparing
+the results of subsequent calls to getter methods with the desired values.
+
+*/
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page traceability Traceability to the Requirements
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page constraintsAndAssumptions Constraints and Assumptions
+/***************************************************************************
+*
+* Copyright 2012 BMW Car IT GmbH
+*
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+****************************************************************************/
/*!
\page futureRequirements Future Requirements
+%**************************************************************************
+%
+% Copyright 2012 BMW Car IT GmbH
+%
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+% http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+%
+%***************************************************************************
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{doxygen}
+%**************************************************************************
+%
+% Copyright 2012 BMW Car IT GmbH
+%
+%
+% Licensed under the Apache License, Version 2.0 (the "License");
+% you may not use this file except in compliance with the License.
+% You may obtain a copy of the License at
+%
+% http://www.apache.org/licenses/LICENSE-2.0
+%
+% Unless required by applicable law or agreed to in writing, software
+% distributed under the License is distributed on an "AS IS" BASIS,
+% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+% See the License for the specific language governing permissions and
+% limitations under the License.
+%
+%***************************************************************************
\documentclass[a4paper]{article}
\usepackage{a4wide}
\usepackage{makeidx}
\fi
\usepackage[utf8]{inputenc}
\usepackage{doxygen}
-\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=8,numbers=left }
+\lstset{language=C++,inputencoding=utf8,basicstyle=\footnotesize,breaklines=true,breakatwhitespace=true,tabsize=4,numbers=left }
\makeindex
\setcounter{tocdepth}{2}
\renewcommand{\footrulewidth}{0.4pt}
+
+
+\lfoot{}
+\cfoot{Component Design for $projectname, Version 2.0}
+\rfoot{}
+
+
\begin{document}
\hypersetup{pageanchor=false}
\begin{titlepage}
LATEX_PATH=./doc_generated/latex
PDF_NAME=GENIVI_LayerManagement_Design_v2_0_MG0001
+
+#==============================================================================
echo "starting doxygen."
+#==============================================================================
echo "generating html and latex documentation..."
doxygen
-# doxygen will generate more section of the document
+#==============================================================================
+echo "patching latex main document..."
+#==============================================================================
+# doxygen will generate more sections of the document
# than neccessary for the specififcation document.
# This processing step removes the unneccessary sections
# from the main latex file, so they won't be included in
# the resulting PDF file.
-echo "patching latex main document..."
+
MAIN_PAGE=`cat $LATEX_PATH/refman.tex`
echo "$MAIN_PAGE" \
| grep -Ev "{struct|{class" \
| grep -Ev "{Class Documentation}" \
> $LATEX_PATH/refman.tex
+
+#==============================================================================
echo "creating PDF from latex documentation."
+#==============================================================================
cd $LATEX_PATH
make &> /dev/null
cd -
+
+#==============================================================================
echo "applying name to PDF document..."
+#==============================================================================
cp $LATEX_PATH/refman.pdf ./$PDF_NAME.pdf
+
+#==============================================================================
echo "The LayerManagement specification was stored here:"
+#==============================================================================
echo "`pwd`/$PDF_NAME.pdf"