Fix GEDPicker, explicit the function %apply in swig file
[scilab.git] / scilab / modules / graphic_objects / src / jni / ObjectData.i
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Pedro Arthur dos S. Souza
4  * Copyright (C) 2012 - Caio Lucas dos S. Souza
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 %module ObjectData
15  
16
17 %pragma(java) jniclasscode=%{
18   static {
19     try {
20         System.loadLibrary("scigraphic_objects");
21     } catch (UnsatisfiedLinkError e) {
22       System.err.println("Native library failed to load. \n" + e);
23       System.exit(1);
24     }
25   }
26 %}
27
28
29 %typemap(jni) double * "jobject"
30 %typemap(jtype) double * "Object"
31 %typemap(jstype) double * "Object"
32 %typemap(javain) double * "$javainput"
33 %typemap(javaout) double * { return $jnicall; }
34
35 %typemap(in) double * {
36         $1 = (*jenv)->GetDoubleArrayElements(jenv, $input, NULL);
37 }
38
39 %typemap(argout) double * {
40         (*jenv)->ReleaseDoubleArrayElements(jenv, $input, $1, 0);
41 }
42
43 %typemap(jni) int * "jobject"
44 %typemap(jtype) int * "Object"
45 %typemap(jstype) int * "Object"
46 %typemap(javain) int * "$javainput"
47 %typemap(javaout) int * { return $jnicall; }
48
49 %typemap(in) int * {
50         $1 = (*jenv)->GetIntArrayElements(jenv, $input, NULL);
51 }
52
53 %typemap(argout) int * {
54         (*jenv)->ReleaseIntArrayElements(jenv, $input, $1, 0);
55 }
56
57 %typemap(out) double * CHAMPX {
58         $result = (*jenv)->NewDoubleArray(jenv, _getChampXSize(arg1));
59         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getChampXSize(arg1), $1);
60 }
61
62 %apply double * CHAMPX { double * getChampX(char * uid)}
63
64
65 %{
66
67 #include "returnType.h"
68 #include "getGraphicObjectProperty.h"
69 #include "setGraphicObjectProperty.h"
70 #include "graphicObjectProperties.h"
71 #include "MALLOC.h"
72 #include "math.h"
73
74 double * getChampX(char * uid)
75 {
76     double * vx;
77     getGraphicObjectProperty(uid, __GO_BASE_X__, jni_double_vector, (void**)&vx);
78     return vx;
79 }
80
81 int _getChampXSize(char * uid) {
82     
83     int * dimension;
84     getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
85     return dimension[0];
86 }
87 %}
88
89
90
91 %typemap(out) double * CHAMPY {
92         $result = (*jenv)->NewDoubleArray(jenv, _getChampYSize(arg1));
93         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getChampYSize(arg1), $1);
94 }
95
96 %apply double * CHAMPY { double * getChampY(char * uid) }
97 %{
98
99 double * getChampY(char * uid) {
100
101     double * vy;
102     getGraphicObjectProperty(uid, __GO_BASE_Y__, jni_double_vector, (void**)&vy);
103     return vy;
104 }
105
106 int _getChampYSize(char * uid) {
107     
108     int * dimension;
109     getGraphicObjectProperty(uid, __GO_CHAMP_DIMENSIONS__, jni_int_vector, (void**)&dimension);
110     return dimension[1];
111 }
112 %}
113
114
115
116 %typemap(out) double * ARROWS {
117         $result = (*jenv)->NewDoubleArray(jenv, _getArrowsSize(arg1));
118         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getArrowsSize(arg1), $1);
119 }
120
121 %apply double * ARROWS { double * getArrows(char * uid) }
122 %{
123
124 double * getArrows(char * uid) {
125
126     double * arrows;
127     getGraphicObjectProperty(uid, __GO_DIRECTION__, jni_double_vector, (void**)&arrows);
128     return arrows;
129 }
130
131 int _getArrowsSize(char * uid) {
132     
133     int numArrows;
134     int * pNumArrows = &numArrows;
135     getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pNumArrows);
136     return numArrows * 3;
137 }
138 %}
139
140
141
142 %typemap(out) double * SEGS {
143         $result = (*jenv)->NewDoubleArray(jenv, _getSegsSize(arg1));
144         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getSegsSize(arg1), $1);
145 }
146
147 %apply double * SEGS { double * getSegsData(char * uid) }
148 %{
149
150 double * getSegsData(char * uid) {
151
152     double * data;
153     getGraphicObjectProperty(uid, __GO_BASE__, jni_double_vector, (void**)&data);
154     return data;
155 }
156
157 int _getSegsSize(char * uid) {
158     
159     int base;
160     int * pBase = &base;
161     getGraphicObjectProperty(uid, __GO_NUMBER_ARROWS__, jni_int, (void**)&pBase);
162     return base * 3;
163 }
164 %}
165
166 %typemap(out) double * FEC {
167         $result = (*jenv)->NewDoubleArray(jenv, _getFecTrianglesSize(arg1));
168         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecTrianglesSize(arg1), $1);
169 }
170
171 %apply double * FEC { double * getFecTriangles(char * uid) }
172 %{
173
174 double * getFecTriangles(char * uid) {
175
176     double * triangles;
177     getGraphicObjectProperty(uid, __GO_DATA_MODEL_FEC_TRIANGLES__, jni_double_vector, (void**)&triangles);
178     return triangles;
179 }
180
181 int _getFecTrianglesSize(char * uid) {
182     
183     int indices;
184     int * pIndices = &indices;
185     getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_INDICES__, jni_int, (void**)&pIndices);
186     return indices * 5;
187 }
188
189 %}
190
191 %typemap(out) double * FEC_XY {
192         $result = (*jenv)->NewDoubleArray(jenv, _getFecDataSize(arg1));
193         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, _getFecDataSize(arg1), $1);
194 }
195
196 %apply double * FEC_XY { double * getFecData(char * uid) }
197 %{
198
199 double * getFecData(char * uid) {
200
201     double * data;
202     getGraphicObjectProperty(uid, __GO_DATA_MODEL_COORDINATES__, jni_double_vector, (void**)&data);
203     return data;
204 }
205
206 int _getFecDataSize(char * uid) {
207     
208     int size;
209     int * pSize = &size;
210     getGraphicObjectProperty(uid, __GO_DATA_MODEL_NUM_VERTICES__, jni_int, (void**)&pSize);
211     return size * 3;
212 }
213
214 %}
215
216
217 %typemap(out) double * ARC_ULP {
218         $result = (*jenv)->NewDoubleArray(jenv, 3);
219         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, 3, $1);
220 }
221
222 %apply double * ARC_ULP { double * getArcUpperLeftPoint(char * uid) }
223 %{
224
225 double * getArcUpperLeftPoint(char * uid) {
226
227     double * upperLeftPoint;
228     getGraphicObjectProperty(uid, __GO_UPPER_LEFT_POINT__, jni_double_vector, (void**)&upperLeftPoint);
229     return upperLeftPoint;
230 }
231
232 %}
233
234 %typemap(out) double * ARC_DATA {
235         $result = (*jenv)->NewDoubleArray(jenv, 4);
236         (*jenv)->SetDoubleArrayRegion(jenv, $result, 0, 4, $1);
237 }
238
239 %apply double * ARC_DATA { double * getArcData(char * uid) }
240 %{
241
242 double * getArcData(char * uid) {
243
244     double * data = (double *)MALLOC(sizeof(double)*4);
245         double value;
246         double * temp = &value;
247     getGraphicObjectProperty(uid, __GO_HEIGHT__, jni_double, (void**)&temp);
248         data[0] = value;
249     getGraphicObjectProperty(uid, __GO_WIDTH__, jni_double, (void**)&temp);
250         data[1] = value;
251     getGraphicObjectProperty(uid, __GO_START_ANGLE__, jni_double, (void**)&temp);
252         data[2] = value;
253     getGraphicObjectProperty(uid, __GO_END_ANGLE__, jni_double, (void**)&temp);
254         data[3] = value;
255     return data;
256 }
257
258 %}
259
260
261 double * getChampX(char * uid);
262 double * getChampY(char * uid);
263 double * getArrows(char * uid);
264 double * getSegsData(char * uid);
265 double * getFecTriangles(char * uid);
266 double * getFecData(char * uid);
267 double * getArcUpperLeftPoint(char * uid);
268 double * getArcData(char * uid);