Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_1_RELEASE / libraries / libjni-mrsid / src / ltiimage.cpp @ 9531

History | View | Annotate | Download (11.6 KB)

1
 /**********************************************************************
2
 * $Id: ltiimage.cpp 9531 2007-01-03 17:07:37Z  $
3
 *
4
 * Name:     ltiimage.c
5
 * Project:  JMRSID. Interfaz java to MrSID (Lizardtech).
6
 * Purpose:  
7
 * Author:   Nacho Brodin, brodin_ign@gva.es
8
 *
9
 **********************************************************************/
10
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
11
*
12
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
13
*
14
* This program is free software; you can redistribute it and/or
15
* modify it under the terms of the GNU General Public License
16
* as published by the Free Software Foundation; either version 2
17
* of the License, or (at your option) any later version.
18
*
19
* This program is distributed in the hope that it will be useful,
20
* but WITHOUT ANY WARRANTY; without even the implied warranty of
21
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
* GNU General Public License for more details.
23
*
24
* You should have received a copy of the GNU General Public License
25
* along with this program; if not, write to the Free Software
26
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
27
*
28
* For more information, contact:
29
*
30
*  Generalitat Valenciana
31
*   Conselleria d'Infraestructures i Transport
32
*   Av. Blasco Ib??ez, 50
33
*   46010 VALENCIA
34
*   SPAIN
35
*
36
*      +34 963862235
37
*   gvsig@gva.es
38
*      www.gvsig.gva.es
39
*
40
*    or
41
*
42
*   IVER T.I. S.A
43
*   Salamanca 50
44
*   46005 Valencia
45
*   Spain
46
*
47
*   +34 963163400
48
*   dac@iver.es
49
*/
50

    
51

    
52
#include <jni.h>
53
#include <malloc.h>
54
#include "es_gva_cit_jmrsid_LTIImage.h"
55
#include "es_gva_cit_jmrsid_JNIBase.h"
56

    
57
#include "lt_types.h"
58
#include "lt_base.h"
59
#include "lt_fileSpec.h"
60
#include "lti_geoCoord.h"
61
#include "lti_pixel.h"
62
#include "lti_navigator.h"
63
#include "lti_sceneBuffer.h"
64
#include "lti_metadataDatabase.h"
65
#include "lti_metadataRecord.h"
66
#include "lti_utils.h"
67
#include "MrSIDImageReader.h"
68
#include "J2KImageReader.h"
69
#include "lti_imageReader.h"
70
#include "lti_sceneBuffer.h"
71
#include "lti_scene.h"
72
//#include "cpl_conv.h"
73
#include "TIFFImageWriter.h"
74

    
75
LT_USE_NAMESPACE(LizardTech);
76

    
77
/******************************************************************************/
78
//                                                                 initialize
79
/******************************************************************************/
80

    
81

    
82
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_initializeNat
83
  (JNIEnv *env, jobject obj, jlong cPtr){
84
          
85
    LTIImage *img  = (LTIImage *) 0 ;
86
          int res = -1;
87
                    
88
    img = *(LTIImage **)&cPtr;
89
    
90
    if(img!=NULL)
91
            res = img->initialize();        
92

    
93
    return res;
94
                  
95
  }
96
  
97
/******************************************************************************/
98
//                                                                 getMetadata
99
/******************************************************************************/
100
  
101
 JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getMetadataNat
102
  (JNIEnv *env, jobject obj, jlong cPtr){
103
        
104
          jlong jresult = 0 ;
105
          LTIImageReader *img  = (LTIImageReader *) 0 ;
106
          LTIMetadataDatabase *metadata=NULL;
107
  
108
          img = *(LTIImageReader **)&cPtr;
109
          if(img!=NULL){
110
                  metadata = new LTIMetadataDatabase( img->getMetadata() );
111
                  *(LTIMetadataDatabase **)&jresult = metadata;
112
          }
113
  
114
          return jresult;
115
                  
116
  } 
117
  
118
/******************************************************************************/
119
//                                                                 getWidth
120
/******************************************************************************/
121

    
122

    
123
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getWidthNat
124
  (JNIEnv *env, jobject obj, jlong cPtr){
125
          
126
    LTIImage *img  = (LTIImage *) 0 ;
127
          int res = -1;
128
                     
129
    img = *(LTIImage **)&cPtr;
130
    
131
    if(img!=NULL)
132
            res = img->getWidth();        
133

    
134
    return res;
135
                  
136
  }
137
  
138
  
139
/******************************************************************************/
140
//                                                                 getHeight
141
/******************************************************************************/
142

    
143

    
144
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getHeightNat
145
  (JNIEnv *env, jobject obj, jlong cPtr){
146
          
147
    LTIImage *img  = (LTIImage *) 0 ;
148
          int res = -1;
149
                     
150
    img = *(LTIImage **)&cPtr;
151
    
152
    if(img!=NULL)
153
            res = img->getHeight();        
154

    
155
    return res;
156
                  
157
  }
