diff -r 29ddb8a72f0e -r 9f1c3fea0f87 graphicscomposition/openwfcompositionengine/inc/openwfc_ri_display_update.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicscomposition/openwfcompositionengine/inc/openwfc_ri_display_update.h Wed Aug 18 11:05:09 2010 +0300 @@ -0,0 +1,133 @@ +// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and/or associated documentation files (the +// "Materials"), to deal in the Materials without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Materials, and to +// permit persons to whom the Materials are furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Materials. +// +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +// +// Description: +// Display Update Abstract Interface +// +// + +#ifndef OPENWFC_RI_DISPLAY_UPDATE_H +#define OPENWFC_RI_DISPLAY_UPDATE_H + +#include +#include + +/** + * \brief Abstract interface used by OPENWF-C SI in order to display + * the composed content + * + */ + +class MOpenWFC_RI_Display_Update + { +public: + /** + * Retrieves one of the display attributes + * + * @param aAttributeId The attribute ID to be retrieved. + * @param aAttribute Pointer to the attribute to be retrieved + * @param aAttributeSize Size in bytes of attribute to be retrieved + * + * @return KErrNone or a system wide error + */ + virtual TInt GetAttribute(TInt aAttributeId, TAny* aAttribute, TInt aAttributeSize) = 0; + + /** + * Sets one of the display attributes + * + * @param aAttributeId The attribute ID to be retrieved. + * @param aAttribute Pointer to the attribute to be retrieved + * @param aAttributeSize Size in bytes of attribute to be retrieved + * + * @return KErrNone or a system wide error + */ + virtual TInt SetAttribute(TInt aAttributeId, TAny* aAttribute, TInt aAttributeSize) = 0; + + /** + * Commits the display attribute. + * + * @return KErrNone or a system wide error + */ + virtual TInt CommitAttribute() = 0; + + /** + * Associates a stream with the topmost display layer (overlay). + * Must have been called successfully before calling UpdateDisplay. + * Also used to specify the composed output stream as the display layer. + * Note that currently this method is called each composition, + * but it is only necessary to call it when the top stream changes. + * + * This method may fail if any attributes of the stream cannot be handled by the display device. + * The aNonTrivialAttributes is a zero-terminated list of attribute keys and values + * that do not match the trivial cases for direct composition, but that some devices may support, + * representing eg mirror, scale, rotation, offset, or oversize cases. + * The implementation of this method will stop processing the list and fail if it does not recogise + * any of the keys or cannot accept the value associated with that key for direct display. + * All platforms should accept an empty or NULL list, but some may simply fail if the list is non-empty, + * so the caller should keep the list brief. + * + * If the method fails, then the caller must compose the content into a simpler format, + * and call SetTopLayerSurface again before calling UpdateDisplay. + * It is expected that there will be at least 1 pre-determined simpler format or stream handle that will always succeed. + * + * @param aStream The stream Id to be associated with the topmost layer + * @param aNonTrivialAttributes Attribute integer pair list of any non-trivial attribute values. + * + * @return KErrNone or a system wide error + */ + virtual TInt SetTopLayerSurface(SymbianStreamType aStream,TInt* aNonTrivialAttributes=NULL) = 0; + + /** + * Associates a stream with a specific layer. + * Must have been called successfully before calling UpdateDisplay. + * Note that currently this method is called each composition, + * but it is only necessary to call it when the stream stack changes, + * when all layers should be re-specified in turn before the next UpdateDisplay call. + * + * This method may fail if any attributes of the stream cannot be handled by the display device. + * The aNonTrivialAttributes is a zero-terminated list of attribute keys and values + * that do not match the trivial cases for direct composition, but that some devices may support, + * representing eg mirror, scale, rotation, offset, undersize or oversize cases, + * and could be used to represent multiple layers. + * The implementation of this method will fail if it does not recogise any of the keys + * or cannot accept the value associated with that key for direct display. + * All platforms should accept an empty or NULL list, but some may simply fail if the list is non-empty, + * so the caller should keep the list brief. + * + * If the method fails, then the caller must compose the content into a simpler format, + * and call SetTopLayerSurface (or SetLayerSurface) again before calling UpdateDisplay. + * + * @param aLayer The layer id. The layer number "0" is the topmost layer. + * @param aStream The stream Id to be associated with the specified layer, or SYMBIAN_INVALID_HANDLE. + * @param aNonTrivialAttributes Attribute integer pair list of any non-trivial attribute values. + * + * @return KErrNone or a system wide error + */ + virtual TInt SetLayerSurface(TInt aLayer, SymbianStreamType aStream,TInt* aNonTrivialAttributes=NULL) = 0; + + /** + * Update (flush/post) the screen + * + * @return KErrNone or a system wide error + */ + virtual TInt UpdateDisplay() = 0; + }; +#endif // OPENWFC_RI_DISPLAY_UPDATE_H