Statistics
| Revision:

svn-gvsig-desktop / tags / v1_9_Build_1238 / libraries / libjni-mrsid-macosx / src / ltiimagestage.cpp @ 43469

History | View | Annotate | Download (4.62 KB)

1 9099 mija
 /**********************************************************************
2
 * $Id$
3
 *
4
 * Name:     ltiimagestage.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_LTIImageStage.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
#include "../include/jmrsid.h"
75
76
LT_USE_NAMESPACE(LizardTech);
77
78
/******************************************************************************/
79
//                                                                         read
80
/******************************************************************************/
81
82
83
JNIEXPORT jint JNICALL Java_es_gva_cit_jmrsid_LTIImageStage_readNat
84
  (JNIEnv *env, jobject obj, jlong cPtr, jlong cPtrscene, jlong cPtr_scenebuffer,jlong cPtrbuffer, jobject objbuf){
85
86
          LTIScene *scene;
87
          LTISceneBuffer *buffer;
88
          LTIImageStage *img;
89
          t_buffer *str_buffer=NULL;
90
          jclass class_mrsidbuffer;
91
          jfieldID id_b1,id_b2,id_b3,fid;
92
          jbyteArray jvect_byte1,jvect_byte2,jvect_byte3;
93
          int size;
94
95
          img = *(LTIImageStage **)&cPtr;
96
          scene = *(LTIScene **)&cPtrscene;
97
          buffer = *(LTISceneBuffer **)&cPtr_scenebuffer;
98
99
          //Obtenemos el puntero al buffer. La llamada al constructor de SceneBuffer fue con el flag a 1.
100
101
          if(cPtrbuffer!=-1){
102
                  str_buffer = *(t_buffer **)&cPtrbuffer;
103
          }
104
105
          //Llamamos a read
106
107
          int res=img->read(*scene,*buffer);
108
109
        if(str_buffer!=NULL){
110
111
                  //Obtenemos el tama?o
112
113
                  class_mrsidbuffer = env->GetObjectClass(objbuf);
114
                fid = env->GetFieldID( class_mrsidbuffer, "size", "I");
115
                  size = env->GetIntField( objbuf, fid);
116
117
                  //Cargamos los datos en el buffer si la llamada fue con flag a 1
118
119
                  id_b1 = env->GetFieldID( class_mrsidbuffer, "buf1", "[B");
120
                  jvect_byte1 = env->NewByteArray(size);
121
                env->SetByteArrayRegion(jvect_byte1, 0, size,(jbyte *)str_buffer->bufs[0]);
122
                  env->SetObjectField( objbuf, id_b1, jvect_byte1);
123
124
                  id_b2 = env->GetFieldID( class_mrsidbuffer, "buf2", "[B");
125
                  jvect_byte2 = env->NewByteArray(size);
126
                  env->SetByteArrayRegion(jvect_byte2, 0, size,(jbyte *)str_buffer->bufs[1]);
127
                  env->SetObjectField( objbuf, id_b2, jvect_byte2);
128
129
                  id_b3 = env->GetFieldID( class_mrsidbuffer, "buf3", "[B");
130
                  jvect_byte3 = env->NewByteArray(size);
131
                  env->SetByteArrayRegion(jvect_byte3, 0, size,(jbyte *)str_buffer->bufs[2]);
132
                  env->SetObjectField( objbuf, id_b3, jvect_byte3);
133
134
                  //Esto lo haremos en el destructor de LTISceneBuffer
135
                  //delete(str_buffer->membuf);
136
                  //free(str_buffer);
137
          }
138
                  return res;
139
140
  }
141
142
/******************************************************************************/
143
//                                                                 ~LTIImageStage
144
/******************************************************************************/
145
146
JNIEXPORT void JNICALL Java_es_gva_cit_jmrsid_LTIImageStage_FreeLTIImageStageNat
147
  (JNIEnv *env, jobject obj, jlong cPtr){
148
149
          LTIImageStage *stage = (LTIImageStage *) 0 ;
150
151
          stage = *(LTIImageStage **)&cPtr;
152
          if(stage!=NULL){
153
                  delete stage;
154
          }
155
156
  }