158
  
159
    
160
/******************************************************************************/
161
//                                                                 getDimsAtMagWidth
162
/******************************************************************************/
163

    
164

    
165
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_LTIImage_getDimsAtMagWidthNat
166
  (JNIEnv *env, jobject obj, jlong cPtr, jdouble mag){
167
          
168
    LTIImage *img  = (LTIImage *) 0 ;
169
          int res = -1;
170
          int height;
171
          double mg=mag;
172
                     
173
    img = *(LTIImage **)&cPtr;
174
    
175
    if(img!=NULL)
176
            img->getDimsAtMag((double)mg,(lt_uint32 &)res,(lt_uint32 &)height);        
177

    
178
    return res;
179
                  
180
  }  
181
  
182
/******************************************************************************/
183
//                                                                 getDimsAtMagHeight
184
/******************************************************************************/
185

    
186

    
187
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_LTIImage_getDimsAtMagHeightNat
188
  (JNIEnv *env, jobject obj, jlong cPtr, jdouble mag){
189
          
190
    LTIImage *img  = (LTIImage *) 0 ;
191
          int res = -1;
192
          int width;
193
          double mg=mag;
194
                     
195
    img = *(LTIImage **)&cPtr;
196
    
197
    if(img!=NULL)
198
            img->getDimsAtMag((double)mg,(lt_uint32 &)width,(lt_uint32 &)res);        
199

    
200
    return res;
201
                  
202
  }
203
  
204
/******************************************************************************/
205
//                                                                 getStripHeight
206
/******************************************************************************/
207

    
208

    
209
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getStripHeightNat
210
  (JNIEnv *env, jobject obj, jlong cPtr){
211
          
212
    LTIImageReader *img  = (LTIImageReader *) 0 ;
213
          int res = -1;
214
                     
215
    img = *(LTIImageReader **)&cPtr;
216
    
217
    if(img!=NULL)
218
            res = img->getStripHeight();        
219

    
220
    return res;
221
                  
222
  } 
223
  
224
/******************************************************************************/
225
//                                                                 getNumBands
226
/******************************************************************************/
227

    
228

    
229
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getNumBandsNat
230
  (JNIEnv *env, jobject obj, jlong cPtr){
231
          
232
    LTIImage *img  = (LTIImage *) 0 ;
233
          int res = -1;
234
                     
235
    img = *(LTIImage **)&cPtr;
236
    
237
    if(img!=NULL)
238
            res = img->getNumBands();        
239

    
240
    return res;
241
                  
242
  } 
243
  
244
/******************************************************************************/
245
//                                                                 getColorSpace
246
/******************************************************************************/
247

    
248

    
249
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getColorSpaceNat
250
  (JNIEnv *env, jobject obj, jlong cPtr){
251
          
252
    LTIImage *img  = (LTIImage *) 0 ;
253
          int res = -1;
254
                     
255
    img = *(LTIImage **)&cPtr;
256
    
257
    if(img!=NULL)
258
            res = img->getColorSpace();        
259

    
260
    return res;
261
                  
262
  } 
263
  
264
/******************************************************************************/
265
//                                                                 getDataType
266
/******************************************************************************/
267

    
268

    
269
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_JNIBase_getDataTypeNat
270
  (JNIEnv *env, jobject obj, jlong cPtr){
271
          
272
    LTIImage *img  = (LTIImage *) 0 ;
273
          int res = -1;
274
                     
275
    img = *(LTIImage **)&cPtr;
276
    
277
    if(img!=NULL)
278
            res = img->getDataType();        
279

    
280
    return res;
281
                  
282
  }  
283
  
284
/******************************************************************************/
285
//                                                                 getMinMagnification
286
/******************************************************************************/
287

    
288

    
289
JNIEXPORT jdouble JNICALL Java_es_gva_cit_jmrsid_LTIImage_getMinMagnificationNat
290
  (JNIEnv *env, jobject obj, jlong cPtr){
291
          
292
    LTIImage *img  = (LTIImage *) 0 ;
293
          double res = -1;
294
                     
295
    img = *(LTIImage **)&cPtr;
296
    
297
    if(img!=NULL)
298
            res = img->getMinMagnification();        
299

    
300
    return (jdouble)res;
301
                  
302
  }
303
  
304
/******************************************************************************/
305
//                                                                 getMaxMagnification
306
/******************************************************************************/
307

    
308

    
309
JNIEXPORT jdouble JNICALL Java_es_gva_cit_jmrsid_LTIImage_getMaxMagnificationNat
310
  (JNIEnv *env, jobject obj, jlong cPtr){
311
          
312
    LTIImage *img  = (LTIImage *) 0 ;
313
          double res = -1;
314
                     
315
    img = *(LTIImage **)&cPtr;
316
    
317
    if(img!=NULL)
318
            res = img->getMaxMagnification();        
319

    
320
    return (jdouble)res;
321
                  
322
  }
