/*------------------------------------------------------------------------*/ int get_data_bounds_property(void* _pvCtx, char* pobjUID) { double* dataBounds = NULL; int iView = 0; int* piView = &iView; getGraphicObjectProperty(pobjUID, __GO_DATA_BOUNDS__, jni_double_vector, (void **)&dataBounds); if (dataBounds == NULL) { Scierror(999, _("'%s' property does not exist for this handle.\n"), "data_bounds"); return -1; } getGraphicObjectProperty(pobjUID, __GO_VIEW__, jni_int, (void **)&piView); /**DJ.Abdemouche 2003**/ if (iView == 1) { return sciReturnMatrix(_pvCtx, dataBounds, 2, 3); } else { return sciReturnMatrix(_pvCtx, dataBounds, 2, 2); } }
/*------------------------------------------------------------------------*/ int get_data_property(void* _pvCtx, char* pobjUID) { int type = -1; int *piType = &type; getGraphicObjectProperty(pobjUID, __GO_TYPE__, jni_int, (void **)&piType); switch (type) { case __GO_FAC3D__ : case __GO_PLOT3D__ : return get3ddata(pobjUID); case __GO_CHAMP__ : return getchampdata(pobjUID); case __GO_GRAYPLOT__ : return getgrayplotdata(pobjUID); case __GO_MATPLOT__ : return getmatplotdata(_pvCtx, pobjUID); default : /* F.Leray 02.05.05 : "data" case for others (using sciGetPoint routine inside GetProperty.c) */ { int nbRow = 0; int nbCol = 0; int status = SET_PROPERTY_ERROR; /* Warning the following function allocates data */ double* data = sciGetPoint(pobjUID, &nbRow, &nbCol); if (data == NULL && nbRow == 0 && nbCol == 0) { /* Empty data */ sciReturnEmptyMatrix(_pvCtx); status = SET_PROPERTY_SUCCEED; } else if (data == NULL && nbRow == -1 && nbCol == -1) { /* data allocation failed */ Scierror(999, _("%s: No more memory."), "get_data_property"); status = SET_PROPERTY_ERROR; } else if (data == NULL) { Scierror(999, _("'%s' property does not exist for this handle.\n"), "data"); return -1; } else { status = sciReturnMatrix(_pvCtx, data, nbRow, nbCol); FREE(data); } return status; } } }
/** * Gets the diffuse color of the light/material. */ void* get_diffuse_color_property(void* _pvCtx, int iObjUID) { double* color = NULL; getGraphicObjectProperty(iObjUID, __GO_DIFFUSECOLOR__, jni_double_vector, (void **)&color); if (color == NULL) { Scierror(999, _("'%s' property does not exist for this handle.\n"), "diffuse_color"); return NULL; } return sciReturnMatrix(color, 1, 3); }
/*------------------------------------------------------------------------*/ void* get_ticks_st_property(void* _pvCtx, int iObjUID) { int const propr[3] = {__GO_X_AXIS_ST_FACTORS__, __GO_Y_AXIS_ST_FACTORS__, __GO_Z_AXIS_ST_FACTORS__}; double factors[] = {1., 0., 1., 0., 1., 0.}; int i = 0; for (i = 0 ; i < 3 ; i++) { double * dbls = NULL; getGraphicObjectProperty(iObjUID, propr[i], jni_double_vector, (void **)&dbls); if (dbls == NULL) { Scierror(999, _("'%s' property does not exist for this handle.\n"), "ticks_st"); return NULL; } factors[2 * i] = dbls[0]; factors[2 * i + 1] = dbls[1]; } return sciReturnMatrix(factors, 2, 3); }
/* the matplot data can have several type */ int getmatplotdata(void * _pvCtx, char *pobjUID) { int datatype = 0; int * piDataType = &datatype; int numX = 0; int *piNumX = &numX; int numY = 0; int *piNumY = &numY; void * data = NULL; int imagetype = 0; int * piImagetype = &imagetype; int gltype = 0; int * piGltype = &gltype; int status = SET_PROPERTY_ERROR; getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_NUM_X__, jni_int, (void **)&piNumX); getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_NUM_Y__, jni_int, (void **)&piNumY); getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_MATPLOT_DATA_TYPE__, jni_int, (void **)&piDataType); getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_Z__, jni_double_vector, &data); getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__, jni_int, (void **)&piImagetype); getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_MATPLOT_GL_TYPE__, jni_int, (void **)&piGltype); if (!data) { return sciReturnEmptyMatrix(_pvCtx); } switch ((DataType)datatype) { case MATPLOT_HM1_Char : { int dims[3] = {numY - 1, numX - 1, 1}; status = sciReturnHypermatOfInteger8(_pvCtx, dims, 3, (char*)data); break; } case MATPLOT_HM1_UChar : { int dims[3] = {numY - 1, numX - 1, 1}; status = sciReturnHypermatOfUnsignedInteger8(_pvCtx, dims, 3, (unsigned char*)data); break; } case MATPLOT_HM3_Char : { int dims[3] = {numY - 1, numX - 1, 3}; status = sciReturnHypermatOfInteger8(_pvCtx, dims, 3, (char*)data); break; } case MATPLOT_HM3_UChar : { int dims[3] = {numY - 1, numX - 1, 3}; status = sciReturnHypermatOfUnsignedInteger8(_pvCtx, dims, 3, (unsigned char*)data); break; } case MATPLOT_HM1_Double : { int dims[3] = {numY - 1, numX - 1, 1}; status = sciReturnHypermatOfDouble(_pvCtx, dims, 3, (double*)data); break; } case MATPLOT_HM3_Double : { int dims[3] = {numY - 1, numX - 1, 3}; status = sciReturnHypermatOfDouble(_pvCtx, dims, 3, (double*)data); break; } case MATPLOT_HM4_Char : { int dims[3] = {numY - 1, numX - 1, 4}; status = sciReturnHypermatOfInteger8(_pvCtx, dims, 3, (char*)data); break; } case MATPLOT_HM4_UChar : { int dims[3] = {numY - 1, numX - 1, 4}; status = sciReturnHypermatOfUnsignedInteger8(_pvCtx, dims, 3, (unsigned char*)data); break; } case MATPLOT_HM4_Double : { int dims[3] = {numY - 1, numX - 1, 4}; status = sciReturnHypermatOfDouble(_pvCtx, dims, 3, (double*)data); break; } case MATPLOT_Char : { status = sciReturnMatrixOfInteger8(_pvCtx, (char*)data, numY - 1, numX - 1); break; } case MATPLOT_UChar : { if ((ImageType)imagetype == MATPLOT_RGB) { status = sciReturnMatrixOfUnsignedInteger8(_pvCtx, (unsigned char*)data, 3 * (numY - 1), numX - 1); } else if ((ImageType)imagetype == MATPLOT_GL_RGBA) { status = sciReturnMatrixOfUnsignedInteger8(_pvCtx, (unsigned char*)data, 4 * (numY - 1), numX - 1); } else { status = sciReturnMatrixOfUnsignedInteger8(_pvCtx, (unsigned char*)data, numY - 1, numX - 1); } break; } case MATPLOT_Short : { status = sciReturnMatrixOfInteger16(_pvCtx, (short*)data, numY - 1, numX - 1); break; } case MATPLOT_UShort : { status = sciReturnMatrixOfUnsignedInteger16(_pvCtx, (unsigned short*)data, numY - 1, numX - 1); break; } case MATPLOT_Int : { status = sciReturnMatrixOfInteger32(_pvCtx, (int*)data, numY - 1, numX - 1); break; } case MATPLOT_UInt : { status = sciReturnMatrixOfUnsignedInteger32(_pvCtx, (unsigned int*)data, numY - 1, numX - 1); break; } case MATPLOT_Double : { status = sciReturnMatrix(_pvCtx, (double*)data, numY - 1, numX - 1); break; } } return status; }