Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / libraries / libjni-mrsid-macosx / src / ltiimage.cpp @ 25798

History | View | Annotate | Download (11.5 KB)

1
 /**********************************************************************
2
 * $Id: ltiimage.cpp 9099 2006-11-29 12:16:22Z mija $
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
    LTIImage *img  = (LTIImage *) 0 ;
85
          int res = -1;
86
                    
87
    img = *(LTIImage **)&cPtr;
88
    
89
    if(img!=NULL)
90
            res = img->initialize();        
91

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

    
121

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

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

    
142

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

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

    
163

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

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

    
185

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

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

    
207

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

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

    
227

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

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

    
247

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

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

    
267

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

    
279
    return res;
280
                  
281
  }  
282
  
283
/******************************************************************************/
284
//                                                                 getPixelProps
285
/******************************************************************************/
286

    
287

    
288
JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getPixelPropsNat
289
  (JNIEnv *env, jobject obj, jlong cPtr){
290
          
291
        jlong jresult = 0 ;
292
          /*LTIImage *img  = (LTIImage *) 0 ;
293
          
294
  
295
          img = *(LTIImage **)&cPtr;
296
          if(img!=NULL){
297
                  const LTIPixel& pixelprops = img->getPixelProps();
298
                  *(LTIPixel **)&jresult = pixelprops;
299
          
300
  
301
          return (jlong)pixelprops;
302
          }*/
303
          return jresult;
304
                  
305
  } 
306
  
307
/******************************************************************************/
308
//                                                                 getGeoCoord
309
/******************************************************************************/
310

    
311
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_LTIImage_getGeoCoordNat
312
  (JNIEnv *env, jobject obj, jlong cPtr, jobject geocoord){
313
        
314
        LTIImage *img  = (LTIImage *) 0 ;
315
          jclass clase;
316
          jfieldID id_campo; 
317
                     
318
    img = *(LTIImage **)&cPtr;
319
    if(img!=NULL){
320
            const LTIGeoCoord& geo = img->getGeoCoord();
321
            
322
            clase = env->GetObjectClass(geocoord);
323
            id_campo = env->GetFieldID(clase, "xUL", "D");
324
            env->SetDoubleField(geocoord, id_campo, geo.getX());
325
            
326
            id_campo = env->GetFieldID(clase, "yUL", "D");
327
            env->SetDoubleField(geocoord, id_campo, geo.getY());
328
            
329
            id_campo = env->GetFieldID(clase, "xRes", "D");
330
            env->SetDoubleField(geocoord, id_campo, geo.getXRes());
331
            
332
            id_campo = env->GetFieldID(clase, "yRes", "D");
333
            env->SetDoubleField(geocoord, id_campo, geo.getYRes());
334
            
335
            id_campo = env->GetFieldID(clase, "xRot", "D");
336
            env->SetDoubleField(geocoord, id_campo, geo.getXRot());
337
            
338
            id_campo = env->GetFieldID(clase, "yRot", "D");
339
            env->SetDoubleField(geocoord, id_campo, geo.getYRot());
340
            return 1;
341
    }
342
    
343
    return -1;
344
  }
345
  
346
/******************************************************************************/
347
//                                                                 getBackgroundPixel
348
/******************************************************************************/
349

    
350

    
351
JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getBackgroundPixelNat
352
  (JNIEnv *env, jobject obj, jlong cPtr){
353
          
354
    LTIImage *img  = (LTIImage *) 0 ;
355
          jlong jresult = 0 ;
356
                     
357
    img = *(LTIImage **)&cPtr;
358
    
359
    if(img!=NULL){
360
            const LTIPixel *pixel=img->getBackgroundPixel();
361
            LTIPixel p=LTIPixel(*pixel);
362
            *(LTIPixel **)&jresult = &p;
363
    }
364
    
365
    return jresult;
366
                  
367
  }  
368
  
369
  
370
/******************************************************************************/
371
//                                                                 getNoData
372
/******************************************************************************/
373

    
374

    
375
JNIEXPORT jlong JNICALL Java_es_gva_cit_jmrsid_LTIImage_getNoDataPixelNat
376
  (JNIEnv *env, jobject obj, jlong cPtr){
377
          
378
    LTIImage *img  = (LTIImage *) 0 ;
379
          jlong jresult = 0 ;
380
                     
381
    img = *(LTIImage **)&cPtr;
382
    
383
    if(img!=NULL){
384
            const LTIPixel *pixel=img->getNoDataPixel();
385
            LTIPixel p=LTIPixel(*pixel);
386
            *(LTIPixel **)&jresult = &p;
387
    }
388
    
389
    return jresult;
390
                  
391
  } 
392
  
393
/******************************************************************************/
394
//                                                                 ~LTIImage
395
/******************************************************************************/
396
  
397
JNIEXPORT void JNICALL Java_es_gva_cit_jmrsid_LTIImage_FreeLTIImageNat
398
  (JNIEnv *env, jobject obj, jlong cPtr){
399
          
400
          LTIImage *img = (LTIImage *) 0 ;
401
          
402
          img = *(LTIImage **)&cPtr;
403
          if(img!=NULL){
404
                  delete img;
405
          }
406
          
407
  }
408

    
409
/******************************************************************************/
410
//                                                                 getMinMagnification
411
/******************************************************************************/
412

    
413

    
414
JNIEXPORT jdouble JNICALL Java_es_gva_cit_jmrsid_LTIImage_getMinMagnificationNat
415
  (JNIEnv *env, jobject obj, jlong cPtr){
416
          
417
    LTIImage *img  = (LTIImage *) 0 ;
418
          double res = -1;
419
                     
420
    img = *(LTIImage **)&cPtr;
421
    
422
    if(img!=NULL)
423
            res = img->getMinMagnification();        
424

    
425
    return (jdouble)res;
426
                  
427
  }
428
  
429
/******************************************************************************/
430
//                                                                 getMaxMagnification
431
/******************************************************************************/
432

    
433

    
434
JNIEXPORT jdouble JNICALL Java_es_gva_cit_jmrsid_LTIImage_getMaxMagnificationNat
435
  (JNIEnv *env, jobject obj, jlong cPtr){
436
          
437
    LTIImage *img  = (LTIImage *) 0 ;
438
          double res = -1;
439
                     
440
    img = *(LTIImage **)&cPtr;
441
    
442
    if(img!=NULL)
443
            res = img->getMaxMagnification();        
444

    
445
    return (jdouble)res;
446
                  
447
  }