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 9099 mija
 /**********************************************************************
2
 * $Id$
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
  }