diff -r 000000000000 -r 5d03bc08d59c windowing/windowserver/inc/Graphics/wsdrawresource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/inc/Graphics/wsdrawresource.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,161 @@ +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +/** + @publishedPartner + @prototype +*/ + +#ifndef __WSDRAWRESOURCE_H__ +#define __WSDRAWRESOURCE_H__ + +#include +#include + +class RWsDrawableSource; + +/** +The UID for MWsDrawResource. +@see MWsDrawResource +@see CWindowGc::Interface +@publishedPartner +@prototype +*/ +static const TUid KMWsDrawResourceInterfaceUid = { 0x102864E9 }; + +/** +An extension interface for CWindowGc and CRemoteGc to draw RWsDrawableSources. + +Usage: +@code +MWsDrawResource* gcDrawResource = static_cast(gc->Interface(KMWsDrawResourceInterfaceUid)); +if(gcDrawResource) + { + gcDrawResource->DrawResource(TPoint(5,5), drawableSource); + } +@endcode +@see RWsDrawableSource +@see CWindowGc::Interface +@publishedPartner +@prototype +*/ +class MWsDrawResource + { +public: + /** + Draws an image based resource which may be generated using non-native rendering API such as OpenGL ES + or OpenVG. The resource will be drawn at the specified position in its original size with orientation + according to the specified rotation parameter. The current clipping region applies. + + @see RWsDrawableSource + + @param aPos The position of the top-left corner on a window. + @param aSource The resource to be drawn. + @param aRotation The rotation to be applied to the resource before it is drawn. The default value is CWindowGc::EGraphicsRotationNone. + + @pre Drawing context has been activated on a window. The drawable source has been created. + @post Request to draw resource has been accepted. There is no guarantee that the request has been completed + when this method returns. + */ + virtual void DrawResource(const TPoint& aPos, const RWsDrawableSource& aSource, CWindowGc::TGraphicsRotation aRotation=CWindowGc::EGraphicsRotationNone) = 0; + + /** + Draws an image based resource. The resource will be rendered to the given destination rectangle on + the window in its original dimensions with orientation according to the specified rotation parameter. + Drawing will be clipped to the given destination rectangle. The current clipping region applies. The resource can be + drawn rotated using the CWindowGc::TGraphicsRotation enum which defines possible rotation values in + clockwise degrees. + + @see RWsDrawableSource + + @param aDestRect Destination rectangle to which the resource will be rendered. + @param aSource The resource to be drawn. + @param aRotation The rotation to be applied to the resource before it is drawn. The default value is CWindowGc::EGraphicsRotationNone. + + @pre Drawing context has been activated on a window. The drawable source has been created. + @post Request to draw resource has been accepted. There is no guarantee that the request has been completed + when this method returns. + */ + virtual void DrawResource(const TRect& aDestRect, const RWsDrawableSource& aSource, CWindowGc::TGraphicsRotation aRotation=CWindowGc::EGraphicsRotationNone) = 0; + + /** + Draws an image based resource. The resource is rendered into the given destination rectangle on a window. + Scaling (stretching or compression) applies if the destination rectangle is different from the + source rectangle. The resource orientation is set based on the specified rotation parameter + before scaling and drawing operations are performed. + + @see RWsDrawableSource + + @param aDestRect The destination rectangle to which the resource will be rendered on a window. + @param aSource The resource to draw. + @param aSrcRect The source rectangle specifying the area/sub-area of the resource to be rendered. + @param aRotation Rotation to be applied to the resource before it is drawn. The default value is CWindowGc::EGraphicsRotationNone. + + @pre Drawing context has been activated on a window. The drawable source has been created. + @post Request to draw an image based resource has been accepted. There is no guarantee that the + request has been completed when this method returns. + */ + virtual void DrawResource(const TRect& aDestRect, const RWsDrawableSource& aSource, const TRect& aSrcRect, CWindowGc::TGraphicsRotation aRotation=CWindowGc::EGraphicsRotationNone) = 0; + + /** + Draws a non-image based resource. The resource will be rendered into the given destination rectangle on a window. + The current clipping region applies. The adaptation is free to interpret the parameter aParam and may define + its own rules on how to handle the rendering of a non-image based resource. + + @see RWsDrawableSource + + @param aDestRect The destination rectangle to which the resource will be rendered on a window. + @param aSource The resource. + @param aParam Parameters specifying how to draw the resource. + + @pre Drawing context has been activated on a window. The drawable source has been created. + @post Request to draw a non-image based resource has been accepted. + There is no guarantee that the request has been completed when this method returns. + */ + virtual void DrawResource(const TRect& aDestRect, const RWsDrawableSource& aSource, const TDesC8& aParam) = 0; + }; + + +/** +The intention of this class is to enable drawing of drawables (RSgDrawable and RSgImage) +using CWindowGc and CRemoteGc. + +You have to use the extension interface MWsDrawResource in order to use this class with +CWindowGc and CRemoteGc. + +@publishedPartner +@prototype +@see RSgDrawable +@see RSgImage +@see MWsDrawResource +*/ +class RWsDrawableSource : public MWsClientClass + { +public: + IMPORT_C RWsDrawableSource(); + IMPORT_C RWsDrawableSource(RWsSession& aWs); + IMPORT_C TInt Create(const RSgDrawable& aDrawable); + IMPORT_C TInt Create(const RSgDrawable& aDrawable, TInt aScreenNumber); + IMPORT_C const TSgDrawableId& DrawableId() const; + IMPORT_C TInt ScreenNumber() const; + IMPORT_C void Close(); +private: + TSgDrawableId iDrawableId; + TInt iScreenNumber; + TInt iReserved; // reserved for use by Symbian + }; + +#endif //__WSDRAWRESOURCE_H__ +