svn-gvsig-desktop / tags / v1_0_2_Build_910 / libraries / libjni-mrsid / src / ltiimagestage.cpp @ 34095
History | View | Annotate | Download (4.62 KB)
1 | 662 | igbrotru | /**********************************************************************
|
---|---|---|---|
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 | 2214 | igbrotru | /* 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 | 662 | igbrotru | |
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 | 1180 | igbrotru | |
134 | //Esto lo haremos en el destructor de LTISceneBuffer
|
||
135 | //delete(str_buffer->membuf);
|
||
136 | //free(str_buffer);
|
||
137 | 662 | igbrotru | } |
138 | return res;
|
||
139 | |||
140 | } |
||
141 | |||
142 | 1124 | igbrotru | /******************************************************************************/
|
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 | 3539 | nacho | } |