2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2001-2002 - INRIA - Mathieu Philippe
4 * Copyright (C) 2002-2004 - INRIA - Djalel Abdemouche
5 * Copyright (C) 2004-2006 - INRIA - Fabrice Leray
6 * Copyright (C) 2005 - INRIA - Jean-Baptiste Silvy
7 * Copyright (C) 2010-2011 - DIGITEO - Manuel Juliachs
9 * This file must be used under the terms of the CeCILL.
10 * This source file is licensed as described in the file COPYING, which
11 * you should have received as part of this distribution. The terms
12 * are also available at
13 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
17 /*------------------------------------------------------------------------
19 * newGraph Library header
21 * This file contains all functions used to CLONE an object, it means make
22 * a copy of an object under the same subwin.
23 --------------------------------------------------------------------------*/
25 #include "CloneObjects.h"
26 #include "GetProperty.h"
27 #include "BuildObjects.h"
28 #include "SetProperty.h"
29 #include "HandleManagement.h"
31 #include "MALLOC.h" /* MALLOC */
32 #include "localization.h"
34 #include "BasicAlgos.h"
36 #include "createGraphicObject.h" /* cloneGraphicObject */
37 #include "getGraphicObjectProperty.h"
38 #include "setGraphicObjectProperty.h"
39 #include "graphicObjectProperties.h"
41 /*--------------------------------------------------------------------------*/
43 * Copies the ContouredObject properties from the source object to the destination object
44 * This code ought to be moved into the Java Model, either in the relevant
45 * constructor (ContouredObject) or into an initialization function.
47 int cloneGraphicContext(char* sourceIdentifier, char* destIdentifier)
50 double *pdblTmp = &dblTmp;
58 int markForeground = 0;
59 int markBackground = 0;
63 double lineThickness = 0.;
66 * All these properties are passed by value thus do not care to release them
67 * and do not call releaseGraphicObjectProperty on purpose.
70 getGraphicObjectProperty(sourceIdentifier, __GO_LINE_MODE__, jni_bool, (void **)&piTmp);
72 getGraphicObjectProperty(sourceIdentifier, __GO_LINE_COLOR__, jni_int, (void **)&piTmp);
74 getGraphicObjectProperty(sourceIdentifier, __GO_LINE_THICKNESS__, jni_double, (void **)&pdblTmp);
75 lineThickness = dblTmp;
76 getGraphicObjectProperty(sourceIdentifier, __GO_LINE_STYLE__, jni_int, (void **)&piTmp);
80 * Commented out since there is a confusion between Axes' FILLED property
81 * and the FILL_MODE ContouredObject property
85 tmp = (int*) setGraphicObjectProperty(pobj->UID, __GO_FILL_MODE__, &fillMode, jni_bool, 1);
89 getGraphicObjectProperty(sourceIdentifier, __GO_BACKGROUND__, jni_int, (void **)&piTmp);
92 getGraphicObjectProperty(sourceIdentifier, __GO_MARK_FOREGROUND__, jni_int, (void **)&piTmp);
93 markForeground = iTmp;
94 getGraphicObjectProperty(sourceIdentifier, __GO_MARK_BACKGROUND__, jni_int, (void **)&piTmp);
95 markBackground = iTmp;
96 getGraphicObjectProperty(sourceIdentifier, __GO_MARK_STYLE__, jni_int, (void **)&piTmp);
98 getGraphicObjectProperty(sourceIdentifier, __GO_MARK_SIZE__, jni_int, (void **)&piTmp);
100 getGraphicObjectProperty(sourceIdentifier, __GO_MARK_SIZE_UNIT__, jni_int, (void **)&piTmp);
103 setGraphicObjectProperty(destIdentifier, __GO_LINE_MODE__, &lineMode, jni_bool, 1);
104 setGraphicObjectProperty(destIdentifier, __GO_LINE_COLOR__, &foreground, jni_int, 1);
105 setGraphicObjectProperty(destIdentifier, __GO_LINE_THICKNESS__, &lineThickness, jni_double, 1);
106 setGraphicObjectProperty(destIdentifier, __GO_LINE_STYLE__, &lineStyle, jni_int, 1);
108 /* Commented out due to the confusion between Axes' FILLED and the FILL_MODE Contoured property */
110 setGraphicObjectProperty(destIdentifier, __GO_FILL_MODE__, &fillMode, jni_bool, 1);
113 setGraphicObjectProperty(destIdentifier, __GO_BACKGROUND__, &background, jni_int, 1);
115 setGraphicObjectProperty(destIdentifier, __GO_MARK_FOREGROUND__, &markForeground, jni_int, 1);
116 setGraphicObjectProperty(destIdentifier, __GO_MARK_BACKGROUND__, &markBackground, jni_int, 1);
117 setGraphicObjectProperty(destIdentifier, __GO_MARK_STYLE__, &markStyle, jni_int, 1);
118 setGraphicObjectProperty(destIdentifier, __GO_MARK_SIZE__, &markSize, jni_int, 1);
119 setGraphicObjectProperty(destIdentifier, __GO_MARK_SIZE_UNIT__, &markSizeUnit, jni_int, 1);
123 /*--------------------------------------------------------------------------*/
124 int cloneFontContext(char* sourceIdentifier, char* destIdentifier)
127 double *pdblTmp = &dblTmp;
128 double fontSize = 0.;
131 int fontFractional = 0;
136 * All these properties are passed by value thus do not care to release them
137 * and do not call releaseGraphicObjectProperty on purpose.
140 getGraphicObjectProperty(sourceIdentifier, __GO_FONT_COLOR__, jni_int, (void **)&piTmp);
142 getGraphicObjectProperty(sourceIdentifier, __GO_FONT_STYLE__, jni_int, (void **)&piTmp);
144 getGraphicObjectProperty(sourceIdentifier, __GO_FONT_SIZE__, jni_double, (void **)&pdblTmp);
146 getGraphicObjectProperty(sourceIdentifier, __GO_FONT_FRACTIONAL__, jni_bool, (void **)&piTmp);
147 fontFractional = iTmp;
149 setGraphicObjectProperty(destIdentifier, __GO_FONT_COLOR__, &fontColor, jni_int, 1);
150 setGraphicObjectProperty(destIdentifier, __GO_FONT_STYLE__, &fontStyle, jni_int, 1);
151 setGraphicObjectProperty(destIdentifier, __GO_FONT_SIZE__, &fontSize, jni_double, 1);
152 setGraphicObjectProperty(destIdentifier, __GO_FONT_FRACTIONAL__, &fontFractional, jni_bool, 1);
157 char* clonePolyline(char* sourcePolyline)
159 char *clonedPolylineUID = NULL;
160 char* parentAxes = NULL;
162 double* dataX = NULL;
163 double* dataY = NULL;
164 double* dataZ = NULL;
166 double lineThickness = 0.0;
167 double* pLineThickness = &lineThickness;
170 int* pNPoints = &nPoints;
173 int* pClosed = &closed;
175 int polylineStyle = 0;
176 int* pPolylineStyle = &polylineStyle;
184 int markForeground = 0;
185 int markBackground = 0;
191 int interpShaded = 0;
193 getGraphicObjectProperty(sourcePolyline, __GO_PARENT_AXES__, jni_string, (void **)&parentAxes);
195 getGraphicObjectProperty(sourcePolyline, __GO_DATA_MODEL_X__, jni_double_vector, (void **)&dataX);
196 getGraphicObjectProperty(sourcePolyline, __GO_DATA_MODEL_Y__, jni_double_vector, (void **)&dataY);
197 getGraphicObjectProperty(sourcePolyline, __GO_DATA_MODEL_Z__, jni_double_vector, (void **)&dataZ);
199 getGraphicObjectProperty(sourcePolyline, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void **)&pNPoints);
201 getGraphicObjectProperty(sourcePolyline, __GO_CLOSED__, jni_bool, (void **)&pClosed);
202 getGraphicObjectProperty(sourcePolyline, __GO_POLYLINE_STYLE__, jni_int, (void **)&pPolylineStyle);
204 /* ContouredObject properties */
205 getGraphicObjectProperty(sourcePolyline, __GO_LINE_THICKNESS__, jni_double, (void **)&pLineThickness);
206 getGraphicObjectProperty(sourcePolyline, __GO_LINE_STYLE__, jni_int, (void **)&pTmp);
208 getGraphicObjectProperty(sourcePolyline, __GO_LINE_COLOR__, jni_int, (void **)&pTmp);
210 getGraphicObjectProperty(sourcePolyline, __GO_BACKGROUND__, jni_int, (void **)&pTmp);
212 getGraphicObjectProperty(sourcePolyline, __GO_MARK_STYLE__, jni_int, (void **)&pTmp);
214 getGraphicObjectProperty(sourcePolyline, __GO_MARK_FOREGROUND__, jni_int, (void **)&pTmp);
215 markForeground = tmp;
216 getGraphicObjectProperty(sourcePolyline, __GO_MARK_BACKGROUND__, jni_int, (void **)&pTmp);
217 markBackground = tmp;
219 getGraphicObjectProperty(sourcePolyline, __GO_LINE_MODE__, jni_bool, (void **)&pTmp);
221 getGraphicObjectProperty(sourcePolyline, __GO_FILL_MODE__, jni_bool, (void **)&pTmp);
223 getGraphicObjectProperty(sourcePolyline, __GO_MARK_MODE__, jni_bool, (void **)&pTmp);
225 getGraphicObjectProperty(sourcePolyline, __GO_INTERP_COLOR_MODE__, jni_bool, (void **)&pTmp);
228 clonedPolylineUID = allocatePolyline(parentAxes, dataX, dataY, dataZ, closed, nPoints, polylineStyle,
229 &foreground, &background, &markStyle, &markForeground, &markBackground,
230 lineMode, fillMode, markMode, interpShaded);
232 /* These properties must be aditionally set as this is not done by allocatePolyline */
233 setGraphicObjectProperty(clonedPolylineUID, __GO_LINE_STYLE__, &lineStyle, jni_int, 1);
234 setGraphicObjectProperty(clonedPolylineUID, __GO_LINE_THICKNESS__, &lineThickness, jni_double, 1);
235 releaseGraphicObjectProperty(__GO_POLYLINE__, clonedPolylineUID, jni_string, 1);
238 * Some these properties are passed by value thus do not care to release them
239 * and do not call releaseGraphicObjectProperty on purpose.
241 * releaseGraphicObjectProperty has a real impact for the following :
243 * - jni_double_vector out of the DATA_MODEL
245 releaseGraphicObjectProperty(__GO_PARENT_AXES__, parentAxes, jni_string, 1);
248 return clonedPolylineUID;