class Scene;
/**
- * Objects who implement this interface can be used to have command objects executed. Communication
- * classes must only know this interface of a class to be able to pass along command objects.
+ * \brief Interface for LayerManagement Command Executors
*
- * Implementation detail: This interface is used to reduce dependency of communicators on the main layermanagement component
+ * \defgroup ServiceAPI Layer Management Service API
+ *
+ * Objects who implement this interface can be used to have command objects
+ * executed. Communication classes must only know this interface of a class to
+ * be able to pass along command objects.
+ *
+ * \note This interface is used to reduce dependency of communicators on the
+ * main layermanagement component
*/
class ICommandExecutor
{
public:
+ /**
+ * \brief default destructor
+ * \ingroup ServiceAPI
+ */
virtual ~ICommandExecutor() {}
/**
- * Have a command processed.
- * @param commandToBeExecuted The command to be processed
+ * \brief Have a command processed.
+ * \ingroup ServiceAPI
+ * \param[in] commandToBeExecuted The command to be processed
+ * \return TRUE: execution of command successful
+ * \return FALSE: execution of command failed
*/
virtual bool execute(ICommand* commandToBeExecuted) = 0;
+ /**
+ * \brief start layer management
+ * \ingroup ServiceAPI
+ * \param[in] width width of screen to be used for layer management
+ * \param[in] height height of screen to be used for layer management
+ * \param[in] displayName name of screen to be used for layer management
+ * \return TRUE: start management successful
+ * \return FALSE: start management failed
+ */
virtual bool startManagement(const int width, const int height, const char* displayName) = 0;
+
+ /**
+ * \brief stop layer management
+ * \ingroup ServiceAPI
+ * \return TRUE: stopped management successfully
+ * \return FALSE: stopping management failed
+ */
virtual bool stopManagement() = 0;
+ /**
+ * \brief get handle to scene data structure
+ * \ingroup ServiceAPI
+ * \return Pointer to the internal scene data structure
+ */
virtual Scene* getScene(void) = 0;
// renderer management
+
+ /**
+ * \brief get list of renderer plugins currently used
+ * \ingroup ServiceAPI
+ * \return Pointer to list of renderer plugins
+ */
virtual RendererList* getRendererList(void) = 0;
+
+ /**
+ * \brief add a renderer to be used for layer management
+ * \ingroup ServiceAPI
+ * \param[in] renderer pointer to renderer object
+ */
virtual void addRenderer(IRenderer* renderer) = 0;
+
+ /**
+ * \brief remove renderer from layer management
+ * \ingroup ServiceAPI
+ * \param[in] renderer pointer to renderer object
+ */
virtual void removeRenderer(IRenderer* renderer) = 0;
// communicator management
+
+ /**
+ * \brief get list of communicator plugins currently used
+ * \ingroup ServiceAPI
+ * \return Pointer to internal list of communicators
+ */
virtual CommunicatorList* getCommunicatorList(void) = 0;
+
+ /**
+ *
+ * \brief add a communicator to be used for layer management
+ * \ingroup ServiceAPI
+ * \param[in] communicator pointer to communicator object
+ */
virtual void addCommunicator(ICommunicator* communicator) = 0;
+
+ /**
+ *
+ * \brief remove communicator from layer management
+ * \ingroup ServiceAPI
+ * \param[in] communicator pointer to communicator object
+ */
virtual void removeCommunicator(ICommunicator* communicator) = 0;
+ // scene provider management
+
+ /**
+ * \brief get list of scene provider plugins currently used
+ * \ingroup ServiceAPI
+ * \return Pointer to internal list of communicators
+ */
virtual SceneProviderList* getSceneProviderList(void) = 0;
+
+ /**
+ *
+ * \brief add a scene provider to be used for layer management
+ * \ingroup ServiceAPI
+ * \param[in] sceneProvider pointer to scene provider object
+ */
virtual void addSceneProvider(ISceneProvider* sceneProvider) = 0;
+
+ /**
+ *
+ * \brief remove scene provider from layer management
+ * \ingroup ServiceAPI
+ * \param[in] sceneProvider pointer to scene provider object
+ */
virtual void removeSceneProvider(ISceneProvider* sceneProvider) = 0;
+ // client application management
+
+ /**
+ * \brief get map of currently registered applications
+ * \ingroup ServiceAPI
+ * \return map of currently registered applications
+ */
virtual ApplicationReferenceMap* getApplicationReferenceMap(void) = 0;
+
+ /**
+ * \brief add application to list of currently registered applications
+ * \ingroup ServiceAPI
+ * \param[in] applicationReference pointer to application object
+ */
virtual void addApplicationReference(IApplicationReference* applicationReference) = 0;
+
+ /**
+ * \brief remove application from list of currently registered applications
+ * \ingroup ServiceAPI
+ * \param[in] applicationReference pointer to application object
+ */
virtual void removeApplicationReference(IApplicationReference* applicationReference) = 0;
- virtual unsigned int getLayerTypeCapabilities(const LayerType layertype) const = 0; // TODO: removeable, use default command processing ?
- virtual unsigned int getNumberOfHardwareLayers(const unsigned int screenID) const = 0; // TODO: removeable, use default command processing ?
- virtual unsigned int* getScreenResolution(const unsigned int screenID) const = 0; // TODO: removeable, use default command processing ?
- virtual unsigned int* getScreenIDs(unsigned int* length) const = 0; // TODO: removeable, use default command processing ?
+ /**
+ * \brief get capabilities of layer type
+ * \ingroup ServiceAPI
+ * \param[in] layertype layer type
+ * \return bitmask with capability flags set according to layer type capabilities
+ * \todo removable, use default command processing
+ */
+ virtual unsigned int getLayerTypeCapabilities(const LayerType layertype) const = 0;
+
+ /**
+ * \brief get number of supported hardware layers for screen
+ * \ingroup ServiceAPI
+ * \param[in] screenID id of screen
+ * \return number of supported hardware layers for screen
+ * \todo removable, use default command processing
+ */
+ virtual unsigned int getNumberOfHardwareLayers(const unsigned int screenID) const = 0;
+
+ /**
+ * \brief get resolution of screen
+ * \ingroup ServiceAPI
+ * \param[in] screenID id of screen
+ * \return array of integer with width and height of screen
+ * \todo removable, use default command processing
+ */
+ virtual unsigned int* getScreenResolution(const unsigned int screenID) const = 0;
+
+ /**
+ * \brief get list of available screens
+ * \ingroup ServiceAPI
+ * \param[out] length of returned array
+ * \return list of screen ids
+ * \todo removable, use default command processing
+ */
+ virtual unsigned int* getScreenIDs(unsigned int* length) const = 0;
};
#endif /* _COMMANDEXECUTOR_H_ */