sl@0: /* Copyright (c) 2009 The Khronos Group Inc. sl@0: * Portions copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies) sl@0: * sl@0: * Permission is hereby granted, free of charge, to any person obtaining a sl@0: * copy of this software and/or associated documentation files (the sl@0: * "Materials"), to deal in the Materials without restriction, including sl@0: * without limitation the rights to use, copy, modify, merge, publish, sl@0: * distribute, sublicense, and/or sell copies of the Materials, and to sl@0: * permit persons to whom the Materials are furnished to do so, subject to sl@0: * the following conditions: sl@0: * sl@0: * The above copyright notice and this permission notice shall be included sl@0: * in all copies or substantial portions of the Materials. sl@0: * sl@0: * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, sl@0: * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF sl@0: * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. sl@0: * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY sl@0: * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, sl@0: * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE sl@0: * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. sl@0: */ sl@0: /*! \ingroup wfc sl@0: * \file wfcdevice.h sl@0: * sl@0: * \brief Device handling interface sl@0: */ sl@0: #ifndef WFCDEVICE_H_ sl@0: #define WFCDEVICE_H_ sl@0: sl@0: #include "WF/wfc.h" sl@0: #include "wfcstructs.h" sl@0: #include "wfcimageprovider.h" sl@0: sl@0: #ifdef __cplusplus sl@0: extern "C" { sl@0: #endif sl@0: sl@0: /*! sl@0: * Get list of available devices. sl@0: * sl@0: * \param idList Pointer to list where device IDs should be written sl@0: * \param listCapacity Maximum number of IDs to write sl@0: * \param filterList User provided array sl@0: * sl@0: * \return Number of IDs written. sl@0: */ sl@0: OWF_API_CALL WFCint sl@0: WFC_Devices_GetIds(WFCint* idList, sl@0: WFCint listCapacity, sl@0: const WFCint* filterList); sl@0: sl@0: /*! sl@0: * \brief Create instance of a device whose ID sl@0: * matches deviceId sl@0: * sl@0: * \param deviceId ID of the device to create. Must be WFC_DEFAULT_DEVICE_ID sl@0: * or some other valid device ID (returned by Devices_GetIds) sl@0: * sl@0: * \return Handle to created device or WFC_INVALID_HANDLE sl@0: * sl@0: */ sl@0: OWF_API_CALL WFCint sl@0: WFC_Device_Create(WFCint deviceId); sl@0: sl@0: /*! sl@0: * \brief Destroy device, or rather queue it for destruction. sl@0: * sl@0: * \param device Device sl@0: */ sl@0: OWF_API_CALL void sl@0: WFC_Device_Destroy(WFC_DEVICE* device); sl@0: sl@0: /*! sl@0: * \brief Set error code for device. sl@0: * sl@0: * Obs! In case the previous sl@0: * error code hasn't been read from the device, this function sl@0: * does nothing; the new error is set only if "current" error sl@0: * is none. sl@0: * sl@0: * \param dev Device object sl@0: * \param code Error to set sl@0: * sl@0: */ sl@0: OWF_API_CALL void OWF_APIENTRY sl@0: WFC_Device_SetError(WFCDevice dev, sl@0: WFCErrorCode code); sl@0: sl@0: /*! sl@0: * \brief Read and reset last error code from device. sl@0: * sl@0: * \param device Device object sl@0: * sl@0: * \return WFCErrorCode sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_GetError(WFC_DEVICE* device); sl@0: sl@0: /*! sl@0: * \brief Find device object by handle sl@0: * sl@0: * \param dev Device handle sl@0: * sl@0: * \return Mathing device object or NULL sl@0: */ sl@0: OWF_API_CALL WFC_DEVICE* sl@0: WFC_Device_FindByHandle(WFCDevice dev); sl@0: sl@0: /*! sl@0: * \brief Get device attribute sl@0: * sl@0: * \param device Device sl@0: * \param attrib Attribute name sl@0: * \param value Pointer to where the value should be saved sl@0: * sl@0: * \return WFCErrorCode sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_GetAttribi(WFC_DEVICE* device, sl@0: WFCDeviceAttrib attrib, sl@0: WFCint* value); sl@0: sl@0: /*! sl@0: * \brief Create context on device sl@0: * sl@0: * \param device Device sl@0: * \param stream Target stream for context sl@0: * \param type Context type sl@0: * sl@0: * \return New context sl@0: */ sl@0: OWF_API_CALL WFC_CONTEXT* sl@0: WFC_Device_CreateContext(WFC_DEVICE* device, sl@0: OWFNativeStreamType stream, sl@0: WFCContextType type, sl@0: WFCint screenNum); sl@0: sl@0: /*! sl@0: * \brief Destroy context from device sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_DestroyContext(WFC_DEVICE* device, sl@0: WFCContext context); sl@0: sl@0: /*! sl@0: * \brief Destroy all device's contexts sl@0: * sl@0: * \param device Device object sl@0: */ sl@0: OWF_API_CALL void sl@0: WFC_Device_DestroyContexts(WFC_DEVICE* device); sl@0: sl@0: /*! sl@0: * \brief Find context context object by handle sl@0: * sl@0: * \param device Device sl@0: * \param context Context handle sl@0: * sl@0: * \return Corresponding context object or NULL sl@0: * if handle is invalid. sl@0: */ sl@0: OWF_API_CALL WFC_CONTEXT* sl@0: WFC_Device_FindContext(WFC_DEVICE* device, sl@0: WFCContext context); sl@0: sl@0: /*! sl@0: * \brief Create new element sl@0: * sl@0: * \param device sl@0: * \param context sl@0: * sl@0: * \return New element or NULL sl@0: */ sl@0: OWF_API_CALL WFC_ELEMENT* sl@0: WFC_Device_CreateElement(WFC_DEVICE* device, WFC_CONTEXT* context); sl@0: sl@0: /*! sl@0: * \brief Destroy element sl@0: * sl@0: * \param device sl@0: * \param element sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_DestroyElement(WFC_DEVICE* device, sl@0: WFCElement element); sl@0: sl@0: /*! sl@0: * \brief Destroy all elements from device sl@0: * sl@0: * \param device Device sl@0: */ sl@0: OWF_API_CALL void sl@0: WFC_Device_DestroyElements(WFC_DEVICE* device); sl@0: sl@0: /*! sl@0: * \brief Find element by handle sl@0: * sl@0: * \param device Device sl@0: * \param el Element handle sl@0: * sl@0: * \return Element object sl@0: */ sl@0: OWF_API_CALL WFC_ELEMENT* sl@0: WFC_Device_FindElement(WFC_DEVICE* device, sl@0: WFCElement el); sl@0: sl@0: /*! sl@0: * \brief Set element integer vector attribute sl@0: * sl@0: * \param device Device sl@0: * \param element Element handle sl@0: * \param attrib Attribute name sl@0: * \param count Attribute value vector length (1 for scalar attribute) sl@0: * \param values Pointer to values sl@0: * sl@0: * \return WFCErrorCode: WFC_ERROR_BAD_ATTRIBUTE if attribute name is invalid; sl@0: * WFC_ERROR_INVALID_ARGUMENT if values is NULL or if the count doesn't match sl@0: * the attribute's size; WFC_ERROR_BAD_HANDLE if element handle is invalid. sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_SetElementAttribiv(WFC_DEVICE* device, sl@0: WFCElement element, sl@0: WFCElementAttrib attrib, sl@0: WFCint count, sl@0: const WFCint* values); sl@0: sl@0: /*! sl@0: * \brief Set element attribute sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_SetElementAttribfv(WFC_DEVICE* device, sl@0: WFCElement element, sl@0: WFCElementAttrib attrib, sl@0: WFCint count, sl@0: const WFCfloat* values); sl@0: /*! sl@0: * \brief Get element attribute sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_GetElementAttribiv(WFC_DEVICE* device, sl@0: WFCElement element, sl@0: WFCElementAttrib attrib, sl@0: WFCint count, sl@0: WFCint* values); sl@0: /*! sl@0: * \brief Get element attribute sl@0: */ sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_GetElementAttribfv(WFC_DEVICE* device, sl@0: WFCElement element, sl@0: WFCElementAttrib attrib, sl@0: WFCint count, sl@0: WFCfloat* values); sl@0: sl@0: sl@0: /*! sl@0: * \brief Destroy all image providers from device sl@0: * sl@0: * \param device Device sl@0: */ sl@0: OWF_API_CALL void sl@0: WFC_Device_DestroyImageProviders(WFC_DEVICE* device); sl@0: sl@0: OWF_API_CALL WFC_IMAGE_PROVIDER* sl@0: WFC_Device_FindImageProvider(WFC_DEVICE* device, sl@0: WFCHandle handle, sl@0: WFC_IMAGE_PROVIDER_TYPE type); sl@0: sl@0: OWF_API_CALL WFC_IMAGE_PROVIDER* sl@0: WFC_Device_CreateSource(WFC_DEVICE* device, sl@0: WFC_CONTEXT* context, sl@0: WFCNativeStreamType stream); sl@0: sl@0: OWF_API_CALL WFC_IMAGE_PROVIDER* sl@0: WFC_Device_CreateMask(WFC_DEVICE* device, sl@0: WFC_CONTEXT* context, sl@0: WFCNativeStreamType stream); sl@0: sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_DestroySource(WFC_DEVICE* device, WFCSource source); sl@0: sl@0: OWF_API_CALL WFCErrorCode sl@0: WFC_Device_DestroyMask(WFC_DEVICE* device, WFCMask mask); sl@0: sl@0: OWF_API_CALL WFC_IMAGE_PROVIDER* sl@0: WFC_Device_FindSource(WFC_DEVICE* device, WFCSource source); sl@0: sl@0: OWF_API_CALL WFC_IMAGE_PROVIDER* sl@0: WFC_Device_FindMask(WFC_DEVICE* device, WFCMask mask); sl@0: sl@0: OWF_API_CALL void sl@0: WFC_Device_EnableContentNotifications(WFC_DEVICE* device, sl@0: WFC_CONTEXT* context, sl@0: WFCboolean enable); sl@0: sl@0: OWF_API_CALL WFCboolean sl@0: WFC_Device_StreamIsTarget(WFC_DEVICE* device, sl@0: WFCNativeStreamType stream); sl@0: sl@0: OWF_API_CALL WFC_CONTEXT* sl@0: WFC_Device_FindContextByScreen(WFC_DEVICE* device, sl@0: WFCint screenNumber); sl@0: sl@0: OWF_API_CALL void sl@0: WFC_Device_DestroyContextElements(WFC_DEVICE* device, sl@0: WFC_CONTEXT* context); sl@0: sl@0: OWF_API_CALL void sl@0: WFC_Device_DestroyContextImageProviders(WFC_DEVICE* device, sl@0: WFC_CONTEXT* context); sl@0: sl@0: OWF_API_CALL WFCboolean sl@0: WFC_Device_FindScreenNumber(WFCint screenNumber); sl@0: sl@0: #ifdef __cplusplus sl@0: } sl@0: #endif sl@0: sl@0: #endif /*WFCDEVICE_H_*/