static BOOL pushData(scicos_block * block, double *data) { char const* pFigureUID; char *pAxeUID; char *pGrayplotUID; BOOL result; int i; int m, n; double alpha, beta; double *scaledData; pFigureUID = getFigure(block); pAxeUID = getAxe(pFigureUID, block); pGrayplotUID = getGrayplot(pAxeUID, block); m = GetInPortSize(block, 1, 1); n = GetInPortSize(block, 1, 2); if (m * n <= 0) { set_block_error(-5); return FALSE; } /* * Scale the data */ alpha = block->rpar[0]; beta = block->rpar[1]; scaledData = (double *)MALLOC(m * n * sizeof(double)); if (scaledData == NULL) { return FALSE; } for (i = 0; i < m * n; i++) { scaledData[i] = floor(alpha * data[i] + beta); } result = setGraphicObjectProperty(pGrayplotUID, __GO_DATA_MODEL_Z__, scaledData, jni_double_vector, m * n); FREE(scaledData); return result; }
static char *getAxe(char const* pFigureUID, scicos_block * block) { char *pAxe; sco_data *sco = (sco_data *) * (block->work); // assert the sco is not NULL if (sco == NULL) { return NULL; } // fast path for an existing object if (sco->scope.cachedAxeUID != NULL) { return sco->scope.cachedAxeUID; } pAxe = findChildWithKindAt(pFigureUID, __GO_AXES__, 0); /* * Allocate if necessary */ if (pAxe == NULL) { cloneAxesModel(pFigureUID); pAxe = findChildWithKindAt(pFigureUID, __GO_AXES__, 0); } /* * Setup on first access */ if (pAxe != NULL) { getGrayplot(pAxe, block); } /* * then cache with local storage */ if (pAxe != NULL && sco->scope.cachedAxeUID == NULL) { sco->scope.cachedAxeUID = strdup(pAxe); releaseGraphicObjectProperty(__GO_PARENT__, pAxe, jni_string, 1); } return sco->scope.cachedAxeUID; }
static int getAxe(int iFigureUID, scicos_block * block) { int iAxe; sco_data *sco = (sco_data *) * (block->work); // assert the sco is not NULL if (sco == NULL) { return 0; } // fast path for an existing object if (sco->scope.cachedAxeUID) { return sco->scope.cachedAxeUID; } iAxe = findChildWithKindAt(iFigureUID, __GO_AXES__, 0); /* * Allocate if necessary */ if (iAxe == 0) { cloneAxesModel(iFigureUID); iAxe = findChildWithKindAt(iFigureUID, __GO_AXES__, 0); } /* * Setup on first access */ if (iAxe != 0) { getGrayplot(iAxe, block); } else { return 0; } /* * then cache with local storage */ sco->scope.cachedAxeUID = iAxe; return sco->scope.cachedAxeUID; }