/***************************************************************************** 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); }
/******************************************************************************** * FlintType krui_getUnitActivation( int UnitNo ) * krui_err krui_setUnitActivation( int UnitNo, FlintTypeParam unit_activation ) * * Returns/sets the activation of the unit. ********************************************************************************/ int snns_getUnitActivation(stEval *args, stEval *result, void *instance) { int unitNo = STINT(&args[0]); FlintType unitAct; krui_err errCode; char *errMsg; unitAct = krui_getUnitActivation( unitNo ); STFLOAT(result) = unitAct; return EC_OK; }
static inline void modifUnit(IPackage&p,IConnection*c) { uint32 subnet; uint16 numunits; int err; SUnit unit,ounit; IPackage op("set"); op<<QString("modify unit"); op<<subnet<<numunits; char buf[256]; for(int i=0;i<numunits;i++){ getUnit(unit,p); ounit=unit; //check for existance if(!(unit.mask&UNUM)){ int num=krui_createDefaultUnit(); if(num<0){ ounit.errcode="Unable to create unit."; setUnit(ounit,op); continue; } unit.id=ounit.id=num; } if(unit.id==0||unit.id>krui_getNoOfUnits()){ ounit.mask=UERR|UNUM; ounit.errcode="Unit doesn't exist."; setUnit(ounit,op); continue; } //prototype if(unit.mask&UPROTO){ err=krui_setUnitFType(unit.id,CHR(buf,unit.prototype)); if(err){ ounit.prototype=krui_getUnitFTypeName(unit.id); ounit.mask|=UERR; ounit.errcode=krui_error(err); } } //position if(unit.mask&UPOS){ PosType pos; pos.x=unit.xpos; pos.y=unit.ypos; pos.z=unit.zpos; krui_setUnitPosition(unit.id,&pos); krui_getUnitPosition(unit.id,&pos); ounit.xpos=pos.x; ounit.ypos=pos.y; ounit.zpos=pos.z; } //bias if(unit.mask&UBIAS){ krui_setUnitBias(unit.id,unit.bias); } //i_activation if(unit.mask&UIACT){ krui_setUnitInitialActivation(unit.id,unit.iact); } //activation if(unit.mask&UACT){ err=krui_setUnitActivation(unit.id,unit.act); if(err){ ounit.act=krui_getUnitActivation(unit.id); ounit.mask|=UERR; ounit.errcode=krui_error(err); } } //actfunc if(unit.mask&UACTF){ err=krui_setUnitActFunc(unit.id,CHR(buf,unit.actfunc)); if(err){ ounit.mask|=UERR; ounit.errcode=krui_error(err); ounit.actfunc=krui_getUnitActFuncName(unit.id); } } //outfunc if(unit.mask&UOUTF){ err=krui_setUnitOutFunc(unit.id,CHR(buf,unit.outfunc)); if(err){ ounit.mask|=UERR; ounit.errcode=krui_error(err); ounit.outfunc=krui_getUnitOutFuncName(unit.id); } } //name if(unit.mask&UNAME){ err=krui_setUnitName(unit.id,CHR(buf,unit.name)); if(err){ ounit.mask|=UERR; ounit.errcode=krui_error(err); ounit.name=krui_getUnitName(unit.id); } } //store setUnit(ounit,op); } c->send(op); }