diff -r 000000000000 -r d46562c3d99d svgtopt/VGRenderer/inc/VGSurface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/VGRenderer/inc/VGSurface.h Thu Jan 07 16:19:02 2010 +0200 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2003 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: CVGSurface header file + * +*/ + +#ifndef VGSURFACE_H +#define VGSURFACE_H + +#include +#include + +#include "MVGSurfaceImpl.h" + +class RWindow; +class CFbsBitmap; +class CVGRenderer; + +/** + * CVGSurface + * + */ +class CVGSurface : public CBase + { +public: + enum SurfaceConfig + { + BTIMAP_HEADER = MVGSurfaceImpl::BTIMAP_HEADER, + ALPHA_SIZE = MVGSurfaceImpl::ALPHA_SIZE, + ALPHA_MASK_SIZE = MVGSurfaceImpl::ALPHA_MASK_SIZE + }; + + /** + * Destructor. + */ + ~CVGSurface(); + + /*! + * @fn NewL() + * @bief Creates the renderer surface abstraction + * @param aVGSurfaceImpl The surface implementation + * @return Renderer surface abstraction + */ + static CVGSurface* NewL(MVGSurfaceImpl *aVGSurfaceImpl); + + /*! + * @fn NewL() + * @bief Creates the renderer surface abstraction + * @param aVGSurfaceImpl The surface implementation + * @return Renderer surface abstraction + */ + static CVGSurface* NewLC(MVGSurfaceImpl *aVGSurfaceImpl); + + /*! + * @fn InitializeSurface(TSize aSize, TInt aColorSpace) + * @bief Initialize the surface + * @param aSize The surface size + * @param aColorSpace This is optional with egl + * @return KErrNone in case of succesfull, appropriate error code otherwise + */ + TInt InitializeSurface(TSize aSize, TInt aColorSpace) + { + return iImpl->InitializeSurface(aSize, aColorSpace); + } + + /*! + * @fn CreateSurface(RWindow *aSurface, CFbsBitmap *aBitmap) + * @bief Creates the actual rendering surface + * @param aDisplayMode The display mode + * @param aSurface The window object + * @param aBitmap The bitmao object, is optional + * @return KErrNone in case of succesfull, appropriate error code otherwise + */ + TInt CreateSurface(TInt aDisplayMode, RWindow *aSurface, CFbsBitmap *aBitmap) + { + return iImpl->CreateSurface(aDisplayMode, aSurface, aBitmap); + } + + /*! + * @fn ResizeSurface(TSize aSize) + * @bief Resizes the surface + * @param aSize The new size + * @return KErrNone in case of succesfull, appropriate error code otherwise + */ + TInt ResizeSurface(TSize aSize) + { + return iImpl->ResizeSurface(aSize); + } + + /*! + * @fn SetConfiguration + * @brief sets surface/context/display configuration options + * @param aOption name of the option + * @param aValue value(s) for the option + */ + void SetConfiguration(TInt aOption, const TAny* aValue) + { + return iImpl->SetConfiguration(aOption, aValue); + } + /*! + * @fn CopyBitmap(CFbsBitmap *aBitmap, CFbsBitmap *aMask, TInt aOption) + * @brief copies the bitmap from the surface to the given bitmap + * @param aDisplayMode The display mode + * @param aBitmap The bitmap where the content will be copied + * @param aMask Mask + * @param aOption Options, may be required for VGI calls + */ + TInt CopyBitmap(TInt aDisplayMode,TInt aMaskMode,CFbsBitmap *aBitmap, CFbsBitmap *aMask, TSize aSize) + { + return iImpl->CopyBitmap(aDisplayMode,aMaskMode, aBitmap, aMask, aSize); + } + + /** + * @fn PrepareToBindClientBuffer + * Prepares the renderer to bind to an image. + * This is added to allow some performance improvement the TLV renderer + * This method should be called before creating the VGImage, which should be made as the surface. + * No other image should be created after calling this function + */ + TInt PrepareToBindClientBuffer() + { + return iImpl->PrepareToBindClientBuffer(); + } + /*! + * @fn BindSurfaces(TInt buffer) + * @brief This function is used for Binding Off-Screen Rendering Surfaces To Client Buffers + * @param buffer is a client API reference to the buffer to be bound. buffer must be a valid VGImage handle. + * @return 0 if success + */ + TInt BindClientBuffer(TInt buffer) + { + return iImpl->BindClientBuffer(buffer); + } + + /*! + * @fn UnbindSurface(TInt surface) + * @brief copies the bitmap from the surface to the given bitmap + * @param aBitmap The bitmap where the content will be copied + * @param aMask Mask + * @param aOption Options, may be required for VGI calls + * @return 0 if success + */ + TInt UnBindClientBuffer() + { + return iImpl->UnBindClientBuffer(); + } + /*! + * @fn TerminateSurface() + * @brief Will destroy the surface + */ + void TerminateSurface() + { + iImpl->TerminateSurface(); + } + + +private: + + CVGSurface(); + + /** + * default constructor for performing 2nd stage construction + */ + void ConstructL(MVGSurfaceImpl *aVGSurfaceImpl); + + MVGSurfaceImpl *iImpl; + }; + +#endif // VGSURFACE_H