--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/m3g/m3gcore11/inc/m3g_image.h Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,135 @@
+/*
+* 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 the License "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: Image interface
+*
+*/
+
+#ifndef __M3G_IMAGE_H__
+#define __M3G_IMAGE_H__
+
+/*!
+ * \internal
+ * \file
+ * \brief Image interface
+ */
+
+#include "m3g_object.h"
+#include "m3g_gl.h"
+
+#if !defined(M3G_NGL_TEXTURE_API)
+typedef struct LargeImageImpl LargeImage;
+#endif
+
+/*!
+ * \internal
+ * \brief Image object
+ */
+struct M3GImageImpl
+{
+ Object object;
+
+ M3Gint width, height;
+ M3GImageFormat format;
+ M3GPixelFormat internalFormat;
+
+ Image *powerOfTwo;
+
+ GLenum glFormat;
+# if !defined(M3G_NGL_TEXTURE_API)
+ GLuint texObject;
+ LargeImage *large; /*! \internal \ */
+# endif
+
+ M3GMemObject data;
+ M3GMemObject mipData;
+ M3Gsizei paletteBytes;
+
+ M3Gbitmask flags : 8; /* flags defined in m3g_core.h */
+ M3Gbitmask special : 8; /* flags defined below */
+
+ M3Gbool pinned : 1; /* image can not be deleted */
+ M3Gbool dirty : 1;
+ M3Gbool powerOfTwoDirty : 1;
+ M3Gbool mipDataMapCount : 4; /* max. 16 concurrent uses */
+# if !defined(M3G_NGL_TEXTURE_API)
+ M3Gbool mipmapsDirty : 1; /*!< \internal 'dirty' overrides this */
+# endif
+
+ /* For easy cloning of immutable images without replicating the
+ * data, we must keep a reference to the original so that it isn't
+ * deleted until we are */
+
+ Image *copyOf;
+};
+
+/*!
+ * \internal \brief "special" flag bits */
+#define IMG_NPOT 0x01
+#define IMG_LARGE 0x02
+
+/*----------------------------------------------------------------------
+ * Internal functions
+ *--------------------------------------------------------------------*/
+
+static void m3gBindTextureImage(Image *img, M3Genum levelFilter, M3Genum imageFilter);
+static void m3gReleaseTextureImage(Image *img);
+
+static Image *m3gGetPowerOfTwoImage(Image *img);
+
+static M3GPixelFormat m3gPixelFormat (M3GImageFormat format);
+static M3Gint m3gBytesPerPixel(M3GPixelFormat format);
+
+static void m3gConvertPixels(M3GPixelFormat srcFormat, const M3Gubyte *src,
+ M3GPixelFormat dstFormat, M3Gubyte *dst,
+ M3Gsizei count);
+
+static void m3gConvertPixelRect(
+ M3GPixelFormat srcFormat, const M3Gubyte *src, M3Gsizei srcStride,
+ M3Gsizei width, M3Gsizei height,
+ M3GPixelFormat dstFormat, M3Gubyte *dst, M3Gsizei dstStride);
+
+static void m3gCopyImagePixels(Image *dst, const Image *src);
+#if !defined(M3G_NGL_TEXTURE_API)
+static void m3gCopyFrameBufferImage(Image *dst);
+static void m3gDrawFrameBufferImage(RenderContext *ctx, const Image *src);
+#endif /* !defined(M3G_NGL_TEXTURE_API)*/
+
+static void m3gInvalidateImage(Image *img);
+
+#if defined(M3G_NGL_TEXTURE_API)
+static M3Gbool m3gValidateMipmapMemory(Image *img);
+#endif
+
+/*! \internal */
+static M3Gsizei m3gGetImageStride(const Image *img);
+
+static M3Gint m3gGetAlpha(Image *image, M3Gint x, M3Gint y);
+
+static M3G_INLINE M3Gbool m3gIsInternallyPaletted(const Image *img)
+{
+ return (img->paletteBytes > 0);
+}
+
+#if 0
+/*!
+ * \internal
+ * \brief Type-safe helper function
+ */
+static M3G_INLINE void m3gDeleteImage(Image *img)
+{
+ m3gDeleteObject((Object*) img);
+}
+#endif
+
+#endif /*__M3G_IMAGE_H__*/