graphicsresourceservices/graphicsresourceadaptation/inc/sgimagecollectionimpl.h
changeset 0 5d03bc08d59c
--- /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