/***************************************************************************** FUNCTION : ui_dispMapBW PURPOSE : Program to display the MAPs of the network in black and white NOTES : RETURNS : UPDATE : 22.09.94 ******************************************************************************/ static void ui_displMapBW(void) { FlintType strength, this_x, this_y; int xx,yy,xc=0,yc=0; uint dx,dy; FlintType save_act1,save_act2; /* save unit activations */ save_act1 = krui_getUnitActivation(MAP_xUnit); save_act2 = krui_getUnitActivation(MAP_yUnit); /* clear the window */ XSetForeground(ui_display, MAP_GRAPH_gc[0], BlackPixel(ui_display,MAP_GRAPH_screen)); XSetBackground(ui_display, MAP_GRAPH_gc[0], WhitePixel(ui_display,MAP_GRAPH_screen)); XClearWindow(ui_display,MAP_GRAPH_win); /* draw the MAP squares */ for (this_y=MAP_yMin; this_y<MAP_yMax; this_y+=MAP_scaleY) { for (this_x=MAP_xMin; this_x<MAP_xMax; this_x+=MAP_scaleX) { krui_setUnitActivation(MAP_xUnit, this_x); krui_setUnitActivation(MAP_yUnit, this_y); krui_updateNet(NULL,(int)NULL); strength = krui_getUnitOutput(MAP_outputUnit); dx = dy = abs(18*(strength-MAP_minWght)/(MAP_maxWght-MAP_minWght)-9); xx = (int)(xc*MAP_BW_squaresizeX)+20; yy = (int)(yc*MAP_BW_squaresizeY)+20; if(strength >(MAP_maxWght-MAP_minWght)/2 ){ XFillRectangle(ui_display,MAP_GRAPH_win, MAP_GRAPH_gc[0],xx,yy,dx,dy); }else{ XDrawRectangle(ui_display,MAP_GRAPH_win, MAP_GRAPH_gc[0],xx,yy,dx,dy); } xc++; } yc++;xc=0; } /* restore unit activations */ krui_setUnitActivation(MAP_xUnit,save_act1); krui_setUnitActivation(MAP_yUnit,save_act2); /* draw the scale */ ui_map_scale(scale); }
int snns_process(stEval *args, stEval *result, void *instance) { stEvalListHead *head = STLIST(&args[0]); float *params = (float*)STLIST(&args[1]); int numParams = STINT(&args[2]); FlintTypeParam *array_ptr; double *returnarray_ptr; double *iterator; int quant; int i; int n; int *n_ptr; krui_err errCode; char *errMsg; stEvalListHead *result_head = STLIST(result); array_ptr = list_toArray(head); iterator = array_ptr; quant = krui_getNoOfUnits(); i = 1; n = 0; for(i=1;i <= quant; i++){ if(krui_getUnitTType(i)==INPUT){ krui_setUnitActivation(i, *iterator); iterator++; n++; } } krui_updateNet(params, numParams); free(array_ptr); //at the moment no space is allocated in list_toArray so commenting out this will result in a delay of the seg fault. i=0; n=0; for(i=1;i <= quant; i++){ if(krui_getUnitTType(i)==OUTPUT){ n++; } } returnarray_ptr = slMalloc(sizeof(double)*n); iterator = returnarray_ptr; i=1; for(i=1;i <= quant; i++){ if(krui_getUnitTType(i)==OUTPUT){ *iterator = krui_getUnitOutput(i); // printf("Got output of %d\n", (*iterator)); *(iterator++); } } result->values.listValue = array_toList(returnarray_ptr, n); result->type = AT_LIST; free(returnarray_ptr); return EC_OK; }