diff -r 000000000000 -r 5d03bc08d59c graphicsresourceservices/graphicsresourceadaptation/inc/sgimagecollectionimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicsresourceservices/graphicsresourceadaptation/inc/sgimagecollectionimpl.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,75 @@ +// Copyright (c) 2007-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: +// + +/** + @file + @internalComponent +*/ + +#ifndef SGIMAGECOLLECTIONIMPL_H +#define SGIMAGECOLLECTIONIMPL_H + +#include "sgimagecollectionadapter.h" +#include "sgdriverimpl.h" + + +/** +@internalComponent + +An adapter object representing an image collection. Image collections are always +stored as surfaces. All the images in a collection have the same metadata, which +is stored at the beginning of the underlying memory chunk. + +If several image collections share a single memory chunk then the metadata is stored +in an array with as many elements as image collections, while the pixel data of +each image in any of the collections shares the surface buffer with the corresponding +images in the other collections. +*/ +class XSgImageCollectionImpl: public XSgBase, public MSgImageCollectionAdapter + { +public: + static TInt New(XSgImageCollectionImpl*& aPtr, XSgDriverImpl& aDriverImpl, + const TSgImageInfo& aInfo, TInt aImageCount, TBool aIsCached, + TInt aStride, TInt aOffsetToFirstBuffer, TInt aOffsetBetweenBuffers, + TInt aMetaDataIndex = 0, const XSgImageCollectionImpl* aCollection = NULL); + ~XSgImageCollectionImpl(); + // From MSgResourceAdapter + void Close(); + // From MSgImageCollectionAdapter + const TSurfaceId& SurfaceId() const; + TInt GetInfo(TSgImageInfo& aInfo) const; + TInt Count() const; + TInt OpenImage(TInt aIndex, MSgDrawableAdapter*& aResult); +private: + inline XSgImageCollectionImpl(XSgDriverImpl& aDriverImpl); + TInt Construct(const TSgImageInfo& aInfo, TInt aImageCount, TBool aIsCached, + TInt aStride, TInt aOffsetToFirstBuffer, TInt aOffsetBetweenBuffers, + TInt aMetaDataIndex, const XSgImageCollectionImpl* aCollection); +private: + /** The surface identifier of the image collection. */ + TSurfaceId iSurfaceId; + /** The number of images in the collection. */ + TInt iCount; + /** Handle to the underlying memory chunk. */ + RChunk iDataChunk; + /** Index into the metadata array. */ + TInt iMetaDataIndex; + }; + + +#include "sgimagecollectionimpl.inl" + + +#endif // SGIMAGECOLLECTIONIMPL_H