mirror of https://github.com/axmolengine/axmol.git
This commit is contained in:
parent
ca066d0bac
commit
0ea2035ec6
|
@ -50,7 +50,7 @@ jint JNI_OnLoad(JavaVM *vm, void *reserved)
|
||||||
return JNI_VERSION_1_4;
|
return JNI_VERSION_1_4;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Java_org_cocos2dx_DemoRenderer_nativeRender(JNIEnv* env)
|
void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeRender(JNIEnv* env)
|
||||||
{
|
{
|
||||||
cocos2d::CCDirector::getSharedDirector()->preMainLoop();
|
cocos2d::CCDirector::getSharedDirector()->preMainLoop();
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ namespace cocos2d {
|
||||||
|
|
||||||
//__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "get env");
|
//__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "get env");
|
||||||
|
|
||||||
jclass mClass = env->FindClass("org/cocos2dx/Cocos2dJNI");
|
jclass mClass = env->FindClass("org/cocos2dx/lib/Cocos2dxJNI");
|
||||||
if (! mClass)
|
if (! mClass)
|
||||||
{
|
{
|
||||||
__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "can not find org.cocos2dx.Cocos2dJNI");
|
__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "can not find org.cocos2dx.Cocos2dJNI");
|
||||||
|
@ -119,15 +119,30 @@ namespace cocos2d {
|
||||||
data = new unsigned char[info.width * info.height * 4];
|
data = new unsigned char[info.width * info.height * 4];
|
||||||
if (! data)
|
if (! data)
|
||||||
{
|
{
|
||||||
AndroidBitmap_unlockPixels(evn, bitmap);
|
AndroidBitmap_unlockPixels(env, bitmap);
|
||||||
__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "failed to allocate memory");
|
__android_log_write(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "failed to allocate memory");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(data, pixels, info.width * info.height * 4);
|
memcpy(data, pixels, info.width * info.height * 4);
|
||||||
|
AndroidBitmap_unlockPixels(env, bitmap);
|
||||||
|
|
||||||
|
// swap data
|
||||||
|
unsigned int *tempPtr = (unsigned int*)data;
|
||||||
|
unsigned int tempdata = 0;
|
||||||
|
for (int i = 0; i < info.height; ++i)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < info.width; ++j)
|
||||||
|
{
|
||||||
|
tempdata = *tempPtr;
|
||||||
|
*tempPtr++ = swapAlpha(tempdata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_nWidth = info.width;
|
m_nWidth = info.width;
|
||||||
m_nHeight =info.height;
|
m_nHeight =info.height;
|
||||||
|
|
||||||
|
//__android_log_print(ANDROID_LOG_DEBUG, "cocos2d::CCXBitmapDC", "width: %d, height:%d", m_nWidth, m_nHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CCXBitmapDC::swapAlpha(unsigned int value)
|
unsigned int CCXBitmapDC::swapAlpha(unsigned int value)
|
||||||
|
|
|
@ -30,6 +30,39 @@ THE SOFTWARE.
|
||||||
#include "CCTouch.h"
|
#include "CCTouch.h"
|
||||||
#include "CCTouchDispatcher.h"
|
#include "CCTouchDispatcher.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <jni.h>
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
static cocos2d::EGLTouchDelegate *s_pDelegate;
|
||||||
|
static cocos2d::CCTouch s_touch;
|
||||||
|
static cocos2d::NSSet s_set;
|
||||||
|
|
||||||
|
|
||||||
|
void Java_org_cocos2dx_lib_Cocos2dxGLSurfaceView_nativeTouchesBegin(jfloat x, jfloat y)
|
||||||
|
{
|
||||||
|
s_touch.SetTouchInfo(0, x, y);
|
||||||
|
s_set.addObject(&s_touch);
|
||||||
|
s_pDelegate->touchesBegan(&s_set, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_cocos2dx_lib_Cocos2dxGLSurfaceView_nativeTouchesEnd(jfloat x, jfloat y)
|
||||||
|
{
|
||||||
|
s_touch.SetTouchInfo(0, x, y);
|
||||||
|
s_pDelegate->touchesEnded(&s_set, NULL);
|
||||||
|
s_set.removeObject(&s_touch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_cocos2dx_lib_Cocos2dxGLSurfaceView_nativeTouchesMove(jfloat x, jfloat y)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void Java_org_cocos2dx_lib_Cocos2dxGLSurfaceView_nativeTouchesCancel(jfloat x, jfloat y)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
namespace cocos2d {
|
namespace cocos2d {
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +80,7 @@ void CCXEGLView::setFrameWitdAndHeight(int width, int height)
|
||||||
|
|
||||||
CCXEGLView::~CCXEGLView()
|
CCXEGLView::~CCXEGLView()
|
||||||
{
|
{
|
||||||
|
CCX_SAFE_DELETE(s_pDelegate);
|
||||||
}
|
}
|
||||||
|
|
||||||
CGSize CCXEGLView::getSize()
|
CGSize CCXEGLView::getSize()
|
||||||
|
@ -62,10 +96,12 @@ bool CCXEGLView::isOpenGLReady()
|
||||||
|
|
||||||
void CCXEGLView::release()
|
void CCXEGLView::release()
|
||||||
{
|
{
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCXEGLView::setTouchDelegate(EGLTouchDelegate * pDelegate)
|
void CCXEGLView::setTouchDelegate(EGLTouchDelegate * pDelegate)
|
||||||
{
|
{
|
||||||
|
s_pDelegate = pDelegate;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCXEGLView::swapBuffers()
|
void CCXEGLView::swapBuffers()
|
||||||
|
@ -73,3 +109,4 @@ void CCXEGLView::swapBuffers()
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end of namespace cocos2d
|
} // end of namespace cocos2d
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ THE SOFTWARE.
|
||||||
|
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
|
|
||||||
/*#include "jpeglib.h"*/
|
#include "jpeglib.h"
|
||||||
|
|
||||||
//using namespace ImageToolKit;
|
//using namespace ImageToolKit;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -287,73 +287,73 @@ bool UIImage::loadPngFromStream(unsigned char *data, int nLength)
|
||||||
|
|
||||||
bool UIImage::loadJpg(const char *strFileName)
|
bool UIImage::loadJpg(const char *strFileName)
|
||||||
{
|
{
|
||||||
// /* these are standard libjpeg structures for reading(decompression) */
|
/* these are standard libjpeg structures for reading(decompression) */
|
||||||
// struct jpeg_decompress_struct cinfo;
|
struct jpeg_decompress_struct cinfo;
|
||||||
// struct jpeg_error_mgr jerr;
|
struct jpeg_error_mgr jerr;
|
||||||
// /* libjpeg data structure for storing one row, that is, scanline of an image */
|
/* libjpeg data structure for storing one row, that is, scanline of an image */
|
||||||
// JSAMPROW row_pointer[1];
|
JSAMPROW row_pointer[1];
|
||||||
//
|
|
||||||
// FILE *infile = fopen( strFileName, "rb" );
|
FILE *infile = fopen( strFileName, "rb" );
|
||||||
// unsigned long location = 0;
|
unsigned long location = 0;
|
||||||
// unsigned int i = 0;
|
unsigned int i = 0;
|
||||||
//
|
|
||||||
// if ( !infile )
|
if ( !infile )
|
||||||
// {
|
{
|
||||||
// return false;
|
return false;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// /* here we set up the standard libjpeg error handler */
|
/* here we set up the standard libjpeg error handler */
|
||||||
// cinfo.err = jpeg_std_error( &jerr );
|
cinfo.err = jpeg_std_error( &jerr );
|
||||||
//
|
|
||||||
// /* setup decompression process and source, then read JPEG header */
|
/* setup decompression process and source, then read JPEG header */
|
||||||
// jpeg_create_decompress( &cinfo );
|
jpeg_create_decompress( &cinfo );
|
||||||
//
|
|
||||||
// /* this makes the library read from infile */
|
/* this makes the library read from infile */
|
||||||
// jpeg_stdio_src( &cinfo, infile );
|
jpeg_stdio_src( &cinfo, infile );
|
||||||
//
|
|
||||||
// /* reading the image header which contains image information */
|
/* reading the image header which contains image information */
|
||||||
// jpeg_read_header( &cinfo, true );
|
jpeg_read_header( &cinfo, true );
|
||||||
//
|
|
||||||
// // we only support RGB or grayscale
|
// we only support RGB or grayscale
|
||||||
// if (cinfo.jpeg_color_space != JCS_RGB)
|
if (cinfo.jpeg_color_space != JCS_RGB)
|
||||||
// {
|
{
|
||||||
// if (cinfo.jpeg_color_space == JCS_GRAYSCALE || cinfo.jpeg_color_space == JCS_YCbCr)
|
if (cinfo.jpeg_color_space == JCS_GRAYSCALE || cinfo.jpeg_color_space == JCS_YCbCr)
|
||||||
// {
|
{
|
||||||
// cinfo.out_color_space = JCS_RGB;
|
cinfo.out_color_space = JCS_RGB;
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// else
|
else
|
||||||
// {
|
{
|
||||||
// return false;
|
return false;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// /* Start decompression jpeg here */
|
/* Start decompression jpeg here */
|
||||||
// jpeg_start_decompress( &cinfo );
|
jpeg_start_decompress( &cinfo );
|
||||||
//
|
|
||||||
// /* init image info */
|
/* init image info */
|
||||||
// m_imageInfo.width = cinfo.image_width;
|
m_imageInfo.width = cinfo.image_width;
|
||||||
// m_imageInfo.height = cinfo.image_height;
|
m_imageInfo.height = cinfo.image_height;
|
||||||
// m_imageInfo.hasAlpha = false;
|
m_imageInfo.hasAlpha = false;
|
||||||
// m_imageInfo.isPremultipliedAlpha = false;
|
m_imageInfo.isPremultipliedAlpha = false;
|
||||||
// m_imageInfo.bitsPerComponent = 8;
|
m_imageInfo.bitsPerComponent = 8;
|
||||||
// m_imageInfo.data = new unsigned char[cinfo.output_width*cinfo.output_height*cinfo.output_components];
|
m_imageInfo.data = new unsigned char[cinfo.output_width*cinfo.output_height*cinfo.output_components];
|
||||||
//
|
|
||||||
// /* now actually read the jpeg into the raw buffer */
|
/* now actually read the jpeg into the raw buffer */
|
||||||
// row_pointer[0] = new unsigned char[cinfo.output_width*cinfo.output_components];
|
row_pointer[0] = new unsigned char[cinfo.output_width*cinfo.output_components];
|
||||||
//
|
|
||||||
// /* read one scan line at a time */
|
/* read one scan line at a time */
|
||||||
// while( cinfo.output_scanline < cinfo.image_height )
|
while( cinfo.output_scanline < cinfo.image_height )
|
||||||
// {
|
{
|
||||||
// jpeg_read_scanlines( &cinfo, row_pointer, 1 );
|
jpeg_read_scanlines( &cinfo, row_pointer, 1 );
|
||||||
// for( i=0; i<cinfo.image_width*cinfo.num_components;i++)
|
for( i=0; i<cinfo.image_width*cinfo.num_components;i++)
|
||||||
// m_imageInfo.data[location++] = row_pointer[0][i];
|
m_imageInfo.data[location++] = row_pointer[0][i];
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// /* wrap up decompression, destroy objects, free pointers and close open files */
|
/* wrap up decompression, destroy objects, free pointers and close open files */
|
||||||
// jpeg_finish_decompress( &cinfo );
|
jpeg_finish_decompress( &cinfo );
|
||||||
// jpeg_destroy_decompress( &cinfo );
|
jpeg_destroy_decompress( &cinfo );
|
||||||
// delete row_pointer[0];
|
delete row_pointer[0];
|
||||||
// fclose( infile );
|
fclose( infile );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue