Revision 32215 branches/v2_0_0_prep/libraries/libjni-mrsid/src/main/native/jmrsid/ltiimagestage.cpp

View differences:

ltiimagestage.cpp
56 56
#include "lti_sceneBuffer.h"
57 57
#include "lti_scene.h"
58 58
#include "lti_imageStage.h"
59
#include "MrSIDImageReader.h"
59 60
#include "../include/jmrsid.h"
60 61

  
61 62
LT_USE_NAMESPACE(LizardTech);
62 63

  
63 64
/******************************************************************************/
65
//					 				readScene
66
/******************************************************************************/
67

  
68

  
69
JNIEXPORT void JNICALL Java_es_gva_cit_jmrsid_LTIImageStage_readSceneNat(
70
	JNIEnv *env, 
71
  	jobject obj, 
72
  	jlong cPtr, 
73
  	jdouble x, 
74
  	jdouble y, 
75
  	jdouble w, 
76
  	jdouble h, 
77
  	jdouble mag,
78
  	jlong cPtrReader,
79
  	jint wImg, 
80
  	jint hImg, 
81
  	jboolean flag,
82
  	jobject objbuf) {
83
  	
84
  	MrSIDImageReader *img  = NULL;
85
  	jclass class_mrsidbuffer;
86
  	jfieldID id_b1, id_b2, id_b3, fid;
87
  	jbyteArray jvect_byte1, jvect_byte2, jvect_byte3;
88
  	int size;
89
  	t_buffer *str_buffer = (t_buffer*)malloc(sizeof(t_buffer));
90
  	
91
  	img = *(MrSIDImageReader **)&cPtrReader;
92
  	const LTIScene scene(x, y, w, h, mag);
93
  	
94
  	//Creamos el buffer
95
  	str_buffer->siz = wImg * hImg;
96
	str_buffer->membuf = new lt_uint8[str_buffer->siz * 3];
97
	str_buffer->bufs[0] = str_buffer->membuf;
98
	str_buffer->bufs[1] = str_buffer->membuf + str_buffer->siz;
99
	str_buffer->bufs[2] = str_buffer->membuf + str_buffer->siz * 2;
100
	   		
101
  	LTISceneBuffer buffer(img->getPixelProps(), wImg, hImg, str_buffer->bufs);
102
  	int res = img->read(scene, buffer);
103
  	
104
  	class_mrsidbuffer = env->GetObjectClass(objbuf);
105
	
106
  	id_b1 = env->GetFieldID(class_mrsidbuffer, "buf1", "[B");
107
	jvect_byte1 = env->NewByteArray(str_buffer->siz);
108
	env->SetByteArrayRegion(jvect_byte1, 0, str_buffer->siz,(jbyte *)str_buffer->bufs[0]); 
109
	env->SetObjectField(objbuf, id_b1, jvect_byte1);
110
  	
111
  	id_b2 = env->GetFieldID( class_mrsidbuffer, "buf2", "[B");
112
  	jvect_byte2 = env->NewByteArray(str_buffer->siz);
113
  	env->SetByteArrayRegion(jvect_byte2, 0, str_buffer->siz,(jbyte *)str_buffer->bufs[1]); 
114
	env->SetObjectField(objbuf, id_b2, jvect_byte2);
115
  	
116
  	id_b3 = env->GetFieldID( class_mrsidbuffer, "buf3", "[B");
117
  	jvect_byte3 = env->NewByteArray(str_buffer->siz);
118
  	env->SetByteArrayRegion(jvect_byte3, 0, str_buffer->siz,(jbyte *)str_buffer->bufs[2]); 
119
	env->SetObjectField(objbuf, id_b3, jvect_byte3);
120
  		
121
  	delete(str_buffer->membuf);
122
  	free(str_buffer);
123
  }
124
  
125
/******************************************************************************/
64 126
//					 				read
65 127
/******************************************************************************/
66 128

  

Also available in: Unified diff