323
  
324
/******************************************************************************/
325
//                                                                 getPixelProps
326
/******************************************************************************/
327

    
328

    
329
/*JNIEXPORT jdouble JNICALL Java_es_gva_cit_jmrsid_LTIImage_getPixelPropsNat
330
  (JNIEnv *env, jobject obj, jlong cPtr){
331
          
332
        jlong jresult = 0 ;*/
333
          /*LTIImage *img  = (LTIImage *) 0 ;
334
          
335
  
336
          img = *(LTIImage **)&cPtr;
337
          if(img!=NULL){
338
                  const LTIPixel& pixelprops = img->getPixelProps();
339
                  *(LTIPixel **)&jresult = pixelprops;
340
          
341
  
342
          return (jlong)pixelprops;
343
          }*/
344
          /*return jresult;
345
                  
346
  } */
347
  
348
/******************************************************************************/
349
//                                                                 getGeoCoord
350
/******************************************************************************/
351

    
352
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_LTIImage_getGeoCoordNat
353
  (JNIEnv *env, jobject obj, jlong cPtr, jobject geocoord){
354
        
355
        LTIImage *img  = (LTIImage *) 0 ;
356
          jclass clase;
357
          jfieldID id_campo; 
358
                     
359
    img = *(LTIImage **)&cPtr;
360
    if(img!=NULL){
361
            const LTIGeoCoord& geo = img->getGeoCoord();
362
            
363
            clase = env->GetObjectClass(geocoord);
364
            id_campo = env->GetFieldID(clase, "xUL", "D");
365
            env->SetDoubleField(geocoord, id_campo, geo.getX());
366
            
367
            id_campo = env->GetFieldID(clase, "yUL", "D");
368
            env->SetDoubleField(geocoord, id_campo, geo.getY());
369
            
370
            id_campo = env->GetFieldID(clase, "xRes", "D");
371
            env->SetDoubleField(geocoord, id_campo, geo.getXRes());
372
            
373
            id_campo = env->GetFieldID(clase, "yRes", "D");
374
            env->SetDoubleField(geocoord, id_campo, geo.getYRes());
375
            
376
            id_campo = env->GetFieldID(clase, "xRot", "D");
377
            env->SetDoubleField(geocoord, id_campo, geo.getXRot());
378
            
379
            id_campo = env->GetFieldID(clase, "yRot", "D");
380
            env->SetDoubleField(geocoord, id_campo, geo.getYRot());
381
            return 1;
382
    }
383
    
384
    return -1;
385
  }
386
  
387
/******************************************************************************/
388
//                                                                 getBackgroundPixel
389
/******************************************************************************/
390

    
391

    
392
JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getBackgroundPixelNat
393
  (JNIEnv *env, jobject obj, jlong cPtr){
394
          
395
    LTIImage *img  = (LTIImage *) 0 ;
396
          jlong jresult = 0 ;
397
                     
398
    img = *(LTIImage **)&cPtr;
399
    
400
    if(img!=NULL){
401
            const LTIPixel *pixel=img->getBackgroundPixel();
402
            LTIPixel p=LTIPixel(*pixel);
403
            *(LTIPixel **)&jresult = &p;
404
    }
405
    
406
    return jresult;
407
                  
408
  }  
409
  
410
  
411
/******************************************************************************/
412
//                                                                 getNoData
413
/******************************************************************************/
414

    
415

    
416
JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getNoDataPixelNat
417
  (JNIEnv *env, jobject obj, jlong cPtr){
418
          
419
    LTIImage *img  = (LTIImage *) 0 ;
420
          jlong jresult = 0 ;
421
                     
422
    img = *(LTIImage **)&cPtr;
423
    
424
    if(img!=NULL){
425
            const LTIPixel *pixel=img->getNoDataPixel();
426
            LTIPixel p=LTIPixel(*pixel);
427
            *(LTIPixel **)&jresult = &p;
428
    }
429
    
430
    return jresult;
431
                  
432
  } 
433
  
434
/******************************************************************************/
435
//                                                                 ~LTIImage
436
/******************************************************************************/
437
  
438
JNIEXPORT void JNICALL Java_es_gva_cit_jmrsid_LTIImage_FreeLTIImageNat
439
  (JNIEnv *env, jobject obj, jlong cPtr){
440
          
441
          LTIImage *img = (LTIImage *) 0 ;
442
          
443
          img = *(LTIImage **)&cPtr;
444
          if(img!=NULL){
445
                  delete img;
446
          }
447
          
448
  }