X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fxwt%2Fplat%2FGCJ.cc;h=bba04f828c139c616d2137bb88143abfd09a6680;hb=ce1cf6a710c67eb2ef06835fffdaed7c41c85b24;hp=c9d336d3da3f92ae0b042bad3f404fe52cda4173;hpb=1e651bf5d79cc35fa6212766ed4a958cb265fad0;p=org.ibex.core.git diff --git a/src/org/xwt/plat/GCJ.cc b/src/org/xwt/plat/GCJ.cc index c9d336d..bba04f8 100644 --- a/src/org/xwt/plat/GCJ.cc +++ b/src/org/xwt/plat/GCJ.cc @@ -14,38 +14,26 @@ extern "C" { #include #include "jpeglib.h" } +#include +#include #include #include #include #include #include -#include // builtin.xwar ///////////////////////////////////////////////////////// -extern unsigned char builtin_xwar[]; -extern int builtin_xwar_length; +extern unsigned char builtin_bytes[]; +extern int builtin_length; java::io::InputStream* org::xwt::plat::GCJ::_getBuiltinInputStream() { - jbyteArray ret = JvNewByteArray(builtin_xwar_length); - memcpy(elements(ret), builtin_xwar, builtin_xwar_length); + jbyteArray ret = JvNewByteArray(builtin_length); + memcpy(elements(ret), builtin_bytes, builtin_length); return new java::io::ByteArrayInputStream(ret); } - - -// freetype.mips ///////////////////////////////////////////////////////// - -extern unsigned char freetype_mips[]; -extern int freetype_mips_length; - -java::io::InputStream* org::xwt::plat::GCJ::_getFreetypeInputStream() { - jbyteArray ret = JvNewByteArray(freetype_mips_length); - memcpy(elements(ret), freetype_mips, freetype_mips_length); - return new java::io::ByteArrayInputStream(ret); -} - @@ -55,7 +43,9 @@ java::io::InputStream* org::xwt::plat::GCJ::_getFreetypeInputStream() { typedef struct { struct jpeg_source_mgr pub; + /* FIXME org::xwt::plat::GCJ$JPEG* myself; + */ } source_manager; void jpeg_error_handler (j_common_ptr cinfo) { @@ -67,6 +57,7 @@ void term_source (j_decompress_ptr cinfo) { } void init_source (j_decompress_ptr cinfo) { } boolean fill_input_buffer (j_decompress_ptr cinfo) { + /* FIXME source_manager* src = (source_manager*)cinfo->src; jint nbytes = src->myself->is->read(src->myself->buffer, 0, INPUT_BUF_SIZE); if (nbytes <= 0) { @@ -77,6 +68,7 @@ boolean fill_input_buffer (j_decompress_ptr cinfo) { } src->pub.next_input_byte = (JOCTET*)elements(src->myself->buffer); src->pub.bytes_in_buffer = nbytes; + */ return 1; } @@ -92,8 +84,11 @@ void skip_input_data (j_decompress_ptr cinfo, long num_bytes) { } } -void org::xwt::plat::GCJ$JPEG::nativeDecompress() { +org::xwt::Picture* org::xwt::plat::GCJ::_decodeJPEG(java::io::InputStream* is, jstring name) { struct jpeg_decompress_struct cinfo; + jintArray data; + jint width; + jint height; // set up our error handler struct jpeg_error_mgr error_handler; @@ -103,14 +98,18 @@ void org::xwt::plat::GCJ$JPEG::nativeDecompress() { jpeg_create_decompress(&cinfo); try { source_manager src; + /* buffer = JvNewByteArray(INPUT_BUF_SIZE); + */ src.pub.init_source = init_source; src.pub.fill_input_buffer = fill_input_buffer; src.pub.skip_input_data = skip_input_data; src.pub.resync_to_restart = jpeg_resync_to_restart; src.pub.term_source = term_source; + /* src.myself = this; src.pub.next_input_byte = (JOCTET*)elements(buffer); + */ src.pub.bytes_in_buffer = 0; cinfo.src = (jpeg_source_mgr*)&src; @@ -136,6 +135,7 @@ void org::xwt::plat::GCJ$JPEG::nativeDecompress() { throw t; } jpeg_destroy_decompress(&cinfo); + return org::xwt::Platform::createPicture(data, width, height); } // C++ new/delete operators (JvMalloc never fails)