/*****************************************************************************
  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); 
} 
Exemple #2
0
/********************************************************************************
 *  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;
}
Exemple #3
0
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);
}