--- a/javauis/m3g_qt/src/jni/image2d.inl Tue May 11 16:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,293 +0,0 @@
-/*
-* Copyright (c) 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:
-*
-*/
-#include "javax_microedition_m3g_Image2D.h"
-
-JNIEXPORT void JNICALL Java_javax_microedition_m3g_Image2D__1set
-(JNIEnv* aEnv, jclass, jint aHImage2D, jint aX, jint aY, jint aWidth, jint aHeight, jbyteArray aImageArray)
-{
- jbyte* imageArray = NULL;
- if (aImageArray)
- {
- imageArray = aEnv->GetByteArrayElements(aImageArray, NULL);
- if (imageArray == NULL)
- {
- M3G_RAISE_EXCEPTION(aEnv, "java/lang/OutOfMemoryError");
- return;
- }
- }
- M3G_DO_LOCK
- m3gSetSubImage((M3GImage)aHImage2D, aX, aY, aWidth, aHeight, aImageArray ? aEnv->GetArrayLength(aImageArray) : NULL, imageArray);
- M3G_DO_UNLOCK(aEnv)
-
- if (imageArray)
- {
- aEnv->ReleaseByteArrayElements(aImageArray, imageArray, JNI_ABORT);
- }
-}
-
-static void getImageScanline(const QImage* qtImage,
- M3Gint line,
- M3Gint bpl,
- M3Guint *pixels,
- M3Gbool *trueAlpha)
-{
-
- // Get pointer to start of requested line
- const unsigned char* srcAddr = qtImage->bits() + line * bpl;
-
- // As input and output are in the same, i.e. #AARRGGBB format,
- // just run mem copy from source to destination to copy one line
- memcpy(pixels, srcAddr, bpl);
- *trueAlpha = false;
-}
-
-/*
- * Must be excuted in UI thread
- */
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1ctorImage
-(JNIEnv* aEnv, jclass, jint aHM3g, jint aFormat, jint aImageHandle)
-{
-
- if (aImageHandle != 0)
- {
- Java::GFX::Image* cgfxImage = reinterpret_cast<Java::GFX::Image*>(aImageHandle);
- QImage qtImage;
-
- if (!cgfxImage)
- {
- return 0;
- }
- else
- {
- qtImage = cgfxImage->toImage();
- if (qtImage.isNull())
- {
- return 0;
- }
- }
-
- // m3g needs format in 32bpp, i.e. in RGB32 or ARGB32 so
- // if format is not one of those convert it here
- if ((qtImage.format() != QImage::Format_ARGB32) || (qtImage.format() != QImage::Format_RGB32))
- {
- qtImage = qtImage.convertToFormat(QImage::Format_ARGB32);
- if (qtImage.isNull())
- {
- return 0;
- }
- }
-
- // Create Image2D
- M3GImage image;
- M3Gint width = qtImage.width();
- M3Gint height = qtImage.height();
- M3Gint bpl = qtImage.bytesPerLine();
-
- M3G_DO_LOCK
-
- image = m3gCreateImage((M3GInterface)aHM3g, (M3GImageFormat)aFormat, width, height, 0);
- if (image == NULL)
- {
- return 0; // exception automatically raised
- }
-
- M3Guint *tempPixels = (M3Guint *) malloc(width * 4);
- if (tempPixels == NULL)
- {
- m3gDeleteObject((M3GObject) image);
- return 0;
- }
-
- // read and write scanline by scanline
- for (M3Gint y = 0; y < height; ++y)
- {
- M3Gbool trueAlpha;
- getImageScanline(&qtImage, y, bpl, tempPixels, &trueAlpha);
- m3gSetImageScanline(image, y, trueAlpha, tempPixels);
- }
-
- // finally commit image
- m3gCommitImage(image);
-
- M3G_DO_UNLOCK(aEnv)
-
- // free memory
- free(tempPixels);
-
- cgfxImage = NULL;
- return reinterpret_cast<jint>(image);
- }
- return 0;
-}
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1getFormat
-(JNIEnv* aEnv, jclass, jint aHImage2D)
-{
- M3G_DO_LOCK
- jint format = (jint)m3gGetFormat((M3GImage)aHImage2D);
- M3G_DO_UNLOCK(aEnv)
- return format;
-}
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1ctorSizePixelsPalette
-(JNIEnv* aEnv, jclass, jint aM3g, jint aFormat, jint aWidth, jint aHeight, jbyteArray aImage, jbyteArray aPalette)
-{
- M3GImageFormat format = (M3GImageFormat)aFormat;
-
- int bpp = jsr184BytesPerPixel(format);
-
- if (validateArray(aEnv, aImage, aWidth * aHeight))
- {
- if (aPalette == NULL)
- {
- M3G_RAISE_EXCEPTION(aEnv, "java/lang/NullPointerException");
- return 0;
- }
- int paletteLen = aEnv->GetArrayLength(aPalette);
- if ((paletteLen < 256 *(unsigned)bpp) &&
- (paletteLen % (unsigned)bpp != 0))
- {
- M3G_RAISE_EXCEPTION(aEnv, "java/lang/IllegalArgumentException");
- return 0;
- }
- else
- {
- M3G_DO_LOCK
-
- M3GImage hImg = m3gCreateImage((M3GInterface)aM3g,
- format,
- aWidth, aHeight,
- M3G_PALETTED);
- if (hImg != NULL)
- {
- jbyte* palette = NULL;
-
- int numEntries = paletteLen / bpp;
- if (numEntries > 256)
- {
- numEntries = 256;
- }
-
- jbyte* image = aEnv->GetByteArrayElements(aImage, NULL);
- if (image == NULL)
- {
- M3G_RAISE_EXCEPTION(aEnv, "java/lang/OutOfMemoryError");
- return 0;
- }
-
- m3gSetImage(hImg, image);
-
- palette = aEnv->GetByteArrayElements(aPalette, NULL);
- if (palette == NULL)
- {
- if (image)
- {
- aEnv->ReleaseByteArrayElements(aImage, image, JNI_ABORT);
- }
- M3G_RAISE_EXCEPTION(aEnv, "java/lang/OutOfMemoryError");
- return 0;
- }
-
- m3gSetImagePalette(hImg, numEntries, palette);
- m3gCommitImage(hImg);
-
- if (image)
- {
- aEnv->ReleaseByteArrayElements(aImage, image, JNI_ABORT);
- }
- if (palette)
- {
- aEnv->ReleaseByteArrayElements(aPalette, palette, JNI_ABORT);
- }
- }
- M3G_DO_UNLOCK(aEnv)
- return ((unsigned) hImg);
- }
- }
- return 0;
-}
-
-JNIEXPORT jboolean JNICALL Java_javax_microedition_m3g_Image2D__1isMutable
-(JNIEnv* aEnv, jclass, jint aHImage2D)
-{
- M3G_DO_LOCK
- jboolean isMutable = (jboolean)m3gIsMutable((M3GImage)aHImage2D);
- M3G_DO_UNLOCK(aEnv)
- return isMutable;
-}
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1getHeight
-(JNIEnv* aEnv, jclass, jint aHImage2D)
-{
- M3G_DO_LOCK
- jint height = (jint)m3gGetHeight((M3GImage)aHImage2D);
- M3G_DO_UNLOCK(aEnv)
- return height;
-}
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1ctorSize
-(JNIEnv* aEnv, jclass, jint aM3g, jint aFormat, jint aWidth, jint aHeight)
-{
- M3G_DO_LOCK
- jint handle = (M3Guint) m3gCreateImage((M3GInterface)aM3g,
- (M3GImageFormat)aFormat,
- aWidth, aHeight,
- M3G_DYNAMIC|M3G_RENDERING_TARGET);
- M3G_DO_UNLOCK(aEnv)
- return handle;
-}
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1getWidth
-(JNIEnv* aEnv, jclass, jint aHImage2D)
-{
- M3G_DO_LOCK
- jint width = (jint)m3gGetWidth((M3GImage)aHImage2D);
- M3G_DO_UNLOCK(aEnv)
- return width;
-}
-
-
-JNIEXPORT jint JNICALL Java_javax_microedition_m3g_Image2D__1ctorSizePixels
-(JNIEnv* aEnv, jclass, jint aM3g, jint aFormat, jint aWidth, jint aHeight, jbyteArray aImage)
-{
- M3GImageFormat format = (M3GImageFormat)aFormat;
-
- if (validateArray(aEnv, aImage, jsr184BytesPerPixel(format) * aWidth * aHeight))
- {
- M3G_DO_LOCK
-
- M3GImage hImg = m3gCreateImage((M3GInterface)aM3g, format, aWidth, aHeight, 0);
- if (hImg != NULL)
- {
- M3GImageFormat format = (M3GImageFormat)aFormat;
-
- int bpp = jsr184BytesPerPixel(format);
- jbyte* imageScanline = (jbyte*)malloc(aWidth * bpp);
- for (int i=0; i < aHeight; i++)
- {
- aEnv->GetByteArrayRegion(aImage, aWidth * i * bpp, aWidth * bpp, imageScanline);
- m3gSetSubImage(hImg, 0, i, aWidth, 1, aWidth * bpp, imageScanline);
- }
- m3gCommitImage(hImg);
-
- free(imageScanline);
- }
- M3G_DO_UNLOCK(aEnv)
- return (unsigned) hImg;
- }
- return 0;
-}